aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jadep <jade.philipoom@gmail.com>2017-11-10 13:19:57 -0500
committerGravatar jadep <jade.philipoom@gmail.com>2017-11-12 15:01:59 -0500
commit795d24349b9aca1d9732c7b7fcaa505f24fa4bc6 (patch)
treef517d6c4e83f42e72a303e06567f779c0250fc2e /src
parent7ad53a35ed68777cd21226998a88494e1d97c63e (diff)
new autogenerated files
Diffstat (limited to 'src')
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e127m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e129m25_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e130m5_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e137m13_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e140m27_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e141m9_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e150m3_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e150m5_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e152m17_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e158m15_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e165m25_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e166m5_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e171m19_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e174m17_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e174m3_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e189m25_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e190m11_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e191m19_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e192m2e64m1_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e194m33_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e196m15_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e198m17_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e205m45x2e198m1_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e206m5_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e212m29_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e213m3_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e216m2e108m1_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e221m3_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e222m117_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e224m2e96p1_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e226m5_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e230m27_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e235m15_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e243m9_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e251m9_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e255m19_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e255m765_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m189_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m2e224p2e192p2e96m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m2e32m977_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m4294968273_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e266m3_9limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e285m9_9limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e291m19_10limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e321m9_11limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e322m2e161m1_11limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e336m17_11limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e336m3_11limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e338m15_11limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e369m25_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e379m19_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e382m105_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e383m187_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e383m31_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e383m421_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m2e128m2e96p2e32m1_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m317_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1_12limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e389m21_13limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e401m31_13limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e413m21_13limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e414m17_13limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e416m2e208m1_13limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e444m17_14limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e448m2e224m1_14limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e450m2e225m1_15limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e452m3_15limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e468m17_15limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e480m2e240m1_15limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e488m17_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e489m21_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e495m31_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e511m187_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e511m481_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e512m569_16limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery32_2e521m1_17limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e127m1_2limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e129m25_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e130m5_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e137m13_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e140m27_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e141m9_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e150m3_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e150m5_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e152m17_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e158m15_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e165m25_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e166m5_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e171m19_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e174m17_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e174m3_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e189m25_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e190m11_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e191m19_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e192m2e64m1_3limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e194m33_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e196m15_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e198m17_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e205m45x2e198m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e206m5_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e212m29_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e213m3_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e216m2e108m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e221m3_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e222m117_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e224m2e96p1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e226m5_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e230m27_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e235m15_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e243m9_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e251m9_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e255m19_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e255m765_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m189_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m2e224p2e192p2e96m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m2e32m977_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m4294968273_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1_4limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e266m3_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e285m9_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e291m19_5limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e321m9_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e322m2e161m1_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e336m17_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e336m3_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e338m15_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e369m25_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e379m19_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e382m105_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e383m187_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e383m31_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e383m421_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m2e128m2e96p2e32m1_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m317_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1_6limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e389m21_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e401m31_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e413m21_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e414m17_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e416m2e208m1_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e444m17_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e448m2e224m1_7limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e450m2e225m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e452m3_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e468m17_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e480m2e240m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e488m17_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e489m21_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e495m31_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e511m187_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e511m481_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e512m569_8limbs.json18
-rw-r--r--src/Specific/CurveParameters/montgomery64_2e521m1_9limbs.json18
-rw-r--r--src/Specific/CurveParameters/solinas32_2e127m1_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e127m1_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e129m25_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e129m25_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e130m5_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e130m5_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e137m13_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e137m13_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e140m27_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e140m27_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e141m9_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e141m9_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e150m3_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e150m3_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e150m5_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e150m5_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e152m17_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e152m17_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e158m15_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e158m15_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e165m25_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e165m25_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e166m5_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e166m5_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e171m19_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e171m19_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e174m17_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e174m17_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e174m3_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e174m3_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e189m25_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e189m25_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e190m11_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e190m11_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e191m19_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e191m19_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e192m2e64m1_10limbs.json38
-rw-r--r--src/Specific/CurveParameters/solinas32_2e192m2e64m1_9limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas32_2e194m33_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e194m33_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e196m15_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e196m15_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e198m17_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e198m17_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e206m5_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e206m5_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e212m29_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e212m29_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e213m3_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e213m3_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e216m2e108m1_10limbs.json39
-rw-r--r--src/Specific/CurveParameters/solinas32_2e216m2e108m1_8limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas32_2e221m3_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e221m3_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e222m117_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e222m117_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e224m2e96p1_10limbs.json38
-rw-r--r--src/Specific/CurveParameters/solinas32_2e224m2e96p1_11limbs.json39
-rw-r--r--src/Specific/CurveParameters/solinas32_2e226m5_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e226m5_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e230m27_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e230m27_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e235m15_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e235m15_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e243m9_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e243m9_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e251m9_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e251m9_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e255m19_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e255m19_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e255m765_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e255m765_13limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m189_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m189_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_11limbs.json43
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_12limbs.json44
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m2e32m977_12limbs.json40
-rw-r--r--src/Specific/CurveParameters/solinas32_2e256m2e32m977_13limbs.json41
-rw-r--r--src/Specific/CurveParameters/solinas32_2e266m3_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e266m3_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e285m9_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e285m9_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e291m19_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e291m19_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e321m9_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e321m9_13limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e322m2e161m1_12limbs.json41
-rw-r--r--src/Specific/CurveParameters/solinas32_2e322m2e161m1_14limbs.json43
-rw-r--r--src/Specific/CurveParameters/solinas32_2e336m17_13limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e336m17_14limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e336m3_12limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e336m3_13limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e338m15_13limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e338m15_14limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e369m25_15limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e369m25_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e379m19_15limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e379m19_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e382m105_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e382m105_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m187_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m187_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m31_15limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m31_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m421_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e383m421_18limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_18limbs.json50
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_19limbs.json51
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m317_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e384m317_18limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e389m21_15limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e389m21_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e401m31_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e401m31_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e413m21_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e413m21_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e414m17_16limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e414m17_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e416m2e208m1_16limbs.json45
-rw-r--r--src/Specific/CurveParameters/solinas32_2e416m2e208m1_18limbs.json47
-rw-r--r--src/Specific/CurveParameters/solinas32_2e444m17_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e444m17_18limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e448m2e224m1_16limbs.json45
-rw-r--r--src/Specific/CurveParameters/solinas32_2e448m2e224m1_18limbs.json47
-rw-r--r--src/Specific/CurveParameters/solinas32_2e450m2e225m1_18limbs.json47
-rw-r--r--src/Specific/CurveParameters/solinas32_2e450m2e225m1_20limbs.json49
-rw-r--r--src/Specific/CurveParameters/solinas32_2e452m3_17limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e452m3_18limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e468m17_18limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e468m17_19limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e480m2e240m1_18limbs.json47
-rw-r--r--src/Specific/CurveParameters/solinas32_2e480m2e240m1_20limbs.json49
-rw-r--r--src/Specific/CurveParameters/solinas32_2e488m17_19limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e488m17_20limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e489m21_19limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e489m21_20limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e495m31_20limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e495m31_21limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e511m187_22limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e511m187_23limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e511m481_23limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e511m481_24limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e512m569_24limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e512m569_25limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e521m1_19limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas32_2e521m1_20limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e127m1_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e129m25_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e129m25_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e130m5_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e130m5_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e137m13_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e137m13_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e140m27_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e140m27_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e141m9_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e141m9_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e150m3_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e150m3_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e150m5_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e150m5_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e152m17_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e152m17_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e158m15_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e158m15_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e165m25_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e165m25_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e166m5_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e166m5_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e171m19_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e171m19_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e174m17_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e174m17_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e174m3_3limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e174m3_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e189m25_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e189m25_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e190m11_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e190m11_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e191m19_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e191m19_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e192m2e64m1_4limbs.json32
-rw-r--r--src/Specific/CurveParameters/solinas64_2e192m2e64m1_5limbs.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e194m33_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e194m33_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e196m15_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e196m15_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e198m17_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e198m17_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e206m5_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e206m5_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e212m29_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e212m29_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e213m3_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e213m3_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e216m2e108m1_4limbs.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e216m2e108m1_5limbs.json34
-rw-r--r--src/Specific/CurveParameters/solinas64_2e221m3_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e221m3_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e222m117_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e222m117_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e224m2e96p1_5limbs.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e224m2e96p1_6limbs.json34
-rw-r--r--src/Specific/CurveParameters/solinas64_2e226m5_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e226m5_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e230m27_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e230m27_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e235m15_4limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e235m15_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e243m9_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e243m9_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e251m9_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e251m9_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e255m19_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e255m19_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e255m765_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e255m765_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m189_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m189_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_5limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_6limbs.json38
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m2e32m977_6limbs.json33
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m2e32m977_7limbs.json34
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m4294968273_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e256m4294968273_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e266m3_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e266m3_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e285m9_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e285m9_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e291m19_5limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e291m19_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e321m9_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e321m9_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e322m2e161m1_6limbs.json35
-rw-r--r--src/Specific/CurveParameters/solinas64_2e322m2e161m1_7limbs.json36
-rw-r--r--src/Specific/CurveParameters/solinas64_2e336m17_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e336m17_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e336m3_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e336m3_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e338m15_6limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e338m15_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e369m25_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e369m25_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e379m19_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e379m19_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e382m105_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e382m105_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m187_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m187_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m31_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m31_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m421_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e383m421_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_10limbs.json42
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_9limbs.json41
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m317_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e384m317_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e389m21_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e389m21_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e401m31_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e401m31_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e413m21_7limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e413m21_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e414m17_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e414m17_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e416m2e208m1_8limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas64_2e416m2e208m1_9limbs.json38
-rw-r--r--src/Specific/CurveParameters/solinas64_2e444m17_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e444m17_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e448m2e224m1_10limbs.json39
-rw-r--r--src/Specific/CurveParameters/solinas64_2e448m2e224m1_8limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas64_2e450m2e225m1_10limbs.json39
-rw-r--r--src/Specific/CurveParameters/solinas64_2e450m2e225m1_8limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas64_2e452m3_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e452m3_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e468m17_8limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e468m17_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e480m2e240m1_10limbs.json39
-rw-r--r--src/Specific/CurveParameters/solinas64_2e480m2e240m1_8limbs.json37
-rw-r--r--src/Specific/CurveParameters/solinas64_2e488m17_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e488m17_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e489m21_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e489m21_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e495m31_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e495m31_9limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e511m187_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e511m187_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e511m481_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e511m481_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e512m569_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e512m569_11limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e521m1_10limbs.json17
-rw-r--r--src/Specific/CurveParameters/solinas64_2e521m1_9limbs.json17
-rw-r--r--src/Specific/montgomery32_2e127m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e127m1/feadd.c28
-rw-r--r--src/Specific/montgomery32_2e127m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e127m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery32_2e127m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1/femul.c126
-rw-r--r--src/Specific/montgomery32_2e127m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e127m1/femulDisplay.log118
-rw-r--r--src/Specific/montgomery32_2e127m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1/fenz.c11
-rw-r--r--src/Specific/montgomery32_2e127m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e127m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery32_2e127m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1/feopp.c24
-rw-r--r--src/Specific/montgomery32_2e127m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e127m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery32_2e127m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e127m1/fesub.c28
-rw-r--r--src/Specific/montgomery32_2e127m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e127m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery32_2e127m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e127m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e127m1_4limbs/compiler.sh (renamed from src/Specific/montgomery32_2e127m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e127m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e127m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e127m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e127m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e127m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e129m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e129m25/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e129m25/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e129m25/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e129m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25/femul.c182
-rw-r--r--src/Specific/montgomery32_2e129m25/femul.v14
-rw-r--r--src/Specific/montgomery32_2e129m25/femulDisplay.log171
-rw-r--r--src/Specific/montgomery32_2e129m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e129m25/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e129m25/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e129m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e129m25/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e129m25/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e129m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e129m25/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e129m25/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e129m25/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e129m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e129m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e129m25_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e129m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e129m25_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e129m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e129m25_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e129m25_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e129m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e130m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e130m5/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e130m5/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e130m5/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e130m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5/femul.c192
-rw-r--r--src/Specific/montgomery32_2e130m5/femul.v14
-rw-r--r--src/Specific/montgomery32_2e130m5/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e130m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e130m5/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e130m5/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e130m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e130m5/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e130m5/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e130m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e130m5/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e130m5/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e130m5/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e130m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e130m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e130m5_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e130m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e130m5_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e130m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e130m5_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e130m5_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e130m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e137m13/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e137m13/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e137m13/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e137m13/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e137m13/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13/femul.c192
-rw-r--r--src/Specific/montgomery32_2e137m13/femul.v14
-rw-r--r--src/Specific/montgomery32_2e137m13/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e137m13/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e137m13/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e137m13/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e137m13/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e137m13/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e137m13/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e137m13/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e137m13/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e137m13/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e137m13/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e137m13/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e137m13/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e137m13_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e137m13/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e137m13_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e137m13/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e137m13_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e137m13_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e137m13/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e140m27/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e140m27/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e140m27/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e140m27/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e140m27/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27/femul.c192
-rw-r--r--src/Specific/montgomery32_2e140m27/femul.v14
-rw-r--r--src/Specific/montgomery32_2e140m27/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e140m27/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e140m27/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e140m27/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e140m27/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e140m27/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e140m27/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e140m27/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e140m27/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e140m27/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e140m27/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e140m27/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e140m27/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e140m27_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e140m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e140m27_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e140m27/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e140m27_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e140m27/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e141m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e141m9/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e141m9/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e141m9/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e141m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9/femul.c192
-rw-r--r--src/Specific/montgomery32_2e141m9/femul.v14
-rw-r--r--src/Specific/montgomery32_2e141m9/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e141m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e141m9/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e141m9/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e141m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e141m9/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e141m9/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e141m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e141m9/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e141m9/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e141m9/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e141m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e141m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e141m9_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e141m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e141m9_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e141m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e141m9_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e141m9_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e141m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e150m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e150m3/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e150m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e150m3/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3/femul.c192
-rw-r--r--src/Specific/montgomery32_2e150m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e150m3/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e150m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e150m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e150m3/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e150m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e150m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e150m3/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e150m3/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e150m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e150m3/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e150m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e150m3_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e150m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e150m3_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e150m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e150m3_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e150m3_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e150m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e150m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e150m5/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e150m5/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e150m5/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5/femul.c192
-rw-r--r--src/Specific/montgomery32_2e150m5/femul.v14
-rw-r--r--src/Specific/montgomery32_2e150m5/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e150m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e150m5/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e150m5/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e150m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e150m5/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e150m5/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e150m5/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e150m5/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e150m5/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e150m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e150m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e150m5_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e150m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e150m5_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e150m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e150m5_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e150m5_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e150m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e152m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e152m17/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e152m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e152m17/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e152m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17/femul.c192
-rw-r--r--src/Specific/montgomery32_2e152m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e152m17/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e152m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e152m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e152m17/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e152m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e152m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e152m17/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e152m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e152m17/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e152m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e152m17/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e152m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e152m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e152m17_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e152m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e152m17_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e152m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e152m17_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e152m17_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e152m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e158m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e158m15/feadd.c34
-rw-r--r--src/Specific/montgomery32_2e158m15/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e158m15/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e158m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15/femul.c192
-rw-r--r--src/Specific/montgomery32_2e158m15/femul.v14
-rw-r--r--src/Specific/montgomery32_2e158m15/femulDisplay.log181
-rw-r--r--src/Specific/montgomery32_2e158m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15/fenz.c13
-rw-r--r--src/Specific/montgomery32_2e158m15/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e158m15/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery32_2e158m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15/feopp.c29
-rw-r--r--src/Specific/montgomery32_2e158m15/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e158m15/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e158m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e158m15/fesub.c34
-rw-r--r--src/Specific/montgomery32_2e158m15/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e158m15/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e158m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e158m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e158m15_5limbs/compiler.sh (renamed from src/Specific/montgomery32_2e158m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e158m15_5limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e158m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e158m15_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e158m15_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e158m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e165m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e165m25/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e165m25/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e165m25/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e165m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25/femul.c266
-rw-r--r--src/Specific/montgomery32_2e165m25/femul.v14
-rw-r--r--src/Specific/montgomery32_2e165m25/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e165m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e165m25/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e165m25/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e165m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e165m25/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e165m25/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e165m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e165m25/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e165m25/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e165m25/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e165m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e165m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e165m25_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e165m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e165m25_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e165m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e165m25_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e165m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e166m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e166m5/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e166m5/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e166m5/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5/femul.c266
-rw-r--r--src/Specific/montgomery32_2e166m5/femul.v14
-rw-r--r--src/Specific/montgomery32_2e166m5/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e166m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e166m5/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e166m5/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e166m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e166m5/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e166m5/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e166m5/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e166m5/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e166m5/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e166m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e166m5_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e166m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e166m5_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e166m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e166m5_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e166m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e171m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e171m19/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e171m19/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e171m19/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19/femul.c266
-rw-r--r--src/Specific/montgomery32_2e171m19/femul.v14
-rw-r--r--src/Specific/montgomery32_2e171m19/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e171m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e171m19/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e171m19/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e171m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e171m19/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e171m19/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e171m19/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e171m19/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e171m19/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e171m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e171m19_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e171m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e171m19_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e171m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e171m19_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e171m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e174m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e174m17/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e174m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e174m17/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17/femul.c266
-rw-r--r--src/Specific/montgomery32_2e174m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e174m17/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e174m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e174m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e174m17/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e174m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e174m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e174m17/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e174m17/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e174m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e174m17/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e174m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e174m17_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e174m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e174m17_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e174m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e174m17_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e174m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e174m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e174m3/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e174m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e174m3/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3/femul.c266
-rw-r--r--src/Specific/montgomery32_2e174m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e174m3/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e174m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e174m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e174m3/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e174m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e174m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e174m3/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e174m3/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e174m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e174m3/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e174m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e174m3_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e174m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e174m3_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e174m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e174m3_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e174m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e189m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e189m25/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e189m25/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e189m25/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e189m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25/femul.c266
-rw-r--r--src/Specific/montgomery32_2e189m25/femul.v14
-rw-r--r--src/Specific/montgomery32_2e189m25/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e189m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e189m25/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e189m25/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e189m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e189m25/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e189m25/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e189m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e189m25/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e189m25/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e189m25/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e189m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e189m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e189m25_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e189m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e189m25_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e189m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e189m25_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e189m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e190m11/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e190m11/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e190m11/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e190m11/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e190m11/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11/femul.c266
-rw-r--r--src/Specific/montgomery32_2e190m11/femul.v14
-rw-r--r--src/Specific/montgomery32_2e190m11/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e190m11/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e190m11/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e190m11/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e190m11/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e190m11/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e190m11/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e190m11/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e190m11/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e190m11/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e190m11/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e190m11/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e190m11/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e190m11_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e190m11/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e190m11_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e190m11/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e190m11_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e190m11/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e191m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e191m19/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e191m19/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e191m19/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e191m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19/femul.c266
-rw-r--r--src/Specific/montgomery32_2e191m19/femul.v14
-rw-r--r--src/Specific/montgomery32_2e191m19/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e191m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e191m19/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e191m19/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e191m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e191m19/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e191m19/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e191m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e191m19/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e191m19/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e191m19/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e191m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e191m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e191m19_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e191m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e191m19_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e191m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e191m19_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e191m19_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e191m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/femul.c260
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/femulDisplay.log246
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e192m2e64m1_6limbs/compiler.sh (renamed from src/Specific/montgomery32_2e192m2e64m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e192m2e64m1_6limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e192m2e64m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e192m2e64m1_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e192m2e64m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e194m33/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e194m33/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e194m33/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e194m33/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e194m33/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33/femul.v14
-rw-r--r--src/Specific/montgomery32_2e194m33/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e194m33/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e194m33/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e194m33/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e194m33/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e194m33/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e194m33/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e194m33/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e194m33/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e194m33/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e194m33_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e194m33/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e194m33_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e194m33/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e194m33_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e194m33/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e196m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e196m15/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e196m15/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e196m15/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e196m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15/femul.v14
-rw-r--r--src/Specific/montgomery32_2e196m15/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e196m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e196m15/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e196m15/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e196m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e196m15/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e196m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e196m15/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e196m15/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e196m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e196m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e196m15_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e196m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e196m15_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e196m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e196m15_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e196m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e198m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e198m17/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e198m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e198m17/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e198m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e198m17/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e198m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e198m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e198m17/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e198m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e198m17/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e198m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e198m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e198m17/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e198m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e198m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e198m17_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e198m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e198m17_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e198m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e198m17_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e198m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.log328
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e205m45x2e198m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e205m45x2e198m1_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e205m45x2e198m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e205m45x2e198m1_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e205m45x2e198m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e205m45x2e198m1_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e205m45x2e198m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e206m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e206m5/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e206m5/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e206m5/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e206m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5/femul.v14
-rw-r--r--src/Specific/montgomery32_2e206m5/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e206m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e206m5/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e206m5/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e206m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e206m5/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e206m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e206m5/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e206m5/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e206m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e206m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e206m5_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e206m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e206m5_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e206m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e206m5_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e206m5_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e206m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e212m29/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e212m29/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e212m29/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e212m29/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e212m29/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29/femul.v14
-rw-r--r--src/Specific/montgomery32_2e212m29/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e212m29/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e212m29/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e212m29/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e212m29/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e212m29/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e212m29/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e212m29/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e212m29/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e212m29/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e212m29/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e212m29_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e212m29/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e212m29_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e212m29/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e212m29_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e212m29_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e212m29/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e213m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e213m3/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e213m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e213m3/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e213m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e213m3/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e213m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e213m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e213m3/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e213m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e213m3/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e213m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e213m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e213m3/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e213m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e213m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e213m3_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e213m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e213m3_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e213m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e213m3_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e213m3_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e213m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/femulDisplay.log328
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e216m2e108m1_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e216m2e108m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e216m2e108m1_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e216m2e108m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e216m2e108m1_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e216m2e108m1_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e216m2e108m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e221m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e221m3/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e221m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e221m3/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e221m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e221m3/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e221m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e221m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e221m3/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e221m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e221m3/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e221m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e221m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e221m3/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e221m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e221m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e221m3_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e221m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e221m3_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e221m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e221m3_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e221m3_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e221m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e222m117/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e222m117/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e222m117/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e222m117/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e222m117/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117/femul.v14
-rw-r--r--src/Specific/montgomery32_2e222m117/femulDisplay.log335
-rw-r--r--src/Specific/montgomery32_2e222m117/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e222m117/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e222m117/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e222m117/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e222m117/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e222m117/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e222m117/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e222m117/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e222m117/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e222m117/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e222m117_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e222m117/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e222m117_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e222m117/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e222m117_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e222m117_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e222m117/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/femul.c324
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/femulDisplay.log307
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.log27
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.log27
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e224m2e96p1_7limbs/compiler.sh (renamed from src/Specific/montgomery32_2e224m2e96p1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e224m2e96p1_7limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e224m2e96p1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e224m2e96p1_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e224m2e96p1_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e224m2e96p1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e226m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e226m5/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e226m5/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e226m5/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e226m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5/femul.v14
-rw-r--r--src/Specific/montgomery32_2e226m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e226m5/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e226m5/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e226m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e226m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e226m5/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e226m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e226m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e226m5_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e226m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e226m5_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e226m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e226m5_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e226m5_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e226m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e230m27/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e230m27/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e230m27/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e230m27/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e230m27/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27/femul.v14
-rw-r--r--src/Specific/montgomery32_2e230m27/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e230m27/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e230m27/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e230m27/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e230m27/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e230m27/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e230m27/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e230m27/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e230m27_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e230m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e230m27_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e230m27/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e230m27_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e230m27_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e230m27/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e235m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e235m15/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e235m15/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e235m15/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e235m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15/femul.v14
-rw-r--r--src/Specific/montgomery32_2e235m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e235m15/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e235m15/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e235m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e235m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e235m15/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e235m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e235m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e235m15_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e235m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e235m15_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e235m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e235m15_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e235m15_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e235m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e243m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e243m9/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e243m9/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e243m9/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e243m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9/femul.v14
-rw-r--r--src/Specific/montgomery32_2e243m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e243m9/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e243m9/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e243m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e243m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e243m9/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e243m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e243m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e243m9_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e243m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e243m9_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e243m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e243m9_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e243m9_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e243m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e251m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e251m9/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e251m9/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e251m9/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e251m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9/femul.v14
-rw-r--r--src/Specific/montgomery32_2e251m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e251m9/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e251m9/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e251m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e251m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e251m9/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e251m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e251m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e251m9_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e251m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e251m9_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e251m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e251m9_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e251m9_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e251m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e254m127x2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e254m127x2e240m1_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e254m127x2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e254m127x2e240m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e254m127x2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e254m127x2e240m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e254m127x2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e255m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e255m19/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e255m19/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e255m19/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e255m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19/femul.v14
-rw-r--r--src/Specific/montgomery32_2e255m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e255m19/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e255m19/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e255m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e255m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e255m19/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e255m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e255m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e255m19_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e255m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e255m19_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e255m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e255m19_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e255m19_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e255m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v39
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh4
-rwxr-xr-xsrc/Specific/montgomery32_2e255m2e4m2e1m1/compilerxx.sh4
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e255m2e4m2e1m1/py_interpreter.sh4
-rw-r--r--src/Specific/montgomery32_2e255m765/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e255m765/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e255m765/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e255m765/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e255m765/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765/femul.v14
-rw-r--r--src/Specific/montgomery32_2e255m765/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e255m765/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e255m765/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e255m765/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e255m765/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e255m765/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e255m765/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e255m765/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e255m765_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e255m765/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e255m765_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e255m765/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e255m765_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e255m765_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e255m765/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m189/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e256m189/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e256m189/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m189/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m189/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m189/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e256m189/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m189/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e256m189/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m189/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e256m189/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m189/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e256m189/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e256m189_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e256m189/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e256m189_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e256m189/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m189_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m189_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e256m189/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e32m977_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e256m2e32m977/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e32m977_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e256m2e32m977/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m2e32m977_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m2e32m977_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e256m2e32m977/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e256m4294968273_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m4294968273_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m4294968273_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m4294968273_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feadd.c52
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fenz.c19
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e256m88x2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e256m88x2e240m1_8limbs/compiler.sh (renamed from src/Specific/montgomery32_2e256m88x2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e256m88x2e240m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e256m88x2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e256m88x2e240m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e256m88x2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e266m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e266m3/feadd.c58
-rw-r--r--src/Specific/montgomery32_2e266m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e266m3/feaddDisplay.log35
-rw-r--r--src/Specific/montgomery32_2e266m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e266m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3/fenz.c21
-rw-r--r--src/Specific/montgomery32_2e266m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e266m3/fenzDisplay.log15
-rw-r--r--src/Specific/montgomery32_2e266m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e266m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e266m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e266m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e266m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e266m3_9limbs/compiler.sh (renamed from src/Specific/montgomery32_2e266m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e266m3_9limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e266m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e266m3_9limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e266m3_9limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e266m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e285m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e285m9/feadd.c58
-rw-r--r--src/Specific/montgomery32_2e285m9/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e285m9/feaddDisplay.log35
-rw-r--r--src/Specific/montgomery32_2e285m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9/femul.v14
-rw-r--r--src/Specific/montgomery32_2e285m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9/fenz.c21
-rw-r--r--src/Specific/montgomery32_2e285m9/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e285m9/fenzDisplay.log15
-rw-r--r--src/Specific/montgomery32_2e285m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e285m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e285m9/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e285m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e285m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e285m9_9limbs/compiler.sh (renamed from src/Specific/montgomery32_2e285m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e285m9_9limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e285m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e285m9_9limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e285m9_9limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e285m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e291m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e291m19/feadd.c64
-rw-r--r--src/Specific/montgomery32_2e291m19/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e291m19/feaddDisplay.log38
-rw-r--r--src/Specific/montgomery32_2e291m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19/femul.v14
-rw-r--r--src/Specific/montgomery32_2e291m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19/fenz.c23
-rw-r--r--src/Specific/montgomery32_2e291m19/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e291m19/fenzDisplay.log16
-rw-r--r--src/Specific/montgomery32_2e291m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e291m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e291m19/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e291m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e291m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e291m19_10limbs/compiler.sh (renamed from src/Specific/montgomery32_2e291m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e291m19_10limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e291m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e291m19_10limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e291m19_10limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e291m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e321m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e321m9/feadd.c70
-rw-r--r--src/Specific/montgomery32_2e321m9/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e321m9/feaddDisplay.log41
-rw-r--r--src/Specific/montgomery32_2e321m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9/femul.v14
-rw-r--r--src/Specific/montgomery32_2e321m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9/fenz.c25
-rw-r--r--src/Specific/montgomery32_2e321m9/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e321m9/fenzDisplay.log17
-rw-r--r--src/Specific/montgomery32_2e321m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e321m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e321m9/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e321m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e321m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e321m9_11limbs/compiler.sh (renamed from src/Specific/montgomery32_2e321m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e321m9_11limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e321m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e321m9_11limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e321m9_11limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e321m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feadd.c70
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.log41
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fenz.c25
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.log17
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e322m2e161m1_11limbs/compiler.sh (renamed from src/Specific/montgomery32_2e322m2e161m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e322m2e161m1_11limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e322m2e161m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e322m2e161m1_11limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e322m2e161m1_11limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e322m2e161m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e336m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e336m17/feadd.c70
-rw-r--r--src/Specific/montgomery32_2e336m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e336m17/feaddDisplay.log41
-rw-r--r--src/Specific/montgomery32_2e336m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e336m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17/fenz.c25
-rw-r--r--src/Specific/montgomery32_2e336m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e336m17/fenzDisplay.log17
-rw-r--r--src/Specific/montgomery32_2e336m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e336m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e336m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e336m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e336m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e336m17_11limbs/compiler.sh (renamed from src/Specific/montgomery32_2e336m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e336m17_11limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e336m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e336m17_11limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e336m17_11limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e336m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e336m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e336m3/feadd.c70
-rw-r--r--src/Specific/montgomery32_2e336m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e336m3/feaddDisplay.log41
-rw-r--r--src/Specific/montgomery32_2e336m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e336m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3/fenz.c25
-rw-r--r--src/Specific/montgomery32_2e336m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e336m3/fenzDisplay.log17
-rw-r--r--src/Specific/montgomery32_2e336m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e336m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e336m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e336m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e336m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e336m3_11limbs/compiler.sh (renamed from src/Specific/montgomery32_2e336m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e336m3_11limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e336m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e336m3_11limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e336m3_11limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e336m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e338m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e338m15/feadd.c70
-rw-r--r--src/Specific/montgomery32_2e338m15/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e338m15/feaddDisplay.log41
-rw-r--r--src/Specific/montgomery32_2e338m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15/femul.v14
-rw-r--r--src/Specific/montgomery32_2e338m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15/fenz.c25
-rw-r--r--src/Specific/montgomery32_2e338m15/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e338m15/fenzDisplay.log17
-rw-r--r--src/Specific/montgomery32_2e338m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e338m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e338m15/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e338m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e338m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e338m15_11limbs/compiler.sh (renamed from src/Specific/montgomery32_2e338m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e338m15_11limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e338m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e338m15_11limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e338m15_11limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e338m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e369m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e369m25/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e369m25/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e369m25/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e369m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25/femul.v14
-rw-r--r--src/Specific/montgomery32_2e369m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e369m25/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e369m25/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e369m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e369m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e369m25/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e369m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e369m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e369m25_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e369m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e369m25_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e369m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e369m25_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e369m25_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e369m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e379m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e379m19/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e379m19/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e379m19/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e379m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19/femul.v14
-rw-r--r--src/Specific/montgomery32_2e379m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e379m19/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e379m19/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e379m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e379m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e379m19/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e379m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e379m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e379m19_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e379m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e379m19_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e379m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e379m19_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e379m19_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e379m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e382m105/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e382m105/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e382m105/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e382m105/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e382m105/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105/femul.v14
-rw-r--r--src/Specific/montgomery32_2e382m105/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e382m105/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e382m105/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e382m105/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e382m105/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e382m105/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e382m105/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e382m105/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e382m105_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e382m105/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e382m105_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e382m105/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e382m105_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e382m105_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e382m105/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m187/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e383m187/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e383m187/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m187/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e383m187/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m187/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e383m187/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m187/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e383m187/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m187/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e383m187/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m187/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e383m187/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e383m187_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e383m187/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e383m187_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e383m187/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m187_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e383m187_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e383m187/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e383m31/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e383m31/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m31/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e383m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e383m31/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m31/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e383m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e383m31/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e383m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e383m31_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e383m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e383m31_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e383m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m31_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e383m31_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e383m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m421/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e383m421/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e383m421/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m421/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e383m421/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m421/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e383m421/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m421/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e383m421/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m421/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e383m421/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m421/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e383m421/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e383m421_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e383m421/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e383m421_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e383m421/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e383m421_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e383m421_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e383m421/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m317/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e384m317/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e384m317/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m317/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e384m317/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m317/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e384m317/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m317/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e384m317/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m317/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e384m317/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m317/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e384m317/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e384m317_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e384m317/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e384m317_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e384m317/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m317_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e384m317_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e384m317/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e384m5x2e368m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e384m5x2e368m1_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e384m5x2e368m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e384m5x2e368m1_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e384m5x2e368m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e384m5x2e368m1_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e384m5x2e368m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feadd.c76
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.log44
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fenz.c27
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.log18
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e384m79x2e376m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e384m79x2e376m1_12limbs/compiler.sh (renamed from src/Specific/montgomery32_2e384m79x2e376m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e384m79x2e376m1_12limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e384m79x2e376m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e384m79x2e376m1_12limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e384m79x2e376m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e389m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e389m21/feadd.c82
-rw-r--r--src/Specific/montgomery32_2e389m21/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e389m21/feaddDisplay.log47
-rw-r--r--src/Specific/montgomery32_2e389m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21/femul.v14
-rw-r--r--src/Specific/montgomery32_2e389m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21/fenz.c29
-rw-r--r--src/Specific/montgomery32_2e389m21/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e389m21/fenzDisplay.log19
-rw-r--r--src/Specific/montgomery32_2e389m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e389m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e389m21/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e389m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e389m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e389m21_13limbs/compiler.sh (renamed from src/Specific/montgomery32_2e389m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e389m21_13limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e389m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e389m21_13limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e389m21_13limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e389m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e401m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e401m31/feadd.c82
-rw-r--r--src/Specific/montgomery32_2e401m31/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e401m31/feaddDisplay.log47
-rw-r--r--src/Specific/montgomery32_2e401m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31/femul.v14
-rw-r--r--src/Specific/montgomery32_2e401m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31/fenz.c29
-rw-r--r--src/Specific/montgomery32_2e401m31/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e401m31/fenzDisplay.log19
-rw-r--r--src/Specific/montgomery32_2e401m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e401m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e401m31/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e401m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e401m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e401m31_13limbs/compiler.sh (renamed from src/Specific/montgomery32_2e401m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e401m31_13limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e401m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e401m31_13limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e401m31_13limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e401m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e413m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e413m21/feadd.c82
-rw-r--r--src/Specific/montgomery32_2e413m21/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e413m21/feaddDisplay.log47
-rw-r--r--src/Specific/montgomery32_2e413m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21/femul.v14
-rw-r--r--src/Specific/montgomery32_2e413m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21/fenz.c29
-rw-r--r--src/Specific/montgomery32_2e413m21/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e413m21/fenzDisplay.log19
-rw-r--r--src/Specific/montgomery32_2e413m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e413m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e413m21/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e413m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e413m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e413m21_13limbs/compiler.sh (renamed from src/Specific/montgomery32_2e413m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e413m21_13limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e413m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e413m21_13limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e413m21_13limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e413m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e414m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e414m17/feadd.c82
-rw-r--r--src/Specific/montgomery32_2e414m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e414m17/feaddDisplay.log47
-rw-r--r--src/Specific/montgomery32_2e414m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e414m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17/fenz.c29
-rw-r--r--src/Specific/montgomery32_2e414m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e414m17/fenzDisplay.log19
-rw-r--r--src/Specific/montgomery32_2e414m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e414m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e414m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e414m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e414m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e414m17_13limbs/compiler.sh (renamed from src/Specific/montgomery32_2e414m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e414m17_13limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e414m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e414m17_13limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e414m17_13limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e414m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feadd.c82
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.log47
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fenz.c29
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.log19
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e416m2e208m1_13limbs/compiler.sh (renamed from src/Specific/montgomery32_2e416m2e208m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e416m2e208m1_13limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e416m2e208m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e416m2e208m1_13limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e416m2e208m1_13limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e416m2e208m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e444m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e444m17/feadd.c88
-rw-r--r--src/Specific/montgomery32_2e444m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e444m17/feaddDisplay.log50
-rw-r--r--src/Specific/montgomery32_2e444m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e444m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17/fenz.c31
-rw-r--r--src/Specific/montgomery32_2e444m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e444m17/fenzDisplay.log20
-rw-r--r--src/Specific/montgomery32_2e444m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e444m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e444m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e444m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e444m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e444m17_14limbs/compiler.sh (renamed from src/Specific/montgomery32_2e444m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e444m17_14limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e444m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e444m17_14limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e444m17_14limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e444m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feadd.c88
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.log50
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fenz.c31
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.log20
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e448m2e224m1_14limbs/compiler.sh (renamed from src/Specific/montgomery32_2e448m2e224m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e448m2e224m1_14limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e448m2e224m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e448m2e224m1_14limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e448m2e224m1_14limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e448m2e224m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feadd.c94
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.log53
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fenz.c33
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.log21
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e450m2e225m1_15limbs/compiler.sh (renamed from src/Specific/montgomery32_2e450m2e225m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e450m2e225m1_15limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e450m2e225m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e450m2e225m1_15limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e450m2e225m1_15limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e450m2e225m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e452m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e452m3/feadd.c94
-rw-r--r--src/Specific/montgomery32_2e452m3/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e452m3/feaddDisplay.log53
-rw-r--r--src/Specific/montgomery32_2e452m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3/femul.v14
-rw-r--r--src/Specific/montgomery32_2e452m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3/fenz.c33
-rw-r--r--src/Specific/montgomery32_2e452m3/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e452m3/fenzDisplay.log21
-rw-r--r--src/Specific/montgomery32_2e452m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e452m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e452m3/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e452m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e452m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e452m3_15limbs/compiler.sh (renamed from src/Specific/montgomery32_2e452m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e452m3_15limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e452m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e452m3_15limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e452m3_15limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e452m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e468m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e468m17/feadd.c94
-rw-r--r--src/Specific/montgomery32_2e468m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e468m17/feaddDisplay.log53
-rw-r--r--src/Specific/montgomery32_2e468m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e468m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17/fenz.c33
-rw-r--r--src/Specific/montgomery32_2e468m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e468m17/fenzDisplay.log21
-rw-r--r--src/Specific/montgomery32_2e468m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e468m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e468m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e468m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e468m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e468m17_15limbs/compiler.sh (renamed from src/Specific/montgomery32_2e468m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e468m17_15limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e468m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e468m17_15limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e468m17_15limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e468m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feadd.c94
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.log53
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fenz.c33
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.log21
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e480m2e240m1_15limbs/compiler.sh (renamed from src/Specific/montgomery32_2e480m2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e480m2e240m1_15limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e480m2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e480m2e240m1_15limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e480m2e240m1_15limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e480m2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e488m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e488m17/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e488m17/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e488m17/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e488m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17/femul.v14
-rw-r--r--src/Specific/montgomery32_2e488m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e488m17/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e488m17/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e488m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e488m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e488m17/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e488m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e488m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e488m17_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e488m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e488m17_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e488m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e488m17_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e488m17_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e488m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e489m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e489m21/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e489m21/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e489m21/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e489m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21/femul.v14
-rw-r--r--src/Specific/montgomery32_2e489m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e489m21/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e489m21/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e489m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e489m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e489m21/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e489m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e489m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e489m21_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e489m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e489m21_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e489m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e489m21_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e489m21_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e489m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e495m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e495m31/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e495m31/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e495m31/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e495m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31/femul.v14
-rw-r--r--src/Specific/montgomery32_2e495m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e495m31/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e495m31/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e495m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e495m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e495m31/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e495m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e495m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e495m31_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e495m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e495m31_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e495m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e495m31_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e495m31_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e495m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e510m290x2e496m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e510m290x2e496m1_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e510m290x2e496m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e510m290x2e496m1_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e510m290x2e496m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e510m290x2e496m1_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e510m290x2e496m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e511m187/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e511m187/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e511m187/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e511m187/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e511m187/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187/femul.v14
-rw-r--r--src/Specific/montgomery32_2e511m187/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e511m187/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e511m187/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e511m187/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e511m187/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e511m187/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e511m187/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e511m187/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e511m187_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e511m187/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e511m187_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e511m187/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e511m187_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e511m187_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e511m187/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e511m481/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e511m481/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e511m481/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e511m481/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e511m481/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481/femul.v14
-rw-r--r--src/Specific/montgomery32_2e511m481/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e511m481/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e511m481/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e511m481/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e511m481/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e511m481/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e511m481/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e511m481/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e511m481_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e511m481/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e511m481_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e511m481/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e511m481_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e511m481_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e511m481/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e512m491x2e496m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e512m491x2e496m1_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e512m491x2e496m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e512m491x2e496m1_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e512m491x2e496m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e512m491x2e496m1_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e512m491x2e496m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e512m569/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e512m569/feadd.c100
-rw-r--r--src/Specific/montgomery32_2e512m569/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e512m569/feaddDisplay.log56
-rw-r--r--src/Specific/montgomery32_2e512m569/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569/femul.v14
-rw-r--r--src/Specific/montgomery32_2e512m569/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569/fenz.c35
-rw-r--r--src/Specific/montgomery32_2e512m569/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e512m569/fenzDisplay.log22
-rw-r--r--src/Specific/montgomery32_2e512m569/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e512m569/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e512m569/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e512m569/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e512m569/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e512m569_16limbs/compiler.sh (renamed from src/Specific/montgomery32_2e512m569/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e512m569_16limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e512m569/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e512m569_16limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e512m569_16limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e512m569/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery32_2e521m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery32_2e521m1/feadd.c106
-rw-r--r--src/Specific/montgomery32_2e521m1/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e521m1/feaddDisplay.log59
-rw-r--r--src/Specific/montgomery32_2e521m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1/femul.v14
-rw-r--r--src/Specific/montgomery32_2e521m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1/fenz.c37
-rw-r--r--src/Specific/montgomery32_2e521m1/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e521m1/fenzDisplay.log23
-rw-r--r--src/Specific/montgomery32_2e521m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e521m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1/fesquare.c5
-rw-r--r--src/Specific/montgomery32_2e521m1/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e521m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/CurveParameters.v (renamed from src/Specific/montgomery32_2e521m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery32_2e521m1_17limbs/compiler.sh (renamed from src/Specific/montgomery32_2e521m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery32_2e521m1_17limbs/compilerxx.sh (renamed from src/Specific/montgomery32_2e521m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/feadd.v14
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/femul.v14
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/fenz.v16
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/feopp.v14
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/fesub.v14
-rw-r--r--src/Specific/montgomery32_2e521m1_17limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery32_2e521m1_17limbs/py_interpreter.sh (renamed from src/Specific/montgomery32_2e521m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e127m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e127m1/feadd.c16
-rw-r--r--src/Specific/montgomery64_2e127m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e127m1/feaddDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e127m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1/femul.c40
-rw-r--r--src/Specific/montgomery64_2e127m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e127m1/femulDisplay.log38
-rw-r--r--src/Specific/montgomery64_2e127m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1/fenz.c7
-rw-r--r--src/Specific/montgomery64_2e127m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e127m1/fenzDisplay.log8
-rw-r--r--src/Specific/montgomery64_2e127m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1/feopp.c14
-rw-r--r--src/Specific/montgomery64_2e127m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e127m1/feoppDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e127m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e127m1/fesub.c16
-rw-r--r--src/Specific/montgomery64_2e127m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e127m1/fesubDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e127m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e127m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e127m1_2limbs/compiler.sh (renamed from src/Specific/montgomery64_2e127m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e127m1_2limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e127m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e127m1_2limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e127m1_2limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e127m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e129m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e129m25/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e129m25/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e129m25/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e129m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25/femul.c74
-rw-r--r--src/Specific/montgomery64_2e129m25/femul.v14
-rw-r--r--src/Specific/montgomery64_2e129m25/femulDisplay.log69
-rw-r--r--src/Specific/montgomery64_2e129m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e129m25/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e129m25/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e129m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e129m25/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e129m25/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e129m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e129m25/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e129m25/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e129m25/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e129m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e129m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e129m25_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e129m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e129m25_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e129m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e129m25_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e129m25_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e129m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e130m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e130m5/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e130m5/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e130m5/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e130m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5/femul.c80
-rw-r--r--src/Specific/montgomery64_2e130m5/femul.v14
-rw-r--r--src/Specific/montgomery64_2e130m5/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e130m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e130m5/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e130m5/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e130m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e130m5/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e130m5/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e130m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e130m5/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e130m5/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e130m5/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e130m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e130m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e130m5_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e130m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e130m5_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e130m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e130m5_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e130m5_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e130m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e137m13/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e137m13/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e137m13/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e137m13/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e137m13/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13/femul.c80
-rw-r--r--src/Specific/montgomery64_2e137m13/femul.v14
-rw-r--r--src/Specific/montgomery64_2e137m13/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e137m13/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e137m13/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e137m13/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e137m13/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e137m13/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e137m13/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e137m13/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e137m13/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e137m13/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e137m13/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e137m13/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e137m13/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e137m13_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e137m13/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e137m13_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e137m13/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e137m13_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e137m13_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e137m13/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e140m27/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e140m27/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e140m27/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e140m27/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e140m27/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27/femul.c80
-rw-r--r--src/Specific/montgomery64_2e140m27/femul.v14
-rw-r--r--src/Specific/montgomery64_2e140m27/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e140m27/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e140m27/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e140m27/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e140m27/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e140m27/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e140m27/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e140m27/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e140m27/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e140m27/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e140m27/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e140m27/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e140m27/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e140m27_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e140m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e140m27_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e140m27/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e140m27_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e140m27_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e140m27/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e141m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e141m9/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e141m9/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e141m9/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e141m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9/femul.c80
-rw-r--r--src/Specific/montgomery64_2e141m9/femul.v14
-rw-r--r--src/Specific/montgomery64_2e141m9/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e141m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e141m9/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e141m9/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e141m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e141m9/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e141m9/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e141m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e141m9/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e141m9/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e141m9/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e141m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e141m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e141m9_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e141m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e141m9_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e141m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e141m9_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e141m9_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e141m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e150m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e150m3/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e150m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e150m3/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3/femul.c80
-rw-r--r--src/Specific/montgomery64_2e150m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e150m3/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e150m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e150m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e150m3/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e150m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e150m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e150m3/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e150m3/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e150m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e150m3/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e150m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e150m3_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e150m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e150m3_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e150m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e150m3_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e150m3_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e150m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e150m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e150m5/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e150m5/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e150m5/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5/femul.c80
-rw-r--r--src/Specific/montgomery64_2e150m5/femul.v14
-rw-r--r--src/Specific/montgomery64_2e150m5/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e150m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e150m5/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e150m5/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e150m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e150m5/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e150m5/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e150m5/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e150m5/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e150m5/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e150m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e150m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e150m5_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e150m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e150m5_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e150m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e150m5_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e150m5_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e150m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e152m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e152m17/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e152m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e152m17/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e152m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17/femul.c80
-rw-r--r--src/Specific/montgomery64_2e152m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e152m17/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e152m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e152m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e152m17/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e152m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e152m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e152m17/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e152m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e152m17/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e152m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e152m17/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e152m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e152m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e152m17_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e152m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e152m17_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e152m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e152m17_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e152m17_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e152m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e158m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e158m15/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e158m15/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e158m15/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e158m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15/femul.c80
-rw-r--r--src/Specific/montgomery64_2e158m15/femul.v14
-rw-r--r--src/Specific/montgomery64_2e158m15/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e158m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e158m15/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e158m15/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e158m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e158m15/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e158m15/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e158m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e158m15/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e158m15/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e158m15/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e158m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e158m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e158m15_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e158m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e158m15_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e158m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e158m15_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e158m15_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e158m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e165m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e165m25/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e165m25/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e165m25/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e165m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25/femul.c80
-rw-r--r--src/Specific/montgomery64_2e165m25/femul.v14
-rw-r--r--src/Specific/montgomery64_2e165m25/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e165m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e165m25/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e165m25/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e165m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e165m25/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e165m25/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e165m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e165m25/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e165m25/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e165m25/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e165m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e165m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e165m25_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e165m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e165m25_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e165m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e165m25_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e165m25_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e165m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e166m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e166m5/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e166m5/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e166m5/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e166m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5/femul.c80
-rw-r--r--src/Specific/montgomery64_2e166m5/femul.v14
-rw-r--r--src/Specific/montgomery64_2e166m5/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e166m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e166m5/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e166m5/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e166m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e166m5/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e166m5/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e166m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e166m5/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e166m5/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e166m5/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e166m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e166m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e166m5_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e166m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e166m5_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e166m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e166m5_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e166m5_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e166m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e171m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e171m19/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e171m19/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e171m19/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e171m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19/femul.c80
-rw-r--r--src/Specific/montgomery64_2e171m19/femul.v14
-rw-r--r--src/Specific/montgomery64_2e171m19/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e171m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e171m19/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e171m19/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e171m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e171m19/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e171m19/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e171m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e171m19/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e171m19/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e171m19/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e171m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e171m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e171m19_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e171m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e171m19_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e171m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e171m19_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e171m19_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e171m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e174m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e174m17/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e174m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e174m17/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17/femul.c80
-rw-r--r--src/Specific/montgomery64_2e174m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e174m17/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e174m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e174m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e174m17/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e174m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e174m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e174m17/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e174m17/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e174m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e174m17/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e174m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e174m17_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e174m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e174m17_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e174m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e174m17_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e174m17_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e174m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e174m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e174m3/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e174m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e174m3/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3/femul.c80
-rw-r--r--src/Specific/montgomery64_2e174m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e174m3/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e174m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e174m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e174m3/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e174m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e174m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e174m3/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e174m3/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e174m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e174m3/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e174m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e174m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e174m3_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e174m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e174m3_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e174m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e174m3_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e174m3_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e174m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e189m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e189m25/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e189m25/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e189m25/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e189m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25/femul.c80
-rw-r--r--src/Specific/montgomery64_2e189m25/femul.v14
-rw-r--r--src/Specific/montgomery64_2e189m25/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e189m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e189m25/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e189m25/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e189m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e189m25/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e189m25/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e189m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e189m25/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e189m25/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e189m25/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e189m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e189m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e189m25_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e189m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e189m25_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e189m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e189m25_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e189m25_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e189m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e190m11/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e190m11/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e190m11/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e190m11/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e190m11/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11/femul.c80
-rw-r--r--src/Specific/montgomery64_2e190m11/femul.v14
-rw-r--r--src/Specific/montgomery64_2e190m11/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e190m11/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e190m11/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e190m11/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e190m11/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e190m11/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e190m11/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e190m11/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e190m11/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e190m11/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e190m11/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e190m11/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e190m11/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e190m11_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e190m11/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e190m11_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e190m11/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e190m11_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e190m11_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e190m11/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e191m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e191m19/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e191m19/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e191m19/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e191m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19/femul.c80
-rw-r--r--src/Specific/montgomery64_2e191m19/femul.v14
-rw-r--r--src/Specific/montgomery64_2e191m19/femulDisplay.log75
-rw-r--r--src/Specific/montgomery64_2e191m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e191m19/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e191m19/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e191m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e191m19/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e191m19/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e191m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e191m19/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e191m19/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e191m19/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e191m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e191m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e191m19_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e191m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e191m19_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e191m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e191m19_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e191m19_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e191m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feadd.c22
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/femul.c77
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/femulDisplay.log72
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fenz.c9
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.log9
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feopp.c19
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fesub.c22
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.log17
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e192m2e64m1_3limbs/compiler.sh (renamed from src/Specific/montgomery64_2e192m2e64m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e192m2e64m1_3limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e192m2e64m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e192m2e64m1_3limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e192m2e64m1_3limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e192m2e64m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e194m33/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e194m33/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e194m33/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e194m33/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e194m33/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33/femul.c130
-rw-r--r--src/Specific/montgomery64_2e194m33/femul.v14
-rw-r--r--src/Specific/montgomery64_2e194m33/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e194m33/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e194m33/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e194m33/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e194m33/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e194m33/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e194m33/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e194m33/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e194m33/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e194m33/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e194m33/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e194m33/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e194m33/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e194m33_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e194m33/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e194m33_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e194m33/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e194m33_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e194m33_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e194m33/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e196m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e196m15/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e196m15/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e196m15/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e196m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15/femul.c130
-rw-r--r--src/Specific/montgomery64_2e196m15/femul.v14
-rw-r--r--src/Specific/montgomery64_2e196m15/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e196m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e196m15/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e196m15/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e196m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e196m15/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e196m15/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e196m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e196m15/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e196m15/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e196m15/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e196m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e196m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e196m15_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e196m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e196m15_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e196m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e196m15_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e196m15_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e196m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e198m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e198m17/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e198m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e198m17/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e198m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17/femul.c130
-rw-r--r--src/Specific/montgomery64_2e198m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e198m17/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e198m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e198m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e198m17/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e198m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e198m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e198m17/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e198m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e198m17/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e198m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e198m17/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e198m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e198m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e198m17_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e198m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e198m17_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e198m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e198m17_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e198m17_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e198m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/femul.c126
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.log118
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e205m45x2e198m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e205m45x2e198m1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e205m45x2e198m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e205m45x2e198m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e205m45x2e198m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e205m45x2e198m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e205m45x2e198m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e206m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e206m5/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e206m5/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e206m5/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e206m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5/femul.c130
-rw-r--r--src/Specific/montgomery64_2e206m5/femul.v14
-rw-r--r--src/Specific/montgomery64_2e206m5/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e206m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e206m5/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e206m5/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e206m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e206m5/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e206m5/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e206m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e206m5/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e206m5/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e206m5/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e206m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e206m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e206m5_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e206m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e206m5_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e206m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e206m5_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e206m5_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e206m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e212m29/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e212m29/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e212m29/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e212m29/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e212m29/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29/femul.c130
-rw-r--r--src/Specific/montgomery64_2e212m29/femul.v14
-rw-r--r--src/Specific/montgomery64_2e212m29/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e212m29/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e212m29/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e212m29/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e212m29/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e212m29/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e212m29/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e212m29/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e212m29/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e212m29/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e212m29/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e212m29/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e212m29/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e212m29_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e212m29/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e212m29_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e212m29/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e212m29_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e212m29_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e212m29/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e213m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e213m3/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e213m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e213m3/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e213m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3/femul.c130
-rw-r--r--src/Specific/montgomery64_2e213m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e213m3/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e213m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e213m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e213m3/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e213m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e213m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e213m3/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e213m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e213m3/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e213m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e213m3/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e213m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e213m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e213m3_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e213m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e213m3_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e213m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e213m3_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e213m3_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e213m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/femul.c126
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/femulDisplay.log118
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e216m2e108m1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e216m2e108m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e216m2e108m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e216m2e108m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e216m2e108m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e216m2e108m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e216m2e108m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e221m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e221m3/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e221m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e221m3/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e221m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3/femul.c130
-rw-r--r--src/Specific/montgomery64_2e221m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e221m3/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e221m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e221m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e221m3/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e221m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e221m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e221m3/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e221m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e221m3/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e221m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e221m3/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e221m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e221m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e221m3_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e221m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e221m3_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e221m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e221m3_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e221m3_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e221m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e222m117/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e222m117/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e222m117/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e222m117/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e222m117/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117/femul.c130
-rw-r--r--src/Specific/montgomery64_2e222m117/femul.v14
-rw-r--r--src/Specific/montgomery64_2e222m117/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e222m117/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e222m117/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e222m117/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e222m117/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e222m117/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e222m117/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e222m117/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e222m117/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e222m117/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e222m117/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e222m117/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e222m117/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e222m117_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e222m117/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e222m117_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e222m117/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e222m117_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e222m117_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e222m117/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/femul.c122
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/femulDisplay.log114
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e224m2e96p1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e224m2e96p1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e224m2e96p1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e224m2e96p1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e224m2e96p1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e224m2e96p1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e224m2e96p1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e226m5/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e226m5/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e226m5/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e226m5/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e226m5/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5/femul.c130
-rw-r--r--src/Specific/montgomery64_2e226m5/femul.v14
-rw-r--r--src/Specific/montgomery64_2e226m5/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e226m5/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e226m5/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e226m5/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e226m5/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e226m5/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e226m5/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e226m5/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e226m5/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e226m5/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e226m5/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e226m5/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e226m5/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e226m5_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e226m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e226m5_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e226m5/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e226m5_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e226m5_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e226m5/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e230m27/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e230m27/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e230m27/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e230m27/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e230m27/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27/femul.c130
-rw-r--r--src/Specific/montgomery64_2e230m27/femul.v14
-rw-r--r--src/Specific/montgomery64_2e230m27/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e230m27/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e230m27/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e230m27/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e230m27/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e230m27/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e230m27/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e230m27/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e230m27/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e230m27/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e230m27/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e230m27/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e230m27/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e230m27_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e230m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e230m27_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e230m27/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e230m27_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e230m27_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e230m27/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e235m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e235m15/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e235m15/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e235m15/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e235m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15/femul.c130
-rw-r--r--src/Specific/montgomery64_2e235m15/femul.v14
-rw-r--r--src/Specific/montgomery64_2e235m15/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e235m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e235m15/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e235m15/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e235m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e235m15/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e235m15/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e235m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e235m15/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e235m15/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e235m15/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e235m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e235m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e235m15_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e235m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e235m15_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e235m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e235m15_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e235m15_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e235m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e243m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e243m9/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e243m9/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e243m9/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e243m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9/femul.c130
-rw-r--r--src/Specific/montgomery64_2e243m9/femul.v14
-rw-r--r--src/Specific/montgomery64_2e243m9/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e243m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e243m9/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e243m9/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e243m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e243m9/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e243m9/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e243m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e243m9/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e243m9/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e243m9/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e243m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e243m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e243m9_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e243m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e243m9_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e243m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e243m9_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e243m9_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e243m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e251m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e251m9/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e251m9/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e251m9/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e251m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9/femul.c130
-rw-r--r--src/Specific/montgomery64_2e251m9/femul.v14
-rw-r--r--src/Specific/montgomery64_2e251m9/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e251m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e251m9/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e251m9/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e251m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e251m9/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e251m9/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e251m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e251m9/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e251m9/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e251m9/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e251m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e251m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e251m9_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e251m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e251m9_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e251m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e251m9_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e251m9_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e251m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/femul.c126
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.log118
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e254m127x2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e254m127x2e240m1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e254m127x2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e254m127x2e240m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e254m127x2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e254m127x2e240m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e254m127x2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e255m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e255m19/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e255m19/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e255m19/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19/femul.c130
-rw-r--r--src/Specific/montgomery64_2e255m19/femul.v14
-rw-r--r--src/Specific/montgomery64_2e255m19/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e255m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e255m19/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e255m19/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e255m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e255m19/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e255m19/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e255m19/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e255m19/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e255m19/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e255m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e255m19_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e255m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e255m19_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e255m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e255m19_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e255m19_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e255m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v39
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh4
-rwxr-xr-xsrc/Specific/montgomery64_2e255m2e4m2e1m1/compilerxx.sh4
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/femul.c130
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e255m2e4m2e1m1/py_interpreter.sh4
-rw-r--r--src/Specific/montgomery64_2e255m765/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e255m765/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e255m765/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e255m765/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m765/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765/femul.c130
-rw-r--r--src/Specific/montgomery64_2e255m765/femul.v14
-rw-r--r--src/Specific/montgomery64_2e255m765/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e255m765/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e255m765/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e255m765/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e255m765/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e255m765/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e255m765/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m765/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e255m765/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e255m765/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e255m765/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e255m765/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e255m765/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e255m765_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e255m765/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e255m765_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e255m765/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e255m765_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e255m765_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e255m765/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m189/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e256m189/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e256m189/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m189/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m189/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189/femul.c130
-rw-r--r--src/Specific/montgomery64_2e256m189/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m189/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e256m189/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e256m189/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m189/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e256m189/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e256m189/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m189/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m189/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e256m189/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e256m189/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m189/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m189/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e256m189/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e256m189_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e256m189/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e256m189_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e256m189/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m189_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m189_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e256m189/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.c122
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.log114
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.c23
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.log19
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.c27
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.log19
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/femul.c130
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/femulDisplay.log122
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e32m977_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e256m2e32m977/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e32m977_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e256m2e32m977/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m2e32m977_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m2e32m977_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e256m2e32m977/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e256m4294968273_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m4294968273_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m4294968273_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m4294968273_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feadd.c28
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/femul.c126
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.log118
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fenz.c11
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.log10
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feopp.c24
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fesub.c28
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.log20
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e256m88x2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e256m88x2e240m1_4limbs/compiler.sh (renamed from src/Specific/montgomery64_2e256m88x2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e256m88x2e240m1_4limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e256m88x2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e256m88x2e240m1_4limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e256m88x2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e266m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e266m3/feadd.c34
-rw-r--r--src/Specific/montgomery64_2e266m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e266m3/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e266m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3/femul.c192
-rw-r--r--src/Specific/montgomery64_2e266m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e266m3/femulDisplay.log181
-rw-r--r--src/Specific/montgomery64_2e266m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3/fenz.c13
-rw-r--r--src/Specific/montgomery64_2e266m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e266m3/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery64_2e266m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3/feopp.c29
-rw-r--r--src/Specific/montgomery64_2e266m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e266m3/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e266m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e266m3/fesub.c34
-rw-r--r--src/Specific/montgomery64_2e266m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e266m3/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e266m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e266m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e266m3_5limbs/compiler.sh (renamed from src/Specific/montgomery64_2e266m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e266m3_5limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e266m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e266m3_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e266m3_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e266m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e285m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e285m9/feadd.c34
-rw-r--r--src/Specific/montgomery64_2e285m9/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e285m9/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e285m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9/femul.c192
-rw-r--r--src/Specific/montgomery64_2e285m9/femul.v14
-rw-r--r--src/Specific/montgomery64_2e285m9/femulDisplay.log181
-rw-r--r--src/Specific/montgomery64_2e285m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9/fenz.c13
-rw-r--r--src/Specific/montgomery64_2e285m9/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e285m9/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery64_2e285m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9/feopp.c29
-rw-r--r--src/Specific/montgomery64_2e285m9/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e285m9/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e285m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e285m9/fesub.c34
-rw-r--r--src/Specific/montgomery64_2e285m9/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e285m9/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e285m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e285m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e285m9_5limbs/compiler.sh (renamed from src/Specific/montgomery64_2e285m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e285m9_5limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e285m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e285m9_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e285m9_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e285m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e291m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e291m19/feadd.c34
-rw-r--r--src/Specific/montgomery64_2e291m19/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e291m19/feaddDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e291m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19/femul.c192
-rw-r--r--src/Specific/montgomery64_2e291m19/femul.v14
-rw-r--r--src/Specific/montgomery64_2e291m19/femulDisplay.log181
-rw-r--r--src/Specific/montgomery64_2e291m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19/fenz.c13
-rw-r--r--src/Specific/montgomery64_2e291m19/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e291m19/fenzDisplay.log11
-rw-r--r--src/Specific/montgomery64_2e291m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19/feopp.c29
-rw-r--r--src/Specific/montgomery64_2e291m19/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e291m19/feoppDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e291m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e291m19/fesub.c34
-rw-r--r--src/Specific/montgomery64_2e291m19/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e291m19/fesubDisplay.log23
-rw-r--r--src/Specific/montgomery64_2e291m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e291m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e291m19_5limbs/compiler.sh (renamed from src/Specific/montgomery64_2e291m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e291m19_5limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e291m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e291m19_5limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e291m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e321m9/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e321m9/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e321m9/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e321m9/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e321m9/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9/femul.c254
-rw-r--r--src/Specific/montgomery64_2e321m9/femul.v14
-rw-r--r--src/Specific/montgomery64_2e321m9/femulDisplay.log240
-rw-r--r--src/Specific/montgomery64_2e321m9/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e321m9/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e321m9/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e321m9/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e321m9/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e321m9/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e321m9/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e321m9/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e321m9/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e321m9/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e321m9/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e321m9/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e321m9_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e321m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e321m9_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e321m9/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e321m9_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e321m9_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e321m9/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/femul.c260
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e322m2e161m1_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e322m2e161m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e322m2e161m1_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e322m2e161m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e322m2e161m1_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e322m2e161m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e336m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e336m17/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e336m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e336m17/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17/femul.c266
-rw-r--r--src/Specific/montgomery64_2e336m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e336m17/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e336m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e336m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e336m17/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e336m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e336m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e336m17/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e336m17/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e336m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e336m17/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e336m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e336m17_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e336m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e336m17_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e336m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e336m17_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e336m17_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e336m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e336m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e336m3/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e336m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e336m3/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3/femul.c266
-rw-r--r--src/Specific/montgomery64_2e336m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e336m3/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e336m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e336m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e336m3/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e336m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e336m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e336m3/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e336m3/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e336m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e336m3/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e336m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e336m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e336m3_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e336m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e336m3_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e336m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e336m3_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e336m3_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e336m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e338m15/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e338m15/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e338m15/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e338m15/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e338m15/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15/femul.c266
-rw-r--r--src/Specific/montgomery64_2e338m15/femul.v14
-rw-r--r--src/Specific/montgomery64_2e338m15/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e338m15/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e338m15/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e338m15/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e338m15/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e338m15/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e338m15/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e338m15/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e338m15/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e338m15/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e338m15/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e338m15/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e338m15/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e338m15_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e338m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e338m15_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e338m15/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e338m15_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e338m15_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e338m15/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e369m25/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e369m25/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e369m25/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e369m25/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e369m25/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25/femul.c266
-rw-r--r--src/Specific/montgomery64_2e369m25/femul.v14
-rw-r--r--src/Specific/montgomery64_2e369m25/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e369m25/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e369m25/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e369m25/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e369m25/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e369m25/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e369m25/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e369m25/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e369m25/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e369m25/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e369m25/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e369m25/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e369m25/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e369m25_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e369m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e369m25_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e369m25/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e369m25_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e369m25_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e369m25/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e379m19/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e379m19/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e379m19/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e379m19/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e379m19/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19/femul.c266
-rw-r--r--src/Specific/montgomery64_2e379m19/femul.v14
-rw-r--r--src/Specific/montgomery64_2e379m19/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e379m19/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e379m19/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e379m19/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e379m19/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e379m19/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e379m19/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e379m19/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e379m19/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e379m19/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e379m19/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e379m19/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e379m19/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e379m19_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e379m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e379m19_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e379m19/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e379m19_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e379m19_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e379m19/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e382m105/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e382m105/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e382m105/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e382m105/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e382m105/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105/femul.c266
-rw-r--r--src/Specific/montgomery64_2e382m105/femul.v14
-rw-r--r--src/Specific/montgomery64_2e382m105/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e382m105/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e382m105/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e382m105/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e382m105/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e382m105/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e382m105/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e382m105/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e382m105/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e382m105/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e382m105/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e382m105/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e382m105/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e382m105_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e382m105/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e382m105_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e382m105/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e382m105_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e382m105_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e382m105/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m187/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e383m187/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e383m187/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m187/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m187/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187/femul.c266
-rw-r--r--src/Specific/montgomery64_2e383m187/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m187/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e383m187/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e383m187/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m187/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e383m187/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e383m187/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m187/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m187/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e383m187/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e383m187/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m187/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m187/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e383m187/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e383m187_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e383m187/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e383m187_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e383m187/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m187_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e383m187_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e383m187/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e383m31/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e383m31/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m31/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31/femul.c266
-rw-r--r--src/Specific/montgomery64_2e383m31/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m31/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e383m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e383m31/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m31/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e383m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e383m31/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m31/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e383m31/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e383m31/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m31/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e383m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e383m31_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e383m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e383m31_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e383m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m31_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e383m31_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e383m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m421/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e383m421/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e383m421/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m421/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m421/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421/femul.c266
-rw-r--r--src/Specific/montgomery64_2e383m421/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m421/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e383m421/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e383m421/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m421/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e383m421/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e383m421/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m421/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m421/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e383m421/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e383m421/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m421/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e383m421/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e383m421/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e383m421_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e383m421/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e383m421_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e383m421/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e383m421_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e383m421_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e383m421/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.c266
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m317/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e384m317/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m317/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m317/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m317/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317/femul.c266
-rw-r--r--src/Specific/montgomery64_2e384m317/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m317/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e384m317/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m317/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m317/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m317/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m317/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m317/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m317/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e384m317/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m317/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m317/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m317/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e384m317/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e384m317_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e384m317/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e384m317_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e384m317/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e384m317_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e384m317/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/femul.c260
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e384m5x2e368m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e384m5x2e368m1_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e384m5x2e368m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e384m5x2e368m1_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e384m5x2e368m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e384m5x2e368m1_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e384m5x2e368m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/femul.c260
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e384m79x2e376m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e384m79x2e376m1_6limbs/compiler.sh (renamed from src/Specific/montgomery64_2e384m79x2e376m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e384m79x2e376m1_6limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e384m79x2e376m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e384m79x2e376m1_6limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e384m79x2e376m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e389m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e389m21/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e389m21/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e389m21/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e389m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21/femul.v14
-rw-r--r--src/Specific/montgomery64_2e389m21/femulDisplay.log335
-rw-r--r--src/Specific/montgomery64_2e389m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e389m21/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e389m21/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e389m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e389m21/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e389m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e389m21/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e389m21/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e389m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e389m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e389m21_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e389m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e389m21_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e389m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e389m21_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e389m21_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e389m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e401m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e401m31/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e401m31/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e401m31/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e401m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31/femul.v14
-rw-r--r--src/Specific/montgomery64_2e401m31/femulDisplay.log335
-rw-r--r--src/Specific/montgomery64_2e401m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e401m31/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e401m31/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e401m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e401m31/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e401m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e401m31/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e401m31/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e401m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e401m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e401m31_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e401m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e401m31_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e401m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e401m31_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e401m31_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e401m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e413m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e413m21/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e413m21/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e413m21/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e413m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21/femul.v14
-rw-r--r--src/Specific/montgomery64_2e413m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e413m21/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e413m21/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e413m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e413m21/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e413m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e413m21/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e413m21/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e413m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e413m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e413m21_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e413m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e413m21_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e413m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e413m21_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e413m21_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e413m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e414m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e414m17/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e414m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e414m17/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e414m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e414m17/femulDisplay.log335
-rw-r--r--src/Specific/montgomery64_2e414m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e414m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e414m17/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e414m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e414m17/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e414m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e414m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e414m17/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e414m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e414m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e414m17_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e414m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e414m17_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e414m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e414m17_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e414m17_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e414m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/femulDisplay.log328
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e416m2e208m1_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e416m2e208m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e416m2e208m1_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e416m2e208m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e416m2e208m1_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e416m2e208m1_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e416m2e208m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e444m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e444m17/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e444m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e444m17/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e444m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e444m17/femulDisplay.log335
-rw-r--r--src/Specific/montgomery64_2e444m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e444m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e444m17/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e444m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e444m17/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e444m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e444m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e444m17/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e444m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e444m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e444m17_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e444m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e444m17_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e444m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e444m17_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e444m17_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e444m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feadd.c46
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/femulDisplay.log328
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fenz.c17
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.log29
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e448m2e224m1_7limbs/compiler.sh (renamed from src/Specific/montgomery64_2e448m2e224m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e448m2e224m1_7limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e448m2e224m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e448m2e224m1_7limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e448m2e224m1_7limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e448m2e224m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e450m2e225m1_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e450m2e225m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e450m2e225m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e450m2e225m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e450m2e225m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e450m2e225m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e450m2e225m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e452m3/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e452m3/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e452m3/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e452m3/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e452m3/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3/femul.v14
-rw-r--r--src/Specific/montgomery64_2e452m3/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e452m3/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e452m3/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e452m3/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e452m3/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e452m3/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e452m3/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e452m3/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e452m3_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e452m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e452m3_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e452m3/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e452m3_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e452m3_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e452m3/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e468m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e468m17/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e468m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e468m17/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e468m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e468m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e468m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e468m17/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e468m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e468m17/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e468m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e468m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e468m17/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e468m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e468m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e468m17_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e468m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e468m17_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e468m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e468m17_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e468m17_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e468m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e480m2e240m1_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e480m2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e480m2e240m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e480m2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e480m2e240m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e480m2e240m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e480m2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e488m17/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e488m17/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e488m17/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e488m17/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e488m17/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17/femul.v14
-rw-r--r--src/Specific/montgomery64_2e488m17/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e488m17/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e488m17/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e488m17/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e488m17/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e488m17/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e488m17/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e488m17/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e488m17/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e488m17/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e488m17_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e488m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e488m17_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e488m17/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e488m17_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e488m17_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e488m17/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e489m21/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e489m21/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e489m21/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e489m21/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e489m21/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21/femul.v14
-rw-r--r--src/Specific/montgomery64_2e489m21/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e489m21/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e489m21/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e489m21/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e489m21/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e489m21/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e489m21/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e489m21/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e489m21/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e489m21/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e489m21_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e489m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e489m21_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e489m21/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e489m21_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e489m21_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e489m21/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e495m31/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e495m31/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e495m31/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e495m31/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e495m31/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31/femul.v14
-rw-r--r--src/Specific/montgomery64_2e495m31/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e495m31/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e495m31/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e495m31/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e495m31/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e495m31/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e495m31/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e495m31/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e495m31/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e495m31/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e495m31_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e495m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e495m31_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e495m31/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e495m31_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e495m31_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e495m31/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e510m290x2e496m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e510m290x2e496m1_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e510m290x2e496m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e510m290x2e496m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e510m290x2e496m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e510m290x2e496m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e510m290x2e496m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e511m187/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e511m187/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e511m187/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e511m187/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m187/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187/femul.v14
-rw-r--r--src/Specific/montgomery64_2e511m187/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e511m187/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e511m187/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e511m187/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e511m187/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m187/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e511m187/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e511m187/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m187/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e511m187/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e511m187_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e511m187/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e511m187_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e511m187/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e511m187_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e511m187_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e511m187/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e511m481/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e511m481/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e511m481/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e511m481/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m481/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481/femul.v14
-rw-r--r--src/Specific/montgomery64_2e511m481/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e511m481/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e511m481/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e511m481/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e511m481/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m481/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e511m481/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e511m481/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e511m481/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e511m481/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e511m481_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e511m481/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e511m481_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e511m481/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e511m481_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e511m481_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e511m481/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e512m491x2e496m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e512m491x2e496m1_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e512m491x2e496m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e512m491x2e496m1_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e512m491x2e496m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e512m491x2e496m1_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e512m491x2e496m1/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e512m569/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e512m569/feadd.c52
-rw-r--r--src/Specific/montgomery64_2e512m569/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e512m569/feaddDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e512m569/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569/femul.v14
-rw-r--r--src/Specific/montgomery64_2e512m569/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569/fenz.c19
-rw-r--r--src/Specific/montgomery64_2e512m569/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e512m569/fenzDisplay.log14
-rw-r--r--src/Specific/montgomery64_2e512m569/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e512m569/feoppDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e512m569/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e512m569/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e512m569/fesubDisplay.log32
-rw-r--r--src/Specific/montgomery64_2e512m569/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e512m569/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e512m569_8limbs/compiler.sh (renamed from src/Specific/montgomery64_2e512m569/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e512m569_8limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e512m569/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e512m569_8limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e512m569_8limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e512m569/py_interpreter.sh)0
-rw-r--r--src/Specific/montgomery64_2e521m1/Synthesis.v9
-rw-r--r--src/Specific/montgomery64_2e521m1/feadd.c58
-rw-r--r--src/Specific/montgomery64_2e521m1/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e521m1/feaddDisplay.log35
-rw-r--r--src/Specific/montgomery64_2e521m1/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1/femul.v14
-rw-r--r--src/Specific/montgomery64_2e521m1/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1/fenz.c21
-rw-r--r--src/Specific/montgomery64_2e521m1/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e521m1/fenzDisplay.log15
-rw-r--r--src/Specific/montgomery64_2e521m1/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e521m1/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1/fesquare.c5
-rw-r--r--src/Specific/montgomery64_2e521m1/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e521m1/fesubDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/CurveParameters.v (renamed from src/Specific/montgomery64_2e521m1/CurveParameters.v)0
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/montgomery64_2e521m1_9limbs/compiler.sh (renamed from src/Specific/montgomery64_2e521m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/montgomery64_2e521m1_9limbs/compilerxx.sh (renamed from src/Specific/montgomery64_2e521m1/compilerxx.sh)0
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/feadd.v14
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/femul.v14
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/fenz.v16
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/fenzDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/feopp.v14
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/feoppDisplay.v4
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/fesub.v14
-rw-r--r--src/Specific/montgomery64_2e521m1_9limbs/fesubDisplay.v4
-rwxr-xr-xsrc/Specific/montgomery64_2e521m1_9limbs/py_interpreter.sh (renamed from src/Specific/montgomery64_2e521m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e127m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e127m1/feadd.c21
-rw-r--r--src/Specific/solinas32_2e127m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e127m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e127m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1/femul.c50
-rw-r--r--src/Specific/solinas32_2e127m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e127m1/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e127m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e127m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e127m1/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e127m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1/fesub.c21
-rw-r--r--src/Specific/solinas32_2e127m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e127m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e127m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1/freeze.c34
-rw-r--r--src/Specific/solinas32_2e127m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e127m1/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e127m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e127m1_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e127m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e127m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e127m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e127m1_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e127m1_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e127m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e129m25/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e129m25/feadd.c21
-rw-r--r--src/Specific/solinas32_2e129m25/feadd.v14
-rw-r--r--src/Specific/solinas32_2e129m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e129m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25/femul.c50
-rw-r--r--src/Specific/solinas32_2e129m25/femul.v14
-rw-r--r--src/Specific/solinas32_2e129m25/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e129m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e129m25/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e129m25/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e129m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25/fesub.c21
-rw-r--r--src/Specific/solinas32_2e129m25/fesub.v14
-rw-r--r--src/Specific/solinas32_2e129m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e129m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25/freeze.c34
-rw-r--r--src/Specific/solinas32_2e129m25/freeze.v14
-rw-r--r--src/Specific/solinas32_2e129m25/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e129m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e129m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e129m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e129m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e129m25_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e129m25_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e129m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e130m5/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e130m5/feadd.c18
-rw-r--r--src/Specific/solinas32_2e130m5/feadd.v14
-rw-r--r--src/Specific/solinas32_2e130m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e130m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5/femul.c43
-rw-r--r--src/Specific/solinas32_2e130m5/femul.v14
-rw-r--r--src/Specific/solinas32_2e130m5/femulDisplay.log32
-rw-r--r--src/Specific/solinas32_2e130m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5/fesquare.c38
-rw-r--r--src/Specific/solinas32_2e130m5/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e130m5/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas32_2e130m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5/fesub.c18
-rw-r--r--src/Specific/solinas32_2e130m5/fesub.v14
-rw-r--r--src/Specific/solinas32_2e130m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e130m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5/freeze.c29
-rw-r--r--src/Specific/solinas32_2e130m5/freeze.v14
-rw-r--r--src/Specific/solinas32_2e130m5/freezeDisplay.log23
-rw-r--r--src/Specific/solinas32_2e130m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e130m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_5limbs/compiler.sh (renamed from src/Specific/solinas32_2e130m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_5limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e130m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e130m5_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_5limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e130m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e130m5_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e137m13/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e137m13/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e137m13/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e137m13/feadd.c27
-rw-r--r--src/Specific/solinas32_2e137m13/feadd.v14
-rw-r--r--src/Specific/solinas32_2e137m13/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e137m13/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13/femul.c64
-rw-r--r--src/Specific/solinas32_2e137m13/femul.v14
-rw-r--r--src/Specific/solinas32_2e137m13/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e137m13/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e137m13/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e137m13/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e137m13/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13/fesub.c27
-rw-r--r--src/Specific/solinas32_2e137m13/fesub.v14
-rw-r--r--src/Specific/solinas32_2e137m13/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e137m13/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13/freeze.c44
-rw-r--r--src/Specific/solinas32_2e137m13/freeze.v14
-rw-r--r--src/Specific/solinas32_2e137m13/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e137m13/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e137m13_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e140m27/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e140m27/feadd.c21
-rw-r--r--src/Specific/solinas32_2e140m27/feadd.v14
-rw-r--r--src/Specific/solinas32_2e140m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e140m27/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27/femul.c50
-rw-r--r--src/Specific/solinas32_2e140m27/femul.v14
-rw-r--r--src/Specific/solinas32_2e140m27/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e140m27/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e140m27/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e140m27/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e140m27/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27/fesub.c21
-rw-r--r--src/Specific/solinas32_2e140m27/fesub.v14
-rw-r--r--src/Specific/solinas32_2e140m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e140m27/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27/freeze.c34
-rw-r--r--src/Specific/solinas32_2e140m27/freeze.v14
-rw-r--r--src/Specific/solinas32_2e140m27/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e140m27/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e140m27/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e140m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e140m27/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e140m27/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e140m27_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e141m9/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e141m9/feadd.c21
-rw-r--r--src/Specific/solinas32_2e141m9/feadd.v14
-rw-r--r--src/Specific/solinas32_2e141m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9/femul.c50
-rw-r--r--src/Specific/solinas32_2e141m9/femul.v14
-rw-r--r--src/Specific/solinas32_2e141m9/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e141m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e141m9/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e141m9/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e141m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9/fesub.c21
-rw-r--r--src/Specific/solinas32_2e141m9/fesub.v14
-rw-r--r--src/Specific/solinas32_2e141m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9/freeze.c34
-rw-r--r--src/Specific/solinas32_2e141m9/freeze.v14
-rw-r--r--src/Specific/solinas32_2e141m9/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e141m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e141m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e141m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e141m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e141m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e141m9_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e150m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e150m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e150m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e150m3/feadd.c18
-rw-r--r--src/Specific/solinas32_2e150m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3/femul.c43
-rw-r--r--src/Specific/solinas32_2e150m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m3/femulDisplay.log32
-rw-r--r--src/Specific/solinas32_2e150m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3/fesquare.c38
-rw-r--r--src/Specific/solinas32_2e150m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m3/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas32_2e150m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3/fesub.c18
-rw-r--r--src/Specific/solinas32_2e150m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3/freeze.c29
-rw-r--r--src/Specific/solinas32_2e150m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m3/freezeDisplay.log23
-rw-r--r--src/Specific/solinas32_2e150m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e150m3_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e150m5/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e150m5/feadd.c21
-rw-r--r--src/Specific/solinas32_2e150m5/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5/femul.c50
-rw-r--r--src/Specific/solinas32_2e150m5/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m5/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e150m5/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m5/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5/fesub.c21
-rw-r--r--src/Specific/solinas32_2e150m5/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5/freeze.c34
-rw-r--r--src/Specific/solinas32_2e150m5/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m5/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e150m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e150m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e150m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e150m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e150m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e150m5_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e152m17/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e152m17/feadd.c21
-rw-r--r--src/Specific/solinas32_2e152m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e152m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17/femul.c50
-rw-r--r--src/Specific/solinas32_2e152m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e152m17/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e152m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e152m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e152m17/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e152m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17/fesub.c21
-rw-r--r--src/Specific/solinas32_2e152m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e152m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17/freeze.c34
-rw-r--r--src/Specific/solinas32_2e152m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e152m17/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e152m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e152m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e152m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e152m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e152m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e152m17_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e158m15/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e158m15/feadd.c21
-rw-r--r--src/Specific/solinas32_2e158m15/feadd.v14
-rw-r--r--src/Specific/solinas32_2e158m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15/femul.c50
-rw-r--r--src/Specific/solinas32_2e158m15/femul.v14
-rw-r--r--src/Specific/solinas32_2e158m15/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e158m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e158m15/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e158m15/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e158m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15/fesub.c21
-rw-r--r--src/Specific/solinas32_2e158m15/fesub.v14
-rw-r--r--src/Specific/solinas32_2e158m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15/freeze.c34
-rw-r--r--src/Specific/solinas32_2e158m15/freeze.v14
-rw-r--r--src/Specific/solinas32_2e158m15/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e158m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e158m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_6limbs/compiler.sh (renamed from src/Specific/solinas32_2e158m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_6limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e158m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_6limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e158m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e158m15_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e165m25/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e165m25/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e165m25/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e165m25/feadd.c30
-rw-r--r--src/Specific/solinas32_2e165m25/feadd.v14
-rw-r--r--src/Specific/solinas32_2e165m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25/femul.c71
-rw-r--r--src/Specific/solinas32_2e165m25/femul.v14
-rw-r--r--src/Specific/solinas32_2e165m25/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e165m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e165m25/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e165m25/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e165m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25/fesub.c30
-rw-r--r--src/Specific/solinas32_2e165m25/fesub.v14
-rw-r--r--src/Specific/solinas32_2e165m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e165m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25/freeze.c49
-rw-r--r--src/Specific/solinas32_2e165m25/freeze.v14
-rw-r--r--src/Specific/solinas32_2e165m25/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e165m25/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e165m25_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e166m5/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e166m5/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e166m5/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e166m5/feadd.c36
-rw-r--r--src/Specific/solinas32_2e166m5/feadd.v14
-rw-r--r--src/Specific/solinas32_2e166m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5/femul.c85
-rw-r--r--src/Specific/solinas32_2e166m5/femul.v14
-rw-r--r--src/Specific/solinas32_2e166m5/femulDisplay.log56
-rw-r--r--src/Specific/solinas32_2e166m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5/fesquare.c74
-rw-r--r--src/Specific/solinas32_2e166m5/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e166m5/fesquareDisplay.log56
-rw-r--r--src/Specific/solinas32_2e166m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5/fesub.c36
-rw-r--r--src/Specific/solinas32_2e166m5/fesub.v14
-rw-r--r--src/Specific/solinas32_2e166m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5/freeze.c59
-rw-r--r--src/Specific/solinas32_2e166m5/freeze.v14
-rw-r--r--src/Specific/solinas32_2e166m5/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e166m5/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e166m5_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e171m19/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e171m19/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e171m19/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e171m19/feadd.c30
-rw-r--r--src/Specific/solinas32_2e171m19/feadd.v14
-rw-r--r--src/Specific/solinas32_2e171m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19/femul.c71
-rw-r--r--src/Specific/solinas32_2e171m19/femul.v14
-rw-r--r--src/Specific/solinas32_2e171m19/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e171m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e171m19/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e171m19/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e171m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19/fesub.c30
-rw-r--r--src/Specific/solinas32_2e171m19/fesub.v14
-rw-r--r--src/Specific/solinas32_2e171m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e171m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19/freeze.c49
-rw-r--r--src/Specific/solinas32_2e171m19/freeze.v14
-rw-r--r--src/Specific/solinas32_2e171m19/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e171m19/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e171m19_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m17/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m17/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m17/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m17/feadd.c30
-rw-r--r--src/Specific/solinas32_2e174m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17/femul.c71
-rw-r--r--src/Specific/solinas32_2e174m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m17/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e174m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e174m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m17/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e174m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17/fesub.c30
-rw-r--r--src/Specific/solinas32_2e174m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17/freeze.c49
-rw-r--r--src/Specific/solinas32_2e174m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m17/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e174m17/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m17_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m3/feadd.c21
-rw-r--r--src/Specific/solinas32_2e174m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3/femul.c50
-rw-r--r--src/Specific/solinas32_2e174m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m3/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e174m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e174m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m3/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e174m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3/fesub.c21
-rw-r--r--src/Specific/solinas32_2e174m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e174m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3/freeze.c34
-rw-r--r--src/Specific/solinas32_2e174m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m3/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e174m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e174m3_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e189m25/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e189m25/feadd.c24
-rw-r--r--src/Specific/solinas32_2e189m25/feadd.v14
-rw-r--r--src/Specific/solinas32_2e189m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25/femul.c57
-rw-r--r--src/Specific/solinas32_2e189m25/femul.v14
-rw-r--r--src/Specific/solinas32_2e189m25/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e189m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e189m25/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e189m25/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e189m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25/fesub.c24
-rw-r--r--src/Specific/solinas32_2e189m25/fesub.v14
-rw-r--r--src/Specific/solinas32_2e189m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25/freeze.c39
-rw-r--r--src/Specific/solinas32_2e189m25/freeze.v14
-rw-r--r--src/Specific/solinas32_2e189m25/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e189m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e189m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_7limbs/compiler.sh (renamed from src/Specific/solinas32_2e189m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_7limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e189m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_7limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e189m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e189m25_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e190m11/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e190m11/feadd.c24
-rw-r--r--src/Specific/solinas32_2e190m11/feadd.v14
-rw-r--r--src/Specific/solinas32_2e190m11/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11/femul.c57
-rw-r--r--src/Specific/solinas32_2e190m11/femul.v14
-rw-r--r--src/Specific/solinas32_2e190m11/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e190m11/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e190m11/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e190m11/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e190m11/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11/fesub.c24
-rw-r--r--src/Specific/solinas32_2e190m11/fesub.v14
-rw-r--r--src/Specific/solinas32_2e190m11/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11/freeze.c39
-rw-r--r--src/Specific/solinas32_2e190m11/freeze.v14
-rw-r--r--src/Specific/solinas32_2e190m11/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e190m11/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e190m11/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_7limbs/compiler.sh (renamed from src/Specific/solinas32_2e190m11/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_7limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e190m11/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_7limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e190m11/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e190m11_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e191m19/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e191m19/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e191m19/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e191m19/feadd.c33
-rw-r--r--src/Specific/solinas32_2e191m19/feadd.v14
-rw-r--r--src/Specific/solinas32_2e191m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19/femul.c78
-rw-r--r--src/Specific/solinas32_2e191m19/femul.v14
-rw-r--r--src/Specific/solinas32_2e191m19/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e191m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e191m19/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e191m19/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e191m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19/fesub.c33
-rw-r--r--src/Specific/solinas32_2e191m19/fesub.v14
-rw-r--r--src/Specific/solinas32_2e191m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e191m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19/freeze.c54
-rw-r--r--src/Specific/solinas32_2e191m19/freeze.v14
-rw-r--r--src/Specific/solinas32_2e191m19/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e191m19/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e191m19_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/feadd.c27
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/femul.c75
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/femulDisplay.log55
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesquare.c67
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.log55
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesub.c27
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/freeze.c44
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e192m2e64m1_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e192m2e64m1_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e194m33/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e194m33/feadd.c27
-rw-r--r--src/Specific/solinas32_2e194m33/feadd.v14
-rw-r--r--src/Specific/solinas32_2e194m33/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e194m33/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33/femul.c64
-rw-r--r--src/Specific/solinas32_2e194m33/femul.v14
-rw-r--r--src/Specific/solinas32_2e194m33/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e194m33/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e194m33/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e194m33/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e194m33/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33/fesub.c27
-rw-r--r--src/Specific/solinas32_2e194m33/fesub.v14
-rw-r--r--src/Specific/solinas32_2e194m33/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e194m33/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33/freeze.c44
-rw-r--r--src/Specific/solinas32_2e194m33/freeze.v14
-rw-r--r--src/Specific/solinas32_2e194m33/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e194m33/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e194m33/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_8limbs/compiler.sh (renamed from src/Specific/solinas32_2e194m33/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_8limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e194m33/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e194m33_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_8limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e194m33/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e194m33_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e196m15/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e196m15/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e196m15/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e196m15/feadd.c24
-rw-r--r--src/Specific/solinas32_2e196m15/feadd.v14
-rw-r--r--src/Specific/solinas32_2e196m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15/femul.c57
-rw-r--r--src/Specific/solinas32_2e196m15/femul.v14
-rw-r--r--src/Specific/solinas32_2e196m15/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e196m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e196m15/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e196m15/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e196m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15/fesub.c24
-rw-r--r--src/Specific/solinas32_2e196m15/fesub.v14
-rw-r--r--src/Specific/solinas32_2e196m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e196m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15/freeze.c39
-rw-r--r--src/Specific/solinas32_2e196m15/freeze.v14
-rw-r--r--src/Specific/solinas32_2e196m15/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e196m15/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e196m15_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e198m17/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e198m17/feadd.c30
-rw-r--r--src/Specific/solinas32_2e198m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e198m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e198m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17/femul.c71
-rw-r--r--src/Specific/solinas32_2e198m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e198m17/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e198m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e198m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e198m17/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e198m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17/fesub.c30
-rw-r--r--src/Specific/solinas32_2e198m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e198m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e198m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17/freeze.c49
-rw-r--r--src/Specific/solinas32_2e198m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e198m17/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e198m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e198m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_9limbs/compiler.sh (renamed from src/Specific/solinas32_2e198m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_9limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e198m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e198m17_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e198m17_9limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e198m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e205m45x2e198m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e205m45x2e198m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/feadd.c33
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesub.c33
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/freeze.c54
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e205m45x2e198m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e206m5/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e206m5/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e206m5/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e206m5/feadd.c39
-rw-r--r--src/Specific/solinas32_2e206m5/feadd.v14
-rw-r--r--src/Specific/solinas32_2e206m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5/femul.c92
-rw-r--r--src/Specific/solinas32_2e206m5/femul.v14
-rw-r--r--src/Specific/solinas32_2e206m5/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e206m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e206m5/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e206m5/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e206m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5/fesub.c39
-rw-r--r--src/Specific/solinas32_2e206m5/fesub.v14
-rw-r--r--src/Specific/solinas32_2e206m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e206m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5/freeze.c64
-rw-r--r--src/Specific/solinas32_2e206m5/freeze.v14
-rw-r--r--src/Specific/solinas32_2e206m5/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e206m5/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e206m5_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e212m29/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e212m29/feadd.c27
-rw-r--r--src/Specific/solinas32_2e212m29/feadd.v14
-rw-r--r--src/Specific/solinas32_2e212m29/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e212m29/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29/femul.c64
-rw-r--r--src/Specific/solinas32_2e212m29/femul.v14
-rw-r--r--src/Specific/solinas32_2e212m29/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e212m29/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e212m29/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e212m29/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e212m29/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29/fesub.c27
-rw-r--r--src/Specific/solinas32_2e212m29/fesub.v14
-rw-r--r--src/Specific/solinas32_2e212m29/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e212m29/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29/freeze.c44
-rw-r--r--src/Specific/solinas32_2e212m29/freeze.v14
-rw-r--r--src/Specific/solinas32_2e212m29/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e212m29/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e212m29/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_8limbs/compiler.sh (renamed from src/Specific/solinas32_2e212m29/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_8limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e212m29/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e212m29_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_8limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e212m29/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e212m29_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e213m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e213m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e213m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e213m3/feadd.c48
-rw-r--r--src/Specific/solinas32_2e213m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e213m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3/femul.c113
-rw-r--r--src/Specific/solinas32_2e213m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e213m3/femulDisplay.log72
-rw-r--r--src/Specific/solinas32_2e213m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3/fesquare.c98
-rw-r--r--src/Specific/solinas32_2e213m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e213m3/fesquareDisplay.log72
-rw-r--r--src/Specific/solinas32_2e213m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3/fesub.c48
-rw-r--r--src/Specific/solinas32_2e213m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e213m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e213m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3/freeze.c79
-rw-r--r--src/Specific/solinas32_2e213m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e213m3/freezeDisplay.log53
-rw-r--r--src/Specific/solinas32_2e213m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e213m3_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/feadd.c27
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/femul.c81
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesquare.c73
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesub.c27
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/freeze.c44
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e216m2e108m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_8limbs/compiler.sh (renamed from src/Specific/solinas32_2e216m2e108m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_8limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e216m2e108m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e216m2e108m1_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e216m2e108m1_8limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e216m2e108m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e221m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e221m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e221m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e221m3/feadd.c33
-rw-r--r--src/Specific/solinas32_2e221m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e221m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3/femul.c78
-rw-r--r--src/Specific/solinas32_2e221m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e221m3/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e221m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e221m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e221m3/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e221m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3/fesub.c33
-rw-r--r--src/Specific/solinas32_2e221m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e221m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e221m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3/freeze.c54
-rw-r--r--src/Specific/solinas32_2e221m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e221m3/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e221m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e221m3_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e222m117/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e222m117/feadd.c33
-rw-r--r--src/Specific/solinas32_2e222m117/feadd.v14
-rw-r--r--src/Specific/solinas32_2e222m117/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e222m117/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117/femul.c78
-rw-r--r--src/Specific/solinas32_2e222m117/femul.v14
-rw-r--r--src/Specific/solinas32_2e222m117/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e222m117/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e222m117/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e222m117/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e222m117/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117/fesub.c33
-rw-r--r--src/Specific/solinas32_2e222m117/fesub.v14
-rw-r--r--src/Specific/solinas32_2e222m117/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e222m117/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117/freeze.c54
-rw-r--r--src/Specific/solinas32_2e222m117/freeze.v14
-rw-r--r--src/Specific/solinas32_2e222m117/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e222m117/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e222m117/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_10limbs/compiler.sh (renamed from src/Specific/solinas32_2e222m117/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_10limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e222m117/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e222m117_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_10limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e222m117/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e222m117_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/feadd.c27
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/femul.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/freeze.c42
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/freezeDisplay.log30
-rw-r--r--src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e224m2e96p1_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e224m2e96p1_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e226m5/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e226m5/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e226m5/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e226m5/feadd.c27
-rw-r--r--src/Specific/solinas32_2e226m5/feadd.v14
-rw-r--r--src/Specific/solinas32_2e226m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5/femul.c64
-rw-r--r--src/Specific/solinas32_2e226m5/femul.v14
-rw-r--r--src/Specific/solinas32_2e226m5/femulDisplay.log44
-rw-r--r--src/Specific/solinas32_2e226m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5/fesquare.c56
-rw-r--r--src/Specific/solinas32_2e226m5/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e226m5/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas32_2e226m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5/fesub.c27
-rw-r--r--src/Specific/solinas32_2e226m5/fesub.v14
-rw-r--r--src/Specific/solinas32_2e226m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e226m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5/freeze.c44
-rw-r--r--src/Specific/solinas32_2e226m5/freeze.v14
-rw-r--r--src/Specific/solinas32_2e226m5/freezeDisplay.log32
-rw-r--r--src/Specific/solinas32_2e226m5/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e226m5_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e230m27/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e230m27/feadd.c33
-rw-r--r--src/Specific/solinas32_2e230m27/feadd.v14
-rw-r--r--src/Specific/solinas32_2e230m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e230m27/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27/femul.c78
-rw-r--r--src/Specific/solinas32_2e230m27/femul.v14
-rw-r--r--src/Specific/solinas32_2e230m27/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e230m27/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e230m27/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e230m27/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e230m27/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27/fesub.c33
-rw-r--r--src/Specific/solinas32_2e230m27/fesub.v14
-rw-r--r--src/Specific/solinas32_2e230m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e230m27/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27/freeze.c54
-rw-r--r--src/Specific/solinas32_2e230m27/freeze.v14
-rw-r--r--src/Specific/solinas32_2e230m27/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e230m27/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e230m27/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_10limbs/compiler.sh (renamed from src/Specific/solinas32_2e230m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_10limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e230m27/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e230m27_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_10limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e230m27/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e230m27_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e235m15/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e235m15/feadd.c30
-rw-r--r--src/Specific/solinas32_2e235m15/feadd.v14
-rw-r--r--src/Specific/solinas32_2e235m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e235m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15/femul.c71
-rw-r--r--src/Specific/solinas32_2e235m15/femul.v14
-rw-r--r--src/Specific/solinas32_2e235m15/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e235m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e235m15/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e235m15/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e235m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15/fesub.c30
-rw-r--r--src/Specific/solinas32_2e235m15/fesub.v14
-rw-r--r--src/Specific/solinas32_2e235m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e235m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15/freeze.c49
-rw-r--r--src/Specific/solinas32_2e235m15/freeze.v14
-rw-r--r--src/Specific/solinas32_2e235m15/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e235m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e235m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_9limbs/compiler.sh (renamed from src/Specific/solinas32_2e235m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_9limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e235m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e235m15_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e235m15_9limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e235m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e243m9/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e243m9/feadd.c30
-rw-r--r--src/Specific/solinas32_2e243m9/feadd.v14
-rw-r--r--src/Specific/solinas32_2e243m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e243m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9/femul.c71
-rw-r--r--src/Specific/solinas32_2e243m9/femul.v14
-rw-r--r--src/Specific/solinas32_2e243m9/femulDisplay.log48
-rw-r--r--src/Specific/solinas32_2e243m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9/fesquare.c62
-rw-r--r--src/Specific/solinas32_2e243m9/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e243m9/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas32_2e243m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9/fesub.c30
-rw-r--r--src/Specific/solinas32_2e243m9/fesub.v14
-rw-r--r--src/Specific/solinas32_2e243m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e243m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9/freeze.c49
-rw-r--r--src/Specific/solinas32_2e243m9/freeze.v14
-rw-r--r--src/Specific/solinas32_2e243m9/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e243m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e243m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_9limbs/compiler.sh (renamed from src/Specific/solinas32_2e243m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_9limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e243m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e243m9_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e243m9_9limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e243m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e251m9/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e251m9/feadd.c33
-rw-r--r--src/Specific/solinas32_2e251m9/feadd.v14
-rw-r--r--src/Specific/solinas32_2e251m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e251m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9/femul.c78
-rw-r--r--src/Specific/solinas32_2e251m9/femul.v14
-rw-r--r--src/Specific/solinas32_2e251m9/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e251m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e251m9/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e251m9/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e251m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9/fesub.c33
-rw-r--r--src/Specific/solinas32_2e251m9/fesub.v14
-rw-r--r--src/Specific/solinas32_2e251m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e251m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9/freeze.c54
-rw-r--r--src/Specific/solinas32_2e251m9/freeze.v14
-rw-r--r--src/Specific/solinas32_2e251m9/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e251m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e251m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_10limbs/compiler.sh (renamed from src/Specific/solinas32_2e251m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_10limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e251m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e251m9_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_10limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e251m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e251m9_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e254m127x2e240m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e254m127x2e240m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/feadd.c36
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesub.c36
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/freeze.c59
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.log41
-rw-r--r--src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e254m127x2e240m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e255m19/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e255m19/feadd.c33
-rw-r--r--src/Specific/solinas32_2e255m19/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19/femul.c78
-rw-r--r--src/Specific/solinas32_2e255m19/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m19/femulDisplay.log52
-rw-r--r--src/Specific/solinas32_2e255m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19/fesquare.c68
-rw-r--r--src/Specific/solinas32_2e255m19/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m19/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas32_2e255m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19/fesub.c33
-rw-r--r--src/Specific/solinas32_2e255m19/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19/freeze.c54
-rw-r--r--src/Specific/solinas32_2e255m19/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m19/freezeDisplay.log38
-rw-r--r--src/Specific/solinas32_2e255m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e255m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_10limbs/compiler.sh (renamed from src/Specific/solinas32_2e255m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_10limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e255m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m19_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_10limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e255m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e255m19_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e255m2e4m2e1m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/feadd.c30
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/femul.c84
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.c75
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesub.c30
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/freeze.c49
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.log35
-rw-r--r--src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e255m2e4m2e1m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e255m765/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e255m765/feadd.c39
-rw-r--r--src/Specific/solinas32_2e255m765/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m765/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m765/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765/femul.c92
-rw-r--r--src/Specific/solinas32_2e255m765/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m765/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e255m765/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e255m765/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m765/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e255m765/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765/fesub.c39
-rw-r--r--src/Specific/solinas32_2e255m765/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m765/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e255m765/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765/freeze.c64
-rw-r--r--src/Specific/solinas32_2e255m765/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m765/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e255m765/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e255m765/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e255m765/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e255m765/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m765_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e255m765/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_13limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_13limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e255m765_13limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e256m189/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e256m189/feadd.c39
-rw-r--r--src/Specific/solinas32_2e256m189/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m189/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m189/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189/femul.c92
-rw-r--r--src/Specific/solinas32_2e256m189/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m189/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e256m189/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e256m189/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m189/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e256m189/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189/fesub.c39
-rw-r--r--src/Specific/solinas32_2e256m189/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m189/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m189/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189/freeze.c64
-rw-r--r--src/Specific/solinas32_2e256m189/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m189/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e256m189/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e256m189/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e256m189/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e256m189/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m189_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m189_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e256m189/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.c39
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.c60
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.log40
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e256m2e224p2e192p2e96m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/feadd.c39
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/femul.c103
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/femulDisplay.log71
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesquare.c91
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.log71
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesub.c39
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/freeze.c64
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e256m2e32m977/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e256m2e32m977/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e256m2e32m977/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e256m2e32m977/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_13limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_13limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m2e32m977_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m2e32m977_13limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e256m88x2e240m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e256m88x2e240m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/feadd.c39
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesub.c39
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freeze.c64
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e256m88x2e240m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e266m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e266m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e266m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e266m3/feadd.c39
-rw-r--r--src/Specific/solinas32_2e266m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e266m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3/femul.c92
-rw-r--r--src/Specific/solinas32_2e266m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e266m3/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e266m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e266m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e266m3/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e266m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3/fesub.c39
-rw-r--r--src/Specific/solinas32_2e266m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e266m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e266m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3/freeze.c64
-rw-r--r--src/Specific/solinas32_2e266m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e266m3/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e266m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e266m3_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e285m9/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e285m9/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e285m9/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e285m9/feadd.c48
-rw-r--r--src/Specific/solinas32_2e285m9/feadd.v14
-rw-r--r--src/Specific/solinas32_2e285m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9/femul.c113
-rw-r--r--src/Specific/solinas32_2e285m9/femul.v14
-rw-r--r--src/Specific/solinas32_2e285m9/femulDisplay.log72
-rw-r--r--src/Specific/solinas32_2e285m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9/fesquare.c98
-rw-r--r--src/Specific/solinas32_2e285m9/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e285m9/fesquareDisplay.log72
-rw-r--r--src/Specific/solinas32_2e285m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9/fesub.c48
-rw-r--r--src/Specific/solinas32_2e285m9/fesub.v14
-rw-r--r--src/Specific/solinas32_2e285m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e285m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9/freeze.c79
-rw-r--r--src/Specific/solinas32_2e285m9/freeze.v14
-rw-r--r--src/Specific/solinas32_2e285m9/freezeDisplay.log53
-rw-r--r--src/Specific/solinas32_2e285m9/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_12limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_12limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e285m9_12limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e291m19/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e291m19/feadd.c39
-rw-r--r--src/Specific/solinas32_2e291m19/feadd.v14
-rw-r--r--src/Specific/solinas32_2e291m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e291m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19/femul.c92
-rw-r--r--src/Specific/solinas32_2e291m19/femul.v14
-rw-r--r--src/Specific/solinas32_2e291m19/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e291m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e291m19/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e291m19/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e291m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19/fesub.c39
-rw-r--r--src/Specific/solinas32_2e291m19/fesub.v14
-rw-r--r--src/Specific/solinas32_2e291m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e291m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19/freeze.c64
-rw-r--r--src/Specific/solinas32_2e291m19/freeze.v14
-rw-r--r--src/Specific/solinas32_2e291m19/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e291m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e291m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e291m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e291m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e291m19_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e291m19_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e291m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e321m9/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e321m9/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e321m9/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e321m9/feadd.c51
-rw-r--r--src/Specific/solinas32_2e321m9/feadd.v14
-rw-r--r--src/Specific/solinas32_2e321m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9/femul.c120
-rw-r--r--src/Specific/solinas32_2e321m9/femul.v14
-rw-r--r--src/Specific/solinas32_2e321m9/femulDisplay.log76
-rw-r--r--src/Specific/solinas32_2e321m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e321m9/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e321m9/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e321m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9/fesub.c51
-rw-r--r--src/Specific/solinas32_2e321m9/fesub.v14
-rw-r--r--src/Specific/solinas32_2e321m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e321m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9/freeze.c84
-rw-r--r--src/Specific/solinas32_2e321m9/freeze.v14
-rw-r--r--src/Specific/solinas32_2e321m9/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e321m9/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_12limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_12limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_12limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_13limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_13limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e321m9_13limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/feadd.c45
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/femul.c129
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/femulDisplay.log91
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesquare.c115
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.log91
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesub.c45
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/freeze.c74
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/freezeDisplay.log50
-rw-r--r--src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_12limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_12limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_12limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e322m2e161m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_14limbs/compiler.sh (renamed from src/Specific/solinas32_2e322m2e161m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_14limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e322m2e161m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e322m2e161m1_14limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e322m2e161m1_14limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e322m2e161m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e336m17/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e336m17/feadd.c45
-rw-r--r--src/Specific/solinas32_2e336m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17/femul.c106
-rw-r--r--src/Specific/solinas32_2e336m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m17/femulDisplay.log68
-rw-r--r--src/Specific/solinas32_2e336m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17/fesquare.c92
-rw-r--r--src/Specific/solinas32_2e336m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m17/fesquareDisplay.log68
-rw-r--r--src/Specific/solinas32_2e336m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17/fesub.c45
-rw-r--r--src/Specific/solinas32_2e336m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17/freeze.c74
-rw-r--r--src/Specific/solinas32_2e336m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m17/freezeDisplay.log50
-rw-r--r--src/Specific/solinas32_2e336m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_13limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_13limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_13limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e336m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_14limbs/compiler.sh (renamed from src/Specific/solinas32_2e336m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_14limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e336m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m17_14limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e336m17_14limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e336m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e336m3/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e336m3/feadd.c39
-rw-r--r--src/Specific/solinas32_2e336m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3/femul.c92
-rw-r--r--src/Specific/solinas32_2e336m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m3/femulDisplay.log60
-rw-r--r--src/Specific/solinas32_2e336m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3/fesquare.c80
-rw-r--r--src/Specific/solinas32_2e336m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m3/fesquareDisplay.log60
-rw-r--r--src/Specific/solinas32_2e336m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3/fesub.c39
-rw-r--r--src/Specific/solinas32_2e336m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e336m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3/freeze.c64
-rw-r--r--src/Specific/solinas32_2e336m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m3/freezeDisplay.log44
-rw-r--r--src/Specific/solinas32_2e336m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e336m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_12limbs/compiler.sh (renamed from src/Specific/solinas32_2e336m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_12limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e336m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m3_12limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_12limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e336m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_13limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_13limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e336m3_13limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e338m15/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e338m15/feadd.c42
-rw-r--r--src/Specific/solinas32_2e338m15/feadd.v14
-rw-r--r--src/Specific/solinas32_2e338m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e338m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15/femul.c99
-rw-r--r--src/Specific/solinas32_2e338m15/femul.v14
-rw-r--r--src/Specific/solinas32_2e338m15/femulDisplay.log64
-rw-r--r--src/Specific/solinas32_2e338m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15/fesquare.c86
-rw-r--r--src/Specific/solinas32_2e338m15/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e338m15/fesquareDisplay.log64
-rw-r--r--src/Specific/solinas32_2e338m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15/fesub.c42
-rw-r--r--src/Specific/solinas32_2e338m15/fesub.v14
-rw-r--r--src/Specific/solinas32_2e338m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e338m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15/freeze.c69
-rw-r--r--src/Specific/solinas32_2e338m15/freeze.v14
-rw-r--r--src/Specific/solinas32_2e338m15/freezeDisplay.log47
-rw-r--r--src/Specific/solinas32_2e338m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e338m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_13limbs/compiler.sh (renamed from src/Specific/solinas32_2e338m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_13limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e338m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e338m15_13limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_13limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e338m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_14limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_14limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e338m15_14limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e369m25/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e369m25/feadd.c51
-rw-r--r--src/Specific/solinas32_2e369m25/feadd.v14
-rw-r--r--src/Specific/solinas32_2e369m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e369m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25/femul.c120
-rw-r--r--src/Specific/solinas32_2e369m25/femul.v14
-rw-r--r--src/Specific/solinas32_2e369m25/femulDisplay.log76
-rw-r--r--src/Specific/solinas32_2e369m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e369m25/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e369m25/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e369m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25/fesub.c51
-rw-r--r--src/Specific/solinas32_2e369m25/fesub.v14
-rw-r--r--src/Specific/solinas32_2e369m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e369m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25/freeze.c84
-rw-r--r--src/Specific/solinas32_2e369m25/freeze.v14
-rw-r--r--src/Specific/solinas32_2e369m25/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e369m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_15limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_15limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_15limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e369m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_16limbs/compiler.sh (renamed from src/Specific/solinas32_2e369m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_16limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e369m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e369m25_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e369m25_16limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e369m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e379m19/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e379m19/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e379m19/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e379m19/feadd.c57
-rw-r--r--src/Specific/solinas32_2e379m19/feadd.v14
-rw-r--r--src/Specific/solinas32_2e379m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19/femul.c134
-rw-r--r--src/Specific/solinas32_2e379m19/femul.v14
-rw-r--r--src/Specific/solinas32_2e379m19/femulDisplay.log84
-rw-r--r--src/Specific/solinas32_2e379m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19/fesquare.c116
-rw-r--r--src/Specific/solinas32_2e379m19/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e379m19/fesquareDisplay.log84
-rw-r--r--src/Specific/solinas32_2e379m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19/fesub.c57
-rw-r--r--src/Specific/solinas32_2e379m19/fesub.v14
-rw-r--r--src/Specific/solinas32_2e379m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e379m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19/freeze.c94
-rw-r--r--src/Specific/solinas32_2e379m19/freeze.v14
-rw-r--r--src/Specific/solinas32_2e379m19/freezeDisplay.log62
-rw-r--r--src/Specific/solinas32_2e379m19/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_15limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_15limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_15limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e379m19_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e382m105/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e382m105/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e382m105/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e382m105/feadd.c63
-rw-r--r--src/Specific/solinas32_2e382m105/feadd.v14
-rw-r--r--src/Specific/solinas32_2e382m105/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105/femul.c148
-rw-r--r--src/Specific/solinas32_2e382m105/femul.v14
-rw-r--r--src/Specific/solinas32_2e382m105/femulDisplay.log92
-rw-r--r--src/Specific/solinas32_2e382m105/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105/fesquare.c128
-rw-r--r--src/Specific/solinas32_2e382m105/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e382m105/fesquareDisplay.log92
-rw-r--r--src/Specific/solinas32_2e382m105/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105/fesub.c63
-rw-r--r--src/Specific/solinas32_2e382m105/fesub.v14
-rw-r--r--src/Specific/solinas32_2e382m105/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e382m105/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105/freeze.c104
-rw-r--r--src/Specific/solinas32_2e382m105/freeze.v14
-rw-r--r--src/Specific/solinas32_2e382m105/freezeDisplay.log68
-rw-r--r--src/Specific/solinas32_2e382m105/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e382m105_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m187_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_15limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_15limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m31_15limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_15limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m31_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m31_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m421_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e383m421_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e383m421_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.c82
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.log54
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m317/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e384m317/feadd.c57
-rw-r--r--src/Specific/solinas32_2e384m317/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m317/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m317/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317/femul.c134
-rw-r--r--src/Specific/solinas32_2e384m317/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m317/femulDisplay.log84
-rw-r--r--src/Specific/solinas32_2e384m317/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317/fesquare.c116
-rw-r--r--src/Specific/solinas32_2e384m317/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m317/fesquareDisplay.log84
-rw-r--r--src/Specific/solinas32_2e384m317/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317/fesub.c57
-rw-r--r--src/Specific/solinas32_2e384m317/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m317/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m317/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317/freeze.c94
-rw-r--r--src/Specific/solinas32_2e384m317/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m317/freezeDisplay.log62
-rw-r--r--src/Specific/solinas32_2e384m317/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m317_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e384m317/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_18limbs/compiler.sh (renamed from src/Specific/solinas32_2e384m317/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_18limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e384m317/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m317_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m317_18limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e384m317/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m5x2e368m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m5x2e368m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesub.c51
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/freeze.c84
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m5x2e368m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e384m79x2e376m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e384m79x2e376m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesub.c51
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/freeze.c84
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e384m79x2e376m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_15limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_15limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e389m21_15limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_15limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e389m21_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e389m21_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e401m31/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e401m31/feadd.c51
-rw-r--r--src/Specific/solinas32_2e401m31/feadd.v14
-rw-r--r--src/Specific/solinas32_2e401m31/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e401m31/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31/femul.c120
-rw-r--r--src/Specific/solinas32_2e401m31/femul.v14
-rw-r--r--src/Specific/solinas32_2e401m31/femulDisplay.log76
-rw-r--r--src/Specific/solinas32_2e401m31/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e401m31/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e401m31/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e401m31/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31/fesub.c51
-rw-r--r--src/Specific/solinas32_2e401m31/fesub.v14
-rw-r--r--src/Specific/solinas32_2e401m31/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e401m31/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31/freeze.c84
-rw-r--r--src/Specific/solinas32_2e401m31/freeze.v14
-rw-r--r--src/Specific/solinas32_2e401m31/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e401m31/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e401m31/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_16limbs/compiler.sh (renamed from src/Specific/solinas32_2e401m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_16limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e401m31/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e401m31_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_16limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e401m31/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e401m31_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e401m31_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e413m21_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e413m21_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e413m21_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e414m17/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e414m17/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e414m17/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e414m17/feadd.c57
-rw-r--r--src/Specific/solinas32_2e414m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e414m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e414m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17/femul.c134
-rw-r--r--src/Specific/solinas32_2e414m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e414m17/femulDisplay.log84
-rw-r--r--src/Specific/solinas32_2e414m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17/fesquare.c116
-rw-r--r--src/Specific/solinas32_2e414m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e414m17/fesquareDisplay.log84
-rw-r--r--src/Specific/solinas32_2e414m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17/fesub.c57
-rw-r--r--src/Specific/solinas32_2e414m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e414m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e414m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17/freeze.c94
-rw-r--r--src/Specific/solinas32_2e414m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e414m17/freezeDisplay.log62
-rw-r--r--src/Specific/solinas32_2e414m17/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_16limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_16limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e414m17_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_16limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e414m17_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e414m17_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/femul.c145
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/femulDisplay.log101
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesquare.c129
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.log101
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesub.c51
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/freeze.c84
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e416m2e208m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_16limbs/compiler.sh (renamed from src/Specific/solinas32_2e416m2e208m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_16limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e416m2e208m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_16limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e416m2e208m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e416m2e208m1_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e416m2e208m1_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e444m17/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e444m17/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e444m17/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e444m17/feadd.c63
-rw-r--r--src/Specific/solinas32_2e444m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e444m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e444m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17/femul.c148
-rw-r--r--src/Specific/solinas32_2e444m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e444m17/femulDisplay.log92
-rw-r--r--src/Specific/solinas32_2e444m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17/fesquare.c128
-rw-r--r--src/Specific/solinas32_2e444m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e444m17/fesquareDisplay.log92
-rw-r--r--src/Specific/solinas32_2e444m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17/fesub.c63
-rw-r--r--src/Specific/solinas32_2e444m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e444m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e444m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17/freeze.c104
-rw-r--r--src/Specific/solinas32_2e444m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e444m17/freezeDisplay.log68
-rw-r--r--src/Specific/solinas32_2e444m17/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e444m17_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e444m17_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e444m17_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/femul.c145
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/femulDisplay.log101
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesquare.c129
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.log101
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesub.c51
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/freeze.c84
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e448m2e224m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_16limbs/compiler.sh (renamed from src/Specific/solinas32_2e448m2e224m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_16limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e448m2e224m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_16limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_16limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e448m2e224m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e448m2e224m1_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e448m2e224m1_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/feadd.c48
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesub.c48
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/freeze.c79
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/freezeDisplay.log53
-rw-r--r--src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_20limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_20limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e450m2e225m1_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e450m2e225m1_20limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e452m3/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e452m3/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e452m3/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e452m3/feadd.c51
-rw-r--r--src/Specific/solinas32_2e452m3/feadd.v14
-rw-r--r--src/Specific/solinas32_2e452m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e452m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3/femul.c120
-rw-r--r--src/Specific/solinas32_2e452m3/femul.v14
-rw-r--r--src/Specific/solinas32_2e452m3/femulDisplay.log76
-rw-r--r--src/Specific/solinas32_2e452m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3/fesquare.c104
-rw-r--r--src/Specific/solinas32_2e452m3/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e452m3/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas32_2e452m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3/fesub.c51
-rw-r--r--src/Specific/solinas32_2e452m3/fesub.v14
-rw-r--r--src/Specific/solinas32_2e452m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e452m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3/freeze.c84
-rw-r--r--src/Specific/solinas32_2e452m3/freeze.v14
-rw-r--r--src/Specific/solinas32_2e452m3/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e452m3/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_17limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_17limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e452m3_17limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_17limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e452m3_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e452m3_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e468m17/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e468m17/feadd.c57
-rw-r--r--src/Specific/solinas32_2e468m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e468m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e468m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17/femul.c134
-rw-r--r--src/Specific/solinas32_2e468m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e468m17/femulDisplay.log84
-rw-r--r--src/Specific/solinas32_2e468m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17/fesquare.c116
-rw-r--r--src/Specific/solinas32_2e468m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e468m17/fesquareDisplay.log84
-rw-r--r--src/Specific/solinas32_2e468m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17/fesub.c57
-rw-r--r--src/Specific/solinas32_2e468m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e468m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e468m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17/freeze.c94
-rw-r--r--src/Specific/solinas32_2e468m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e468m17/freezeDisplay.log62
-rw-r--r--src/Specific/solinas32_2e468m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e468m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_18limbs/compiler.sh (renamed from src/Specific/solinas32_2e468m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_18limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e468m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e468m17_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_18limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e468m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_19limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_19limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e468m17_19limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e468m17_19limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/feadd.c51
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/femul.c145
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/femulDisplay.log101
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesquare.c129
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.log101
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesub.c51
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/freeze.c84
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/freezeDisplay.log56
-rw-r--r--src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_18limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_18limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_18limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_18limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_20limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_20limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e480m2e240m1_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e480m2e240m1_20limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e488m17/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e488m17/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e488m17/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e488m17/feadd.c75
-rw-r--r--src/Specific/solinas32_2e488m17/feadd.v14
-rw-r--r--src/Specific/solinas32_2e488m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e488m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17/femul.v14
-rw-r--r--src/Specific/solinas32_2e488m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17/fesquare.c152
-rw-r--r--src/Specific/solinas32_2e488m17/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e488m17/fesquareDisplay.log108
-rw-r--r--src/Specific/solinas32_2e488m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17/fesub.c75
-rw-r--r--src/Specific/solinas32_2e488m17/fesub.v14
-rw-r--r--src/Specific/solinas32_2e488m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e488m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17/freeze.c124
-rw-r--r--src/Specific/solinas32_2e488m17/freeze.v14
-rw-r--r--src/Specific/solinas32_2e488m17/freezeDisplay.log80
-rw-r--r--src/Specific/solinas32_2e488m17/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_19limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_19limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e488m17_19limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_19limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_20limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_20limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e488m17_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e488m17_20limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e489m21/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e489m21/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e489m21/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e489m21/feadd.c84
-rw-r--r--src/Specific/solinas32_2e489m21/feadd.v14
-rw-r--r--src/Specific/solinas32_2e489m21/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e489m21/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21/femul.v14
-rw-r--r--src/Specific/solinas32_2e489m21/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e489m21/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21/fesub.c84
-rw-r--r--src/Specific/solinas32_2e489m21/fesub.v14
-rw-r--r--src/Specific/solinas32_2e489m21/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e489m21/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21/freeze.c139
-rw-r--r--src/Specific/solinas32_2e489m21/freeze.v14
-rw-r--r--src/Specific/solinas32_2e489m21/freezeDisplay.log89
-rw-r--r--src/Specific/solinas32_2e489m21/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_19limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_19limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e489m21_19limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_19limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_20limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_20limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e489m21_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e489m21_20limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e495m31/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e495m31/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e495m31/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e495m31/feadd.c60
-rw-r--r--src/Specific/solinas32_2e495m31/feadd.v14
-rw-r--r--src/Specific/solinas32_2e495m31/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e495m31/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31/femul.c141
-rw-r--r--src/Specific/solinas32_2e495m31/femul.v14
-rw-r--r--src/Specific/solinas32_2e495m31/femulDisplay.log88
-rw-r--r--src/Specific/solinas32_2e495m31/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31/fesquare.c122
-rw-r--r--src/Specific/solinas32_2e495m31/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e495m31/fesquareDisplay.log88
-rw-r--r--src/Specific/solinas32_2e495m31/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31/fesub.c60
-rw-r--r--src/Specific/solinas32_2e495m31/fesub.v14
-rw-r--r--src/Specific/solinas32_2e495m31/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e495m31/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31/freeze.c99
-rw-r--r--src/Specific/solinas32_2e495m31/freeze.v14
-rw-r--r--src/Specific/solinas32_2e495m31/freezeDisplay.log65
-rw-r--r--src/Specific/solinas32_2e495m31/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_20limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_20limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e495m31_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_20limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_21limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_21limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e495m31_21limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e510m290x2e496m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e510m290x2e496m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/feadd.c75
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesub.c75
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freeze.c124
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log80
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e510m290x2e496m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m187/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m187/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m187/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m187/feadd.c87
-rw-r--r--src/Specific/solinas32_2e511m187/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m187/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e511m187/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m187/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m187/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187/fesub.c87
-rw-r--r--src/Specific/solinas32_2e511m187/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m187/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e511m187/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187/freeze.c144
-rw-r--r--src/Specific/solinas32_2e511m187/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m187/freezeDisplay.log92
-rw-r--r--src/Specific/solinas32_2e511m187/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_22limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_22limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_22limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_23limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_23limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m187_23limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m187_23limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m481/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m481/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m481/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m481/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m481/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m481/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m481/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m481/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481/freeze.c144
-rw-r--r--src/Specific/solinas32_2e511m481/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m481/freezeDisplay.log92
-rw-r--r--src/Specific/solinas32_2e511m481/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_23limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_23limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m481_23limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_23limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_24limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_24limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e511m481_24limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e511m481_24limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e512m491x2e496m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e512m491x2e496m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/feadd.c75
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesub.c75
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freeze.c124
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log80
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e512m491x2e496m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e512m569/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e512m569/feadd.c75
-rw-r--r--src/Specific/solinas32_2e512m569/feadd.v14
-rw-r--r--src/Specific/solinas32_2e512m569/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e512m569/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569/femul.v14
-rw-r--r--src/Specific/solinas32_2e512m569/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569/fesquare.c152
-rw-r--r--src/Specific/solinas32_2e512m569/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e512m569/fesquareDisplay.log108
-rw-r--r--src/Specific/solinas32_2e512m569/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569/fesub.c75
-rw-r--r--src/Specific/solinas32_2e512m569/fesub.v14
-rw-r--r--src/Specific/solinas32_2e512m569/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e512m569/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569/freeze.c124
-rw-r--r--src/Specific/solinas32_2e512m569/freeze.v14
-rw-r--r--src/Specific/solinas32_2e512m569/freezeDisplay.log80
-rw-r--r--src/Specific/solinas32_2e512m569/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e512m569/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_24limbs/compiler.sh (renamed from src/Specific/solinas32_2e512m569/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_24limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e512m569/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e512m569_24limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_24limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e512m569/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_25limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_25limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e512m569_25limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e512m569_25limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e521m1/Synthesis.v9
-rw-r--r--src/Specific/solinas32_2e521m1/feadd.c63
-rw-r--r--src/Specific/solinas32_2e521m1/feadd.v14
-rw-r--r--src/Specific/solinas32_2e521m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e521m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1/femul.c148
-rw-r--r--src/Specific/solinas32_2e521m1/femul.v14
-rw-r--r--src/Specific/solinas32_2e521m1/femulDisplay.log92
-rw-r--r--src/Specific/solinas32_2e521m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1/fesquare.c128
-rw-r--r--src/Specific/solinas32_2e521m1/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e521m1/fesquareDisplay.log92
-rw-r--r--src/Specific/solinas32_2e521m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1/fesub.c63
-rw-r--r--src/Specific/solinas32_2e521m1/fesub.v14
-rw-r--r--src/Specific/solinas32_2e521m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e521m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1/freeze.c104
-rw-r--r--src/Specific/solinas32_2e521m1/freeze.v14
-rw-r--r--src/Specific/solinas32_2e521m1/freezeDisplay.log68
-rw-r--r--src/Specific/solinas32_2e521m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_19limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_19limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_19limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/CurveParameters.v (renamed from src/Specific/solinas32_2e521m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_20limbs/compiler.sh (renamed from src/Specific/solinas32_2e521m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_20limbs/compilerxx.sh (renamed from src/Specific/solinas32_2e521m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/feadd.v14
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/femul.v14
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/fesquare.v14
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/fesub.v14
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/freeze.v14
-rw-r--r--src/Specific/solinas32_2e521m1_20limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas32_2e521m1_20limbs/py_interpreter.sh (renamed from src/Specific/solinas32_2e521m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e127m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e127m1/feadd.c12
-rw-r--r--src/Specific/solinas64_2e127m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e127m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e127m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1/femul.c29
-rw-r--r--src/Specific/solinas64_2e127m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e127m1/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e127m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e127m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e127m1/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e127m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1/fesub.c12
-rw-r--r--src/Specific/solinas64_2e127m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e127m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e127m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1/freeze.c19
-rw-r--r--src/Specific/solinas64_2e127m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e127m1/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e127m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e127m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e127m1_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e127m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e127m1_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e127m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e127m1_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e127m1_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e127m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e129m25/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e129m25/feadd.c12
-rw-r--r--src/Specific/solinas64_2e129m25/feadd.v14
-rw-r--r--src/Specific/solinas64_2e129m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e129m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25/femul.c29
-rw-r--r--src/Specific/solinas64_2e129m25/femul.v14
-rw-r--r--src/Specific/solinas64_2e129m25/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e129m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e129m25/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e129m25/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e129m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25/fesub.c12
-rw-r--r--src/Specific/solinas64_2e129m25/fesub.v14
-rw-r--r--src/Specific/solinas64_2e129m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e129m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25/freeze.c19
-rw-r--r--src/Specific/solinas64_2e129m25/freeze.v14
-rw-r--r--src/Specific/solinas64_2e129m25/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e129m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e129m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e129m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e129m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e129m25_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e129m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e129m25_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e130m5/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e130m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e130m5/feadd.v14
-rw-r--r--src/Specific/solinas64_2e130m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e130m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5/femul.c29
-rw-r--r--src/Specific/solinas64_2e130m5/femul.v14
-rw-r--r--src/Specific/solinas64_2e130m5/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e130m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e130m5/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e130m5/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e130m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e130m5/fesub.v14
-rw-r--r--src/Specific/solinas64_2e130m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e130m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5/freeze.c19
-rw-r--r--src/Specific/solinas64_2e130m5/freeze.v14
-rw-r--r--src/Specific/solinas64_2e130m5/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e130m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e130m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e130m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e130m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e130m5_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e130m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e130m5_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e137m13/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e137m13/feadd.c15
-rw-r--r--src/Specific/solinas64_2e137m13/feadd.v14
-rw-r--r--src/Specific/solinas64_2e137m13/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e137m13/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13/femul.c36
-rw-r--r--src/Specific/solinas64_2e137m13/femul.v14
-rw-r--r--src/Specific/solinas64_2e137m13/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e137m13/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e137m13/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e137m13/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e137m13/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13/fesub.c15
-rw-r--r--src/Specific/solinas64_2e137m13/fesub.v14
-rw-r--r--src/Specific/solinas64_2e137m13/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e137m13/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13/freeze.c24
-rw-r--r--src/Specific/solinas64_2e137m13/freeze.v14
-rw-r--r--src/Specific/solinas64_2e137m13/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e137m13/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_3limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_3limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_3limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e137m13/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e137m13/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e137m13/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e137m13_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e137m13_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e137m13/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e140m27/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e140m27/feadd.c15
-rw-r--r--src/Specific/solinas64_2e140m27/feadd.v14
-rw-r--r--src/Specific/solinas64_2e140m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e140m27/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27/femul.c36
-rw-r--r--src/Specific/solinas64_2e140m27/femul.v14
-rw-r--r--src/Specific/solinas64_2e140m27/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e140m27/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e140m27/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e140m27/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e140m27/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27/fesub.c15
-rw-r--r--src/Specific/solinas64_2e140m27/fesub.v14
-rw-r--r--src/Specific/solinas64_2e140m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e140m27/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27/freeze.c24
-rw-r--r--src/Specific/solinas64_2e140m27/freeze.v14
-rw-r--r--src/Specific/solinas64_2e140m27/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e140m27/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_3limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_3limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_3limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e140m27/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e140m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e140m27/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e140m27_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e140m27_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e140m27/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e141m9/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e141m9/feadd.c12
-rw-r--r--src/Specific/solinas64_2e141m9/feadd.v14
-rw-r--r--src/Specific/solinas64_2e141m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e141m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9/femul.c29
-rw-r--r--src/Specific/solinas64_2e141m9/femul.v14
-rw-r--r--src/Specific/solinas64_2e141m9/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e141m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e141m9/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e141m9/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e141m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9/fesub.c12
-rw-r--r--src/Specific/solinas64_2e141m9/fesub.v14
-rw-r--r--src/Specific/solinas64_2e141m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e141m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9/freeze.c19
-rw-r--r--src/Specific/solinas64_2e141m9/freeze.v14
-rw-r--r--src/Specific/solinas64_2e141m9/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e141m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e141m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e141m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e141m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e141m9_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e141m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e141m9_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e150m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e150m3/feadd.c12
-rw-r--r--src/Specific/solinas64_2e150m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3/femul.c29
-rw-r--r--src/Specific/solinas64_2e150m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m3/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e150m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e150m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m3/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e150m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3/fesub.c12
-rw-r--r--src/Specific/solinas64_2e150m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3/freeze.c19
-rw-r--r--src/Specific/solinas64_2e150m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m3/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e150m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e150m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e150m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e150m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m3_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e150m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e150m3_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e150m5/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e150m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e150m5/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5/femul.c29
-rw-r--r--src/Specific/solinas64_2e150m5/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m5/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e150m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e150m5/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m5/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e150m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e150m5/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5/freeze.c19
-rw-r--r--src/Specific/solinas64_2e150m5/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m5/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e150m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e150m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e150m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e150m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m5_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e150m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e150m5_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e152m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e152m17/feadd.c15
-rw-r--r--src/Specific/solinas64_2e152m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e152m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e152m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17/femul.c36
-rw-r--r--src/Specific/solinas64_2e152m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e152m17/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e152m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e152m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e152m17/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e152m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17/fesub.c15
-rw-r--r--src/Specific/solinas64_2e152m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e152m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e152m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17/freeze.c24
-rw-r--r--src/Specific/solinas64_2e152m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e152m17/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e152m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_3limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_3limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_3limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e152m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e152m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e152m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e152m17_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e152m17_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e152m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e158m15/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e158m15/feadd.c15
-rw-r--r--src/Specific/solinas64_2e158m15/feadd.v14
-rw-r--r--src/Specific/solinas64_2e158m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e158m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15/femul.c36
-rw-r--r--src/Specific/solinas64_2e158m15/femul.v14
-rw-r--r--src/Specific/solinas64_2e158m15/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e158m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e158m15/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e158m15/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e158m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15/fesub.c15
-rw-r--r--src/Specific/solinas64_2e158m15/fesub.v14
-rw-r--r--src/Specific/solinas64_2e158m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e158m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15/freeze.c24
-rw-r--r--src/Specific/solinas64_2e158m15/freeze.v14
-rw-r--r--src/Specific/solinas64_2e158m15/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e158m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_3limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_3limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_3limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e158m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e158m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e158m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e158m15_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e158m15_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e158m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e165m25/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e165m25/feadd.c12
-rw-r--r--src/Specific/solinas64_2e165m25/feadd.v14
-rw-r--r--src/Specific/solinas64_2e165m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e165m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25/femul.c29
-rw-r--r--src/Specific/solinas64_2e165m25/femul.v14
-rw-r--r--src/Specific/solinas64_2e165m25/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e165m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e165m25/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e165m25/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e165m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25/fesub.c12
-rw-r--r--src/Specific/solinas64_2e165m25/fesub.v14
-rw-r--r--src/Specific/solinas64_2e165m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e165m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25/freeze.c19
-rw-r--r--src/Specific/solinas64_2e165m25/freeze.v14
-rw-r--r--src/Specific/solinas64_2e165m25/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e165m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e165m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e165m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e165m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e165m25_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e165m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e165m25_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e166m5/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e166m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e166m5/feadd.v14
-rw-r--r--src/Specific/solinas64_2e166m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e166m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5/femul.c29
-rw-r--r--src/Specific/solinas64_2e166m5/femul.v14
-rw-r--r--src/Specific/solinas64_2e166m5/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e166m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e166m5/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e166m5/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e166m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e166m5/fesub.v14
-rw-r--r--src/Specific/solinas64_2e166m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e166m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5/freeze.c19
-rw-r--r--src/Specific/solinas64_2e166m5/freeze.v14
-rw-r--r--src/Specific/solinas64_2e166m5/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e166m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e166m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e166m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e166m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e166m5_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e166m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e166m5_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e171m19/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e171m19/feadd.c12
-rw-r--r--src/Specific/solinas64_2e171m19/feadd.v14
-rw-r--r--src/Specific/solinas64_2e171m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e171m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19/femul.c29
-rw-r--r--src/Specific/solinas64_2e171m19/femul.v14
-rw-r--r--src/Specific/solinas64_2e171m19/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e171m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e171m19/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e171m19/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e171m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19/fesub.c12
-rw-r--r--src/Specific/solinas64_2e171m19/fesub.v14
-rw-r--r--src/Specific/solinas64_2e171m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e171m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19/freeze.c19
-rw-r--r--src/Specific/solinas64_2e171m19/freeze.v14
-rw-r--r--src/Specific/solinas64_2e171m19/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e171m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e171m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e171m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e171m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e171m19_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e171m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e171m19_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e174m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e174m17/feadd.c12
-rw-r--r--src/Specific/solinas64_2e174m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17/femul.c29
-rw-r--r--src/Specific/solinas64_2e174m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m17/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e174m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e174m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m17/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e174m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17/fesub.c12
-rw-r--r--src/Specific/solinas64_2e174m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17/freeze.c19
-rw-r--r--src/Specific/solinas64_2e174m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m17/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e174m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e174m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e174m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e174m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m17_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e174m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e174m17_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e174m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e174m3/feadd.c12
-rw-r--r--src/Specific/solinas64_2e174m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3/femul.c29
-rw-r--r--src/Specific/solinas64_2e174m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m3/femulDisplay.log24
-rw-r--r--src/Specific/solinas64_2e174m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3/fesquare.c26
-rw-r--r--src/Specific/solinas64_2e174m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m3/fesquareDisplay.log24
-rw-r--r--src/Specific/solinas64_2e174m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3/fesub.c12
-rw-r--r--src/Specific/solinas64_2e174m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3/freeze.c19
-rw-r--r--src/Specific/solinas64_2e174m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m3/freezeDisplay.log17
-rw-r--r--src/Specific/solinas64_2e174m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e174m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_3limbs/compiler.sh (renamed from src/Specific/solinas64_2e174m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_3limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e174m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m3_3limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_3limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e174m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e174m3_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e189m25/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e189m25/feadd.c15
-rw-r--r--src/Specific/solinas64_2e189m25/feadd.v14
-rw-r--r--src/Specific/solinas64_2e189m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e189m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25/femul.c36
-rw-r--r--src/Specific/solinas64_2e189m25/femul.v14
-rw-r--r--src/Specific/solinas64_2e189m25/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e189m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e189m25/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e189m25/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e189m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25/fesub.c15
-rw-r--r--src/Specific/solinas64_2e189m25/fesub.v14
-rw-r--r--src/Specific/solinas64_2e189m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e189m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25/freeze.c24
-rw-r--r--src/Specific/solinas64_2e189m25/freeze.v14
-rw-r--r--src/Specific/solinas64_2e189m25/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e189m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e189m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e189m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e189m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e189m25_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e189m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e189m25_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e190m11/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e190m11/feadd.c15
-rw-r--r--src/Specific/solinas64_2e190m11/feadd.v14
-rw-r--r--src/Specific/solinas64_2e190m11/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e190m11/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11/femul.c36
-rw-r--r--src/Specific/solinas64_2e190m11/femul.v14
-rw-r--r--src/Specific/solinas64_2e190m11/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e190m11/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e190m11/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e190m11/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e190m11/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11/fesub.c15
-rw-r--r--src/Specific/solinas64_2e190m11/fesub.v14
-rw-r--r--src/Specific/solinas64_2e190m11/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e190m11/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11/freeze.c24
-rw-r--r--src/Specific/solinas64_2e190m11/freeze.v14
-rw-r--r--src/Specific/solinas64_2e190m11/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e190m11/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e190m11/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e190m11/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e190m11/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e190m11_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e190m11/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e190m11_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e191m19/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e191m19/feadd.c18
-rw-r--r--src/Specific/solinas64_2e191m19/feadd.v14
-rw-r--r--src/Specific/solinas64_2e191m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e191m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19/femul.c43
-rw-r--r--src/Specific/solinas64_2e191m19/femul.v14
-rw-r--r--src/Specific/solinas64_2e191m19/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e191m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e191m19/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e191m19/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e191m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19/fesub.c18
-rw-r--r--src/Specific/solinas64_2e191m19/fesub.v14
-rw-r--r--src/Specific/solinas64_2e191m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e191m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19/freeze.c29
-rw-r--r--src/Specific/solinas64_2e191m19/freeze.v14
-rw-r--r--src/Specific/solinas64_2e191m19/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e191m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e191m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e191m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e191m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e191m19_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e191m19_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e191m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/femul.c47
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/femulDisplay.log39
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesquare.c43
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.log39
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/freeze.c24
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e192m2e64m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e192m2e64m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e192m2e64m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e192m2e64m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e192m2e64m1_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e194m33/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e194m33/feadd.c15
-rw-r--r--src/Specific/solinas64_2e194m33/feadd.v14
-rw-r--r--src/Specific/solinas64_2e194m33/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e194m33/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33/femul.c36
-rw-r--r--src/Specific/solinas64_2e194m33/femul.v14
-rw-r--r--src/Specific/solinas64_2e194m33/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e194m33/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e194m33/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e194m33/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e194m33/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33/fesub.c15
-rw-r--r--src/Specific/solinas64_2e194m33/fesub.v14
-rw-r--r--src/Specific/solinas64_2e194m33/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e194m33/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33/freeze.c24
-rw-r--r--src/Specific/solinas64_2e194m33/freeze.v14
-rw-r--r--src/Specific/solinas64_2e194m33/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e194m33/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e194m33/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e194m33/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e194m33/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e194m33_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e194m33/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e194m33_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e196m15/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e196m15/feadd.c15
-rw-r--r--src/Specific/solinas64_2e196m15/feadd.v14
-rw-r--r--src/Specific/solinas64_2e196m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e196m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15/femul.c36
-rw-r--r--src/Specific/solinas64_2e196m15/femul.v14
-rw-r--r--src/Specific/solinas64_2e196m15/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e196m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e196m15/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e196m15/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e196m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15/fesub.c15
-rw-r--r--src/Specific/solinas64_2e196m15/fesub.v14
-rw-r--r--src/Specific/solinas64_2e196m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e196m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15/freeze.c24
-rw-r--r--src/Specific/solinas64_2e196m15/freeze.v14
-rw-r--r--src/Specific/solinas64_2e196m15/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e196m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e196m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e196m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e196m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e196m15_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e196m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e196m15_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e196m15_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e198m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e198m17/feadd.c15
-rw-r--r--src/Specific/solinas64_2e198m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e198m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e198m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17/femul.c36
-rw-r--r--src/Specific/solinas64_2e198m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e198m17/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e198m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e198m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e198m17/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e198m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17/fesub.c15
-rw-r--r--src/Specific/solinas64_2e198m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e198m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e198m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17/freeze.c24
-rw-r--r--src/Specific/solinas64_2e198m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e198m17/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e198m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e198m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e198m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e198m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e198m17_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e198m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e198m17_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e205m45x2e198m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e205m45x2e198m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/freeze.c24
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e205m45x2e198m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e206m5/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e206m5/feadd.c15
-rw-r--r--src/Specific/solinas64_2e206m5/feadd.v14
-rw-r--r--src/Specific/solinas64_2e206m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e206m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5/femul.c36
-rw-r--r--src/Specific/solinas64_2e206m5/femul.v14
-rw-r--r--src/Specific/solinas64_2e206m5/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e206m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e206m5/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e206m5/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e206m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5/fesub.c15
-rw-r--r--src/Specific/solinas64_2e206m5/fesub.v14
-rw-r--r--src/Specific/solinas64_2e206m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e206m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5/freeze.c24
-rw-r--r--src/Specific/solinas64_2e206m5/freeze.v14
-rw-r--r--src/Specific/solinas64_2e206m5/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e206m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e206m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e206m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e206m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e206m5_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e206m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e206m5_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e212m29/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e212m29/feadd.c15
-rw-r--r--src/Specific/solinas64_2e212m29/feadd.v14
-rw-r--r--src/Specific/solinas64_2e212m29/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e212m29/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29/femul.c36
-rw-r--r--src/Specific/solinas64_2e212m29/femul.v14
-rw-r--r--src/Specific/solinas64_2e212m29/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e212m29/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e212m29/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e212m29/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e212m29/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29/fesub.c15
-rw-r--r--src/Specific/solinas64_2e212m29/fesub.v14
-rw-r--r--src/Specific/solinas64_2e212m29/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e212m29/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29/freeze.c24
-rw-r--r--src/Specific/solinas64_2e212m29/freeze.v14
-rw-r--r--src/Specific/solinas64_2e212m29/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e212m29/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e212m29/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e212m29/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e212m29/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e212m29_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e212m29/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e212m29_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e213m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e213m3/feadd.c15
-rw-r--r--src/Specific/solinas64_2e213m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e213m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e213m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3/femul.c36
-rw-r--r--src/Specific/solinas64_2e213m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e213m3/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e213m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e213m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e213m3/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e213m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3/fesub.c15
-rw-r--r--src/Specific/solinas64_2e213m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e213m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e213m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3/freeze.c24
-rw-r--r--src/Specific/solinas64_2e213m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e213m3/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e213m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e213m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e213m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e213m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e213m3_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e213m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e213m3_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/femul.c49
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/femulDisplay.log41
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesquare.c45
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.log41
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/freeze.c24
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e216m2e108m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e216m2e108m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e216m2e108m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e216m2e108m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e216m2e108m1_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e221m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e221m3/feadd.c15
-rw-r--r--src/Specific/solinas64_2e221m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e221m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e221m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3/femul.c36
-rw-r--r--src/Specific/solinas64_2e221m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e221m3/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e221m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e221m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e221m3/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e221m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3/fesub.c15
-rw-r--r--src/Specific/solinas64_2e221m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e221m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e221m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3/freeze.c24
-rw-r--r--src/Specific/solinas64_2e221m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e221m3/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e221m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e221m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e221m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e221m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e221m3_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e221m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e221m3_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e222m117/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e222m117/feadd.c15
-rw-r--r--src/Specific/solinas64_2e222m117/feadd.v14
-rw-r--r--src/Specific/solinas64_2e222m117/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e222m117/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117/femul.c36
-rw-r--r--src/Specific/solinas64_2e222m117/femul.v14
-rw-r--r--src/Specific/solinas64_2e222m117/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e222m117/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e222m117/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e222m117/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e222m117/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117/fesub.c15
-rw-r--r--src/Specific/solinas64_2e222m117/fesub.v14
-rw-r--r--src/Specific/solinas64_2e222m117/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e222m117/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117/freeze.c24
-rw-r--r--src/Specific/solinas64_2e222m117/freeze.v14
-rw-r--r--src/Specific/solinas64_2e222m117/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e222m117/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e222m117/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e222m117/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e222m117/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e222m117_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e222m117/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e222m117_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/femul.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/freeze.c24
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e224m2e96p1_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e226m5/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e226m5/feadd.c15
-rw-r--r--src/Specific/solinas64_2e226m5/feadd.v14
-rw-r--r--src/Specific/solinas64_2e226m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e226m5/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5/femul.c36
-rw-r--r--src/Specific/solinas64_2e226m5/femul.v14
-rw-r--r--src/Specific/solinas64_2e226m5/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e226m5/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e226m5/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e226m5/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e226m5/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5/fesub.c15
-rw-r--r--src/Specific/solinas64_2e226m5/fesub.v14
-rw-r--r--src/Specific/solinas64_2e226m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e226m5/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5/freeze.c24
-rw-r--r--src/Specific/solinas64_2e226m5/freeze.v14
-rw-r--r--src/Specific/solinas64_2e226m5/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e226m5/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e226m5/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e226m5/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e226m5/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e226m5_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e226m5/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e226m5_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e230m27/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e230m27/feadd.c15
-rw-r--r--src/Specific/solinas64_2e230m27/feadd.v14
-rw-r--r--src/Specific/solinas64_2e230m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e230m27/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27/femul.c36
-rw-r--r--src/Specific/solinas64_2e230m27/femul.v14
-rw-r--r--src/Specific/solinas64_2e230m27/femulDisplay.log28
-rw-r--r--src/Specific/solinas64_2e230m27/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27/fesquare.c32
-rw-r--r--src/Specific/solinas64_2e230m27/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e230m27/fesquareDisplay.log28
-rw-r--r--src/Specific/solinas64_2e230m27/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27/fesub.c15
-rw-r--r--src/Specific/solinas64_2e230m27/fesub.v14
-rw-r--r--src/Specific/solinas64_2e230m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e230m27/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27/freeze.c24
-rw-r--r--src/Specific/solinas64_2e230m27/freeze.v14
-rw-r--r--src/Specific/solinas64_2e230m27/freezeDisplay.log20
-rw-r--r--src/Specific/solinas64_2e230m27/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e230m27/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_4limbs/compiler.sh (renamed from src/Specific/solinas64_2e230m27/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_4limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e230m27/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e230m27_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_4limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e230m27/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e230m27_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e235m15/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e235m15/feadd.c18
-rw-r--r--src/Specific/solinas64_2e235m15/feadd.v14
-rw-r--r--src/Specific/solinas64_2e235m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e235m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15/femul.c43
-rw-r--r--src/Specific/solinas64_2e235m15/femul.v14
-rw-r--r--src/Specific/solinas64_2e235m15/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e235m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e235m15/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e235m15/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e235m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15/fesub.c18
-rw-r--r--src/Specific/solinas64_2e235m15/fesub.v14
-rw-r--r--src/Specific/solinas64_2e235m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e235m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15/freeze.c29
-rw-r--r--src/Specific/solinas64_2e235m15/freeze.v14
-rw-r--r--src/Specific/solinas64_2e235m15/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e235m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_4limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_4limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_4limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e235m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e235m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e235m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e235m15_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e235m15_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e235m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e243m9/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e243m9/feadd.c21
-rw-r--r--src/Specific/solinas64_2e243m9/feadd.v14
-rw-r--r--src/Specific/solinas64_2e243m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e243m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9/femul.c50
-rw-r--r--src/Specific/solinas64_2e243m9/femul.v14
-rw-r--r--src/Specific/solinas64_2e243m9/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e243m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e243m9/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e243m9/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e243m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9/fesub.c21
-rw-r--r--src/Specific/solinas64_2e243m9/fesub.v14
-rw-r--r--src/Specific/solinas64_2e243m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e243m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9/freeze.c34
-rw-r--r--src/Specific/solinas64_2e243m9/freeze.v14
-rw-r--r--src/Specific/solinas64_2e243m9/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e243m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_5limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_5limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_5limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e243m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_6limbs/compiler.sh (renamed from src/Specific/solinas64_2e243m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_6limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e243m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e243m9_6limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e243m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e251m9/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e251m9/feadd.c18
-rw-r--r--src/Specific/solinas64_2e251m9/feadd.v14
-rw-r--r--src/Specific/solinas64_2e251m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e251m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9/femul.c43
-rw-r--r--src/Specific/solinas64_2e251m9/femul.v14
-rw-r--r--src/Specific/solinas64_2e251m9/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e251m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e251m9/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e251m9/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e251m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9/fesub.c18
-rw-r--r--src/Specific/solinas64_2e251m9/fesub.v14
-rw-r--r--src/Specific/solinas64_2e251m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e251m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9/freeze.c29
-rw-r--r--src/Specific/solinas64_2e251m9/freeze.v14
-rw-r--r--src/Specific/solinas64_2e251m9/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e251m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e251m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e251m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e251m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e251m9_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e251m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e251m9_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e254m127x2e240m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e254m127x2e240m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/feadd.c21
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesub.c21
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/freeze.c34
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e254m127x2e240m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e255m19/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e255m19/feadd.c18
-rw-r--r--src/Specific/solinas64_2e255m19/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19/femul.c43
-rw-r--r--src/Specific/solinas64_2e255m19/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m19/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e255m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e255m19/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m19/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e255m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19/fesub.c18
-rw-r--r--src/Specific/solinas64_2e255m19/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19/freeze.c29
-rw-r--r--src/Specific/solinas64_2e255m19/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m19/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e255m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e255m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e255m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e255m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m19_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e255m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e255m19_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e255m2e4m2e1m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/feadd.c18
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/femul.c56
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.log45
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.c51
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.log45
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesub.c18
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/freeze.c29
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e255m2e4m2e1m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e255m765/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e255m765/feadd.c18
-rw-r--r--src/Specific/solinas64_2e255m765/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m765/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m765/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765/femul.c43
-rw-r--r--src/Specific/solinas64_2e255m765/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m765/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e255m765/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e255m765/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m765/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e255m765/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765/fesub.c18
-rw-r--r--src/Specific/solinas64_2e255m765/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m765/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m765/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765/freeze.c29
-rw-r--r--src/Specific/solinas64_2e255m765/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m765/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e255m765/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e255m765/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e255m765/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e255m765/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m765_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e255m765/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e255m765_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m189/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e256m189/feadd.c18
-rw-r--r--src/Specific/solinas64_2e256m189/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m189/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m189/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189/femul.c43
-rw-r--r--src/Specific/solinas64_2e256m189/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m189/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e256m189/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e256m189/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m189/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e256m189/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189/fesub.c18
-rw-r--r--src/Specific/solinas64_2e256m189/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m189/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m189/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189/freeze.c29
-rw-r--r--src/Specific/solinas64_2e256m189/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m189/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e256m189/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e256m189/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e256m189/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e256m189/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m189_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e256m189/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m189_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.c18
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.c28
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.log22
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e256m2e224p2e192p2e96m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/feadd.c18
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/femul.c51
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/femulDisplay.log40
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesquare.c46
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesub.c18
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/freeze.c29
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m2e32m977_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m4294968273_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e256m88x2e240m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e256m88x2e240m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/feadd.c18
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.log0
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesub.c18
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/freeze.c29
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e256m88x2e240m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e266m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e266m3/feadd.c18
-rw-r--r--src/Specific/solinas64_2e266m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e266m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e266m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3/femul.c43
-rw-r--r--src/Specific/solinas64_2e266m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e266m3/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e266m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e266m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e266m3/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e266m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3/fesub.c18
-rw-r--r--src/Specific/solinas64_2e266m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e266m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e266m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3/freeze.c29
-rw-r--r--src/Specific/solinas64_2e266m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e266m3/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e266m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e266m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e266m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e266m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e266m3_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e266m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e266m3_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e285m9/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e285m9/feadd.c18
-rw-r--r--src/Specific/solinas64_2e285m9/feadd.v14
-rw-r--r--src/Specific/solinas64_2e285m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e285m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9/femul.c43
-rw-r--r--src/Specific/solinas64_2e285m9/femul.v14
-rw-r--r--src/Specific/solinas64_2e285m9/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e285m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e285m9/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e285m9/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e285m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9/fesub.c18
-rw-r--r--src/Specific/solinas64_2e285m9/fesub.v14
-rw-r--r--src/Specific/solinas64_2e285m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e285m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9/freeze.c29
-rw-r--r--src/Specific/solinas64_2e285m9/freeze.v14
-rw-r--r--src/Specific/solinas64_2e285m9/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e285m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e285m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e285m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e285m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e285m9_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e285m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e285m9_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e291m19/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e291m19/feadd.c18
-rw-r--r--src/Specific/solinas64_2e291m19/feadd.v14
-rw-r--r--src/Specific/solinas64_2e291m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e291m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19/femul.c43
-rw-r--r--src/Specific/solinas64_2e291m19/femul.v14
-rw-r--r--src/Specific/solinas64_2e291m19/femulDisplay.log32
-rw-r--r--src/Specific/solinas64_2e291m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19/fesquare.c38
-rw-r--r--src/Specific/solinas64_2e291m19/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e291m19/fesquareDisplay.log32
-rw-r--r--src/Specific/solinas64_2e291m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19/fesub.c18
-rw-r--r--src/Specific/solinas64_2e291m19/fesub.v14
-rw-r--r--src/Specific/solinas64_2e291m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e291m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19/freeze.c29
-rw-r--r--src/Specific/solinas64_2e291m19/freeze.v14
-rw-r--r--src/Specific/solinas64_2e291m19/freezeDisplay.log23
-rw-r--r--src/Specific/solinas64_2e291m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e291m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_5limbs/compiler.sh (renamed from src/Specific/solinas64_2e291m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_5limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e291m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e291m19_5limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_5limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e291m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e291m19_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e321m9/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e321m9/feadd.c21
-rw-r--r--src/Specific/solinas64_2e321m9/feadd.v14
-rw-r--r--src/Specific/solinas64_2e321m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e321m9/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9/femul.c50
-rw-r--r--src/Specific/solinas64_2e321m9/femul.v14
-rw-r--r--src/Specific/solinas64_2e321m9/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e321m9/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e321m9/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e321m9/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e321m9/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9/fesub.c21
-rw-r--r--src/Specific/solinas64_2e321m9/fesub.v14
-rw-r--r--src/Specific/solinas64_2e321m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e321m9/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9/freeze.c34
-rw-r--r--src/Specific/solinas64_2e321m9/freeze.v14
-rw-r--r--src/Specific/solinas64_2e321m9/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e321m9/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e321m9/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_6limbs/compiler.sh (renamed from src/Specific/solinas64_2e321m9/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_6limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e321m9/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_6limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e321m9/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e321m9_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/feadd.c24
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesub.c24
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/freeze.c39
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_6limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_6limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_6limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e322m2e161m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_7limbs/compiler.sh (renamed from src/Specific/solinas64_2e322m2e161m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_7limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e322m2e161m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e322m2e161m1_7limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e322m2e161m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e336m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e336m17/feadd.c21
-rw-r--r--src/Specific/solinas64_2e336m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17/femul.c50
-rw-r--r--src/Specific/solinas64_2e336m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m17/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e336m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m17/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17/fesub.c21
-rw-r--r--src/Specific/solinas64_2e336m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17/freeze.c34
-rw-r--r--src/Specific/solinas64_2e336m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m17/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e336m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e336m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_6limbs/compiler.sh (renamed from src/Specific/solinas64_2e336m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_6limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e336m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_6limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e336m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m17_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e336m17_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e336m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e336m3/feadd.c21
-rw-r--r--src/Specific/solinas64_2e336m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3/femul.c50
-rw-r--r--src/Specific/solinas64_2e336m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m3/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e336m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m3/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3/fesub.c21
-rw-r--r--src/Specific/solinas64_2e336m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3/freeze.c34
-rw-r--r--src/Specific/solinas64_2e336m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m3/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e336m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e336m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_6limbs/compiler.sh (renamed from src/Specific/solinas64_2e336m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_6limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e336m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_6limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e336m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e336m3_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e336m3_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e338m15/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e338m15/feadd.c21
-rw-r--r--src/Specific/solinas64_2e338m15/feadd.v14
-rw-r--r--src/Specific/solinas64_2e338m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e338m15/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15/femul.c50
-rw-r--r--src/Specific/solinas64_2e338m15/femul.v14
-rw-r--r--src/Specific/solinas64_2e338m15/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e338m15/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e338m15/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e338m15/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e338m15/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15/fesub.c21
-rw-r--r--src/Specific/solinas64_2e338m15/fesub.v14
-rw-r--r--src/Specific/solinas64_2e338m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e338m15/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15/freeze.c34
-rw-r--r--src/Specific/solinas64_2e338m15/freeze.v14
-rw-r--r--src/Specific/solinas64_2e338m15/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e338m15/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e338m15/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_6limbs/compiler.sh (renamed from src/Specific/solinas64_2e338m15/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_6limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e338m15/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_6limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e338m15/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e338m15_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e338m15_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e369m25/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e369m25/feadd.c27
-rw-r--r--src/Specific/solinas64_2e369m25/feadd.v14
-rw-r--r--src/Specific/solinas64_2e369m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e369m25/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25/femul.c64
-rw-r--r--src/Specific/solinas64_2e369m25/femul.v14
-rw-r--r--src/Specific/solinas64_2e369m25/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e369m25/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e369m25/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e369m25/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e369m25/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25/fesub.c27
-rw-r--r--src/Specific/solinas64_2e369m25/fesub.v14
-rw-r--r--src/Specific/solinas64_2e369m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e369m25/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25/freeze.c44
-rw-r--r--src/Specific/solinas64_2e369m25/freeze.v14
-rw-r--r--src/Specific/solinas64_2e369m25/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e369m25/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e369m25/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e369m25/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e369m25/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e369m25_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e369m25_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e369m25/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e379m19/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e379m19/feadd.c24
-rw-r--r--src/Specific/solinas64_2e379m19/feadd.v14
-rw-r--r--src/Specific/solinas64_2e379m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e379m19/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19/femul.c57
-rw-r--r--src/Specific/solinas64_2e379m19/femul.v14
-rw-r--r--src/Specific/solinas64_2e379m19/femulDisplay.log40
-rw-r--r--src/Specific/solinas64_2e379m19/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19/fesquare.c50
-rw-r--r--src/Specific/solinas64_2e379m19/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e379m19/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas64_2e379m19/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19/fesub.c24
-rw-r--r--src/Specific/solinas64_2e379m19/fesub.v14
-rw-r--r--src/Specific/solinas64_2e379m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e379m19/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19/freeze.c39
-rw-r--r--src/Specific/solinas64_2e379m19/freeze.v14
-rw-r--r--src/Specific/solinas64_2e379m19/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e379m19/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e379m19/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_7limbs/compiler.sh (renamed from src/Specific/solinas64_2e379m19/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_7limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e379m19/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_7limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e379m19/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e379m19_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e379m19_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e382m105/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e382m105/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e382m105/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e382m105/feadd.c33
-rw-r--r--src/Specific/solinas64_2e382m105/feadd.v14
-rw-r--r--src/Specific/solinas64_2e382m105/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e382m105/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105/femul.c78
-rw-r--r--src/Specific/solinas64_2e382m105/femul.v14
-rw-r--r--src/Specific/solinas64_2e382m105/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e382m105/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e382m105/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e382m105/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e382m105/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105/fesub.c33
-rw-r--r--src/Specific/solinas64_2e382m105/fesub.v14
-rw-r--r--src/Specific/solinas64_2e382m105/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e382m105/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105/freeze.c54
-rw-r--r--src/Specific/solinas64_2e382m105/freeze.v14
-rw-r--r--src/Specific/solinas64_2e382m105/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e382m105/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e382m105_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m187_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m31_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m31_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e383m421_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.c43
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.log31
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m317/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e384m317/feadd.c27
-rw-r--r--src/Specific/solinas64_2e384m317/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m317/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m317/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317/femul.c64
-rw-r--r--src/Specific/solinas64_2e384m317/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m317/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e384m317/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e384m317/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m317/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e384m317/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317/fesub.c27
-rw-r--r--src/Specific/solinas64_2e384m317/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m317/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m317/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317/freeze.c44
-rw-r--r--src/Specific/solinas64_2e384m317/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m317/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e384m317/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e384m317/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e384m317/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e384m317/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m317_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m317_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e384m317/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m5x2e368m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m5x2e368m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m5x2e368m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e384m79x2e376m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e384m79x2e376m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e384m79x2e376m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e389m21_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e401m31/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e401m31/feadd.c27
-rw-r--r--src/Specific/solinas64_2e401m31/feadd.v14
-rw-r--r--src/Specific/solinas64_2e401m31/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e401m31/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31/femul.c64
-rw-r--r--src/Specific/solinas64_2e401m31/femul.v14
-rw-r--r--src/Specific/solinas64_2e401m31/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e401m31/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e401m31/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e401m31/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e401m31/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31/fesub.c27
-rw-r--r--src/Specific/solinas64_2e401m31/fesub.v14
-rw-r--r--src/Specific/solinas64_2e401m31/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e401m31/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31/freeze.c44
-rw-r--r--src/Specific/solinas64_2e401m31/freeze.v14
-rw-r--r--src/Specific/solinas64_2e401m31/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e401m31/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_7limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_7limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_7limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e401m31/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e401m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e401m31/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e401m31_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e401m31_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e401m31/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e413m21/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e413m21/feadd.c24
-rw-r--r--src/Specific/solinas64_2e413m21/feadd.v14
-rw-r--r--src/Specific/solinas64_2e413m21/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e413m21/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21/femul.c57
-rw-r--r--src/Specific/solinas64_2e413m21/femul.v14
-rw-r--r--src/Specific/solinas64_2e413m21/femulDisplay.log40
-rw-r--r--src/Specific/solinas64_2e413m21/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21/fesquare.c50
-rw-r--r--src/Specific/solinas64_2e413m21/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e413m21/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas64_2e413m21/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21/fesub.c24
-rw-r--r--src/Specific/solinas64_2e413m21/fesub.v14
-rw-r--r--src/Specific/solinas64_2e413m21/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e413m21/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21/freeze.c39
-rw-r--r--src/Specific/solinas64_2e413m21/freeze.v14
-rw-r--r--src/Specific/solinas64_2e413m21/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e413m21/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e413m21/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_7limbs/compiler.sh (renamed from src/Specific/solinas64_2e413m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_7limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e413m21/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_7limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e413m21/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e413m21_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e414m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e414m17/feadd.c30
-rw-r--r--src/Specific/solinas64_2e414m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e414m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e414m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17/femul.c71
-rw-r--r--src/Specific/solinas64_2e414m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e414m17/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e414m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e414m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e414m17/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e414m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17/fesub.c30
-rw-r--r--src/Specific/solinas64_2e414m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e414m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e414m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17/freeze.c49
-rw-r--r--src/Specific/solinas64_2e414m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e414m17/freezeDisplay.log35
-rw-r--r--src/Specific/solinas64_2e414m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_8limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_8limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e414m17_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_8limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e414m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_9limbs/compiler.sh (renamed from src/Specific/solinas64_2e414m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_9limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e414m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e414m17_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e414m17_9limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e414m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/femul.c81
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesquare.c73
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e416m2e208m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e416m2e208m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e416m2e208m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e416m2e208m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e416m2e208m1_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e444m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e444m17/feadd.c27
-rw-r--r--src/Specific/solinas64_2e444m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e444m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e444m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17/femul.c64
-rw-r--r--src/Specific/solinas64_2e444m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e444m17/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e444m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e444m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e444m17/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e444m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17/fesub.c27
-rw-r--r--src/Specific/solinas64_2e444m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e444m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e444m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17/freeze.c44
-rw-r--r--src/Specific/solinas64_2e444m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e444m17/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e444m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e444m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e444m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e444m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e444m17_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e444m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e444m17_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e444m17_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/femul.c81
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesquare.c73
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e448m2e224m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e448m2e224m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e448m2e224m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e448m2e224m1_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e448m2e224m1_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e448m2e224m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/femul.c81
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesquare.c73
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e450m2e225m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e450m2e225m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e450m2e225m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e450m2e225m1_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e450m2e225m1_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e450m2e225m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e452m3/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e452m3/feadd.c27
-rw-r--r--src/Specific/solinas64_2e452m3/feadd.v14
-rw-r--r--src/Specific/solinas64_2e452m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e452m3/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3/femul.c64
-rw-r--r--src/Specific/solinas64_2e452m3/femul.v14
-rw-r--r--src/Specific/solinas64_2e452m3/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e452m3/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e452m3/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e452m3/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e452m3/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3/fesub.c27
-rw-r--r--src/Specific/solinas64_2e452m3/fesub.v14
-rw-r--r--src/Specific/solinas64_2e452m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e452m3/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3/freeze.c44
-rw-r--r--src/Specific/solinas64_2e452m3/freeze.v14
-rw-r--r--src/Specific/solinas64_2e452m3/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e452m3/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e452m3/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e452m3/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e452m3/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e452m3_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e452m3/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e452m3_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e468m17/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e468m17/feadd.c27
-rw-r--r--src/Specific/solinas64_2e468m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e468m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e468m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17/femul.c64
-rw-r--r--src/Specific/solinas64_2e468m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e468m17/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e468m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17/fesquare.c56
-rw-r--r--src/Specific/solinas64_2e468m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e468m17/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e468m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17/fesub.c27
-rw-r--r--src/Specific/solinas64_2e468m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e468m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e468m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17/freeze.c44
-rw-r--r--src/Specific/solinas64_2e468m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e468m17/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e468m17/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e468m17/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e468m17/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e468m17/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e468m17_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e468m17/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e468m17_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/feadd.c27
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/femul.c81
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/femulDisplay.log61
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesquare.c73
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.log61
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesub.c27
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/freeze.c44
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/freezeDisplay.log32
-rw-r--r--src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e480m2e240m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_8limbs/compiler.sh (renamed from src/Specific/solinas64_2e480m2e240m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_8limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e480m2e240m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e480m2e240m1_8limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e480m2e240m1_8limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e480m2e240m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e488m17/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e488m17/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e488m17/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e488m17/feadd.c51
-rw-r--r--src/Specific/solinas64_2e488m17/feadd.v14
-rw-r--r--src/Specific/solinas64_2e488m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17/femul.c120
-rw-r--r--src/Specific/solinas64_2e488m17/femul.v14
-rw-r--r--src/Specific/solinas64_2e488m17/femulDisplay.log76
-rw-r--r--src/Specific/solinas64_2e488m17/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17/fesquare.c104
-rw-r--r--src/Specific/solinas64_2e488m17/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e488m17/fesquareDisplay.log76
-rw-r--r--src/Specific/solinas64_2e488m17/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17/fesub.c51
-rw-r--r--src/Specific/solinas64_2e488m17/fesub.v14
-rw-r--r--src/Specific/solinas64_2e488m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e488m17/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17/freeze.c84
-rw-r--r--src/Specific/solinas64_2e488m17/freeze.v14
-rw-r--r--src/Specific/solinas64_2e488m17/freezeDisplay.log56
-rw-r--r--src/Specific/solinas64_2e488m17/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e488m17_9limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e489m21/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e489m21/feadd.c30
-rw-r--r--src/Specific/solinas64_2e489m21/feadd.v14
-rw-r--r--src/Specific/solinas64_2e489m21/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e489m21/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21/femul.c71
-rw-r--r--src/Specific/solinas64_2e489m21/femul.v14
-rw-r--r--src/Specific/solinas64_2e489m21/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e489m21/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e489m21/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e489m21/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e489m21/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21/fesub.c30
-rw-r--r--src/Specific/solinas64_2e489m21/fesub.v14
-rw-r--r--src/Specific/solinas64_2e489m21/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e489m21/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21/freeze.c49
-rw-r--r--src/Specific/solinas64_2e489m21/freeze.v14
-rw-r--r--src/Specific/solinas64_2e489m21/freezeDisplay.log35
-rw-r--r--src/Specific/solinas64_2e489m21/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e489m21/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_9limbs/compiler.sh (renamed from src/Specific/solinas64_2e489m21/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_9limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e489m21/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e489m21_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e489m21_9limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e489m21/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e495m31/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e495m31/feadd.c30
-rw-r--r--src/Specific/solinas64_2e495m31/feadd.v14
-rw-r--r--src/Specific/solinas64_2e495m31/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e495m31/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31/femul.c71
-rw-r--r--src/Specific/solinas64_2e495m31/femul.v14
-rw-r--r--src/Specific/solinas64_2e495m31/femulDisplay.log48
-rw-r--r--src/Specific/solinas64_2e495m31/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31/fesquare.c62
-rw-r--r--src/Specific/solinas64_2e495m31/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e495m31/fesquareDisplay.log48
-rw-r--r--src/Specific/solinas64_2e495m31/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31/fesub.c30
-rw-r--r--src/Specific/solinas64_2e495m31/fesub.v14
-rw-r--r--src/Specific/solinas64_2e495m31/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e495m31/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31/freeze.c49
-rw-r--r--src/Specific/solinas64_2e495m31/freeze.v14
-rw-r--r--src/Specific/solinas64_2e495m31/freezeDisplay.log35
-rw-r--r--src/Specific/solinas64_2e495m31/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_10limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_10limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_10limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e495m31/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_9limbs/compiler.sh (renamed from src/Specific/solinas64_2e495m31/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_9limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e495m31/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e495m31_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e495m31_9limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e495m31/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e510m290x2e496m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e510m290x2e496m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/feadd.c33
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesub.c33
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/freeze.c54
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e510m290x2e496m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e511m187/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e511m187/feadd.c33
-rw-r--r--src/Specific/solinas64_2e511m187/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m187/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m187/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187/femul.c78
-rw-r--r--src/Specific/solinas64_2e511m187/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m187/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e511m187/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e511m187/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m187/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e511m187/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187/fesub.c33
-rw-r--r--src/Specific/solinas64_2e511m187/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m187/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m187/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187/freeze.c54
-rw-r--r--src/Specific/solinas64_2e511m187/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m187/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e511m187/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e511m187/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_10limbs/compiler.sh (renamed from src/Specific/solinas64_2e511m187/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_10limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e511m187/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m187_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_10limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e511m187/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e511m187_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e511m481/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e511m481/feadd.c33
-rw-r--r--src/Specific/solinas64_2e511m481/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m481/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m481/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481/femul.c78
-rw-r--r--src/Specific/solinas64_2e511m481/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m481/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e511m481/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e511m481/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m481/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e511m481/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481/fesub.c33
-rw-r--r--src/Specific/solinas64_2e511m481/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m481/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e511m481/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481/freeze.c54
-rw-r--r--src/Specific/solinas64_2e511m481/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m481/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e511m481/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e511m481/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_10limbs/compiler.sh (renamed from src/Specific/solinas64_2e511m481/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_10limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e511m481/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m481_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_10limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e511m481/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e511m481_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e512m491x2e496m1/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e512m491x2e496m1/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/feadd.c33
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesub.c33
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/freeze.c54
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e512m491x2e496m1/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e512m569/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e512m569/feadd.c33
-rw-r--r--src/Specific/solinas64_2e512m569/feadd.v14
-rw-r--r--src/Specific/solinas64_2e512m569/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m569/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569/femul.c78
-rw-r--r--src/Specific/solinas64_2e512m569/femul.v14
-rw-r--r--src/Specific/solinas64_2e512m569/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e512m569/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e512m569/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e512m569/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e512m569/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569/fesub.c33
-rw-r--r--src/Specific/solinas64_2e512m569/fesub.v14
-rw-r--r--src/Specific/solinas64_2e512m569/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e512m569/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569/freeze.c54
-rw-r--r--src/Specific/solinas64_2e512m569/freeze.v14
-rw-r--r--src/Specific/solinas64_2e512m569/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e512m569/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e512m569/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_10limbs/compiler.sh (renamed from src/Specific/solinas64_2e512m569/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_10limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e512m569/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e512m569_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_10limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e512m569/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_11limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_11limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e512m569_11limbs/py_interpreter.sh4
-rw-r--r--src/Specific/solinas64_2e521m1/Synthesis.v9
-rw-r--r--src/Specific/solinas64_2e521m1/feadd.c33
-rw-r--r--src/Specific/solinas64_2e521m1/feadd.v14
-rw-r--r--src/Specific/solinas64_2e521m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e521m1/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1/femul.c78
-rw-r--r--src/Specific/solinas64_2e521m1/femul.v14
-rw-r--r--src/Specific/solinas64_2e521m1/femulDisplay.log52
-rw-r--r--src/Specific/solinas64_2e521m1/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1/fesquare.c68
-rw-r--r--src/Specific/solinas64_2e521m1/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e521m1/fesquareDisplay.log52
-rw-r--r--src/Specific/solinas64_2e521m1/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1/fesub.c33
-rw-r--r--src/Specific/solinas64_2e521m1/fesub.v14
-rw-r--r--src/Specific/solinas64_2e521m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e521m1/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1/freeze.c54
-rw-r--r--src/Specific/solinas64_2e521m1/freeze.v14
-rw-r--r--src/Specific/solinas64_2e521m1/freezeDisplay.log38
-rw-r--r--src/Specific/solinas64_2e521m1/freezeDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/CurveParameters.v (renamed from src/Specific/solinas64_2e521m1/CurveParameters.v)0
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_10limbs/compiler.sh (renamed from src/Specific/solinas64_2e521m1/compiler.sh)0
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_10limbs/compilerxx.sh (renamed from src/Specific/solinas64_2e521m1/compilerxx.sh)0
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e521m1_10limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_10limbs/py_interpreter.sh (renamed from src/Specific/solinas64_2e521m1/py_interpreter.sh)0
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/CurveParameters.v39
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/Synthesis.v9
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_9limbs/compiler.sh4
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_9limbs/compilerxx.sh4
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/feadd.v14
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/femul.v14
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/femulDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesquare.v14
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesub.v14
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.v4
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/freeze.v14
-rw-r--r--src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.v4
-rwxr-xr-xsrc/Specific/solinas64_2e521m1_9limbs/py_interpreter.sh4
13745 files changed, 64167 insertions, 147600 deletions
diff --git a/src/Specific/CurveParameters/montgomery32_2e127m1_4limbs.json b/src/Specific/CurveParameters/montgomery32_2e127m1_4limbs.json
new file mode 100644
index 000000000..715e0bc39
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e127m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<127) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<127) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^127 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e129m25_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e129m25_5limbs.json
new file mode 100644
index 000000000..f8ae5eb06
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e129m25_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^129 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e130m5_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e130m5_5limbs.json
new file mode 100644
index 000000000..6e0f47327
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e130m5_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<130) - 5'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^130 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e137m13_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e137m13_5limbs.json
new file mode 100644
index 000000000..4d312b8fa
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e137m13_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^137 - 13",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e140m27_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e140m27_5limbs.json
new file mode 100644
index 000000000..150fa013f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e140m27_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<140) - 27'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^140 - 27",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e141m9_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e141m9_5limbs.json
new file mode 100644
index 000000000..a4ae14575
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e141m9_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<141) - 9'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^141 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e150m3_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e150m3_5limbs.json
new file mode 100644
index 000000000..622102aaf
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e150m3_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^150 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e150m5_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e150m5_5limbs.json
new file mode 100644
index 000000000..e30fac367
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e150m5_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 5'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^150 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e152m17_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e152m17_5limbs.json
new file mode 100644
index 000000000..df812a98c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e152m17_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<152) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^152 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e158m15_5limbs.json b/src/Specific/CurveParameters/montgomery32_2e158m15_5limbs.json
new file mode 100644
index 000000000..3589a75f1
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e158m15_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<158) - 15'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^158 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e165m25_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e165m25_6limbs.json
new file mode 100644
index 000000000..062897823
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e165m25_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<165) - 25'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^165 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e166m5_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e166m5_6limbs.json
new file mode 100644
index 000000000..cf122fa0b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e166m5_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^166 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e171m19_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e171m19_6limbs.json
new file mode 100644
index 000000000..4e692dddd
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e171m19_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<171) - 19'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^171 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e174m17_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e174m17_6limbs.json
new file mode 100644
index 000000000..5a727b10b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e174m17_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^174 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e174m3_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e174m3_6limbs.json
new file mode 100644
index 000000000..4854948c3
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e174m3_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^174 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e189m25_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e189m25_6limbs.json
new file mode 100644
index 000000000..776486213
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e189m25_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<189) - 25'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^189 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e190m11_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e190m11_6limbs.json
new file mode 100644
index 000000000..df9f8b4be
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e190m11_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<190) - 11'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^190 - 11",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e191m19_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e191m19_6limbs.json
new file mode 100644
index 000000000..9931cab8e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e191m19_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<191) - 19'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^191 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e192m2e64m1_6limbs.json b/src/Specific/CurveParameters/montgomery32_2e192m2e64m1_6limbs.json
new file mode 100644
index 000000000..41841c274
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e192m2e64m1_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^192 - 2^64 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e194m33_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e194m33_7limbs.json
new file mode 100644
index 000000000..dd12b8dcc
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e194m33_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<194) - 33'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^194 - 33",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e196m15_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e196m15_7limbs.json
new file mode 100644
index 000000000..99d685852
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e196m15_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<196) - 15'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^196 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e198m17_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e198m17_7limbs.json
new file mode 100644
index 000000000..5e79ade92
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e198m17_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<198) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^198 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e205m45x2e198m1_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e205m45x2e198m1_7limbs.json
new file mode 100644
index 000000000..3741f2005
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e205m45x2e198m1_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^205 - 45*2^198 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e206m5_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e206m5_7limbs.json
new file mode 100644
index 000000000..024d82a8e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e206m5_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<206) - 5'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^206 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e212m29_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e212m29_7limbs.json
new file mode 100644
index 000000000..2a8d9e871
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e212m29_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<212) - 29'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^212 - 29",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e213m3_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e213m3_7limbs.json
new file mode 100644
index 000000000..fff94df3c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e213m3_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<213) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^213 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e216m2e108m1_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e216m2e108m1_7limbs.json
new file mode 100644
index 000000000..a15dfcce5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e216m2e108m1_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^216 - 2^108 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e221m3_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e221m3_7limbs.json
new file mode 100644
index 000000000..90a6b268d
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e221m3_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<221) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^221 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e222m117_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e222m117_7limbs.json
new file mode 100644
index 000000000..d0bc78f18
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e222m117_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<222) - 117'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^222 - 117",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e224m2e96p1_7limbs.json b/src/Specific/CurveParameters/montgomery32_2e224m2e96p1_7limbs.json
new file mode 100644
index 000000000..0565a6206
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e224m2e96p1_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^224 - 2^96 + 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e226m5_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e226m5_8limbs.json
new file mode 100644
index 000000000..5c22c90d5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e226m5_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<226) - 5'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^226 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e230m27_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e230m27_8limbs.json
new file mode 100644
index 000000000..f9935cf75
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e230m27_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<230) - 27'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^230 - 27",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e235m15_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e235m15_8limbs.json
new file mode 100644
index 000000000..2ec32a813
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e235m15_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<235) - 15'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^235 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e243m9_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e243m9_8limbs.json
new file mode 100644
index 000000000..cc310f894
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e243m9_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<243) - 9'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^243 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e251m9_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e251m9_8limbs.json
new file mode 100644
index 000000000..9c0b5fe49
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e251m9_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<251) - 9'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^251 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1_8limbs.json
new file mode 100644
index 000000000..c73c5500a
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e254m127x2e240m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^254 - 127*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e255m19_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e255m19_8limbs.json
new file mode 100644
index 000000000..8fed08c6f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e255m19_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - 19'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^255 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e255m765_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e255m765_8limbs.json
new file mode 100644
index 000000000..bcfc35fac
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e255m765_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - 765'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^255 - 765",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m189_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e256m189_8limbs.json
new file mode 100644
index 000000000..b3cb44f7c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m189_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 189'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^256 - 189",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m2e224p2e192p2e96m1_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e256m2e224p2e192p2e96m1_8limbs.json
new file mode 100644
index 000000000..bea3c7199
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m2e224p2e192p2e96m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m2e32m977_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e256m2e32m977_8limbs.json
new file mode 100644
index 000000000..882492992
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m2e32m977_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^256 - 2^32 - 977",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m4294968273_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e256m4294968273_8limbs.json
new file mode 100644
index 000000000..74b8b05ec
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m4294968273_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^256 - 4294968273",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1_8limbs.json b/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1_8limbs.json
new file mode 100644
index 000000000..6789691fb
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e256m88x2e240m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^256 - 88*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e266m3_9limbs.json b/src/Specific/CurveParameters/montgomery32_2e266m3_9limbs.json
new file mode 100644
index 000000000..cf5436706
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e266m3_9limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<266) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^266 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e285m9_9limbs.json b/src/Specific/CurveParameters/montgomery32_2e285m9_9limbs.json
new file mode 100644
index 000000000..47b9e6bc0
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e285m9_9limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<285) - 9'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^285 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e291m19_10limbs.json b/src/Specific/CurveParameters/montgomery32_2e291m19_10limbs.json
new file mode 100644
index 000000000..767e0adc4
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e291m19_10limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<291) - 19'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^291 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e321m9_11limbs.json b/src/Specific/CurveParameters/montgomery32_2e321m9_11limbs.json
new file mode 100644
index 000000000..5e6eb8a37
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e321m9_11limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<321) - 9'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^321 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e322m2e161m1_11limbs.json b/src/Specific/CurveParameters/montgomery32_2e322m2e161m1_11limbs.json
new file mode 100644
index 000000000..a94238880
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e322m2e161m1_11limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^322 - 2^161 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e336m17_11limbs.json b/src/Specific/CurveParameters/montgomery32_2e336m17_11limbs.json
new file mode 100644
index 000000000..88cfa4f2b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e336m17_11limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<336) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^336 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e336m3_11limbs.json b/src/Specific/CurveParameters/montgomery32_2e336m3_11limbs.json
new file mode 100644
index 000000000..56b37964f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e336m3_11limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<336) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^336 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e338m15_11limbs.json b/src/Specific/CurveParameters/montgomery32_2e338m15_11limbs.json
new file mode 100644
index 000000000..43374b885
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e338m15_11limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<338) - 15'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^338 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e369m25_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e369m25_12limbs.json
new file mode 100644
index 000000000..63c02bba5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e369m25_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<369) - 25'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^369 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e379m19_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e379m19_12limbs.json
new file mode 100644
index 000000000..6f01e104e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e379m19_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<379) - 19'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^379 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e382m105_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e382m105_12limbs.json
new file mode 100644
index 000000000..8fe75592b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e382m105_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<382) - 105'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^382 - 105",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e383m187_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e383m187_12limbs.json
new file mode 100644
index 000000000..72815f974
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e383m187_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 187'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^383 - 187",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e383m31_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e383m31_12limbs.json
new file mode 100644
index 000000000..a7d30ba56
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e383m31_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 31'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^383 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e383m421_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e383m421_12limbs.json
new file mode 100644
index 000000000..774f60f83
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e383m421_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<383) - 421'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^383 - 421",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m2e128m2e96p2e32m1_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e384m2e128m2e96p2e32m1_12limbs.json
new file mode 100644
index 000000000..fb1576805
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m2e128m2e96p2e32m1_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m317_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e384m317_12limbs.json
new file mode 100644
index 000000000..a3c43fb58
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m317_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 317'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^384 - 317",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1_12limbs.json
new file mode 100644
index 000000000..593857bc4
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m5x2e368m1_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^384 - 5*2^368 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1_12limbs.json b/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1_12limbs.json
new file mode 100644
index 000000000..b8c34a292
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e384m79x2e376m1_12limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^384 - 79*2^376 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e389m21_13limbs.json b/src/Specific/CurveParameters/montgomery32_2e389m21_13limbs.json
new file mode 100644
index 000000000..12ee46c6b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e389m21_13limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<389) - 21'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^389 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e401m31_13limbs.json b/src/Specific/CurveParameters/montgomery32_2e401m31_13limbs.json
new file mode 100644
index 000000000..1552b5164
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e401m31_13limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<401) - 31'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^401 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e413m21_13limbs.json b/src/Specific/CurveParameters/montgomery32_2e413m21_13limbs.json
new file mode 100644
index 000000000..c144177e2
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e413m21_13limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<413) - 21'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^413 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e414m17_13limbs.json b/src/Specific/CurveParameters/montgomery32_2e414m17_13limbs.json
new file mode 100644
index 000000000..2f1a18da8
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e414m17_13limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<414) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^414 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e416m2e208m1_13limbs.json b/src/Specific/CurveParameters/montgomery32_2e416m2e208m1_13limbs.json
new file mode 100644
index 000000000..801a3e2ff
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e416m2e208m1_13limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^416 - 2^208 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e444m17_14limbs.json b/src/Specific/CurveParameters/montgomery32_2e444m17_14limbs.json
new file mode 100644
index 000000000..015d0a2cf
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e444m17_14limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<444) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^444 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "14"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e448m2e224m1_14limbs.json b/src/Specific/CurveParameters/montgomery32_2e448m2e224m1_14limbs.json
new file mode 100644
index 000000000..3fee52180
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e448m2e224m1_14limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^448 - 2^224 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "14"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e450m2e225m1_15limbs.json b/src/Specific/CurveParameters/montgomery32_2e450m2e225m1_15limbs.json
new file mode 100644
index 000000000..a0b4960cf
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e450m2e225m1_15limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^450 - 2^225 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e452m3_15limbs.json b/src/Specific/CurveParameters/montgomery32_2e452m3_15limbs.json
new file mode 100644
index 000000000..1b4614542
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e452m3_15limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<452) - 3'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^452 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e468m17_15limbs.json b/src/Specific/CurveParameters/montgomery32_2e468m17_15limbs.json
new file mode 100644
index 000000000..20de05319
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e468m17_15limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<468) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^468 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e480m2e240m1_15limbs.json b/src/Specific/CurveParameters/montgomery32_2e480m2e240m1_15limbs.json
new file mode 100644
index 000000000..d0a19077d
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e480m2e240m1_15limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^480 - 2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e488m17_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e488m17_16limbs.json
new file mode 100644
index 000000000..c5ce86391
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e488m17_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<488) - 17'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^488 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e489m21_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e489m21_16limbs.json
new file mode 100644
index 000000000..686c6eeff
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e489m21_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<489) - 21'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^489 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e495m31_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e495m31_16limbs.json
new file mode 100644
index 000000000..675d0a99c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e495m31_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<495) - 31'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^495 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1_16limbs.json
new file mode 100644
index 000000000..2b0f36835
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e510m290x2e496m1_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^510 - 290*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e511m187_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e511m187_16limbs.json
new file mode 100644
index 000000000..bc7a6e360
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e511m187_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<511) - 187'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^511 - 187",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e511m481_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e511m481_16limbs.json
new file mode 100644
index 000000000..0fd27b5cd
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e511m481_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<511) - 481'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^511 - 481",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1_16limbs.json
new file mode 100644
index 000000000..c0841b538
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e512m491x2e496m1_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^512 - 491*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e512m569_16limbs.json b/src/Specific/CurveParameters/montgomery32_2e512m569_16limbs.json
new file mode 100644
index 000000000..5d1a4c178
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e512m569_16limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<512) - 569'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^512 - 569",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/montgomery32_2e521m1_17limbs.json b/src/Specific/CurveParameters/montgomery32_2e521m1_17limbs.json
new file mode 100644
index 000000000..afe519841
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery32_2e521m1_17limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "32",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<521) - 1'",
+ "extra_files": [
+ "montgomery32/fesquare.c"
+ ],
+ "modulus": "2^521 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e127m1_2limbs.json b/src/Specific/CurveParameters/montgomery64_2e127m1_2limbs.json
new file mode 100644
index 000000000..3577a4216
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e127m1_2limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='2' -Dq_mpz='(1_mpz<<127) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='2' -Dq_mpz='(1_mpz<<127) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^127 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "2"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e129m25_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e129m25_3limbs.json
new file mode 100644
index 000000000..881e84c55
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e129m25_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<129) - 25'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^129 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e130m5_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e130m5_3limbs.json
new file mode 100644
index 000000000..7b05780c8
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e130m5_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<130) - 5'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^130 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e137m13_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e137m13_3limbs.json
new file mode 100644
index 000000000..0f8af0f70
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e137m13_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^137 - 13",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e140m27_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e140m27_3limbs.json
new file mode 100644
index 000000000..dc26fe4d5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e140m27_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^140 - 27",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e141m9_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e141m9_3limbs.json
new file mode 100644
index 000000000..72556558a
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e141m9_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<141) - 9'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^141 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e150m3_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e150m3_3limbs.json
new file mode 100644
index 000000000..f14bf963c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e150m3_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^150 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e150m5_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e150m5_3limbs.json
new file mode 100644
index 000000000..85ee3258a
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e150m5_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 5'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^150 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e152m17_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e152m17_3limbs.json
new file mode 100644
index 000000000..0426c2e66
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e152m17_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^152 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e158m15_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e158m15_3limbs.json
new file mode 100644
index 000000000..d1a0e4c74
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e158m15_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^158 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e165m25_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e165m25_3limbs.json
new file mode 100644
index 000000000..55091960e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e165m25_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<165) - 25'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^165 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e166m5_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e166m5_3limbs.json
new file mode 100644
index 000000000..7d0afcf9c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e166m5_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<166) - 5'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^166 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e171m19_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e171m19_3limbs.json
new file mode 100644
index 000000000..69142990b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e171m19_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<171) - 19'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^171 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e174m17_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e174m17_3limbs.json
new file mode 100644
index 000000000..b2f6e7dfd
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e174m17_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^174 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e174m3_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e174m3_3limbs.json
new file mode 100644
index 000000000..079868e6d
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e174m3_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^174 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e189m25_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e189m25_3limbs.json
new file mode 100644
index 000000000..762157c84
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e189m25_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<189) - 25'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^189 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e190m11_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e190m11_3limbs.json
new file mode 100644
index 000000000..e2883db59
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e190m11_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<190) - 11'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^190 - 11",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e191m19_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e191m19_3limbs.json
new file mode 100644
index 000000000..8d84ebdd4
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e191m19_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<191) - 19'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^191 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e192m2e64m1_3limbs.json b/src/Specific/CurveParameters/montgomery64_2e192m2e64m1_3limbs.json
new file mode 100644
index 000000000..cb979dd5c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e192m2e64m1_3limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^192 - 2^64 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e194m33_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e194m33_4limbs.json
new file mode 100644
index 000000000..8b35535e4
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e194m33_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<194) - 33'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^194 - 33",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e196m15_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e196m15_4limbs.json
new file mode 100644
index 000000000..eb3cecba9
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e196m15_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<196) - 15'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^196 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e198m17_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e198m17_4limbs.json
new file mode 100644
index 000000000..92f5bdd0b
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e198m17_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<198) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^198 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e205m45x2e198m1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e205m45x2e198m1_4limbs.json
new file mode 100644
index 000000000..14108693f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e205m45x2e198m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^205 - 45*2^198 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e206m5_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e206m5_4limbs.json
new file mode 100644
index 000000000..135cd95b2
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e206m5_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<206) - 5'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^206 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e212m29_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e212m29_4limbs.json
new file mode 100644
index 000000000..99afe3770
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e212m29_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<212) - 29'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^212 - 29",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e213m3_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e213m3_4limbs.json
new file mode 100644
index 000000000..5eb965483
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e213m3_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<213) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^213 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e216m2e108m1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e216m2e108m1_4limbs.json
new file mode 100644
index 000000000..0748a5f84
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e216m2e108m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^216 - 2^108 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e221m3_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e221m3_4limbs.json
new file mode 100644
index 000000000..c7ece4d53
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e221m3_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<221) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^221 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e222m117_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e222m117_4limbs.json
new file mode 100644
index 000000000..ab302d0c0
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e222m117_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<222) - 117'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^222 - 117",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e224m2e96p1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e224m2e96p1_4limbs.json
new file mode 100644
index 000000000..e14e9b3e1
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e224m2e96p1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^224 - 2^96 + 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e226m5_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e226m5_4limbs.json
new file mode 100644
index 000000000..cd8d344fd
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e226m5_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<226) - 5'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^226 - 5",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e230m27_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e230m27_4limbs.json
new file mode 100644
index 000000000..1b1323b1e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e230m27_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<230) - 27'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^230 - 27",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e235m15_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e235m15_4limbs.json
new file mode 100644
index 000000000..3b6445f96
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e235m15_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^235 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e243m9_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e243m9_4limbs.json
new file mode 100644
index 000000000..a2fdbc967
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e243m9_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<243) - 9'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^243 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e251m9_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e251m9_4limbs.json
new file mode 100644
index 000000000..50a8d3129
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e251m9_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<251) - 9'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^251 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1_4limbs.json
new file mode 100644
index 000000000..0d454decd
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e254m127x2e240m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^254 - 127*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e255m19_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e255m19_4limbs.json
new file mode 100644
index 000000000..499367e95
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e255m19_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - 19'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^255 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e255m765_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e255m765_4limbs.json
new file mode 100644
index 000000000..5c3930407
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e255m765_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - 765'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^255 - 765",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m189_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e256m189_4limbs.json
new file mode 100644
index 000000000..f38640d64
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m189_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 189'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^256 - 189",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m2e224p2e192p2e96m1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e256m2e224p2e192p2e96m1_4limbs.json
new file mode 100644
index 000000000..844c898fa
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m2e224p2e192p2e96m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m2e32m977_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e256m2e32m977_4limbs.json
new file mode 100644
index 000000000..fba20abdb
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m2e32m977_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^256 - 2^32 - 977",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m4294968273_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e256m4294968273_4limbs.json
new file mode 100644
index 000000000..67dd72b7c
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m4294968273_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^256 - 4294968273",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1_4limbs.json b/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1_4limbs.json
new file mode 100644
index 000000000..d375c8362
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e256m88x2e240m1_4limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^256 - 88*2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e266m3_5limbs.json b/src/Specific/CurveParameters/montgomery64_2e266m3_5limbs.json
new file mode 100644
index 000000000..4fe494f90
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e266m3_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<266) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^266 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e285m9_5limbs.json b/src/Specific/CurveParameters/montgomery64_2e285m9_5limbs.json
new file mode 100644
index 000000000..78ae31131
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e285m9_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<285) - 9'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^285 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e291m19_5limbs.json b/src/Specific/CurveParameters/montgomery64_2e291m19_5limbs.json
new file mode 100644
index 000000000..eaec85246
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e291m19_5limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<291) - 19'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^291 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e321m9_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e321m9_6limbs.json
new file mode 100644
index 000000000..80975bbd5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e321m9_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<321) - 9'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^321 - 9",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e322m2e161m1_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e322m2e161m1_6limbs.json
new file mode 100644
index 000000000..0e241e3f7
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e322m2e161m1_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^322 - 2^161 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e336m17_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e336m17_6limbs.json
new file mode 100644
index 000000000..ffb49083a
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e336m17_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^336 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e336m3_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e336m3_6limbs.json
new file mode 100644
index 000000000..019d375c6
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e336m3_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^336 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e338m15_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e338m15_6limbs.json
new file mode 100644
index 000000000..d66020497
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e338m15_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<338) - 15'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^338 - 15",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e369m25_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e369m25_6limbs.json
new file mode 100644
index 000000000..4c9878c93
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e369m25_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<369) - 25'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^369 - 25",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e379m19_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e379m19_6limbs.json
new file mode 100644
index 000000000..64a7a4339
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e379m19_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<379) - 19'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^379 - 19",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e382m105_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e382m105_6limbs.json
new file mode 100644
index 000000000..e1cefbf4e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e382m105_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<382) - 105'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^382 - 105",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e383m187_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e383m187_6limbs.json
new file mode 100644
index 000000000..6bd6f23f9
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e383m187_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 187'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^383 - 187",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e383m31_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e383m31_6limbs.json
new file mode 100644
index 000000000..d384d6ae5
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e383m31_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 31'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^383 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e383m421_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e383m421_6limbs.json
new file mode 100644
index 000000000..7493a8a2f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e383m421_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<383) - 421'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^383 - 421",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m2e128m2e96p2e32m1_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e384m2e128m2e96p2e32m1_6limbs.json
new file mode 100644
index 000000000..d79fcf2f7
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m2e128m2e96p2e32m1_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m317_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e384m317_6limbs.json
new file mode 100644
index 000000000..366a69f3f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m317_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 317'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^384 - 317",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1_6limbs.json
new file mode 100644
index 000000000..271c1854f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m5x2e368m1_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^384 - 5*2^368 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1_6limbs.json b/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1_6limbs.json
new file mode 100644
index 000000000..ea1faea78
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e384m79x2e376m1_6limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^384 - 79*2^376 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e389m21_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e389m21_7limbs.json
new file mode 100644
index 000000000..18dda32d8
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e389m21_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^389 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e401m31_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e401m31_7limbs.json
new file mode 100644
index 000000000..0ce32ed79
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e401m31_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^401 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e413m21_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e413m21_7limbs.json
new file mode 100644
index 000000000..09be0c105
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e413m21_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<413) - 21'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^413 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e414m17_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e414m17_7limbs.json
new file mode 100644
index 000000000..734277078
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e414m17_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<414) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^414 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e416m2e208m1_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e416m2e208m1_7limbs.json
new file mode 100644
index 000000000..e31c2098f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e416m2e208m1_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^416 - 2^208 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e444m17_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e444m17_7limbs.json
new file mode 100644
index 000000000..b51e7aa81
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e444m17_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<444) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^444 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e448m2e224m1_7limbs.json b/src/Specific/CurveParameters/montgomery64_2e448m2e224m1_7limbs.json
new file mode 100644
index 000000000..475d77f40
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e448m2e224m1_7limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^448 - 2^224 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e450m2e225m1_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e450m2e225m1_8limbs.json
new file mode 100644
index 000000000..a1b931fe6
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e450m2e225m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^450 - 2^225 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e452m3_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e452m3_8limbs.json
new file mode 100644
index 000000000..f1c65f5d2
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e452m3_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<452) - 3'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^452 - 3",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e468m17_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e468m17_8limbs.json
new file mode 100644
index 000000000..87cfcd1f7
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e468m17_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<468) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^468 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e480m2e240m1_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e480m2e240m1_8limbs.json
new file mode 100644
index 000000000..e96cc2b6f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e480m2e240m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^480 - 2^240 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e488m17_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e488m17_8limbs.json
new file mode 100644
index 000000000..3d1845257
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e488m17_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<488) - 17'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^488 - 17",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e489m21_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e489m21_8limbs.json
new file mode 100644
index 000000000..d4d747837
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e489m21_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<489) - 21'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^489 - 21",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e495m31_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e495m31_8limbs.json
new file mode 100644
index 000000000..0563492ec
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e495m31_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<495) - 31'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^495 - 31",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1_8limbs.json
new file mode 100644
index 000000000..4f76cd99e
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e510m290x2e496m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^510 - 290*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e511m187_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e511m187_8limbs.json
new file mode 100644
index 000000000..87c39de15
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e511m187_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<511) - 187'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^511 - 187",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e511m481_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e511m481_8limbs.json
new file mode 100644
index 000000000..2cb97ccff
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e511m481_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<511) - 481'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^511 - 481",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1_8limbs.json
new file mode 100644
index 000000000..a305e0706
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e512m491x2e496m1_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^512 - 491*2^496 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e512m569_8limbs.json b/src/Specific/CurveParameters/montgomery64_2e512m569_8limbs.json
new file mode 100644
index 000000000..35c9c894f
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e512m569_8limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<512) - 569'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^512 - 569",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/montgomery64_2e521m1_9limbs.json b/src/Specific/CurveParameters/montgomery64_2e521m1_9limbs.json
new file mode 100644
index 000000000..49b5e9ab3
--- /dev/null
+++ b/src/Specific/CurveParameters/montgomery64_2e521m1_9limbs.json
@@ -0,0 +1,18 @@
+{
+ "base": "64",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64,64,64,64,64,64}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1'",
+ "extra_files": [
+ "montgomery64/fesquare.c"
+ ],
+ "modulus": "2^521 - 1",
+ "montgomery": true,
+ "operations": [
+ "fenz",
+ "feadd",
+ "femul",
+ "feopp",
+ "fesub"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e127m1_5limbs.json b/src/Specific/CurveParameters/solinas32_2e127m1_5limbs.json
new file mode 100644
index 000000000..14f29955c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e127m1_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.4",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<127) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<127) - 1'",
+ "modulus": "2^127 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e127m1_6limbs.json b/src/Specific/CurveParameters/solinas32_2e127m1_6limbs.json
new file mode 100644
index 000000000..e13e5988d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e127m1_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 1/6",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<127) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<127) - 1'",
+ "modulus": "2^127 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e129m25_5limbs.json b/src/Specific/CurveParameters/solinas32_2e129m25_5limbs.json
new file mode 100644
index 000000000..1cb1dd069
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e129m25_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.8",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25'",
+ "modulus": "2^129 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e129m25_6limbs.json b/src/Specific/CurveParameters/solinas32_2e129m25_6limbs.json
new file mode 100644
index 000000000..4f817cc39
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e129m25_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<129) - 25'",
+ "modulus": "2^129 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e130m5_5limbs.json b/src/Specific/CurveParameters/solinas32_2e130m5_5limbs.json
new file mode 100644
index 000000000..2b59eadea
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e130m5_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<130) - 5'",
+ "modulus": "2^130 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e130m5_6limbs.json b/src/Specific/CurveParameters/solinas32_2e130m5_6limbs.json
new file mode 100644
index 000000000..fc9f2485e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e130m5_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<130) - 5'",
+ "modulus": "2^130 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e137m13_5limbs.json b/src/Specific/CurveParameters/solinas32_2e137m13_5limbs.json
new file mode 100644
index 000000000..e773216ea
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e137m13_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27.4",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13'",
+ "modulus": "2^137 - 13",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e137m13_6limbs.json b/src/Specific/CurveParameters/solinas32_2e137m13_6limbs.json
new file mode 100644
index 000000000..800be6c7f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e137m13_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 5/6",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<137) - 13'",
+ "modulus": "2^137 - 13",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e140m27_6limbs.json b/src/Specific/CurveParameters/solinas32_2e140m27_6limbs.json
new file mode 100644
index 000000000..e334c5f9e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e140m27_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<140) - 27'",
+ "modulus": "2^140 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e140m27_7limbs.json b/src/Specific/CurveParameters/solinas32_2e140m27_7limbs.json
new file mode 100644
index 000000000..a4fcb9ca2
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e140m27_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "20",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,20,20,20,20}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,20,20,20,20}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<140) - 27'",
+ "modulus": "2^140 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e141m9_6limbs.json b/src/Specific/CurveParameters/solinas32_2e141m9_6limbs.json
new file mode 100644
index 000000000..b6a87c90e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e141m9_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<141) - 9'",
+ "modulus": "2^141 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e141m9_7limbs.json b/src/Specific/CurveParameters/solinas32_2e141m9_7limbs.json
new file mode 100644
index 000000000..e0f80a849
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e141m9_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "20 + 1/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<141) - 9'",
+ "modulus": "2^141 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e150m3_6limbs.json b/src/Specific/CurveParameters/solinas32_2e150m3_6limbs.json
new file mode 100644
index 000000000..49698efb0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e150m3_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 3'",
+ "modulus": "2^150 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e150m3_7limbs.json b/src/Specific/CurveParameters/solinas32_2e150m3_7limbs.json
new file mode 100644
index 000000000..a979e51ed
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e150m3_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 3/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 3'",
+ "modulus": "2^150 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e150m5_6limbs.json b/src/Specific/CurveParameters/solinas32_2e150m5_6limbs.json
new file mode 100644
index 000000000..d7ba35351
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e150m5_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 5'",
+ "modulus": "2^150 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e150m5_7limbs.json b/src/Specific/CurveParameters/solinas32_2e150m5_7limbs.json
new file mode 100644
index 000000000..e5dec6d22
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e150m5_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 3/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 5'",
+ "modulus": "2^150 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e152m17_6limbs.json b/src/Specific/CurveParameters/solinas32_2e152m17_6limbs.json
new file mode 100644
index 000000000..fbb9d0926
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e152m17_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<152) - 17'",
+ "modulus": "2^152 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e152m17_7limbs.json b/src/Specific/CurveParameters/solinas32_2e152m17_7limbs.json
new file mode 100644
index 000000000..a73fe3988
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e152m17_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 5/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<152) - 17'",
+ "modulus": "2^152 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e158m15_6limbs.json b/src/Specific/CurveParameters/solinas32_2e158m15_6limbs.json
new file mode 100644
index 000000000..564d432e5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e158m15_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,27,26,26}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,27,26,26}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<158) - 15'",
+ "modulus": "2^158 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e158m15_7limbs.json b/src/Specific/CurveParameters/solinas32_2e158m15_7limbs.json
new file mode 100644
index 000000000..f560c4161
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e158m15_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 4/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<158) - 15'",
+ "modulus": "2^158 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e165m25_7limbs.json b/src/Specific/CurveParameters/solinas32_2e165m25_7limbs.json
new file mode 100644
index 000000000..e294c8b71
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e165m25_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 4/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<165) - 25'",
+ "modulus": "2^165 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e165m25_8limbs.json b/src/Specific/CurveParameters/solinas32_2e165m25_8limbs.json
new file mode 100644
index 000000000..3f9ef1cbd
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e165m25_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "20.625",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,21,20,21,21,20,21,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,21,20,21,21,20,21,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<165) - 25'",
+ "modulus": "2^165 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e166m5_6limbs.json b/src/Specific/CurveParameters/solinas32_2e166m5_6limbs.json
new file mode 100644
index 000000000..ce84c0343
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e166m5_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5'",
+ "modulus": "2^166 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e166m5_7limbs.json b/src/Specific/CurveParameters/solinas32_2e166m5_7limbs.json
new file mode 100644
index 000000000..20199690c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e166m5_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 5/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<166) - 5'",
+ "modulus": "2^166 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e171m19_7limbs.json b/src/Specific/CurveParameters/solinas32_2e171m19_7limbs.json
new file mode 100644
index 000000000..92eb237dd
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e171m19_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 3/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<171) - 19'",
+ "modulus": "2^171 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e171m19_8limbs.json b/src/Specific/CurveParameters/solinas32_2e171m19_8limbs.json
new file mode 100644
index 000000000..e2f5ef5f3
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e171m19_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21.375",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,21,22,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,21,22,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<171) - 19'",
+ "modulus": "2^171 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e174m17_7limbs.json b/src/Specific/CurveParameters/solinas32_2e174m17_7limbs.json
new file mode 100644
index 000000000..0feae0a7c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e174m17_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 6/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 17'",
+ "modulus": "2^174 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e174m17_8limbs.json b/src/Specific/CurveParameters/solinas32_2e174m17_8limbs.json
new file mode 100644
index 000000000..9cbf3046d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e174m17_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 17'",
+ "modulus": "2^174 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e174m3_7limbs.json b/src/Specific/CurveParameters/solinas32_2e174m3_7limbs.json
new file mode 100644
index 000000000..3dff58058
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e174m3_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 6/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 3'",
+ "modulus": "2^174 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e174m3_8limbs.json b/src/Specific/CurveParameters/solinas32_2e174m3_8limbs.json
new file mode 100644
index 000000000..327a2484e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e174m3_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 3'",
+ "modulus": "2^174 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e189m25_7limbs.json b/src/Specific/CurveParameters/solinas32_2e189m25_7limbs.json
new file mode 100644
index 000000000..582585811
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e189m25_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<189) - 25'",
+ "modulus": "2^189 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e189m25_8limbs.json b/src/Specific/CurveParameters/solinas32_2e189m25_8limbs.json
new file mode 100644
index 000000000..00325f304
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e189m25_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.625",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<189) - 25'",
+ "modulus": "2^189 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e190m11_7limbs.json b/src/Specific/CurveParameters/solinas32_2e190m11_7limbs.json
new file mode 100644
index 000000000..6dea5db23
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e190m11_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27 + 1/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,27,27,27,27,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,27,27,27,27,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<190) - 11'",
+ "modulus": "2^190 - 11",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e190m11_8limbs.json b/src/Specific/CurveParameters/solinas32_2e190m11_8limbs.json
new file mode 100644
index 000000000..045d85add
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e190m11_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<190) - 11'",
+ "modulus": "2^190 - 11",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e191m19_8limbs.json b/src/Specific/CurveParameters/solinas32_2e191m19_8limbs.json
new file mode 100644
index 000000000..6e5c1af9c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e191m19_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.875",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<191) - 19'",
+ "modulus": "2^191 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e191m19_9limbs.json b/src/Specific/CurveParameters/solinas32_2e191m19_9limbs.json
new file mode 100644
index 000000000..995166faf
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e191m19_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 2/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<191) - 19'",
+ "modulus": "2^191 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e192m2e64m1_10limbs.json b/src/Specific/CurveParameters/solinas32_2e192m2e64m1_10limbs.json
new file mode 100644
index 000000000..d755eb9d8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e192m2e64m1_10limbs.json
@@ -0,0 +1,38 @@
+{
+ "base": "19.2",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 2,
+ 9
+ ],
+ [
+ 3,
+ 0,
+ 4,
+ 1,
+ 5,
+ 2,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ [
+ 3,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,20,19,19,19,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,20,19,19,19,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "modulus": "2^192 - 2^64 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e192m2e64m1_9limbs.json b/src/Specific/CurveParameters/solinas32_2e192m2e64m1_9limbs.json
new file mode 100644
index 000000000..20cf192e3
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e192m2e64m1_9limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 2,
+ 8
+ ],
+ [
+ 3,
+ 0,
+ 4,
+ 1,
+ 5,
+ 2,
+ 6,
+ 7,
+ 8
+ ],
+ [
+ 3,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "modulus": "2^192 - 2^64 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e194m33_8limbs.json b/src/Specific/CurveParameters/solinas32_2e194m33_8limbs.json
new file mode 100644
index 000000000..12a2fb02a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e194m33_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,25,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,25,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<194) - 33'",
+ "modulus": "2^194 - 33",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e194m33_9limbs.json b/src/Specific/CurveParameters/solinas32_2e194m33_9limbs.json
new file mode 100644
index 000000000..3e66a065e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e194m33_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 5/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,21,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,21,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<194) - 33'",
+ "modulus": "2^194 - 33",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e196m15_8limbs.json b/src/Specific/CurveParameters/solinas32_2e196m15_8limbs.json
new file mode 100644
index 000000000..b85a2fc0d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e196m15_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<196) - 15'",
+ "modulus": "2^196 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e196m15_9limbs.json b/src/Specific/CurveParameters/solinas32_2e196m15_9limbs.json
new file mode 100644
index 000000000..b5a8155b1
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e196m15_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 7/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<196) - 15'",
+ "modulus": "2^196 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e198m17_8limbs.json b/src/Specific/CurveParameters/solinas32_2e198m17_8limbs.json
new file mode 100644
index 000000000..1f4410c88
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e198m17_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<198) - 17'",
+ "modulus": "2^198 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e198m17_9limbs.json b/src/Specific/CurveParameters/solinas32_2e198m17_9limbs.json
new file mode 100644
index 000000000..1477daac7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e198m17_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,22,22,22,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,22,22,22,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<198) - 17'",
+ "modulus": "2^198 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e206m5_8limbs.json b/src/Specific/CurveParameters/solinas32_2e206m5_8limbs.json
new file mode 100644
index 000000000..024757689
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e206m5_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<206) - 5'",
+ "modulus": "2^206 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e206m5_9limbs.json b/src/Specific/CurveParameters/solinas32_2e206m5_9limbs.json
new file mode 100644
index 000000000..e865b2c5a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e206m5_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 8/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<206) - 5'",
+ "modulus": "2^206 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e212m29_8limbs.json b/src/Specific/CurveParameters/solinas32_2e212m29_8limbs.json
new file mode 100644
index 000000000..2595f7982
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e212m29_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<212) - 29'",
+ "modulus": "2^212 - 29",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e212m29_9limbs.json b/src/Specific/CurveParameters/solinas32_2e212m29_9limbs.json
new file mode 100644
index 000000000..854f9f5b6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e212m29_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 5/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<212) - 29'",
+ "modulus": "2^212 - 29",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e213m3_8limbs.json b/src/Specific/CurveParameters/solinas32_2e213m3_8limbs.json
new file mode 100644
index 000000000..dc212ae18
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e213m3_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26.625",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,26}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,26}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<213) - 3'",
+ "modulus": "2^213 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e213m3_9limbs.json b/src/Specific/CurveParameters/solinas32_2e213m3_9limbs.json
new file mode 100644
index 000000000..49ecc000e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e213m3_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<213) - 3'",
+ "modulus": "2^213 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e216m2e108m1_10limbs.json b/src/Specific/CurveParameters/solinas32_2e216m2e108m1_10limbs.json
new file mode 100644
index 000000000..bc984e524
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e216m2e108m1_10limbs.json
@@ -0,0 +1,39 @@
+{
+ "base": "21.6",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 4,
+ 9
+ ],
+ [
+ 5,
+ 0,
+ 6,
+ 1,
+ 7,
+ 2,
+ 8,
+ 3,
+ 9,
+ 4
+ ],
+ [
+ 5,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,22,21,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,22,21,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "goldilocks": true,
+ "modulus": "2^216 - 2^108 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e216m2e108m1_8limbs.json b/src/Specific/CurveParameters/solinas32_2e216m2e108m1_8limbs.json
new file mode 100644
index 000000000..29163fbf7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e216m2e108m1_8limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "27",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 3,
+ 7
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27,27}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27,27}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "goldilocks": true,
+ "modulus": "2^216 - 2^108 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e221m3_8limbs.json b/src/Specific/CurveParameters/solinas32_2e221m3_8limbs.json
new file mode 100644
index 000000000..1e2996386
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e221m3_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27.625",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27,28,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27,28,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<221) - 3'",
+ "modulus": "2^221 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e221m3_9limbs.json b/src/Specific/CurveParameters/solinas32_2e221m3_9limbs.json
new file mode 100644
index 000000000..5dc8a4016
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e221m3_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 5/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<221) - 3'",
+ "modulus": "2^221 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e222m117_10limbs.json b/src/Specific/CurveParameters/solinas32_2e222m117_10limbs.json
new file mode 100644
index 000000000..26901762e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e222m117_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22.2",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<222) - 117'",
+ "modulus": "2^222 - 117",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e222m117_9limbs.json b/src/Specific/CurveParameters/solinas32_2e222m117_9limbs.json
new file mode 100644
index 000000000..09ce2209c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e222m117_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<222) - 117'",
+ "modulus": "2^222 - 117",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e224m2e96p1_10limbs.json b/src/Specific/CurveParameters/solinas32_2e224m2e96p1_10limbs.json
new file mode 100644
index 000000000..193b1cb8f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e224m2e96p1_10limbs.json
@@ -0,0 +1,38 @@
+{
+ "base": "22.4",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 3,
+ 9
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3,
+ 8,
+ 9
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,22,23,22,23,22,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,22,23,22,23,22,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "modulus": "2^224 - 2^96 + 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e224m2e96p1_11limbs.json b/src/Specific/CurveParameters/solinas32_2e224m2e96p1_11limbs.json
new file mode 100644
index 000000000..536a0b5ed
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e224m2e96p1_11limbs.json
@@ -0,0 +1,39 @@
+{
+ "base": "20 + 4/11",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 3,
+ 10
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3,
+ 8,
+ 9,
+ 10
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "modulus": "2^224 - 2^96 + 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e226m5_10limbs.json b/src/Specific/CurveParameters/solinas32_2e226m5_10limbs.json
new file mode 100644
index 000000000..a74dc0db0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e226m5_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22.6",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<226) - 5'",
+ "modulus": "2^226 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e226m5_9limbs.json b/src/Specific/CurveParameters/solinas32_2e226m5_9limbs.json
new file mode 100644
index 000000000..8380d71ce
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e226m5_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 1/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<226) - 5'",
+ "modulus": "2^226 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e230m27_10limbs.json b/src/Specific/CurveParameters/solinas32_2e230m27_10limbs.json
new file mode 100644
index 000000000..3b9e87d2a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e230m27_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<230) - 27'",
+ "modulus": "2^230 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e230m27_9limbs.json b/src/Specific/CurveParameters/solinas32_2e230m27_9limbs.json
new file mode 100644
index 000000000..22751ffe7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e230m27_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 5/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<230) - 27'",
+ "modulus": "2^230 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e235m15_10limbs.json b/src/Specific/CurveParameters/solinas32_2e235m15_10limbs.json
new file mode 100644
index 000000000..351d1b199
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e235m15_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<235) - 15'",
+ "modulus": "2^235 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e235m15_9limbs.json b/src/Specific/CurveParameters/solinas32_2e235m15_9limbs.json
new file mode 100644
index 000000000..c3df1a41d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e235m15_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 1/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<235) - 15'",
+ "modulus": "2^235 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e243m9_10limbs.json b/src/Specific/CurveParameters/solinas32_2e243m9_10limbs.json
new file mode 100644
index 000000000..6aee5cf6d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e243m9_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<243) - 9'",
+ "modulus": "2^243 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e243m9_9limbs.json b/src/Specific/CurveParameters/solinas32_2e243m9_9limbs.json
new file mode 100644
index 000000000..2a1bad7ae
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e243m9_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27,27,27}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,27,27,27,27}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<243) - 9'",
+ "modulus": "2^243 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e251m9_10limbs.json b/src/Specific/CurveParameters/solinas32_2e251m9_10limbs.json
new file mode 100644
index 000000000..935c4ac38
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e251m9_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.1",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<251) - 9'",
+ "modulus": "2^251 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e251m9_11limbs.json b/src/Specific/CurveParameters/solinas32_2e251m9_11limbs.json
new file mode 100644
index 000000000..40143cad7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e251m9_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 9/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22,23,23,23,23,22}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22,23,23,23,23,22}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<251) - 9'",
+ "modulus": "2^251 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e255m19_10limbs.json b/src/Specific/CurveParameters/solinas32_2e255m19_10limbs.json
new file mode 100644
index 000000000..db664be0e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e255m19_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.5",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<255) - 19'",
+ "modulus": "2^255 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e255m19_11limbs.json b/src/Specific/CurveParameters/solinas32_2e255m19_11limbs.json
new file mode 100644
index 000000000..83c6ed2e8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e255m19_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 2/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,24,23,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,24,23,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<255) - 19'",
+ "modulus": "2^255 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e255m765_12limbs.json b/src/Specific/CurveParameters/solinas32_2e255m765_12limbs.json
new file mode 100644
index 000000000..db8955fce
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e255m765_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21.25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<255) - 765'",
+ "modulus": "2^255 - 765",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e255m765_13limbs.json b/src/Specific/CurveParameters/solinas32_2e255m765_13limbs.json
new file mode 100644
index 000000000..565cd962b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e255m765_13limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "19 + 8/13",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,19,20,20,19,20,19,20,20,19,20,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,19,20,20,19,20,19,20,20,19,20,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<255) - 765'",
+ "modulus": "2^255 - 765",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m189_11limbs.json b/src/Specific/CurveParameters/solinas32_2e256m189_11limbs.json
new file mode 100644
index 000000000..03e239a2b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m189_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 3/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - 189'",
+ "modulus": "2^256 - 189",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m189_12limbs.json b/src/Specific/CurveParameters/solinas32_2e256m189_12limbs.json
new file mode 100644
index 000000000..fe78fad7a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m189_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - 189'",
+ "modulus": "2^256 - 189",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_11limbs.json b/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_11limbs.json
new file mode 100644
index 000000000..3b3f2c625
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_11limbs.json
@@ -0,0 +1,43 @@
+{
+ "base": "23 + 3/11",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 8,
+ 7,
+ 3,
+ 10
+ ],
+ [
+ 9,
+ 8,
+ 4,
+ 0,
+ 10,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 9,
+ 8,
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_12limbs.json b/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_12limbs.json
new file mode 100644
index 000000000..e46eeba3e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m2e224p2e192p2e96m1_12limbs.json
@@ -0,0 +1,44 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 9,
+ 8,
+ 3,
+ 11
+ ],
+ [
+ 10,
+ 9,
+ 4,
+ 0,
+ 11,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3,
+ 8
+ ],
+ [
+ 10,
+ 9,
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m2e32m977_12limbs.json b/src/Specific/CurveParameters/solinas32_2e256m2e32m977_12limbs.json
new file mode 100644
index 000000000..87873c93f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m2e32m977_12limbs.json
@@ -0,0 +1,40 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 0,
+ 11
+ ],
+ [
+ 1,
+ 0,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ [
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "modulus": "2^256 - 2^32 - 977",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e256m2e32m977_13limbs.json b/src/Specific/CurveParameters/solinas32_2e256m2e32m977_13limbs.json
new file mode 100644
index 000000000..555cb4a8a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e256m2e32m977_13limbs.json
@@ -0,0 +1,41 @@
+{
+ "base": "19 + 9/13",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 0,
+ 12
+ ],
+ [
+ 1,
+ 0,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12
+ ],
+ [
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,19,20,20,19,20,20,19,20,20,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,19,20,20,19,20,20,19,20,20,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "modulus": "2^256 - 2^32 - 977",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e266m3_10limbs.json b/src/Specific/CurveParameters/solinas32_2e266m3_10limbs.json
new file mode 100644
index 000000000..bc42c7f43
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e266m3_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26.6",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<266) - 3'",
+ "modulus": "2^266 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e266m3_11limbs.json b/src/Specific/CurveParameters/solinas32_2e266m3_11limbs.json
new file mode 100644
index 000000000..fa8779bc9
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e266m3_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 2/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,25,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,25,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<266) - 3'",
+ "modulus": "2^266 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e285m9_11limbs.json b/src/Specific/CurveParameters/solinas32_2e285m9_11limbs.json
new file mode 100644
index 000000000..8c7efcbc8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e285m9_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 10/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<285) - 9'",
+ "modulus": "2^285 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e285m9_12limbs.json b/src/Specific/CurveParameters/solinas32_2e285m9_12limbs.json
new file mode 100644
index 000000000..76980e16a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e285m9_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<285) - 9'",
+ "modulus": "2^285 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e291m19_11limbs.json b/src/Specific/CurveParameters/solinas32_2e291m19_11limbs.json
new file mode 100644
index 000000000..a197adc79
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e291m19_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 5/11",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26,27,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26,27,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<291) - 19'",
+ "modulus": "2^291 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e291m19_12limbs.json b/src/Specific/CurveParameters/solinas32_2e291m19_12limbs.json
new file mode 100644
index 000000000..b9d3c6296
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e291m19_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,25,24,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,25,24,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<291) - 19'",
+ "modulus": "2^291 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e321m9_12limbs.json b/src/Specific/CurveParameters/solinas32_2e321m9_12limbs.json
new file mode 100644
index 000000000..9ee8403d8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e321m9_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,26,27,27,27,26,27,27,27,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,26,27,27,27,26,27,27,27,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<321) - 9'",
+ "modulus": "2^321 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e321m9_13limbs.json b/src/Specific/CurveParameters/solinas32_2e321m9_13limbs.json
new file mode 100644
index 000000000..b46eb9cb3
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e321m9_13limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 9/13",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<321) - 9'",
+ "modulus": "2^321 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e322m2e161m1_12limbs.json b/src/Specific/CurveParameters/solinas32_2e322m2e161m1_12limbs.json
new file mode 100644
index 000000000..af5f5e053
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e322m2e161m1_12limbs.json
@@ -0,0 +1,41 @@
+{
+ "base": "26 + 5/6",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 5,
+ 11
+ ],
+ [
+ 6,
+ 0,
+ 7,
+ 1,
+ 8,
+ 2,
+ 9,
+ 3,
+ 10,
+ 4,
+ 11,
+ 5
+ ],
+ [
+ 6,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,26,27,27,27,27,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,26,27,27,27,27,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "goldilocks": true,
+ "modulus": "2^322 - 2^161 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e322m2e161m1_14limbs.json b/src/Specific/CurveParameters/solinas32_2e322m2e161m1_14limbs.json
new file mode 100644
index 000000000..05808e8da
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e322m2e161m1_14limbs.json
@@ -0,0 +1,43 @@
+{
+ "base": "23",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 6,
+ 13
+ ],
+ [
+ 7,
+ 0,
+ 8,
+ 1,
+ 9,
+ 2,
+ 10,
+ 3,
+ 11,
+ 4,
+ 12,
+ 5,
+ 13,
+ 6
+ ],
+ [
+ 7,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "goldilocks": true,
+ "modulus": "2^322 - 2^161 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "14"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e336m17_13limbs.json b/src/Specific/CurveParameters/solinas32_2e336m17_13limbs.json
new file mode 100644
index 000000000..f0da53eed
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e336m17_13limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 11/13",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 17'",
+ "modulus": "2^336 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e336m17_14limbs.json b/src/Specific/CurveParameters/solinas32_2e336m17_14limbs.json
new file mode 100644
index 000000000..28475f3bc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e336m17_14limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<336) - 17'",
+ "modulus": "2^336 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "14"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e336m3_12limbs.json b/src/Specific/CurveParameters/solinas32_2e336m3_12limbs.json
new file mode 100644
index 000000000..1a3f3cb04
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e336m3_12limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "28",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<336) - 3'",
+ "modulus": "2^336 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "12"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e336m3_13limbs.json b/src/Specific/CurveParameters/solinas32_2e336m3_13limbs.json
new file mode 100644
index 000000000..5eca2a8f7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e336m3_13limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 11/13",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 3'",
+ "modulus": "2^336 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e338m15_13limbs.json b/src/Specific/CurveParameters/solinas32_2e338m15_13limbs.json
new file mode 100644
index 000000000..170c92f35
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e338m15_13limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<338) - 15'",
+ "modulus": "2^338 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "13"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e338m15_14limbs.json b/src/Specific/CurveParameters/solinas32_2e338m15_14limbs.json
new file mode 100644
index 000000000..22112c079
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e338m15_14limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 1/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,24,24,25,24,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,24,24,25,24,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<338) - 15'",
+ "modulus": "2^338 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "14"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e369m25_15limbs.json b/src/Specific/CurveParameters/solinas32_2e369m25_15limbs.json
new file mode 100644
index 000000000..98ffe66f1
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e369m25_15limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.6",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,25,24,25,24,25,25,24,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,25,24,25,24,25,25,24,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<369) - 25'",
+ "modulus": "2^369 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e369m25_16limbs.json b/src/Specific/CurveParameters/solinas32_2e369m25_16limbs.json
new file mode 100644
index 000000000..ddeee561c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e369m25_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 1/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<369) - 25'",
+ "modulus": "2^369 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e379m19_15limbs.json b/src/Specific/CurveParameters/solinas32_2e379m19_15limbs.json
new file mode 100644
index 000000000..34b4b107f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e379m19_15limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 4/15",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25,25,26,25,25,25,26,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25,25,26,25,25,25,26,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<379) - 19'",
+ "modulus": "2^379 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e379m19_16limbs.json b/src/Specific/CurveParameters/solinas32_2e379m19_16limbs.json
new file mode 100644
index 000000000..d6ad0e2b4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e379m19_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 11/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23,24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23,24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<379) - 19'",
+ "modulus": "2^379 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e382m105_16limbs.json b/src/Specific/CurveParameters/solinas32_2e382m105_16limbs.json
new file mode 100644
index 000000000..dc4e1657b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e382m105_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23.875",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<382) - 105'",
+ "modulus": "2^382 - 105",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e382m105_17limbs.json b/src/Specific/CurveParameters/solinas32_2e382m105_17limbs.json
new file mode 100644
index 000000000..2b6df00e9
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e382m105_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 8/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<382) - 105'",
+ "modulus": "2^382 - 105",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m187_16limbs.json b/src/Specific/CurveParameters/solinas32_2e383m187_16limbs.json
new file mode 100644
index 000000000..ce174751d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m187_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 15/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 187'",
+ "modulus": "2^383 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m187_17limbs.json b/src/Specific/CurveParameters/solinas32_2e383m187_17limbs.json
new file mode 100644
index 000000000..bbc0c53f0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m187_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 9/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 187'",
+ "modulus": "2^383 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m31_15limbs.json b/src/Specific/CurveParameters/solinas32_2e383m31_15limbs.json
new file mode 100644
index 000000000..bd58a5cfd
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m31_15limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 8/15",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<383) - 31'",
+ "modulus": "2^383 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m31_16limbs.json b/src/Specific/CurveParameters/solinas32_2e383m31_16limbs.json
new file mode 100644
index 000000000..facacaa28
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m31_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 15/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 31'",
+ "modulus": "2^383 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m421_17limbs.json b/src/Specific/CurveParameters/solinas32_2e383m421_17limbs.json
new file mode 100644
index 000000000..448717b9a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m421_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 9/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 421'",
+ "modulus": "2^383 - 421",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e383m421_18limbs.json b/src/Specific/CurveParameters/solinas32_2e383m421_18limbs.json
new file mode 100644
index 000000000..06142d4be
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e383m421_18limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 5/18",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<383) - 421'",
+ "modulus": "2^383 - 421",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_18limbs.json b/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_18limbs.json
new file mode 100644
index 000000000..6f5c3a551
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_18limbs.json
@@ -0,0 +1,50 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 5,
+ 3,
+ 0,
+ 17
+ ],
+ [
+ 6,
+ 4,
+ 1,
+ 0,
+ 7,
+ 5,
+ 2,
+ 8,
+ 3,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17
+ ],
+ [
+ 6,
+ 4,
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_19limbs.json b/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_19limbs.json
new file mode 100644
index 000000000..3362160f7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m2e128m2e96p2e32m1_19limbs.json
@@ -0,0 +1,51 @@
+{
+ "base": "20 + 4/19",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 5,
+ 3,
+ 0,
+ 18
+ ],
+ [
+ 6,
+ 4,
+ 1,
+ 0,
+ 7,
+ 5,
+ 2,
+ 8,
+ 3,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18
+ ],
+ [
+ 6,
+ 4,
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,21,20,20,20,20,21,20,20,20,20,21,20,20,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,21,20,20,20,20,21,20,20,20,20,21,20,20,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "19"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m317_17limbs.json b/src/Specific/CurveParameters/solinas32_2e384m317_17limbs.json
new file mode 100644
index 000000000..db04ccdea
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m317_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 10/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22,23,23,22,23,22,23,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22,23,23,22,23,22,23,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<384) - 317'",
+ "modulus": "2^384 - 317",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e384m317_18limbs.json b/src/Specific/CurveParameters/solinas32_2e384m317_18limbs.json
new file mode 100644
index 000000000..c8638bad6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e384m317_18limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - 317'",
+ "modulus": "2^384 - 317",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e389m21_15limbs.json b/src/Specific/CurveParameters/solinas32_2e389m21_15limbs.json
new file mode 100644
index 000000000..3a4570ccc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e389m21_15limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 14/15",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<389) - 21'",
+ "modulus": "2^389 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "15"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e389m21_16limbs.json b/src/Specific/CurveParameters/solinas32_2e389m21_16limbs.json
new file mode 100644
index 000000000..2d9b0307a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e389m21_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 5/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<389) - 21'",
+ "modulus": "2^389 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e401m31_16limbs.json b/src/Specific/CurveParameters/solinas32_2e401m31_16limbs.json
new file mode 100644
index 000000000..70b34f05c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e401m31_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 1/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<401) - 31'",
+ "modulus": "2^401 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e401m31_17limbs.json b/src/Specific/CurveParameters/solinas32_2e401m31_17limbs.json
new file mode 100644
index 000000000..dd8649aa4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e401m31_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 10/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<401) - 31'",
+ "modulus": "2^401 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e413m21_16limbs.json b/src/Specific/CurveParameters/solinas32_2e413m21_16limbs.json
new file mode 100644
index 000000000..2c3644f7b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e413m21_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 13/16",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,25,26,26,26,26,25,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,25,26,26,26,26,25,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<413) - 21'",
+ "modulus": "2^413 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e413m21_17limbs.json b/src/Specific/CurveParameters/solinas32_2e413m21_17limbs.json
new file mode 100644
index 000000000..c1a7ea0b8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e413m21_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 5/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<413) - 21'",
+ "modulus": "2^413 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e414m17_16limbs.json b/src/Specific/CurveParameters/solinas32_2e414m17_16limbs.json
new file mode 100644
index 000000000..29a883374
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e414m17_16limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.875",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,25,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,25,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<414) - 17'",
+ "modulus": "2^414 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e414m17_17limbs.json b/src/Specific/CurveParameters/solinas32_2e414m17_17limbs.json
new file mode 100644
index 000000000..fd1606272
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e414m17_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 6/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,24,25,24,24,25,24,24,25,24,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,24,25,24,24,25,24,24,25,24,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<414) - 17'",
+ "modulus": "2^414 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e416m2e208m1_16limbs.json b/src/Specific/CurveParameters/solinas32_2e416m2e208m1_16limbs.json
new file mode 100644
index 000000000..7a67e9442
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e416m2e208m1_16limbs.json
@@ -0,0 +1,45 @@
+{
+ "base": "26",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 7,
+ 15
+ ],
+ [
+ 8,
+ 0,
+ 9,
+ 1,
+ 10,
+ 2,
+ 11,
+ 3,
+ 12,
+ 4,
+ 13,
+ 5,
+ 14,
+ 6,
+ 15,
+ 7
+ ],
+ [
+ 8,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "goldilocks": true,
+ "modulus": "2^416 - 2^208 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e416m2e208m1_18limbs.json b/src/Specific/CurveParameters/solinas32_2e416m2e208m1_18limbs.json
new file mode 100644
index 000000000..b9fe5f73b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e416m2e208m1_18limbs.json
@@ -0,0 +1,47 @@
+{
+ "base": "23 + 1/9",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 8,
+ 17
+ ],
+ [
+ 9,
+ 0,
+ 10,
+ 1,
+ 11,
+ 2,
+ 12,
+ 3,
+ 13,
+ 4,
+ 14,
+ 5,
+ 15,
+ 6,
+ 16,
+ 7,
+ 17,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "goldilocks": true,
+ "modulus": "2^416 - 2^208 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e444m17_17limbs.json b/src/Specific/CurveParameters/solinas32_2e444m17_17limbs.json
new file mode 100644
index 000000000..465fcb03e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e444m17_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 2/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<444) - 17'",
+ "modulus": "2^444 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e444m17_18limbs.json b/src/Specific/CurveParameters/solinas32_2e444m17_18limbs.json
new file mode 100644
index 000000000..8fdccc232
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e444m17_18limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<444) - 17'",
+ "modulus": "2^444 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e448m2e224m1_16limbs.json b/src/Specific/CurveParameters/solinas32_2e448m2e224m1_16limbs.json
new file mode 100644
index 000000000..88c539a6b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e448m2e224m1_16limbs.json
@@ -0,0 +1,45 @@
+{
+ "base": "28",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 7,
+ 15
+ ],
+ [
+ 8,
+ 0,
+ 9,
+ 1,
+ 10,
+ 2,
+ 11,
+ 3,
+ 12,
+ 4,
+ 13,
+ 5,
+ 14,
+ 6,
+ 15,
+ 7
+ ],
+ [
+ 8,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "goldilocks": true,
+ "modulus": "2^448 - 2^224 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "16"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e448m2e224m1_18limbs.json b/src/Specific/CurveParameters/solinas32_2e448m2e224m1_18limbs.json
new file mode 100644
index 000000000..051892b7f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e448m2e224m1_18limbs.json
@@ -0,0 +1,47 @@
+{
+ "base": "24 + 8/9",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 8,
+ 17
+ ],
+ [
+ 9,
+ 0,
+ 10,
+ 1,
+ 11,
+ 2,
+ 12,
+ 3,
+ 13,
+ 4,
+ 14,
+ 5,
+ 15,
+ 6,
+ 16,
+ 7,
+ 17,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "goldilocks": true,
+ "modulus": "2^448 - 2^224 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e450m2e225m1_18limbs.json b/src/Specific/CurveParameters/solinas32_2e450m2e225m1_18limbs.json
new file mode 100644
index 000000000..f03761900
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e450m2e225m1_18limbs.json
@@ -0,0 +1,47 @@
+{
+ "base": "25",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 8,
+ 17
+ ],
+ [
+ 9,
+ 0,
+ 10,
+ 1,
+ 11,
+ 2,
+ 12,
+ 3,
+ 13,
+ 4,
+ 14,
+ 5,
+ 15,
+ 6,
+ 16,
+ 7,
+ 17,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "goldilocks": true,
+ "modulus": "2^450 - 2^225 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e450m2e225m1_20limbs.json b/src/Specific/CurveParameters/solinas32_2e450m2e225m1_20limbs.json
new file mode 100644
index 000000000..0b5aca854
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e450m2e225m1_20limbs.json
@@ -0,0 +1,49 @@
+{
+ "base": "22.5",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 9,
+ 19
+ ],
+ [
+ 10,
+ 0,
+ 11,
+ 1,
+ 12,
+ 2,
+ 13,
+ 3,
+ 14,
+ 4,
+ 15,
+ 5,
+ 16,
+ 6,
+ 17,
+ 7,
+ 18,
+ 8,
+ 19,
+ 9
+ ],
+ [
+ 10,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "goldilocks": true,
+ "modulus": "2^450 - 2^225 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e452m3_17limbs.json b/src/Specific/CurveParameters/solinas32_2e452m3_17limbs.json
new file mode 100644
index 000000000..3145c4863
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e452m3_17limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 10/17",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26,27,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26,27,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<452) - 3'",
+ "modulus": "2^452 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "17"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e452m3_18limbs.json b/src/Specific/CurveParameters/solinas32_2e452m3_18limbs.json
new file mode 100644
index 000000000..a85ee402d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e452m3_18limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 1/9",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<452) - 3'",
+ "modulus": "2^452 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e468m17_18limbs.json b/src/Specific/CurveParameters/solinas32_2e468m17_18limbs.json
new file mode 100644
index 000000000..5c12edc84
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e468m17_18limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<468) - 17'",
+ "modulus": "2^468 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e468m17_19limbs.json b/src/Specific/CurveParameters/solinas32_2e468m17_19limbs.json
new file mode 100644
index 000000000..a2a37f9c5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e468m17_19limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 12/19",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,24,25,25,24,25,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,24,25,25,24,25,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<468) - 17'",
+ "modulus": "2^468 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "19"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e480m2e240m1_18limbs.json b/src/Specific/CurveParameters/solinas32_2e480m2e240m1_18limbs.json
new file mode 100644
index 000000000..154310fed
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e480m2e240m1_18limbs.json
@@ -0,0 +1,47 @@
+{
+ "base": "26 + 2/3",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 8,
+ 17
+ ],
+ [
+ 9,
+ 0,
+ 10,
+ 1,
+ 11,
+ 2,
+ 12,
+ 3,
+ 13,
+ 4,
+ 14,
+ 5,
+ 15,
+ 6,
+ 16,
+ 7,
+ 17,
+ 8
+ ],
+ [
+ 9,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,27,26,27,27,26,27,27,26,27,27,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,27,26,27,27,26,27,27,26,27,27,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "goldilocks": true,
+ "modulus": "2^480 - 2^240 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "18"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e480m2e240m1_20limbs.json b/src/Specific/CurveParameters/solinas32_2e480m2e240m1_20limbs.json
new file mode 100644
index 000000000..224a758c0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e480m2e240m1_20limbs.json
@@ -0,0 +1,49 @@
+{
+ "base": "24",
+ "bitwidth": 32,
+ "carry_chains": [
+ [
+ 9,
+ 19
+ ],
+ [
+ 10,
+ 0,
+ 11,
+ 1,
+ 12,
+ 2,
+ 13,
+ 3,
+ 14,
+ 4,
+ 15,
+ 5,
+ 16,
+ 6,
+ 17,
+ 7,
+ 18,
+ 8,
+ 19,
+ 9
+ ],
+ [
+ 10,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "goldilocks": true,
+ "modulus": "2^480 - 2^240 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e488m17_19limbs.json b/src/Specific/CurveParameters/solinas32_2e488m17_19limbs.json
new file mode 100644
index 000000000..543f964b0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e488m17_19limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 13/19",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<488) - 17'",
+ "modulus": "2^488 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "19"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e488m17_20limbs.json b/src/Specific/CurveParameters/solinas32_2e488m17_20limbs.json
new file mode 100644
index 000000000..7affee0f7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e488m17_20limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.4",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,25,24,24,25,24,25,24,24,25,24,25,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,25,24,24,25,24,25,24,24,25,24,25,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<488) - 17'",
+ "modulus": "2^488 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e489m21_19limbs.json b/src/Specific/CurveParameters/solinas32_2e489m21_19limbs.json
new file mode 100644
index 000000000..0482310e5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e489m21_19limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25 + 14/19",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25,26,26,26,25,26,26,26,25,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25,26,26,26,25,26,26,26,25,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<489) - 21'",
+ "modulus": "2^489 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "19"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e489m21_20limbs.json b/src/Specific/CurveParameters/solinas32_2e489m21_20limbs.json
new file mode 100644
index 000000000..c1ada5690
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e489m21_20limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24 + 9/20",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24,25,24,24,25,24,25,24,25,24,25,24,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24,25,24,24,25,24,25,24,25,24,25,24,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<489) - 21'",
+ "modulus": "2^489 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e495m31_20limbs.json b/src/Specific/CurveParameters/solinas32_2e495m31_20limbs.json
new file mode 100644
index 000000000..4a3c4bd5f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e495m31_20limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "24.75",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<495) - 31'",
+ "modulus": "2^495 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e495m31_21limbs.json b/src/Specific/CurveParameters/solinas32_2e495m31_21limbs.json
new file mode 100644
index 000000000..67765b859
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e495m31_21limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 4/7",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,24,23,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='21' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,24,23,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='21' -Dq_mpz='(1_mpz<<495) - 31'",
+ "modulus": "2^495 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "21"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e511m187_22limbs.json b/src/Specific/CurveParameters/solinas32_2e511m187_22limbs.json
new file mode 100644
index 000000000..3682fc105
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e511m187_22limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "23 + 5/22",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,24,23,23,23,24,23,23,23,23,24,23,23,23,24,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='22' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,24,23,23,23,24,23,23,23,23,24,23,23,23,24,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='22' -Dq_mpz='(1_mpz<<511) - 187'",
+ "modulus": "2^511 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "22"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e511m187_23limbs.json b/src/Specific/CurveParameters/solinas32_2e511m187_23limbs.json
new file mode 100644
index 000000000..30446b75d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e511m187_23limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 5/23",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 187'",
+ "modulus": "2^511 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "23"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e511m481_23limbs.json b/src/Specific/CurveParameters/solinas32_2e511m481_23limbs.json
new file mode 100644
index 000000000..aca753a6e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e511m481_23limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "22 + 5/23",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 481'",
+ "modulus": "2^511 - 481",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "23"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e511m481_24limbs.json b/src/Specific/CurveParameters/solinas32_2e511m481_24limbs.json
new file mode 100644
index 000000000..4934dee8f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e511m481_24limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 7/24",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<511) - 481'",
+ "modulus": "2^511 - 481",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "24"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e512m569_24limbs.json b/src/Specific/CurveParameters/solinas32_2e512m569_24limbs.json
new file mode 100644
index 000000000..5e75c6b7d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e512m569_24limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "21 + 1/3",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<512) - 569'",
+ "modulus": "2^512 - 569",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "24"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e512m569_25limbs.json b/src/Specific/CurveParameters/solinas32_2e512m569_25limbs.json
new file mode 100644
index 000000000..23e7e2a0d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e512m569_25limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "20 + 12/25",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='25' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='25' -Dq_mpz='(1_mpz<<512) - 569'",
+ "modulus": "2^512 - 569",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "25"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e521m1_19limbs.json b/src/Specific/CurveParameters/solinas32_2e521m1_19limbs.json
new file mode 100644
index 000000000..8ac1a66a6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e521m1_19limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "27 + 8/19",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,28,27,27,28,27,28,27,28,27,27,28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,28,27,27,28,27,28,27,28,27,27,28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<521) - 1'",
+ "modulus": "2^521 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "19"
+}
diff --git a/src/Specific/CurveParameters/solinas32_2e521m1_20limbs.json b/src/Specific/CurveParameters/solinas32_2e521m1_20limbs.json
new file mode 100644
index 000000000..b56e1c8bb
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas32_2e521m1_20limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "26 + 1/20",
+ "bitwidth": 32,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<521) - 1'",
+ "modulus": "2^521 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "20"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e127m1_3limbs.json b/src/Specific/CurveParameters/solinas64_2e127m1_3limbs.json
new file mode 100644
index 000000000..84ed92b8e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e127m1_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<127) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<127) - 1'",
+ "modulus": "2^127 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e129m25_3limbs.json b/src/Specific/CurveParameters/solinas64_2e129m25_3limbs.json
new file mode 100644
index 000000000..12645fc11
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e129m25_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "43",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<129) - 25'",
+ "modulus": "2^129 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e129m25_4limbs.json b/src/Specific/CurveParameters/solinas64_2e129m25_4limbs.json
new file mode 100644
index 000000000..e6d0846b7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e129m25_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "32.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<129) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<129) - 25'",
+ "modulus": "2^129 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e130m5_3limbs.json b/src/Specific/CurveParameters/solinas64_2e130m5_3limbs.json
new file mode 100644
index 000000000..5d8b448cc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e130m5_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "43 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<130) - 5'",
+ "modulus": "2^130 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e130m5_4limbs.json b/src/Specific/CurveParameters/solinas64_2e130m5_4limbs.json
new file mode 100644
index 000000000..169ec8992
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e130m5_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "32.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,33,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<130) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,33,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<130) - 5'",
+ "modulus": "2^130 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e137m13_3limbs.json b/src/Specific/CurveParameters/solinas64_2e137m13_3limbs.json
new file mode 100644
index 000000000..83b4028c7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e137m13_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "45 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13'",
+ "modulus": "2^137 - 13",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e137m13_4limbs.json b/src/Specific/CurveParameters/solinas64_2e137m13_4limbs.json
new file mode 100644
index 000000000..9826afaca
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e137m13_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "34.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{35,34,34,34}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<137) - 13'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{35,34,34,34}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<137) - 13'",
+ "modulus": "2^137 - 13",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e140m27_3limbs.json b/src/Specific/CurveParameters/solinas64_2e140m27_3limbs.json
new file mode 100644
index 000000000..bb63dd313
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e140m27_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27'",
+ "modulus": "2^140 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e140m27_4limbs.json b/src/Specific/CurveParameters/solinas64_2e140m27_4limbs.json
new file mode 100644
index 000000000..2a315d2c2
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e140m27_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "35",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{35,35,35,35}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<140) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{35,35,35,35}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<140) - 27'",
+ "modulus": "2^140 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e141m9_3limbs.json b/src/Specific/CurveParameters/solinas64_2e141m9_3limbs.json
new file mode 100644
index 000000000..20ce1fb92
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e141m9_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<141) - 9'",
+ "modulus": "2^141 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e141m9_4limbs.json b/src/Specific/CurveParameters/solinas64_2e141m9_4limbs.json
new file mode 100644
index 000000000..d2a7b65b5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e141m9_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "35.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{36,35,35,35}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<141) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{36,35,35,35}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<141) - 9'",
+ "modulus": "2^141 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e150m3_3limbs.json b/src/Specific/CurveParameters/solinas64_2e150m3_3limbs.json
new file mode 100644
index 000000000..018d50670
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e150m3_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,50,50}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,50,50}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 3'",
+ "modulus": "2^150 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e150m3_4limbs.json b/src/Specific/CurveParameters/solinas64_2e150m3_4limbs.json
new file mode 100644
index 000000000..f522c1ae6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e150m3_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "37.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 3'",
+ "modulus": "2^150 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e150m5_3limbs.json b/src/Specific/CurveParameters/solinas64_2e150m5_3limbs.json
new file mode 100644
index 000000000..489555bd6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e150m5_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,50,50}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,50,50}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<150) - 5'",
+ "modulus": "2^150 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e150m5_4limbs.json b/src/Specific/CurveParameters/solinas64_2e150m5_4limbs.json
new file mode 100644
index 000000000..256937f97
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e150m5_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "37.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 5'",
+ "modulus": "2^150 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e152m17_3limbs.json b/src/Specific/CurveParameters/solinas64_2e152m17_3limbs.json
new file mode 100644
index 000000000..2b7ac15f3
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e152m17_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,50}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,50}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17'",
+ "modulus": "2^152 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e152m17_4limbs.json b/src/Specific/CurveParameters/solinas64_2e152m17_4limbs.json
new file mode 100644
index 000000000..c9f3def51
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e152m17_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "38",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<152) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<152) - 17'",
+ "modulus": "2^152 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e158m15_3limbs.json b/src/Specific/CurveParameters/solinas64_2e158m15_3limbs.json
new file mode 100644
index 000000000..7c56af9da
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e158m15_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "52 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,52}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,52}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15'",
+ "modulus": "2^158 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e158m15_4limbs.json b/src/Specific/CurveParameters/solinas64_2e158m15_4limbs.json
new file mode 100644
index 000000000..0f658a8ff
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e158m15_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "39.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<158) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<158) - 15'",
+ "modulus": "2^158 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e165m25_3limbs.json b/src/Specific/CurveParameters/solinas64_2e165m25_3limbs.json
new file mode 100644
index 000000000..92849ddd7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e165m25_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<165) - 25'",
+ "modulus": "2^165 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e165m25_4limbs.json b/src/Specific/CurveParameters/solinas64_2e165m25_4limbs.json
new file mode 100644
index 000000000..533628ddc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e165m25_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "41.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<165) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<165) - 25'",
+ "modulus": "2^165 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e166m5_3limbs.json b/src/Specific/CurveParameters/solinas64_2e166m5_3limbs.json
new file mode 100644
index 000000000..dbdc4a876
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e166m5_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,55}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,55}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<166) - 5'",
+ "modulus": "2^166 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e166m5_4limbs.json b/src/Specific/CurveParameters/solinas64_2e166m5_4limbs.json
new file mode 100644
index 000000000..bb49c6f5b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e166m5_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "41.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,42,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<166) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,42,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<166) - 5'",
+ "modulus": "2^166 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e171m19_3limbs.json b/src/Specific/CurveParameters/solinas64_2e171m19_3limbs.json
new file mode 100644
index 000000000..0fb2937b6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e171m19_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "57",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,57,57}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,57,57}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<171) - 19'",
+ "modulus": "2^171 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e171m19_4limbs.json b/src/Specific/CurveParameters/solinas64_2e171m19_4limbs.json
new file mode 100644
index 000000000..3637caccc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e171m19_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42.75",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43,42}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<171) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43,42}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<171) - 19'",
+ "modulus": "2^171 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e174m17_3limbs.json b/src/Specific/CurveParameters/solinas64_2e174m17_3limbs.json
new file mode 100644
index 000000000..ae80ead5e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e174m17_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "58",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 17'",
+ "modulus": "2^174 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e174m17_4limbs.json b/src/Specific/CurveParameters/solinas64_2e174m17_4limbs.json
new file mode 100644
index 000000000..466921be6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e174m17_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "43.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 17'",
+ "modulus": "2^174 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e174m3_3limbs.json b/src/Specific/CurveParameters/solinas64_2e174m3_3limbs.json
new file mode 100644
index 000000000..a665a65df
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e174m3_3limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "58",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<174) - 3'",
+ "modulus": "2^174 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "3"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e174m3_4limbs.json b/src/Specific/CurveParameters/solinas64_2e174m3_4limbs.json
new file mode 100644
index 000000000..c5937511f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e174m3_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "43.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 3'",
+ "modulus": "2^174 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e189m25_4limbs.json b/src/Specific/CurveParameters/solinas64_2e189m25_4limbs.json
new file mode 100644
index 000000000..085938649
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e189m25_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,47,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,47,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<189) - 25'",
+ "modulus": "2^189 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e189m25_5limbs.json b/src/Specific/CurveParameters/solinas64_2e189m25_5limbs.json
new file mode 100644
index 000000000..fde6a73e8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e189m25_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "37.8",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,37}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<189) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,37}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<189) - 25'",
+ "modulus": "2^189 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e190m11_4limbs.json b/src/Specific/CurveParameters/solinas64_2e190m11_4limbs.json
new file mode 100644
index 000000000..e474c76ee
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e190m11_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<190) - 11'",
+ "modulus": "2^190 - 11",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e190m11_5limbs.json b/src/Specific/CurveParameters/solinas64_2e190m11_5limbs.json
new file mode 100644
index 000000000..87530892f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e190m11_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "38",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<190) - 11'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<190) - 11'",
+ "modulus": "2^190 - 11",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e191m19_4limbs.json b/src/Specific/CurveParameters/solinas64_2e191m19_4limbs.json
new file mode 100644
index 000000000..a925ca643
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e191m19_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.75",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<191) - 19'",
+ "modulus": "2^191 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e191m19_5limbs.json b/src/Specific/CurveParameters/solinas64_2e191m19_5limbs.json
new file mode 100644
index 000000000..433c1c0af
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e191m19_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "38.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,38,38,38}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<191) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,38,38,38}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<191) - 19'",
+ "modulus": "2^191 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e192m2e64m1_4limbs.json b/src/Specific/CurveParameters/solinas64_2e192m2e64m1_4limbs.json
new file mode 100644
index 000000000..6ff21b39c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e192m2e64m1_4limbs.json
@@ -0,0 +1,32 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 0,
+ 3
+ ],
+ [
+ 1,
+ 0,
+ 2,
+ 3
+ ],
+ [
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "modulus": "2^192 - 2^64 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e192m2e64m1_5limbs.json b/src/Specific/CurveParameters/solinas64_2e192m2e64m1_5limbs.json
new file mode 100644
index 000000000..8cf158546
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e192m2e64m1_5limbs.json
@@ -0,0 +1,33 @@
+{
+ "base": "38.4",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 0,
+ 4
+ ],
+ [
+ 1,
+ 0,
+ 2,
+ 3,
+ 4
+ ],
+ [
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1'",
+ "modulus": "2^192 - 2^64 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e194m33_4limbs.json b/src/Specific/CurveParameters/solinas64_2e194m33_4limbs.json
new file mode 100644
index 000000000..762e89e1e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e194m33_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<194) - 33'",
+ "modulus": "2^194 - 33",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e194m33_5limbs.json b/src/Specific/CurveParameters/solinas64_2e194m33_5limbs.json
new file mode 100644
index 000000000..74b1873c5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e194m33_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "38.8",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,39,39,39,38}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<194) - 33'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,39,39,39,38}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<194) - 33'",
+ "modulus": "2^194 - 33",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e196m15_4limbs.json b/src/Specific/CurveParameters/solinas64_2e196m15_4limbs.json
new file mode 100644
index 000000000..0390e5bc7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e196m15_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "49",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<196) - 15'",
+ "modulus": "2^196 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e196m15_5limbs.json b/src/Specific/CurveParameters/solinas64_2e196m15_5limbs.json
new file mode 100644
index 000000000..632a6a494
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e196m15_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "39.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,39,39,39}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<196) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,39,39,39}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<196) - 15'",
+ "modulus": "2^196 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e198m17_4limbs.json b/src/Specific/CurveParameters/solinas64_2e198m17_4limbs.json
new file mode 100644
index 000000000..fcdfdf66a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e198m17_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "49.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<198) - 17'",
+ "modulus": "2^198 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e198m17_5limbs.json b/src/Specific/CurveParameters/solinas64_2e198m17_5limbs.json
new file mode 100644
index 000000000..5914300de
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e198m17_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "39.6",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<198) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<198) - 17'",
+ "modulus": "2^198 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e206m5_4limbs.json b/src/Specific/CurveParameters/solinas64_2e206m5_4limbs.json
new file mode 100644
index 000000000..3e2a60232
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e206m5_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<206) - 5'",
+ "modulus": "2^206 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e206m5_5limbs.json b/src/Specific/CurveParameters/solinas64_2e206m5_5limbs.json
new file mode 100644
index 000000000..ddf998eba
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e206m5_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "41.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<206) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<206) - 5'",
+ "modulus": "2^206 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e212m29_4limbs.json b/src/Specific/CurveParameters/solinas64_2e212m29_4limbs.json
new file mode 100644
index 000000000..e4eb5ffc8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e212m29_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "53",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,53}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,53}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<212) - 29'",
+ "modulus": "2^212 - 29",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e212m29_5limbs.json b/src/Specific/CurveParameters/solinas64_2e212m29_5limbs.json
new file mode 100644
index 000000000..c895ffb89
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e212m29_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42.4",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,42}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<212) - 29'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,42}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<212) - 29'",
+ "modulus": "2^212 - 29",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e213m3_4limbs.json b/src/Specific/CurveParameters/solinas64_2e213m3_4limbs.json
new file mode 100644
index 000000000..0dc66d792
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e213m3_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "53.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,53,53}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,53,53}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<213) - 3'",
+ "modulus": "2^213 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e213m3_5limbs.json b/src/Specific/CurveParameters/solinas64_2e213m3_5limbs.json
new file mode 100644
index 000000000..ef546ce26
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e213m3_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42.6",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,42}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<213) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,42}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<213) - 3'",
+ "modulus": "2^213 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e216m2e108m1_4limbs.json b/src/Specific/CurveParameters/solinas64_2e216m2e108m1_4limbs.json
new file mode 100644
index 000000000..b728ac8c6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e216m2e108m1_4limbs.json
@@ -0,0 +1,33 @@
+{
+ "base": "54",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 1,
+ 3
+ ],
+ [
+ 2,
+ 0,
+ 3,
+ 1
+ ],
+ [
+ 2,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "goldilocks": true,
+ "modulus": "2^216 - 2^108 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e216m2e108m1_5limbs.json b/src/Specific/CurveParameters/solinas64_2e216m2e108m1_5limbs.json
new file mode 100644
index 000000000..9220783f9
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e216m2e108m1_5limbs.json
@@ -0,0 +1,34 @@
+{
+ "base": "43.2",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 1,
+ 4
+ ],
+ [
+ 2,
+ 0,
+ 3,
+ 1,
+ 4
+ ],
+ [
+ 2,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43,43,43}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43,43,43}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1'",
+ "goldilocks": true,
+ "modulus": "2^216 - 2^108 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e221m3_4limbs.json b/src/Specific/CurveParameters/solinas64_2e221m3_4limbs.json
new file mode 100644
index 000000000..760ef60d8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e221m3_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55.25",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,55,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,55,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<221) - 3'",
+ "modulus": "2^221 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e221m3_5limbs.json b/src/Specific/CurveParameters/solinas64_2e221m3_5limbs.json
new file mode 100644
index 000000000..1514d6624
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e221m3_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "44.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,44,44}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<221) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,44,44}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<221) - 3'",
+ "modulus": "2^221 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e222m117_4limbs.json b/src/Specific/CurveParameters/solinas64_2e222m117_4limbs.json
new file mode 100644
index 000000000..343debf77
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e222m117_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,56,55}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,56,55}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<222) - 117'",
+ "modulus": "2^222 - 117",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e222m117_5limbs.json b/src/Specific/CurveParameters/solinas64_2e222m117_5limbs.json
new file mode 100644
index 000000000..01d8a5e91
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e222m117_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "44.4",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,45,44,44}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<222) - 117'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,45,44,44}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<222) - 117'",
+ "modulus": "2^222 - 117",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e224m2e96p1_5limbs.json b/src/Specific/CurveParameters/solinas64_2e224m2e96p1_5limbs.json
new file mode 100644
index 000000000..e8243620f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e224m2e96p1_5limbs.json
@@ -0,0 +1,33 @@
+{
+ "base": "44.8",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 1,
+ 4
+ ],
+ [
+ 2,
+ 0,
+ 3,
+ 1,
+ 4
+ ],
+ [
+ 2,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "modulus": "2^224 - 2^96 + 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e224m2e96p1_6limbs.json b/src/Specific/CurveParameters/solinas64_2e224m2e96p1_6limbs.json
new file mode 100644
index 000000000..e2d4c3474
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e224m2e96p1_6limbs.json
@@ -0,0 +1,34 @@
+{
+ "base": "37 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 1,
+ 5
+ ],
+ [
+ 2,
+ 0,
+ 3,
+ 1,
+ 4,
+ 5
+ ],
+ [
+ 2,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,37,38,37,37}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,37,38,37,37}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1'",
+ "modulus": "2^224 - 2^96 + 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e226m5_4limbs.json b/src/Specific/CurveParameters/solinas64_2e226m5_4limbs.json
new file mode 100644
index 000000000..e1a5fdb5f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e226m5_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "56.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,57,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,57,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<226) - 5'",
+ "modulus": "2^226 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e226m5_5limbs.json b/src/Specific/CurveParameters/solinas64_2e226m5_5limbs.json
new file mode 100644
index 000000000..bfc751eb9
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e226m5_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "45.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<226) - 5'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<226) - 5'",
+ "modulus": "2^226 - 5",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e230m27_4limbs.json b/src/Specific/CurveParameters/solinas64_2e230m27_4limbs.json
new file mode 100644
index 000000000..e8e3eebfa
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e230m27_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "57.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,58,57}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,58,57}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<230) - 27'",
+ "modulus": "2^230 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e230m27_5limbs.json b/src/Specific/CurveParameters/solinas64_2e230m27_5limbs.json
new file mode 100644
index 000000000..2dd1b74b0
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e230m27_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<230) - 27'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<230) - 27'",
+ "modulus": "2^230 - 27",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e235m15_4limbs.json b/src/Specific/CurveParameters/solinas64_2e235m15_4limbs.json
new file mode 100644
index 000000000..e1a7a4ada
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e235m15_4limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "58.75",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15'",
+ "modulus": "2^235 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "4"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e235m15_5limbs.json b/src/Specific/CurveParameters/solinas64_2e235m15_5limbs.json
new file mode 100644
index 000000000..e87ff8f4c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e235m15_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,47,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<235) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,47,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<235) - 15'",
+ "modulus": "2^235 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e243m9_5limbs.json b/src/Specific/CurveParameters/solinas64_2e243m9_5limbs.json
new file mode 100644
index 000000000..928df3685
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e243m9_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.6",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<243) - 9'",
+ "modulus": "2^243 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e243m9_6limbs.json b/src/Specific/CurveParameters/solinas64_2e243m9_6limbs.json
new file mode 100644
index 000000000..9757ea121
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e243m9_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "40.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{41,40,41,40,41,40}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<243) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{41,40,41,40,41,40}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<243) - 9'",
+ "modulus": "2^243 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e251m9_5limbs.json b/src/Specific/CurveParameters/solinas64_2e251m9_5limbs.json
new file mode 100644
index 000000000..96d75c483
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e251m9_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,50}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,50}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<251) - 9'",
+ "modulus": "2^251 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e251m9_6limbs.json b/src/Specific/CurveParameters/solinas64_2e251m9_6limbs.json
new file mode 100644
index 000000000..5f7ec3e3e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e251m9_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "41 + 5/6",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,42,42,42,42,41}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<251) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,42,42,42,42,41}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<251) - 9'",
+ "modulus": "2^251 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e255m19_5limbs.json b/src/Specific/CurveParameters/solinas64_2e255m19_5limbs.json
new file mode 100644
index 000000000..fc7474a7a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e255m19_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - 19'",
+ "modulus": "2^255 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e255m19_6limbs.json b/src/Specific/CurveParameters/solinas64_2e255m19_6limbs.json
new file mode 100644
index 000000000..fbaefe20d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e255m19_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 19'",
+ "modulus": "2^255 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e255m765_5limbs.json b/src/Specific/CurveParameters/solinas64_2e255m765_5limbs.json
new file mode 100644
index 000000000..13bc14138
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e255m765_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - 765'",
+ "modulus": "2^255 - 765",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e255m765_6limbs.json b/src/Specific/CurveParameters/solinas64_2e255m765_6limbs.json
new file mode 100644
index 000000000..f48c1992f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e255m765_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 765'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 765'",
+ "modulus": "2^255 - 765",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m189_5limbs.json b/src/Specific/CurveParameters/solinas64_2e256m189_5limbs.json
new file mode 100644
index 000000000..2db4f843e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m189_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - 189'",
+ "modulus": "2^256 - 189",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m189_6limbs.json b/src/Specific/CurveParameters/solinas64_2e256m189_6limbs.json
new file mode 100644
index 000000000..395c713c8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m189_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "42 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - 189'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - 189'",
+ "modulus": "2^256 - 189",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_5limbs.json b/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_5limbs.json
new file mode 100644
index 000000000..1313f235c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_5limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "51.2",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 2,
+ 0,
+ 4
+ ],
+ [
+ 4,
+ 3,
+ 1,
+ 0,
+ 2
+ ],
+ [
+ 4,
+ 3,
+ 1,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_6limbs.json b/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_6limbs.json
new file mode 100644
index 000000000..ccfa9a0a7
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m2e224p2e192p2e96m1_6limbs.json
@@ -0,0 +1,38 @@
+{
+ "base": "42 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 4,
+ 3,
+ 1,
+ 5
+ ],
+ [
+ 5,
+ 4,
+ 2,
+ 0,
+ 3,
+ 1
+ ],
+ [
+ 5,
+ 4,
+ 2,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1'",
+ "modulus": "2^256 - 2^224 + 2^192 + 2^96 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m2e32m977_6limbs.json b/src/Specific/CurveParameters/solinas64_2e256m2e32m977_6limbs.json
new file mode 100644
index 000000000..d01c3caef
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m2e32m977_6limbs.json
@@ -0,0 +1,33 @@
+{
+ "base": "42 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 5,
+ 5
+ ],
+ [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ [
+ 0,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "modulus": "2^256 - 2^32 - 977",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m2e32m977_7limbs.json b/src/Specific/CurveParameters/solinas64_2e256m2e32m977_7limbs.json
new file mode 100644
index 000000000..8dd259a2e
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m2e32m977_7limbs.json
@@ -0,0 +1,34 @@
+{
+ "base": "36 + 4/7",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 6,
+ 6
+ ],
+ [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ 0,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{37,37,36,37,36,37,36}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{37,37,36,37,36,37,36}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977'",
+ "modulus": "2^256 - 2^32 - 977",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m4294968273_10limbs.json b/src/Specific/CurveParameters/solinas64_2e256m4294968273_10limbs.json
new file mode 100644
index 000000000..f0bb669b4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m4294968273_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "25.6",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,26,25,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,26,25,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "modulus": "2^256 - 4294968273",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e256m4294968273_9limbs.json b/src/Specific/CurveParameters/solinas64_2e256m4294968273_9limbs.json
new file mode 100644
index 000000000..13b5f1162
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e256m4294968273_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "28 + 4/9",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{29,28,29,28,29,28,29,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{29,28,29,28,29,28,29,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<256) - 4294968273'",
+ "modulus": "2^256 - 4294968273",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e266m3_5limbs.json b/src/Specific/CurveParameters/solinas64_2e266m3_5limbs.json
new file mode 100644
index 000000000..230733ce5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e266m3_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "53.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,53,53,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,53,53,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<266) - 3'",
+ "modulus": "2^266 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e266m3_6limbs.json b/src/Specific/CurveParameters/solinas64_2e266m3_6limbs.json
new file mode 100644
index 000000000..279f2a0fa
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e266m3_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "44 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,45,44,44}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<266) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,45,44,44}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<266) - 3'",
+ "modulus": "2^266 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e285m9_5limbs.json b/src/Specific/CurveParameters/solinas64_2e285m9_5limbs.json
new file mode 100644
index 000000000..72b220406
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e285m9_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "57",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,57,57,57,57}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,57,57,57,57}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<285) - 9'",
+ "modulus": "2^285 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e285m9_6limbs.json b/src/Specific/CurveParameters/solinas64_2e285m9_6limbs.json
new file mode 100644
index 000000000..7fd451ea1
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e285m9_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,48,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<285) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,48,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<285) - 9'",
+ "modulus": "2^285 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e291m19_5limbs.json b/src/Specific/CurveParameters/solinas64_2e291m19_5limbs.json
new file mode 100644
index 000000000..047934ac6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e291m19_5limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "58.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,58,58,58,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,58,58,58,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<291) - 19'",
+ "modulus": "2^291 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "5"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e291m19_6limbs.json b/src/Specific/CurveParameters/solinas64_2e291m19_6limbs.json
new file mode 100644
index 000000000..f9cd639bd
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e291m19_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<291) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<291) - 19'",
+ "modulus": "2^291 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e321m9_6limbs.json b/src/Specific/CurveParameters/solinas64_2e321m9_6limbs.json
new file mode 100644
index 000000000..e6a43c679
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e321m9_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "53.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,54,53,54,53}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,53,54,53,54,53}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<321) - 9'",
+ "modulus": "2^321 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e321m9_7limbs.json b/src/Specific/CurveParameters/solinas64_2e321m9_7limbs.json
new file mode 100644
index 000000000..22804802a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e321m9_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "45 + 6/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<321) - 9'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<321) - 9'",
+ "modulus": "2^321 - 9",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e322m2e161m1_6limbs.json b/src/Specific/CurveParameters/solinas64_2e322m2e161m1_6limbs.json
new file mode 100644
index 000000000..369590254
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e322m2e161m1_6limbs.json
@@ -0,0 +1,35 @@
+{
+ "base": "53 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 2,
+ 5
+ ],
+ [
+ 3,
+ 0,
+ 4,
+ 1,
+ 5,
+ 2
+ ],
+ [
+ 3,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,53,54,54,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,53,54,54,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "goldilocks": true,
+ "modulus": "2^322 - 2^161 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e322m2e161m1_7limbs.json b/src/Specific/CurveParameters/solinas64_2e322m2e161m1_7limbs.json
new file mode 100644
index 000000000..0d6f4d8e8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e322m2e161m1_7limbs.json
@@ -0,0 +1,36 @@
+{
+ "base": "46",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 2,
+ 6
+ ],
+ [
+ 3,
+ 0,
+ 4,
+ 1,
+ 5,
+ 2,
+ 6
+ ],
+ [
+ 3,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,46}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,46}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1'",
+ "goldilocks": true,
+ "modulus": "2^322 - 2^161 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e336m17_6limbs.json b/src/Specific/CurveParameters/solinas64_2e336m17_6limbs.json
new file mode 100644
index 000000000..08aab358b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e336m17_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "56",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 17'",
+ "modulus": "2^336 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e336m17_7limbs.json b/src/Specific/CurveParameters/solinas64_2e336m17_7limbs.json
new file mode 100644
index 000000000..b242595d6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e336m17_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 17'",
+ "modulus": "2^336 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e336m3_6limbs.json b/src/Specific/CurveParameters/solinas64_2e336m3_6limbs.json
new file mode 100644
index 000000000..3fa2f5b89
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e336m3_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "56",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<336) - 3'",
+ "modulus": "2^336 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e336m3_7limbs.json b/src/Specific/CurveParameters/solinas64_2e336m3_7limbs.json
new file mode 100644
index 000000000..2182ac00b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e336m3_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 3'",
+ "modulus": "2^336 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e338m15_6limbs.json b/src/Specific/CurveParameters/solinas64_2e338m15_6limbs.json
new file mode 100644
index 000000000..be1706289
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e338m15_6limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "56 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,56,57,56,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,56,57,56,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<338) - 15'",
+ "modulus": "2^338 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "6"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e338m15_7limbs.json b/src/Specific/CurveParameters/solinas64_2e338m15_7limbs.json
new file mode 100644
index 000000000..c390e8d6f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e338m15_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48 + 2/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,48,49,48,48,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<338) - 15'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,48,49,48,48,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<338) - 15'",
+ "modulus": "2^338 - 15",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e369m25_7limbs.json b/src/Specific/CurveParameters/solinas64_2e369m25_7limbs.json
new file mode 100644
index 000000000..b3479f8be
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e369m25_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "52 + 5/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,52,53,53,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,52,53,53,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<369) - 25'",
+ "modulus": "2^369 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e369m25_8limbs.json b/src/Specific/CurveParameters/solinas64_2e369m25_8limbs.json
new file mode 100644
index 000000000..b4e820992
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e369m25_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46.125",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,46,46,46,46}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<369) - 25'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,46,46,46,46}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<369) - 25'",
+ "modulus": "2^369 - 25",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e379m19_7limbs.json b/src/Specific/CurveParameters/solinas64_2e379m19_7limbs.json
new file mode 100644
index 000000000..fd0f76927
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e379m19_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 1/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,54,54,54}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,54,54,54}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<379) - 19'",
+ "modulus": "2^379 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e379m19_8limbs.json b/src/Specific/CurveParameters/solinas64_2e379m19_8limbs.json
new file mode 100644
index 000000000..6ab231a34
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e379m19_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.375",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,47,48,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<379) - 19'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,47,48,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<379) - 19'",
+ "modulus": "2^379 - 19",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e382m105_7limbs.json b/src/Specific/CurveParameters/solinas64_2e382m105_7limbs.json
new file mode 100644
index 000000000..db5d43404
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e382m105_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 4/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,54,55,54,55,54}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,54,55,54,55,54}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<382) - 105'",
+ "modulus": "2^382 - 105",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e382m105_8limbs.json b/src/Specific/CurveParameters/solinas64_2e382m105_8limbs.json
new file mode 100644
index 000000000..44a93b62f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e382m105_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.75",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47,48,48,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<382) - 105'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47,48,48,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<382) - 105'",
+ "modulus": "2^382 - 105",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m187_7limbs.json b/src/Specific/CurveParameters/solinas64_2e383m187_7limbs.json
new file mode 100644
index 000000000..1e1b2078b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m187_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 5/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 187'",
+ "modulus": "2^383 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m187_8limbs.json b/src/Specific/CurveParameters/solinas64_2e383m187_8limbs.json
new file mode 100644
index 000000000..dd00cc973
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m187_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.875",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 187'",
+ "modulus": "2^383 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m31_7limbs.json b/src/Specific/CurveParameters/solinas64_2e383m31_7limbs.json
new file mode 100644
index 000000000..ca0fceb7b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m31_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 5/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 31'",
+ "modulus": "2^383 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m31_8limbs.json b/src/Specific/CurveParameters/solinas64_2e383m31_8limbs.json
new file mode 100644
index 000000000..b808d3ffb
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m31_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.875",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 31'",
+ "modulus": "2^383 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m421_7limbs.json b/src/Specific/CurveParameters/solinas64_2e383m421_7limbs.json
new file mode 100644
index 000000000..75c16511d
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m421_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 5/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 421'",
+ "modulus": "2^383 - 421",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e383m421_8limbs.json b/src/Specific/CurveParameters/solinas64_2e383m421_8limbs.json
new file mode 100644
index 000000000..6fc3bb3ee
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e383m421_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "47.875",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 421'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 421'",
+ "modulus": "2^383 - 421",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_10limbs.json b/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_10limbs.json
new file mode 100644
index 000000000..e09796758
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_10limbs.json
@@ -0,0 +1,42 @@
+{
+ "base": "38.4",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 2,
+ 1,
+ 9,
+ 9
+ ],
+ [
+ 3,
+ 2,
+ 0,
+ 4,
+ 1,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9
+ ],
+ [
+ 3,
+ 2,
+ 0,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38,39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38,39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_9limbs.json b/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_9limbs.json
new file mode 100644
index 000000000..61e747149
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m2e128m2e96p2e32m1_9limbs.json
@@ -0,0 +1,41 @@
+{
+ "base": "42 + 2/3",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 2,
+ 1,
+ 8,
+ 8
+ ],
+ [
+ 3,
+ 2,
+ 0,
+ 4,
+ 1,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ [
+ 3,
+ 2,
+ 0,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1'",
+ "modulus": "2^384 - 2^128 - 2^96 + 2^32 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m317_7limbs.json b/src/Specific/CurveParameters/solinas64_2e384m317_7limbs.json
new file mode 100644
index 000000000..f8f948664
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m317_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 6/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<384) - 317'",
+ "modulus": "2^384 - 317",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e384m317_8limbs.json b/src/Specific/CurveParameters/solinas64_2e384m317_8limbs.json
new file mode 100644
index 000000000..15c38b79b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e384m317_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 317'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 317'",
+ "modulus": "2^384 - 317",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e389m21_7limbs.json b/src/Specific/CurveParameters/solinas64_2e389m21_7limbs.json
new file mode 100644
index 000000000..24441cc8c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e389m21_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55 + 4/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,55,56,55,56,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,55,56,55,56,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21'",
+ "modulus": "2^389 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e389m21_8limbs.json b/src/Specific/CurveParameters/solinas64_2e389m21_8limbs.json
new file mode 100644
index 000000000..59ceac665
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e389m21_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.625",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,49,48,49,48}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<389) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,49,48,49,48}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<389) - 21'",
+ "modulus": "2^389 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e401m31_7limbs.json b/src/Specific/CurveParameters/solinas64_2e401m31_7limbs.json
new file mode 100644
index 000000000..8a51e5f13
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e401m31_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "57 + 2/7",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,57,58,57,57,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,57,58,57,57,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31'",
+ "modulus": "2^401 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e401m31_8limbs.json b/src/Specific/CurveParameters/solinas64_2e401m31_8limbs.json
new file mode 100644
index 000000000..c2c951fea
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e401m31_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50.125",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,50,50,50,50}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<401) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,50,50,50,50}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<401) - 31'",
+ "modulus": "2^401 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e413m21_7limbs.json b/src/Specific/CurveParameters/solinas64_2e413m21_7limbs.json
new file mode 100644
index 000000000..bef9bc7cb
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e413m21_7limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "59",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,59,59,59,59}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,59,59,59,59}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<413) - 21'",
+ "modulus": "2^413 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "7"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e413m21_8limbs.json b/src/Specific/CurveParameters/solinas64_2e413m21_8limbs.json
new file mode 100644
index 000000000..d32fdb772
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e413m21_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.625",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,51,52,52,51,52,51}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<413) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,51,52,52,51,52,51}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<413) - 21'",
+ "modulus": "2^413 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e414m17_8limbs.json b/src/Specific/CurveParameters/solinas64_2e414m17_8limbs.json
new file mode 100644
index 000000000..10752da45
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e414m17_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.75",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,51,52,52,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,51,52,52,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<414) - 17'",
+ "modulus": "2^414 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e414m17_9limbs.json b/src/Specific/CurveParameters/solinas64_2e414m17_9limbs.json
new file mode 100644
index 000000000..7da1fef4f
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e414m17_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<414) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<414) - 17'",
+ "modulus": "2^414 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e416m2e208m1_8limbs.json b/src/Specific/CurveParameters/solinas64_2e416m2e208m1_8limbs.json
new file mode 100644
index 000000000..ce36e69a4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e416m2e208m1_8limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "52",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 7
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "goldilocks": true,
+ "modulus": "2^416 - 2^208 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e416m2e208m1_9limbs.json b/src/Specific/CurveParameters/solinas64_2e416m2e208m1_9limbs.json
new file mode 100644
index 000000000..43d4e14a2
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e416m2e208m1_9limbs.json
@@ -0,0 +1,38 @@
+{
+ "base": "46 + 2/9",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 8
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3,
+ 8
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,47,46,46,46,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,47,46,46,46,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1'",
+ "goldilocks": true,
+ "modulus": "2^416 - 2^208 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e444m17_8limbs.json b/src/Specific/CurveParameters/solinas64_2e444m17_8limbs.json
new file mode 100644
index 000000000..69f55eade
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e444m17_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,56,55,56,55,56,55}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,55,56,55,56,55,56,55}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<444) - 17'",
+ "modulus": "2^444 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e444m17_9limbs.json b/src/Specific/CurveParameters/solinas64_2e444m17_9limbs.json
new file mode 100644
index 000000000..a50cdcbc5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e444m17_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "49 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,49,50,49,49,50,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<444) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,49,50,49,49,50,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<444) - 17'",
+ "modulus": "2^444 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e448m2e224m1_10limbs.json b/src/Specific/CurveParameters/solinas64_2e448m2e224m1_10limbs.json
new file mode 100644
index 000000000..efdd04156
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e448m2e224m1_10limbs.json
@@ -0,0 +1,39 @@
+{
+ "base": "44.8",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 4,
+ 9
+ ],
+ [
+ 5,
+ 0,
+ 6,
+ 1,
+ 7,
+ 2,
+ 8,
+ 3,
+ 9,
+ 4
+ ],
+ [
+ 5,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44,45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44,45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "goldilocks": true,
+ "modulus": "2^448 - 2^224 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e448m2e224m1_8limbs.json b/src/Specific/CurveParameters/solinas64_2e448m2e224m1_8limbs.json
new file mode 100644
index 000000000..fe86ac402
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e448m2e224m1_8limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "56",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 7
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56,56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1'",
+ "goldilocks": true,
+ "modulus": "2^448 - 2^224 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e450m2e225m1_10limbs.json b/src/Specific/CurveParameters/solinas64_2e450m2e225m1_10limbs.json
new file mode 100644
index 000000000..08b573c44
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e450m2e225m1_10limbs.json
@@ -0,0 +1,39 @@
+{
+ "base": "45",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 4,
+ 9
+ ],
+ [
+ 5,
+ 0,
+ 6,
+ 1,
+ 7,
+ 2,
+ 8,
+ 3,
+ 9,
+ 4
+ ],
+ [
+ 5,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,45,45,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,45,45,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "goldilocks": true,
+ "modulus": "2^450 - 2^225 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e450m2e225m1_8limbs.json b/src/Specific/CurveParameters/solinas64_2e450m2e225m1_8limbs.json
new file mode 100644
index 000000000..31ba16aa6
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e450m2e225m1_8limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "56.25",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 7
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,56,56,57,56,56,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,56,56,57,56,56,56}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1'",
+ "goldilocks": true,
+ "modulus": "2^450 - 2^225 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e452m3_8limbs.json b/src/Specific/CurveParameters/solinas64_2e452m3_8limbs.json
new file mode 100644
index 000000000..8e4913e9c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e452m3_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "56.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,57,56,57,56,57,56}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{57,56,57,56,57,56,57,56}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<452) - 3'",
+ "modulus": "2^452 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e452m3_9limbs.json b/src/Specific/CurveParameters/solinas64_2e452m3_9limbs.json
new file mode 100644
index 000000000..ec5222ae4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e452m3_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "50 + 2/9",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,51,50,50,50,50}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<452) - 3'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,51,50,50,50,50}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<452) - 3'",
+ "modulus": "2^452 - 3",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e468m17_8limbs.json b/src/Specific/CurveParameters/solinas64_2e468m17_8limbs.json
new file mode 100644
index 000000000..e2bd17fc5
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e468m17_8limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "58.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,58,59,58,59,58,59,58}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,58,59,58,59,58,59,58}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<468) - 17'",
+ "modulus": "2^468 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e468m17_9limbs.json b/src/Specific/CurveParameters/solinas64_2e468m17_9limbs.json
new file mode 100644
index 000000000..ca367ecff
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e468m17_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "52",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<468) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<468) - 17'",
+ "modulus": "2^468 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e480m2e240m1_10limbs.json b/src/Specific/CurveParameters/solinas64_2e480m2e240m1_10limbs.json
new file mode 100644
index 000000000..7d260d2f2
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e480m2e240m1_10limbs.json
@@ -0,0 +1,39 @@
+{
+ "base": "48",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 4,
+ 9
+ ],
+ [
+ 5,
+ 0,
+ 6,
+ 1,
+ 7,
+ 2,
+ 8,
+ 3,
+ 9,
+ 4
+ ],
+ [
+ 5,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "goldilocks": true,
+ "modulus": "2^480 - 2^240 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e480m2e240m1_8limbs.json b/src/Specific/CurveParameters/solinas64_2e480m2e240m1_8limbs.json
new file mode 100644
index 000000000..199faa549
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e480m2e240m1_8limbs.json
@@ -0,0 +1,37 @@
+{
+ "base": "60",
+ "bitwidth": 64,
+ "carry_chains": [
+ [
+ 3,
+ 7
+ ],
+ [
+ 4,
+ 0,
+ 5,
+ 1,
+ 6,
+ 2,
+ 7,
+ 3
+ ],
+ [
+ 4,
+ 0
+ ]
+ ],
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{60,60,60,60,60,60,60,60}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{60,60,60,60,60,60,60,60}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1'",
+ "goldilocks": true,
+ "modulus": "2^480 - 2^240 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "8"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e488m17_10limbs.json b/src/Specific/CurveParameters/solinas64_2e488m17_10limbs.json
new file mode 100644
index 000000000..8dc0a1455
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e488m17_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.8",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,48,49,49,49,49,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,48,49,49,49,49,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<488) - 17'",
+ "modulus": "2^488 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e488m17_9limbs.json b/src/Specific/CurveParameters/solinas64_2e488m17_9limbs.json
new file mode 100644
index 000000000..ea15110cb
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e488m17_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 2/9",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,55,54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<488) - 17'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,55,54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<488) - 17'",
+ "modulus": "2^488 - 17",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e489m21_10limbs.json b/src/Specific/CurveParameters/solinas64_2e489m21_10limbs.json
new file mode 100644
index 000000000..5d9bdada8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e489m21_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "48.9",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,49,49,49,49,49,48}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,49,49,49,49,49,48}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<489) - 21'",
+ "modulus": "2^489 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e489m21_9limbs.json b/src/Specific/CurveParameters/solinas64_2e489m21_9limbs.json
new file mode 100644
index 000000000..7ea6e38d4
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e489m21_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "54 + 1/3",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,55,54,54,55,54,54}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<489) - 21'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,55,54,54,55,54,54}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<489) - 21'",
+ "modulus": "2^489 - 21",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e495m31_10limbs.json b/src/Specific/CurveParameters/solinas64_2e495m31_10limbs.json
new file mode 100644
index 000000000..cc6a1946c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e495m31_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "49.5",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49,50,49,50,49,50,49}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49,50,49,50,49,50,49}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<495) - 31'",
+ "modulus": "2^495 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e495m31_9limbs.json b/src/Specific/CurveParameters/solinas64_2e495m31_9limbs.json
new file mode 100644
index 000000000..2ee6173c1
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e495m31_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "55",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,55,55,55}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<495) - 31'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,55,55,55}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<495) - 31'",
+ "modulus": "2^495 - 31",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e511m187_10limbs.json b/src/Specific/CurveParameters/solinas64_2e511m187_10limbs.json
new file mode 100644
index 000000000..f7e0519bc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e511m187_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.1",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<511) - 187'",
+ "modulus": "2^511 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e511m187_11limbs.json b/src/Specific/CurveParameters/solinas64_2e511m187_11limbs.json
new file mode 100644
index 000000000..e7366410c
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e511m187_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46 + 5/11",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 187'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 187'",
+ "modulus": "2^511 - 187",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e511m481_10limbs.json b/src/Specific/CurveParameters/solinas64_2e511m481_10limbs.json
new file mode 100644
index 000000000..894a698a1
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e511m481_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.1",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<511) - 481'",
+ "modulus": "2^511 - 481",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e511m481_11limbs.json b/src/Specific/CurveParameters/solinas64_2e511m481_11limbs.json
new file mode 100644
index 000000000..c448c4d2a
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e511m481_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46 + 5/11",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 481'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 481'",
+ "modulus": "2^511 - 481",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e512m569_10limbs.json b/src/Specific/CurveParameters/solinas64_2e512m569_10limbs.json
new file mode 100644
index 000000000..4fadeab8b
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e512m569_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "51.2",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<512) - 569'",
+ "modulus": "2^512 - 569",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e512m569_11limbs.json b/src/Specific/CurveParameters/solinas64_2e512m569_11limbs.json
new file mode 100644
index 000000000..8e0d053fc
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e512m569_11limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "46 + 6/11",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46,47,46,47,46,47,46,47,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<512) - 569'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46,47,46,47,46,47,46,47,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<512) - 569'",
+ "modulus": "2^512 - 569",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "11"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e521m1_10limbs.json b/src/Specific/CurveParameters/solinas64_2e521m1_10limbs.json
new file mode 100644
index 000000000..006c99443
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e521m1_10limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "52.1",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<521) - 1'",
+ "modulus": "2^521 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "10"
+}
diff --git a/src/Specific/CurveParameters/solinas64_2e521m1_9limbs.json b/src/Specific/CurveParameters/solinas64_2e521m1_9limbs.json
new file mode 100644
index 000000000..7b11511a8
--- /dev/null
+++ b/src/Specific/CurveParameters/solinas64_2e521m1_9limbs.json
@@ -0,0 +1,17 @@
+{
+ "base": "57 + 8/9",
+ "bitwidth": 64,
+ "carry_chains": "default",
+ "coef_div_modulus": "2",
+ "compiler": "clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58,58,58,58,58,58,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1'",
+ "compilerxx": "clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58,58,58,58,58,58,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1'",
+ "modulus": "2^521 - 1",
+ "operations": [
+ "femul",
+ "feadd",
+ "fesub",
+ "fesquare",
+ "freeze"
+ ],
+ "sz": "9"
+}
diff --git a/src/Specific/montgomery32_2e127m1/Synthesis.v b/src/Specific/montgomery32_2e127m1/Synthesis.v
deleted file mode 100644
index e038b9dcb..000000000
--- a/src/Specific/montgomery32_2e127m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e127m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e127m1/feadd.c b/src/Specific/montgomery32_2e127m1/feadd.c
deleted file mode 100644
index 83328c32f..000000000
--- a/src/Specific/montgomery32_2e127m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint32_t out[4], const uint32_t in1[4], const uint32_t in2[4]) {
- { const uint32_t x8 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x14 = in2[3];
- { const uint32_t x15 = in2[2];
- { const uint32_t x13 = in2[1];
- { const uint32_t x11 = in2[0];
- { uint32_t x17; uint8_t x18 = _addcarryx_u32(0x0, x5, x11, &x17);
- { uint32_t x20; uint8_t x21 = _addcarryx_u32(x18, x7, x13, &x20);
- { uint32_t x23; uint8_t x24 = _addcarryx_u32(x21, x9, x15, &x23);
- { uint32_t x26; uint8_t x27 = _addcarryx_u32(x24, x8, x14, &x26);
- { uint32_t x29; uint8_t x30 = _subborrow_u32(0x0, x17, 0xffffffff, &x29);
- { uint32_t x32; uint8_t x33 = _subborrow_u32(x30, x20, 0xffffffff, &x32);
- { uint32_t x35; uint8_t x36 = _subborrow_u32(x33, x23, 0xffffffff, &x35);
- { uint32_t x38; uint8_t x39 = _subborrow_u32(x36, x26, 0x7fffffff, &x38);
- { uint32_t _; uint8_t x42 = _subborrow_u32(x39, x27, 0x0, &_);
- { uint32_t x43 = cmovznz32(x42, x38, x26);
- { uint32_t x44 = cmovznz32(x42, x35, x23);
- { uint32_t x45 = cmovznz32(x42, x32, x20);
- { uint32_t x46 = cmovznz32(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e127m1/feadd.v b/src/Specific/montgomery32_2e127m1/feadd.v
deleted file mode 100644
index 8995236e7..000000000
--- a/src/Specific/montgomery32_2e127m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e127m1/feaddDisplay.log b/src/Specific/montgomery32_2e127m1/feaddDisplay.log
deleted file mode 100644
index 6368982f5..000000000
--- a/src/Specific/montgomery32_2e127m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint32_t x17, uint8_t x18 = addcarryx_u32(0x0, x5, x11);
- uint32_t x20, uint8_t x21 = addcarryx_u32(x18, x7, x13);
- uint32_t x23, uint8_t x24 = addcarryx_u32(x21, x9, x15);
- uint32_t x26, uint8_t x27 = addcarryx_u32(x24, x8, x14);
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x17, 0xffffffff);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x20, 0xffffffff);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x23, 0xffffffff);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x26, 0x7fffffff);
- uint32_t _, uint8_t x42 = subborrow_u32(x39, x27, 0x0);
- uint32_t x43 = cmovznz32(x42, x38, x26);
- uint32_t x44 = cmovznz32(x42, x35, x23);
- uint32_t x45 = cmovznz32(x42, x32, x20);
- uint32_t x46 = cmovznz32(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e127m1/feaddDisplay.v b/src/Specific/montgomery32_2e127m1/feaddDisplay.v
deleted file mode 100644
index 742233291..000000000
--- a/src/Specific/montgomery32_2e127m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e127m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e127m1/femul.c b/src/Specific/montgomery32_2e127m1/femul.c
deleted file mode 100644
index 49619dbef..000000000
--- a/src/Specific/montgomery32_2e127m1/femul.c
+++ /dev/null
@@ -1,126 +0,0 @@
-static void femul(uint32_t out[4], const uint32_t in1[4], const uint32_t in2[4]) {
- { const uint32_t x8 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x14 = in2[3];
- { const uint32_t x15 = in2[2];
- { const uint32_t x13 = in2[1];
- { const uint32_t x11 = in2[0];
- { uint32_t x18; uint32_t x17 = _mulx_u32(x5, x11, &x18);
- { uint32_t x21; uint32_t x20 = _mulx_u32(x5, x13, &x21);
- { uint32_t x24; uint32_t x23 = _mulx_u32(x5, x15, &x24);
- { uint32_t x27; uint32_t x26 = _mulx_u32(x5, x14, &x27);
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x18, x20, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x21, x23, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x24, x26, &x35);
- { uint32_t x38; uint8_t _ = _addcarryx_u32(0x0, x36, x27, &x38);
- { uint32_t x42; uint32_t x41 = _mulx_u32(x17, 0xffffffff, &x42);
- { uint32_t x45; uint32_t x44 = _mulx_u32(x17, 0xffffffff, &x45);
- { uint32_t x48; uint32_t x47 = _mulx_u32(x17, 0xffffffff, &x48);
- { uint32_t x51; uint32_t x50 = _mulx_u32(x17, 0x7fffffff, &x51);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x42, x44, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x45, x47, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x48, x50, &x59);
- { uint32_t x62; uint8_t _ = _addcarryx_u32(0x0, x60, x51, &x62);
- { uint32_t _; uint8_t x66 = _addcarryx_u32(0x0, x17, x41, &_);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x29, x53, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x32, x56, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x35, x59, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x38, x62, &x77);
- { uint32_t x81; uint32_t x80 = _mulx_u32(x7, x11, &x81);
- { uint32_t x84; uint32_t x83 = _mulx_u32(x7, x13, &x84);
- { uint32_t x87; uint32_t x86 = _mulx_u32(x7, x15, &x87);
- { uint32_t x90; uint32_t x89 = _mulx_u32(x7, x14, &x90);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(0x0, x81, x83, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x84, x86, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x87, x89, &x98);
- { uint32_t x101; uint8_t _ = _addcarryx_u32(0x0, x99, x90, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(0x0, x68, x80, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x71, x92, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x74, x95, &x110);
- { uint32_t x113; uint8_t x114 = _addcarryx_u32(x111, x77, x98, &x113);
- { uint32_t x116; uint8_t x117 = _addcarryx_u32(x114, x78, x101, &x116);
- { uint32_t x120; uint32_t x119 = _mulx_u32(x104, 0xffffffff, &x120);
- { uint32_t x123; uint32_t x122 = _mulx_u32(x104, 0xffffffff, &x123);
- { uint32_t x126; uint32_t x125 = _mulx_u32(x104, 0xffffffff, &x126);
- { uint32_t x129; uint32_t x128 = _mulx_u32(x104, 0x7fffffff, &x129);
- { uint32_t x131; uint8_t x132 = _addcarryx_u32(0x0, x120, x122, &x131);
- { uint32_t x134; uint8_t x135 = _addcarryx_u32(x132, x123, x125, &x134);
- { uint32_t x137; uint8_t x138 = _addcarryx_u32(x135, x126, x128, &x137);
- { uint32_t x140; uint8_t _ = _addcarryx_u32(0x0, x138, x129, &x140);
- { uint32_t _; uint8_t x144 = _addcarryx_u32(0x0, x104, x119, &_);
- { uint32_t x146; uint8_t x147 = _addcarryx_u32(x144, x107, x131, &x146);
- { uint32_t x149; uint8_t x150 = _addcarryx_u32(x147, x110, x134, &x149);
- { uint32_t x152; uint8_t x153 = _addcarryx_u32(x150, x113, x137, &x152);
- { uint32_t x155; uint8_t x156 = _addcarryx_u32(x153, x116, x140, &x155);
- { uint8_t x157 = (x156 + x117);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x9, x11, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x9, x13, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x9, x15, &x166);
- { uint32_t x169; uint32_t x168 = _mulx_u32(x9, x14, &x169);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(0x0, x160, x162, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x163, x165, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x166, x168, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x169, &x180);
- { uint32_t x183; uint8_t x184 = _addcarryx_u32(0x0, x146, x159, &x183);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x149, x171, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x152, x174, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x155, x177, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x157, x180, &x195);
- { uint32_t x199; uint32_t x198 = _mulx_u32(x183, 0xffffffff, &x199);
- { uint32_t x202; uint32_t x201 = _mulx_u32(x183, 0xffffffff, &x202);
- { uint32_t x205; uint32_t x204 = _mulx_u32(x183, 0xffffffff, &x205);
- { uint32_t x208; uint32_t x207 = _mulx_u32(x183, 0x7fffffff, &x208);
- { uint32_t x210; uint8_t x211 = _addcarryx_u32(0x0, x199, x201, &x210);
- { uint32_t x213; uint8_t x214 = _addcarryx_u32(x211, x202, x204, &x213);
- { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x205, x207, &x216);
- { uint32_t x219; uint8_t _ = _addcarryx_u32(0x0, x217, x208, &x219);
- { uint32_t _; uint8_t x223 = _addcarryx_u32(0x0, x183, x198, &_);
- { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x186, x210, &x225);
- { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x189, x213, &x228);
- { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x192, x216, &x231);
- { uint32_t x234; uint8_t x235 = _addcarryx_u32(x232, x195, x219, &x234);
- { uint8_t x236 = (x235 + x196);
- { uint32_t x239; uint32_t x238 = _mulx_u32(x8, x11, &x239);
- { uint32_t x242; uint32_t x241 = _mulx_u32(x8, x13, &x242);
- { uint32_t x245; uint32_t x244 = _mulx_u32(x8, x15, &x245);
- { uint32_t x248; uint32_t x247 = _mulx_u32(x8, x14, &x248);
- { uint32_t x250; uint8_t x251 = _addcarryx_u32(0x0, x239, x241, &x250);
- { uint32_t x253; uint8_t x254 = _addcarryx_u32(x251, x242, x244, &x253);
- { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x245, x247, &x256);
- { uint32_t x259; uint8_t _ = _addcarryx_u32(0x0, x257, x248, &x259);
- { uint32_t x262; uint8_t x263 = _addcarryx_u32(0x0, x225, x238, &x262);
- { uint32_t x265; uint8_t x266 = _addcarryx_u32(x263, x228, x250, &x265);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(x266, x231, x253, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x234, x256, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x236, x259, &x274);
- { uint32_t x278; uint32_t x277 = _mulx_u32(x262, 0xffffffff, &x278);
- { uint32_t x281; uint32_t x280 = _mulx_u32(x262, 0xffffffff, &x281);
- { uint32_t x284; uint32_t x283 = _mulx_u32(x262, 0xffffffff, &x284);
- { uint32_t x287; uint32_t x286 = _mulx_u32(x262, 0x7fffffff, &x287);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(0x0, x278, x280, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x281, x283, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x284, x286, &x295);
- { uint32_t x298; uint8_t _ = _addcarryx_u32(0x0, x296, x287, &x298);
- { uint32_t _; uint8_t x302 = _addcarryx_u32(0x0, x262, x277, &_);
- { uint32_t x304; uint8_t x305 = _addcarryx_u32(x302, x265, x289, &x304);
- { uint32_t x307; uint8_t x308 = _addcarryx_u32(x305, x268, x292, &x307);
- { uint32_t x310; uint8_t x311 = _addcarryx_u32(x308, x271, x295, &x310);
- { uint32_t x313; uint8_t x314 = _addcarryx_u32(x311, x274, x298, &x313);
- { uint8_t x315 = (x314 + x275);
- { uint32_t x317; uint8_t x318 = _subborrow_u32(0x0, x304, 0xffffffff, &x317);
- { uint32_t x320; uint8_t x321 = _subborrow_u32(x318, x307, 0xffffffff, &x320);
- { uint32_t x323; uint8_t x324 = _subborrow_u32(x321, x310, 0xffffffff, &x323);
- { uint32_t x326; uint8_t x327 = _subborrow_u32(x324, x313, 0x7fffffff, &x326);
- { uint32_t _; uint8_t x330 = _subborrow_u32(x327, x315, 0x0, &_);
- { uint32_t x331 = cmovznz32(x330, x326, x313);
- { uint32_t x332 = cmovznz32(x330, x323, x310);
- { uint32_t x333 = cmovznz32(x330, x320, x307);
- { uint32_t x334 = cmovznz32(x330, x317, x304);
- out[0] = x334;
- out[1] = x333;
- out[2] = x332;
- out[3] = x331;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e127m1/femul.v b/src/Specific/montgomery32_2e127m1/femul.v
deleted file mode 100644
index 96457ad8a..000000000
--- a/src/Specific/montgomery32_2e127m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e127m1/femulDisplay.log b/src/Specific/montgomery32_2e127m1/femulDisplay.log
deleted file mode 100644
index 0fa546aca..000000000
--- a/src/Specific/montgomery32_2e127m1/femulDisplay.log
+++ /dev/null
@@ -1,118 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint32_t x17, uint32_t x18 = mulx_u32(x5, x11);
- uint32_t x20, uint32_t x21 = mulx_u32(x5, x13);
- uint32_t x23, uint32_t x24 = mulx_u32(x5, x15);
- uint32_t x26, uint32_t x27 = mulx_u32(x5, x14);
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x18, x20);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x21, x23);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x24, x26);
- uint32_t x38, uint8_t _ = addcarryx_u32(0x0, x36, x27);
- uint32_t x41, uint32_t x42 = mulx_u32(x17, 0xffffffff);
- uint32_t x44, uint32_t x45 = mulx_u32(x17, 0xffffffff);
- uint32_t x47, uint32_t x48 = mulx_u32(x17, 0xffffffff);
- uint32_t x50, uint32_t x51 = mulx_u32(x17, 0x7fffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x42, x44);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x45, x47);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x48, x50);
- uint32_t x62, uint8_t _ = addcarryx_u32(0x0, x60, x51);
- uint32_t _, uint8_t x66 = addcarryx_u32(0x0, x17, x41);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x29, x53);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x32, x56);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x35, x59);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x38, x62);
- uint32_t x80, uint32_t x81 = mulx_u32(x7, x11);
- uint32_t x83, uint32_t x84 = mulx_u32(x7, x13);
- uint32_t x86, uint32_t x87 = mulx_u32(x7, x15);
- uint32_t x89, uint32_t x90 = mulx_u32(x7, x14);
- uint32_t x92, uint8_t x93 = addcarryx_u32(0x0, x81, x83);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x84, x86);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x87, x89);
- uint32_t x101, uint8_t _ = addcarryx_u32(0x0, x99, x90);
- uint32_t x104, uint8_t x105 = addcarryx_u32(0x0, x68, x80);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x71, x92);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x74, x95);
- uint32_t x113, uint8_t x114 = addcarryx_u32(x111, x77, x98);
- uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x78, x101);
- uint32_t x119, uint32_t x120 = mulx_u32(x104, 0xffffffff);
- uint32_t x122, uint32_t x123 = mulx_u32(x104, 0xffffffff);
- uint32_t x125, uint32_t x126 = mulx_u32(x104, 0xffffffff);
- uint32_t x128, uint32_t x129 = mulx_u32(x104, 0x7fffffff);
- uint32_t x131, uint8_t x132 = addcarryx_u32(0x0, x120, x122);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x123, x125);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x126, x128);
- uint32_t x140, uint8_t _ = addcarryx_u32(0x0, x138, x129);
- uint32_t _, uint8_t x144 = addcarryx_u32(0x0, x104, x119);
- uint32_t x146, uint8_t x147 = addcarryx_u32(x144, x107, x131);
- uint32_t x149, uint8_t x150 = addcarryx_u32(x147, x110, x134);
- uint32_t x152, uint8_t x153 = addcarryx_u32(x150, x113, x137);
- uint32_t x155, uint8_t x156 = addcarryx_u32(x153, x116, x140);
- uint8_t x157 = (x156 + x117);
- uint32_t x159, uint32_t x160 = mulx_u32(x9, x11);
- uint32_t x162, uint32_t x163 = mulx_u32(x9, x13);
- uint32_t x165, uint32_t x166 = mulx_u32(x9, x15);
- uint32_t x168, uint32_t x169 = mulx_u32(x9, x14);
- uint32_t x171, uint8_t x172 = addcarryx_u32(0x0, x160, x162);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x163, x165);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x166, x168);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x169);
- uint32_t x183, uint8_t x184 = addcarryx_u32(0x0, x146, x159);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x149, x171);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x152, x174);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x155, x177);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x157, x180);
- uint32_t x198, uint32_t x199 = mulx_u32(x183, 0xffffffff);
- uint32_t x201, uint32_t x202 = mulx_u32(x183, 0xffffffff);
- uint32_t x204, uint32_t x205 = mulx_u32(x183, 0xffffffff);
- uint32_t x207, uint32_t x208 = mulx_u32(x183, 0x7fffffff);
- uint32_t x210, uint8_t x211 = addcarryx_u32(0x0, x199, x201);
- uint32_t x213, uint8_t x214 = addcarryx_u32(x211, x202, x204);
- uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x205, x207);
- uint32_t x219, uint8_t _ = addcarryx_u32(0x0, x217, x208);
- uint32_t _, uint8_t x223 = addcarryx_u32(0x0, x183, x198);
- uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x186, x210);
- uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x189, x213);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x192, x216);
- uint32_t x234, uint8_t x235 = addcarryx_u32(x232, x195, x219);
- uint8_t x236 = (x235 + x196);
- uint32_t x238, uint32_t x239 = mulx_u32(x8, x11);
- uint32_t x241, uint32_t x242 = mulx_u32(x8, x13);
- uint32_t x244, uint32_t x245 = mulx_u32(x8, x15);
- uint32_t x247, uint32_t x248 = mulx_u32(x8, x14);
- uint32_t x250, uint8_t x251 = addcarryx_u32(0x0, x239, x241);
- uint32_t x253, uint8_t x254 = addcarryx_u32(x251, x242, x244);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x245, x247);
- uint32_t x259, uint8_t _ = addcarryx_u32(0x0, x257, x248);
- uint32_t x262, uint8_t x263 = addcarryx_u32(0x0, x225, x238);
- uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x228, x250);
- uint32_t x268, uint8_t x269 = addcarryx_u32(x266, x231, x253);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x234, x256);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x236, x259);
- uint32_t x277, uint32_t x278 = mulx_u32(x262, 0xffffffff);
- uint32_t x280, uint32_t x281 = mulx_u32(x262, 0xffffffff);
- uint32_t x283, uint32_t x284 = mulx_u32(x262, 0xffffffff);
- uint32_t x286, uint32_t x287 = mulx_u32(x262, 0x7fffffff);
- uint32_t x289, uint8_t x290 = addcarryx_u32(0x0, x278, x280);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x281, x283);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x284, x286);
- uint32_t x298, uint8_t _ = addcarryx_u32(0x0, x296, x287);
- uint32_t _, uint8_t x302 = addcarryx_u32(0x0, x262, x277);
- uint32_t x304, uint8_t x305 = addcarryx_u32(x302, x265, x289);
- uint32_t x307, uint8_t x308 = addcarryx_u32(x305, x268, x292);
- uint32_t x310, uint8_t x311 = addcarryx_u32(x308, x271, x295);
- uint32_t x313, uint8_t x314 = addcarryx_u32(x311, x274, x298);
- uint8_t x315 = (x314 + x275);
- uint32_t x317, uint8_t x318 = subborrow_u32(0x0, x304, 0xffffffff);
- uint32_t x320, uint8_t x321 = subborrow_u32(x318, x307, 0xffffffff);
- uint32_t x323, uint8_t x324 = subborrow_u32(x321, x310, 0xffffffff);
- uint32_t x326, uint8_t x327 = subborrow_u32(x324, x313, 0x7fffffff);
- uint32_t _, uint8_t x330 = subborrow_u32(x327, x315, 0x0);
- uint32_t x331 = cmovznz32(x330, x326, x313);
- uint32_t x332 = cmovznz32(x330, x323, x310);
- uint32_t x333 = cmovznz32(x330, x320, x307);
- uint32_t x334 = cmovznz32(x330, x317, x304);
- return (x331, x332, x333, x334))
-(x, x0)%core
- : word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e127m1/femulDisplay.v b/src/Specific/montgomery32_2e127m1/femulDisplay.v
deleted file mode 100644
index af70cdbdd..000000000
--- a/src/Specific/montgomery32_2e127m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e127m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e127m1/fenz.c b/src/Specific/montgomery32_2e127m1/fenz.c
deleted file mode 100644
index 65f47ec44..000000000
--- a/src/Specific/montgomery32_2e127m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[4]) {
- { const uint32_t x5 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x7 = (x6 | x5);
- { uint32_t x8 = (x4 | x7);
- { uint32_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e127m1/fenz.v b/src/Specific/montgomery32_2e127m1/fenz.v
deleted file mode 100644
index 1fc33d28f..000000000
--- a/src/Specific/montgomery32_2e127m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e127m1/fenzDisplay.log b/src/Specific/montgomery32_2e127m1/fenzDisplay.log
deleted file mode 100644
index 1b557691b..000000000
--- a/src/Specific/montgomery32_2e127m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint32_t x7 = (x6 | x5);
- uint32_t x8 = (x4 | x7);
- uint32_t x9 = (x2 | x8);
- return x9)
-x
- : word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e127m1/fenzDisplay.v b/src/Specific/montgomery32_2e127m1/fenzDisplay.v
deleted file mode 100644
index 62b2f7376..000000000
--- a/src/Specific/montgomery32_2e127m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e127m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e127m1/feopp.c b/src/Specific/montgomery32_2e127m1/feopp.c
deleted file mode 100644
index 4109fa0d9..000000000
--- a/src/Specific/montgomery32_2e127m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint32_t out[4], const uint32_t in1[4]) {
- { const uint32_t x5 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x8; uint8_t x9 = _subborrow_u32(0x0, 0x0, x2, &x8);
- { uint32_t x11; uint8_t x12 = _subborrow_u32(x9, 0x0, x4, &x11);
- { uint32_t x14; uint8_t x15 = _subborrow_u32(x12, 0x0, x6, &x14);
- { uint32_t x17; uint8_t x18 = _subborrow_u32(x15, 0x0, x5, &x17);
- { uint32_t x19 = cmovznz32(x18, 0x0, 0xffffffff);
- { uint32_t x20 = (x19 & 0xffffffff);
- { uint32_t x22; uint8_t x23 = _addcarryx_u32(0x0, x8, x20, &x22);
- { uint32_t x24 = (x19 & 0xffffffff);
- { uint32_t x26; uint8_t x27 = _addcarryx_u32(x23, x11, x24, &x26);
- { uint32_t x28 = (x19 & 0xffffffff);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x27, x14, x28, &x30);
- { uint32_t x32 = (x19 & 0x7fffffff);
- { uint32_t x34; uint8_t _ = _addcarryx_u32(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e127m1/feopp.v b/src/Specific/montgomery32_2e127m1/feopp.v
deleted file mode 100644
index fff731deb..000000000
--- a/src/Specific/montgomery32_2e127m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e127m1/feoppDisplay.log b/src/Specific/montgomery32_2e127m1/feoppDisplay.log
deleted file mode 100644
index d9265af7f..000000000
--- a/src/Specific/montgomery32_2e127m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint32_t x8, uint8_t x9 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x11, uint8_t x12 = subborrow_u32(x9, 0x0, x4);
- uint32_t x14, uint8_t x15 = subborrow_u32(x12, 0x0, x6);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x5);
- uint32_t x19 = cmovznz32(x18, 0x0, 0xffffffff);
- uint32_t x20 = (x19 & 0xffffffff);
- uint32_t x22, uint8_t x23 = addcarryx_u32(0x0, x8, x20);
- uint32_t x24 = (x19 & 0xffffffff);
- uint32_t x26, uint8_t x27 = addcarryx_u32(x23, x11, x24);
- uint32_t x28 = (x19 & 0xffffffff);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x27, x14, x28);
- uint32_t x32 = (x19 & 0x7fffffff);
- uint32_t x34, uint8_t _ = addcarryx_u32(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e127m1/feoppDisplay.v b/src/Specific/montgomery32_2e127m1/feoppDisplay.v
deleted file mode 100644
index 6feb683db..000000000
--- a/src/Specific/montgomery32_2e127m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e127m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e127m1/fesquare.c b/src/Specific/montgomery32_2e127m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e127m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e127m1/fesub.c b/src/Specific/montgomery32_2e127m1/fesub.c
deleted file mode 100644
index 8e0bc2a3b..000000000
--- a/src/Specific/montgomery32_2e127m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint32_t out[4], const uint32_t in1[4], const uint32_t in2[4]) {
- { const uint32_t x8 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x14 = in2[3];
- { const uint32_t x15 = in2[2];
- { const uint32_t x13 = in2[1];
- { const uint32_t x11 = in2[0];
- { uint32_t x17; uint8_t x18 = _subborrow_u32(0x0, x5, x11, &x17);
- { uint32_t x20; uint8_t x21 = _subborrow_u32(x18, x7, x13, &x20);
- { uint32_t x23; uint8_t x24 = _subborrow_u32(x21, x9, x15, &x23);
- { uint32_t x26; uint8_t x27 = _subborrow_u32(x24, x8, x14, &x26);
- { uint32_t x28 = cmovznz32(x27, 0x0, 0xffffffff);
- { uint32_t x29 = (x28 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(0x0, x17, x29, &x31);
- { uint32_t x33 = (x28 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x20, x33, &x35);
- { uint32_t x37 = (x28 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x23, x37, &x39);
- { uint32_t x41 = (x28 & 0x7fffffff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e127m1/fesub.v b/src/Specific/montgomery32_2e127m1/fesub.v
deleted file mode 100644
index 1f3ad36da..000000000
--- a/src/Specific/montgomery32_2e127m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e127m1/fesubDisplay.log b/src/Specific/montgomery32_2e127m1/fesubDisplay.log
deleted file mode 100644
index ac3d00bf1..000000000
--- a/src/Specific/montgomery32_2e127m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint32_t x17, uint8_t x18 = subborrow_u32(0x0, x5, x11);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, x7, x13);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, x9, x15);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, x8, x14);
- uint32_t x28 = cmovznz32(x27, 0x0, 0xffffffff);
- uint32_t x29 = (x28 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(0x0, x17, x29);
- uint32_t x33 = (x28 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x20, x33);
- uint32_t x37 = (x28 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x23, x37);
- uint32_t x41 = (x28 & 0x7fffffff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e127m1/fesubDisplay.v b/src/Specific/montgomery32_2e127m1/fesubDisplay.v
deleted file mode 100644
index a7fd040d4..000000000
--- a/src/Specific/montgomery32_2e127m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e127m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e127m1/CurveParameters.v b/src/Specific/montgomery32_2e127m1_4limbs/CurveParameters.v
index 119c9782f..119c9782f 100644
--- a/src/Specific/montgomery32_2e127m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e127m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/Synthesis.v b/src/Specific/montgomery32_2e127m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..f6de13a17
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e127m1/compiler.sh b/src/Specific/montgomery32_2e127m1_4limbs/compiler.sh
index 9ba3dd058..9ba3dd058 100755
--- a/src/Specific/montgomery32_2e127m1/compiler.sh
+++ b/src/Specific/montgomery32_2e127m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e127m1/compilerxx.sh b/src/Specific/montgomery32_2e127m1_4limbs/compilerxx.sh
index 02b61f860..02b61f860 100755
--- a/src/Specific/montgomery32_2e127m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e127m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/feadd.v b/src/Specific/montgomery32_2e127m1_4limbs/feadd.v
new file mode 100644
index 000000000..8c828968e
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/feaddDisplay.v b/src/Specific/montgomery32_2e127m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..3e69b6c5c
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/femul.v b/src/Specific/montgomery32_2e127m1_4limbs/femul.v
new file mode 100644
index 000000000..e22bcea59
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/femulDisplay.v b/src/Specific/montgomery32_2e127m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..8bab5a350
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/fenz.v b/src/Specific/montgomery32_2e127m1_4limbs/fenz.v
new file mode 100644
index 000000000..169dc0c50
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/fenzDisplay.v b/src/Specific/montgomery32_2e127m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..0f7fa3040
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/feopp.v b/src/Specific/montgomery32_2e127m1_4limbs/feopp.v
new file mode 100644
index 000000000..bb647274b
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/feoppDisplay.v b/src/Specific/montgomery32_2e127m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..1d1a753e7
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/fesub.v b/src/Specific/montgomery32_2e127m1_4limbs/fesub.v
new file mode 100644
index 000000000..28188dc6e
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e127m1_4limbs/fesubDisplay.v b/src/Specific/montgomery32_2e127m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..69ded64e0
--- /dev/null
+++ b/src/Specific/montgomery32_2e127m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e127m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e127m1/py_interpreter.sh b/src/Specific/montgomery32_2e127m1_4limbs/py_interpreter.sh
index 48eed6784..48eed6784 100755
--- a/src/Specific/montgomery32_2e127m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e127m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e129m25/Synthesis.v b/src/Specific/montgomery32_2e129m25/Synthesis.v
deleted file mode 100644
index 2efa8853a..000000000
--- a/src/Specific/montgomery32_2e129m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e129m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e129m25/feadd.c b/src/Specific/montgomery32_2e129m25/feadd.c
deleted file mode 100644
index 44c8e70d7..000000000
--- a/src/Specific/montgomery32_2e129m25/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xffffffe7, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x1, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e129m25/feadd.v b/src/Specific/montgomery32_2e129m25/feadd.v
deleted file mode 100644
index 72aab82ea..000000000
--- a/src/Specific/montgomery32_2e129m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e129m25/feaddDisplay.log b/src/Specific/montgomery32_2e129m25/feaddDisplay.log
deleted file mode 100644
index aed0a7f58..000000000
--- a/src/Specific/montgomery32_2e129m25/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xffffffe7);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x1);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e129m25/feaddDisplay.v b/src/Specific/montgomery32_2e129m25/feaddDisplay.v
deleted file mode 100644
index 877bb5b09..000000000
--- a/src/Specific/montgomery32_2e129m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e129m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e129m25/femul.c b/src/Specific/montgomery32_2e129m25/femul.c
deleted file mode 100644
index f03dbf6a8..000000000
--- a/src/Specific/montgomery32_2e129m25/femul.c
+++ /dev/null
@@ -1,182 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xc28f5c29, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xffffffe7, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(0x0, x55, x57, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x58, x60, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x61, x63, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x64, x51, &x75);
- { uint32_t _; uint8_t x79 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x81; uint8_t x82 = _addcarryx_u32(x79, x36, x66, &x81);
- { uint32_t x84; uint8_t x85 = _addcarryx_u32(x82, x39, x69, &x84);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x42, x72, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x45, x75, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x48, x76, &x93);
- { uint32_t x97; uint32_t x96 = _mulx_u32(x7, x13, &x97);
- { uint32_t x100; uint32_t x99 = _mulx_u32(x7, x15, &x100);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x17, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x19, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x18, &x109);
- { uint32_t x111; uint8_t x112 = _addcarryx_u32(0x0, x97, x99, &x111);
- { uint32_t x114; uint8_t x115 = _addcarryx_u32(x112, x100, x102, &x114);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(x115, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t _ = _addcarryx_u32(0x0, x121, x109, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(0x0, x81, x96, &x126);
- { uint32_t x129; uint8_t x130 = _addcarryx_u32(x127, x84, x111, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(x130, x87, x114, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x94, x123, &x141);
- { uint32_t _; uint32_t x144 = _mulx_u32(x126, 0xc28f5c29, &_);
- { uint32_t x148; uint32_t x147 = _mulx_u32(x144, 0xffffffe7, &x148);
- { uint32_t x151; uint32_t x150 = _mulx_u32(x144, 0xffffffff, &x151);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x144, 0xffffffff, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x144, 0xffffffff, &x157);
- { uint32_t x159; uint8_t x160 = _addcarryx_u32(0x0, x148, x150, &x159);
- { uint32_t x162; uint8_t x163 = _addcarryx_u32(x160, x151, x153, &x162);
- { uint32_t x165; uint8_t x166 = _addcarryx_u32(x163, x154, x156, &x165);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(x166, x157, x144, &x168);
- { uint32_t _; uint8_t x172 = _addcarryx_u32(0x0, x126, x147, &_);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x129, x159, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x132, x162, &x177);
- { uint32_t x180; uint8_t x181 = _addcarryx_u32(x178, x135, x165, &x180);
- { uint32_t x183; uint8_t x184 = _addcarryx_u32(x181, x138, x168, &x183);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x141, x169, &x186);
- { uint8_t x188 = (x187 + x142);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x9, x13, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x9, x15, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x9, x17, &x197);
- { uint32_t x200; uint32_t x199 = _mulx_u32(x9, x19, &x200);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x18, &x203);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(0x0, x191, x193, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x194, x196, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x197, x199, &x211);
- { uint32_t x214; uint8_t x215 = _addcarryx_u32(x212, x200, x202, &x214);
- { uint32_t x217; uint8_t _ = _addcarryx_u32(0x0, x215, x203, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(0x0, x174, x190, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x177, x205, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x180, x208, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x183, x211, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x186, x214, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x188, x217, &x235);
- { uint32_t _; uint32_t x238 = _mulx_u32(x220, 0xc28f5c29, &_);
- { uint32_t x242; uint32_t x241 = _mulx_u32(x238, 0xffffffe7, &x242);
- { uint32_t x245; uint32_t x244 = _mulx_u32(x238, 0xffffffff, &x245);
- { uint32_t x248; uint32_t x247 = _mulx_u32(x238, 0xffffffff, &x248);
- { uint32_t x251; uint32_t x250 = _mulx_u32(x238, 0xffffffff, &x251);
- { uint32_t x253; uint8_t x254 = _addcarryx_u32(0x0, x242, x244, &x253);
- { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x245, x247, &x256);
- { uint32_t x259; uint8_t x260 = _addcarryx_u32(x257, x248, x250, &x259);
- { uint32_t x262; uint8_t x263 = _addcarryx_u32(x260, x251, x238, &x262);
- { uint32_t _; uint8_t x266 = _addcarryx_u32(0x0, x220, x241, &_);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(x266, x223, x253, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x226, x256, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x229, x259, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x232, x262, &x277);
- { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x235, x263, &x280);
- { uint8_t x282 = (x281 + x236);
- { uint32_t x285; uint32_t x284 = _mulx_u32(x11, x13, &x285);
- { uint32_t x288; uint32_t x287 = _mulx_u32(x11, x15, &x288);
- { uint32_t x291; uint32_t x290 = _mulx_u32(x11, x17, &x291);
- { uint32_t x294; uint32_t x293 = _mulx_u32(x11, x19, &x294);
- { uint32_t x297; uint32_t x296 = _mulx_u32(x11, x18, &x297);
- { uint32_t x299; uint8_t x300 = _addcarryx_u32(0x0, x285, x287, &x299);
- { uint32_t x302; uint8_t x303 = _addcarryx_u32(x300, x288, x290, &x302);
- { uint32_t x305; uint8_t x306 = _addcarryx_u32(x303, x291, x293, &x305);
- { uint32_t x308; uint8_t x309 = _addcarryx_u32(x306, x294, x296, &x308);
- { uint32_t x311; uint8_t _ = _addcarryx_u32(0x0, x309, x297, &x311);
- { uint32_t x314; uint8_t x315 = _addcarryx_u32(0x0, x268, x284, &x314);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(x315, x271, x299, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x274, x302, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x277, x305, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x280, x308, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x282, x311, &x329);
- { uint32_t _; uint32_t x332 = _mulx_u32(x314, 0xc28f5c29, &_);
- { uint32_t x336; uint32_t x335 = _mulx_u32(x332, 0xffffffe7, &x336);
- { uint32_t x339; uint32_t x338 = _mulx_u32(x332, 0xffffffff, &x339);
- { uint32_t x342; uint32_t x341 = _mulx_u32(x332, 0xffffffff, &x342);
- { uint32_t x345; uint32_t x344 = _mulx_u32(x332, 0xffffffff, &x345);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(0x0, x336, x338, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x339, x341, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x342, x344, &x353);
- { uint32_t x356; uint8_t x357 = _addcarryx_u32(x354, x345, x332, &x356);
- { uint32_t _; uint8_t x360 = _addcarryx_u32(0x0, x314, x335, &_);
- { uint32_t x362; uint8_t x363 = _addcarryx_u32(x360, x317, x347, &x362);
- { uint32_t x365; uint8_t x366 = _addcarryx_u32(x363, x320, x350, &x365);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(x366, x323, x353, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x326, x356, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x329, x357, &x374);
- { uint8_t x376 = (x375 + x330);
- { uint32_t x379; uint32_t x378 = _mulx_u32(x10, x13, &x379);
- { uint32_t x382; uint32_t x381 = _mulx_u32(x10, x15, &x382);
- { uint32_t x385; uint32_t x384 = _mulx_u32(x10, x17, &x385);
- { uint32_t x388; uint32_t x387 = _mulx_u32(x10, x19, &x388);
- { uint32_t x391; uint32_t x390 = _mulx_u32(x10, x18, &x391);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x379, x381, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x382, x384, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x385, x387, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x388, x390, &x402);
- { uint32_t x405; uint8_t _ = _addcarryx_u32(0x0, x403, x391, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(0x0, x362, x378, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x365, x393, &x411);
- { uint32_t x414; uint8_t x415 = _addcarryx_u32(x412, x368, x396, &x414);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(x415, x371, x399, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x374, x402, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x376, x405, &x423);
- { uint32_t _; uint32_t x426 = _mulx_u32(x408, 0xc28f5c29, &_);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x426, 0xffffffe7, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x426, 0xffffffff, &x433);
- { uint32_t x436; uint32_t x435 = _mulx_u32(x426, 0xffffffff, &x436);
- { uint32_t x439; uint32_t x438 = _mulx_u32(x426, 0xffffffff, &x439);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(0x0, x430, x432, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x433, x435, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x436, x438, &x447);
- { uint32_t x450; uint8_t x451 = _addcarryx_u32(x448, x439, x426, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x408, x429, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x411, x441, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x414, x444, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x417, x447, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x420, x450, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x423, x451, &x468);
- { uint8_t x470 = (x469 + x424);
- { uint32_t x472; uint8_t x473 = _subborrow_u32(0x0, x456, 0xffffffe7, &x472);
- { uint32_t x475; uint8_t x476 = _subborrow_u32(x473, x459, 0xffffffff, &x475);
- { uint32_t x478; uint8_t x479 = _subborrow_u32(x476, x462, 0xffffffff, &x478);
- { uint32_t x481; uint8_t x482 = _subborrow_u32(x479, x465, 0xffffffff, &x481);
- { uint32_t x484; uint8_t x485 = _subborrow_u32(x482, x468, 0x1, &x484);
- { uint32_t _; uint8_t x488 = _subborrow_u32(x485, x470, 0x0, &_);
- { uint32_t x489 = cmovznz32(x488, x484, x468);
- { uint32_t x490 = cmovznz32(x488, x481, x465);
- { uint32_t x491 = cmovznz32(x488, x478, x462);
- { uint32_t x492 = cmovznz32(x488, x475, x459);
- { uint32_t x493 = cmovznz32(x488, x472, x456);
- out[0] = x493;
- out[1] = x492;
- out[2] = x491;
- out[3] = x490;
- out[4] = x489;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e129m25/femul.v b/src/Specific/montgomery32_2e129m25/femul.v
deleted file mode 100644
index c0c293317..000000000
--- a/src/Specific/montgomery32_2e129m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e129m25/femulDisplay.log b/src/Specific/montgomery32_2e129m25/femulDisplay.log
deleted file mode 100644
index 15f5ce352..000000000
--- a/src/Specific/montgomery32_2e129m25/femulDisplay.log
+++ /dev/null
@@ -1,171 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xc28f5c29);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xffffffe7);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(0x0, x55, x57);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x58, x60);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x61, x63);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x64, x51);
- uint32_t _, uint8_t x79 = addcarryx_u32(0x0, x21, x54);
- uint32_t x81, uint8_t x82 = addcarryx_u32(x79, x36, x66);
- uint32_t x84, uint8_t x85 = addcarryx_u32(x82, x39, x69);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x42, x72);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x45, x75);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x48, x76);
- uint32_t x96, uint32_t x97 = mulx_u32(x7, x13);
- uint32_t x99, uint32_t x100 = mulx_u32(x7, x15);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x17);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x19);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x18);
- uint32_t x111, uint8_t x112 = addcarryx_u32(0x0, x97, x99);
- uint32_t x114, uint8_t x115 = addcarryx_u32(x112, x100, x102);
- uint32_t x117, uint8_t x118 = addcarryx_u32(x115, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t _ = addcarryx_u32(0x0, x121, x109);
- uint32_t x126, uint8_t x127 = addcarryx_u32(0x0, x81, x96);
- uint32_t x129, uint8_t x130 = addcarryx_u32(x127, x84, x111);
- uint32_t x132, uint8_t x133 = addcarryx_u32(x130, x87, x114);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x94, x123);
- uint32_t x144, uint32_t _ = mulx_u32(x126, 0xc28f5c29);
- uint32_t x147, uint32_t x148 = mulx_u32(x144, 0xffffffe7);
- uint32_t x150, uint32_t x151 = mulx_u32(x144, 0xffffffff);
- uint32_t x153, uint32_t x154 = mulx_u32(x144, 0xffffffff);
- uint32_t x156, uint32_t x157 = mulx_u32(x144, 0xffffffff);
- uint32_t x159, uint8_t x160 = addcarryx_u32(0x0, x148, x150);
- uint32_t x162, uint8_t x163 = addcarryx_u32(x160, x151, x153);
- uint32_t x165, uint8_t x166 = addcarryx_u32(x163, x154, x156);
- uint32_t x168, uint8_t x169 = addcarryx_u32(x166, x157, x144);
- uint32_t _, uint8_t x172 = addcarryx_u32(0x0, x126, x147);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x129, x159);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x132, x162);
- uint32_t x180, uint8_t x181 = addcarryx_u32(x178, x135, x165);
- uint32_t x183, uint8_t x184 = addcarryx_u32(x181, x138, x168);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x141, x169);
- uint8_t x188 = (x187 + x142);
- uint32_t x190, uint32_t x191 = mulx_u32(x9, x13);
- uint32_t x193, uint32_t x194 = mulx_u32(x9, x15);
- uint32_t x196, uint32_t x197 = mulx_u32(x9, x17);
- uint32_t x199, uint32_t x200 = mulx_u32(x9, x19);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x18);
- uint32_t x205, uint8_t x206 = addcarryx_u32(0x0, x191, x193);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x194, x196);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x197, x199);
- uint32_t x214, uint8_t x215 = addcarryx_u32(x212, x200, x202);
- uint32_t x217, uint8_t _ = addcarryx_u32(0x0, x215, x203);
- uint32_t x220, uint8_t x221 = addcarryx_u32(0x0, x174, x190);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x177, x205);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x180, x208);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x183, x211);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x186, x214);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x188, x217);
- uint32_t x238, uint32_t _ = mulx_u32(x220, 0xc28f5c29);
- uint32_t x241, uint32_t x242 = mulx_u32(x238, 0xffffffe7);
- uint32_t x244, uint32_t x245 = mulx_u32(x238, 0xffffffff);
- uint32_t x247, uint32_t x248 = mulx_u32(x238, 0xffffffff);
- uint32_t x250, uint32_t x251 = mulx_u32(x238, 0xffffffff);
- uint32_t x253, uint8_t x254 = addcarryx_u32(0x0, x242, x244);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x245, x247);
- uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x248, x250);
- uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x251, x238);
- uint32_t _, uint8_t x266 = addcarryx_u32(0x0, x220, x241);
- uint32_t x268, uint8_t x269 = addcarryx_u32(x266, x223, x253);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x226, x256);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x229, x259);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x232, x262);
- uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x235, x263);
- uint8_t x282 = (x281 + x236);
- uint32_t x284, uint32_t x285 = mulx_u32(x11, x13);
- uint32_t x287, uint32_t x288 = mulx_u32(x11, x15);
- uint32_t x290, uint32_t x291 = mulx_u32(x11, x17);
- uint32_t x293, uint32_t x294 = mulx_u32(x11, x19);
- uint32_t x296, uint32_t x297 = mulx_u32(x11, x18);
- uint32_t x299, uint8_t x300 = addcarryx_u32(0x0, x285, x287);
- uint32_t x302, uint8_t x303 = addcarryx_u32(x300, x288, x290);
- uint32_t x305, uint8_t x306 = addcarryx_u32(x303, x291, x293);
- uint32_t x308, uint8_t x309 = addcarryx_u32(x306, x294, x296);
- uint32_t x311, uint8_t _ = addcarryx_u32(0x0, x309, x297);
- uint32_t x314, uint8_t x315 = addcarryx_u32(0x0, x268, x284);
- uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x271, x299);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x274, x302);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x277, x305);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x280, x308);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x282, x311);
- uint32_t x332, uint32_t _ = mulx_u32(x314, 0xc28f5c29);
- uint32_t x335, uint32_t x336 = mulx_u32(x332, 0xffffffe7);
- uint32_t x338, uint32_t x339 = mulx_u32(x332, 0xffffffff);
- uint32_t x341, uint32_t x342 = mulx_u32(x332, 0xffffffff);
- uint32_t x344, uint32_t x345 = mulx_u32(x332, 0xffffffff);
- uint32_t x347, uint8_t x348 = addcarryx_u32(0x0, x336, x338);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x339, x341);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x342, x344);
- uint32_t x356, uint8_t x357 = addcarryx_u32(x354, x345, x332);
- uint32_t _, uint8_t x360 = addcarryx_u32(0x0, x314, x335);
- uint32_t x362, uint8_t x363 = addcarryx_u32(x360, x317, x347);
- uint32_t x365, uint8_t x366 = addcarryx_u32(x363, x320, x350);
- uint32_t x368, uint8_t x369 = addcarryx_u32(x366, x323, x353);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x326, x356);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x329, x357);
- uint8_t x376 = (x375 + x330);
- uint32_t x378, uint32_t x379 = mulx_u32(x10, x13);
- uint32_t x381, uint32_t x382 = mulx_u32(x10, x15);
- uint32_t x384, uint32_t x385 = mulx_u32(x10, x17);
- uint32_t x387, uint32_t x388 = mulx_u32(x10, x19);
- uint32_t x390, uint32_t x391 = mulx_u32(x10, x18);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x379, x381);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x382, x384);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x385, x387);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x388, x390);
- uint32_t x405, uint8_t _ = addcarryx_u32(0x0, x403, x391);
- uint32_t x408, uint8_t x409 = addcarryx_u32(0x0, x362, x378);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x365, x393);
- uint32_t x414, uint8_t x415 = addcarryx_u32(x412, x368, x396);
- uint32_t x417, uint8_t x418 = addcarryx_u32(x415, x371, x399);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x374, x402);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x376, x405);
- uint32_t x426, uint32_t _ = mulx_u32(x408, 0xc28f5c29);
- uint32_t x429, uint32_t x430 = mulx_u32(x426, 0xffffffe7);
- uint32_t x432, uint32_t x433 = mulx_u32(x426, 0xffffffff);
- uint32_t x435, uint32_t x436 = mulx_u32(x426, 0xffffffff);
- uint32_t x438, uint32_t x439 = mulx_u32(x426, 0xffffffff);
- uint32_t x441, uint8_t x442 = addcarryx_u32(0x0, x430, x432);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x433, x435);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x436, x438);
- uint32_t x450, uint8_t x451 = addcarryx_u32(x448, x439, x426);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x408, x429);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x411, x441);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x414, x444);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x417, x447);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x420, x450);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x423, x451);
- uint8_t x470 = (x469 + x424);
- uint32_t x472, uint8_t x473 = subborrow_u32(0x0, x456, 0xffffffe7);
- uint32_t x475, uint8_t x476 = subborrow_u32(x473, x459, 0xffffffff);
- uint32_t x478, uint8_t x479 = subborrow_u32(x476, x462, 0xffffffff);
- uint32_t x481, uint8_t x482 = subborrow_u32(x479, x465, 0xffffffff);
- uint32_t x484, uint8_t x485 = subborrow_u32(x482, x468, 0x1);
- uint32_t _, uint8_t x488 = subborrow_u32(x485, x470, 0x0);
- uint32_t x489 = cmovznz32(x488, x484, x468);
- uint32_t x490 = cmovznz32(x488, x481, x465);
- uint32_t x491 = cmovznz32(x488, x478, x462);
- uint32_t x492 = cmovznz32(x488, x475, x459);
- uint32_t x493 = cmovznz32(x488, x472, x456);
- return (x489, x490, x491, x492, x493))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e129m25/femulDisplay.v b/src/Specific/montgomery32_2e129m25/femulDisplay.v
deleted file mode 100644
index b0449802e..000000000
--- a/src/Specific/montgomery32_2e129m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e129m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e129m25/fenz.c b/src/Specific/montgomery32_2e129m25/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e129m25/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e129m25/fenz.v b/src/Specific/montgomery32_2e129m25/fenz.v
deleted file mode 100644
index ddc172137..000000000
--- a/src/Specific/montgomery32_2e129m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e129m25/fenzDisplay.log b/src/Specific/montgomery32_2e129m25/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e129m25/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e129m25/fenzDisplay.v b/src/Specific/montgomery32_2e129m25/fenzDisplay.v
deleted file mode 100644
index 09c7ec793..000000000
--- a/src/Specific/montgomery32_2e129m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e129m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e129m25/feopp.c b/src/Specific/montgomery32_2e129m25/feopp.c
deleted file mode 100644
index 01cd3f66d..000000000
--- a/src/Specific/montgomery32_2e129m25/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xffffffe7);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint8_t x41 = ((uint8_t)x24 & 0x1);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e129m25/feopp.v b/src/Specific/montgomery32_2e129m25/feopp.v
deleted file mode 100644
index 3e7cf47f8..000000000
--- a/src/Specific/montgomery32_2e129m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e129m25/feoppDisplay.log b/src/Specific/montgomery32_2e129m25/feoppDisplay.log
deleted file mode 100644
index fb5260ead..000000000
--- a/src/Specific/montgomery32_2e129m25/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xffffffe7);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint8_t x41 = ((uint8_t)x24 & 0x1);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e129m25/feoppDisplay.v b/src/Specific/montgomery32_2e129m25/feoppDisplay.v
deleted file mode 100644
index 87b5178c5..000000000
--- a/src/Specific/montgomery32_2e129m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e129m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e129m25/fesquare.c b/src/Specific/montgomery32_2e129m25/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e129m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e129m25/fesub.c b/src/Specific/montgomery32_2e129m25/fesub.c
deleted file mode 100644
index f7c5313f1..000000000
--- a/src/Specific/montgomery32_2e129m25/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xffffffe7);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint8_t x52 = ((uint8_t)x35 & 0x1);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e129m25/fesub.v b/src/Specific/montgomery32_2e129m25/fesub.v
deleted file mode 100644
index 1bc92ecab..000000000
--- a/src/Specific/montgomery32_2e129m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e129m25/fesubDisplay.log b/src/Specific/montgomery32_2e129m25/fesubDisplay.log
deleted file mode 100644
index fa6a3160e..000000000
--- a/src/Specific/montgomery32_2e129m25/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xffffffe7);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint8_t x52 = ((uint8_t)x35 & 0x1);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e129m25/fesubDisplay.v b/src/Specific/montgomery32_2e129m25/fesubDisplay.v
deleted file mode 100644
index baf922404..000000000
--- a/src/Specific/montgomery32_2e129m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e129m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e129m25/CurveParameters.v b/src/Specific/montgomery32_2e129m25_5limbs/CurveParameters.v
index 07048d8db..07048d8db 100644
--- a/src/Specific/montgomery32_2e129m25/CurveParameters.v
+++ b/src/Specific/montgomery32_2e129m25_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/Synthesis.v b/src/Specific/montgomery32_2e129m25_5limbs/Synthesis.v
new file mode 100644
index 000000000..0705e68bd
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e129m25/compiler.sh b/src/Specific/montgomery32_2e129m25_5limbs/compiler.sh
index c9abb8317..c9abb8317 100755
--- a/src/Specific/montgomery32_2e129m25/compiler.sh
+++ b/src/Specific/montgomery32_2e129m25_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e129m25/compilerxx.sh b/src/Specific/montgomery32_2e129m25_5limbs/compilerxx.sh
index 613e93606..613e93606 100755
--- a/src/Specific/montgomery32_2e129m25/compilerxx.sh
+++ b/src/Specific/montgomery32_2e129m25_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/feadd.v b/src/Specific/montgomery32_2e129m25_5limbs/feadd.v
new file mode 100644
index 000000000..bf1b4b9a5
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e129m25_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..9f5f979b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/femul.v b/src/Specific/montgomery32_2e129m25_5limbs/femul.v
new file mode 100644
index 000000000..cb93e3569
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e129m25_5limbs/femulDisplay.v
new file mode 100644
index 000000000..a6a17a74d
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/fenz.v b/src/Specific/montgomery32_2e129m25_5limbs/fenz.v
new file mode 100644
index 000000000..e299151f3
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e129m25_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..60bf6ae9c
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/feopp.v b/src/Specific/montgomery32_2e129m25_5limbs/feopp.v
new file mode 100644
index 000000000..7edb8724f
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e129m25_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..49af2b9ce
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/fesub.v b/src/Specific/montgomery32_2e129m25_5limbs/fesub.v
new file mode 100644
index 000000000..729a7c9d6
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e129m25_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e129m25_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..66ee3324b
--- /dev/null
+++ b/src/Specific/montgomery32_2e129m25_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e129m25_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e129m25/py_interpreter.sh b/src/Specific/montgomery32_2e129m25_5limbs/py_interpreter.sh
index cc79d3711..cc79d3711 100755
--- a/src/Specific/montgomery32_2e129m25/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e129m25_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e130m5/Synthesis.v b/src/Specific/montgomery32_2e130m5/Synthesis.v
deleted file mode 100644
index fa82fbfdf..000000000
--- a/src/Specific/montgomery32_2e130m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e130m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e130m5/feadd.c b/src/Specific/montgomery32_2e130m5/feadd.c
deleted file mode 100644
index 89b9fbad7..000000000
--- a/src/Specific/montgomery32_2e130m5/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffffb, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e130m5/feadd.v b/src/Specific/montgomery32_2e130m5/feadd.v
deleted file mode 100644
index a414ba9f6..000000000
--- a/src/Specific/montgomery32_2e130m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e130m5/feaddDisplay.log b/src/Specific/montgomery32_2e130m5/feaddDisplay.log
deleted file mode 100644
index 3fbc68015..000000000
--- a/src/Specific/montgomery32_2e130m5/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffffb);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x3);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e130m5/feaddDisplay.v b/src/Specific/montgomery32_2e130m5/feaddDisplay.v
deleted file mode 100644
index c5ba5ed41..000000000
--- a/src/Specific/montgomery32_2e130m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e130m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e130m5/femul.c b/src/Specific/montgomery32_2e130m5/femul.c
deleted file mode 100644
index dad2ff269..000000000
--- a/src/Specific/montgomery32_2e130m5/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xcccccccd, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffffb, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint8_t x67; uint32_t x66 = _mulx_u32_out_u8(x51, 0x3, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint8_t x80 = (x79 + x67);
- { uint32_t _; uint8_t x83 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x36, x69, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x39, x72, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x42, x75, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x45, x78, &x94);
- { uint32_t x97; uint8_t x98 = _addcarryx_u32(x95, x48, x80, &x97);
- { uint32_t x101; uint32_t x100 = _mulx_u32(x7, x13, &x101);
- { uint32_t x104; uint32_t x103 = _mulx_u32(x7, x15, &x104);
- { uint32_t x107; uint32_t x106 = _mulx_u32(x7, x17, &x107);
- { uint32_t x110; uint32_t x109 = _mulx_u32(x7, x19, &x110);
- { uint32_t x113; uint32_t x112 = _mulx_u32(x7, x18, &x113);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(0x0, x101, x103, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x104, x106, &x118);
- { uint32_t x121; uint8_t x122 = _addcarryx_u32(x119, x107, x109, &x121);
- { uint32_t x124; uint8_t x125 = _addcarryx_u32(x122, x110, x112, &x124);
- { uint32_t x127; uint8_t _ = _addcarryx_u32(0x0, x125, x113, &x127);
- { uint32_t x130; uint8_t x131 = _addcarryx_u32(0x0, x85, x100, &x130);
- { uint32_t x133; uint8_t x134 = _addcarryx_u32(x131, x88, x115, &x133);
- { uint32_t x136; uint8_t x137 = _addcarryx_u32(x134, x91, x118, &x136);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(x137, x94, x121, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x97, x124, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x98, x127, &x145);
- { uint32_t _; uint32_t x148 = _mulx_u32(x130, 0xcccccccd, &_);
- { uint32_t x152; uint32_t x151 = _mulx_u32(x148, 0xfffffffb, &x152);
- { uint32_t x155; uint32_t x154 = _mulx_u32(x148, 0xffffffff, &x155);
- { uint32_t x158; uint32_t x157 = _mulx_u32(x148, 0xffffffff, &x158);
- { uint32_t x161; uint32_t x160 = _mulx_u32(x148, 0xffffffff, &x161);
- { uint8_t x164; uint32_t x163 = _mulx_u32_out_u8(x148, 0x3, &x164);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(0x0, x152, x154, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x155, x157, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x158, x160, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x161, x163, &x175);
- { uint8_t x177 = (x176 + x164);
- { uint32_t _; uint8_t x180 = _addcarryx_u32(0x0, x130, x151, &_);
- { uint32_t x182; uint8_t x183 = _addcarryx_u32(x180, x133, x166, &x182);
- { uint32_t x185; uint8_t x186 = _addcarryx_u32(x183, x136, x169, &x185);
- { uint32_t x188; uint8_t x189 = _addcarryx_u32(x186, x139, x172, &x188);
- { uint32_t x191; uint8_t x192 = _addcarryx_u32(x189, x142, x175, &x191);
- { uint32_t x194; uint8_t x195 = _addcarryx_u32(x192, x145, x177, &x194);
- { uint8_t x196 = (x195 + x146);
- { uint32_t x199; uint32_t x198 = _mulx_u32(x9, x13, &x199);
- { uint32_t x202; uint32_t x201 = _mulx_u32(x9, x15, &x202);
- { uint32_t x205; uint32_t x204 = _mulx_u32(x9, x17, &x205);
- { uint32_t x208; uint32_t x207 = _mulx_u32(x9, x19, &x208);
- { uint32_t x211; uint32_t x210 = _mulx_u32(x9, x18, &x211);
- { uint32_t x213; uint8_t x214 = _addcarryx_u32(0x0, x199, x201, &x213);
- { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x202, x204, &x216);
- { uint32_t x219; uint8_t x220 = _addcarryx_u32(x217, x205, x207, &x219);
- { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x208, x210, &x222);
- { uint32_t x225; uint8_t _ = _addcarryx_u32(0x0, x223, x211, &x225);
- { uint32_t x228; uint8_t x229 = _addcarryx_u32(0x0, x182, x198, &x228);
- { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x185, x213, &x231);
- { uint32_t x234; uint8_t x235 = _addcarryx_u32(x232, x188, x216, &x234);
- { uint32_t x237; uint8_t x238 = _addcarryx_u32(x235, x191, x219, &x237);
- { uint32_t x240; uint8_t x241 = _addcarryx_u32(x238, x194, x222, &x240);
- { uint32_t x243; uint8_t x244 = _addcarryx_u32(x241, x196, x225, &x243);
- { uint32_t _; uint32_t x246 = _mulx_u32(x228, 0xcccccccd, &_);
- { uint32_t x250; uint32_t x249 = _mulx_u32(x246, 0xfffffffb, &x250);
- { uint32_t x253; uint32_t x252 = _mulx_u32(x246, 0xffffffff, &x253);
- { uint32_t x256; uint32_t x255 = _mulx_u32(x246, 0xffffffff, &x256);
- { uint32_t x259; uint32_t x258 = _mulx_u32(x246, 0xffffffff, &x259);
- { uint8_t x262; uint32_t x261 = _mulx_u32_out_u8(x246, 0x3, &x262);
- { uint32_t x264; uint8_t x265 = _addcarryx_u32(0x0, x250, x252, &x264);
- { uint32_t x267; uint8_t x268 = _addcarryx_u32(x265, x253, x255, &x267);
- { uint32_t x270; uint8_t x271 = _addcarryx_u32(x268, x256, x258, &x270);
- { uint32_t x273; uint8_t x274 = _addcarryx_u32(x271, x259, x261, &x273);
- { uint8_t x275 = (x274 + x262);
- { uint32_t _; uint8_t x278 = _addcarryx_u32(0x0, x228, x249, &_);
- { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x231, x264, &x280);
- { uint32_t x283; uint8_t x284 = _addcarryx_u32(x281, x234, x267, &x283);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x237, x270, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x240, x273, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x243, x275, &x292);
- { uint8_t x294 = (x293 + x244);
- { uint32_t x297; uint32_t x296 = _mulx_u32(x11, x13, &x297);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x11, x15, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x17, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x19, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x18, &x309);
- { uint32_t x311; uint8_t x312 = _addcarryx_u32(0x0, x297, x299, &x311);
- { uint32_t x314; uint8_t x315 = _addcarryx_u32(x312, x300, x302, &x314);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(x315, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t _ = _addcarryx_u32(0x0, x321, x309, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(0x0, x280, x296, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x283, x311, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x286, x314, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x294, x323, &x341);
- { uint32_t _; uint32_t x344 = _mulx_u32(x326, 0xcccccccd, &_);
- { uint32_t x348; uint32_t x347 = _mulx_u32(x344, 0xfffffffb, &x348);
- { uint32_t x351; uint32_t x350 = _mulx_u32(x344, 0xffffffff, &x351);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x344, 0xffffffff, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x344, 0xffffffff, &x357);
- { uint8_t x360; uint32_t x359 = _mulx_u32_out_u8(x344, 0x3, &x360);
- { uint32_t x362; uint8_t x363 = _addcarryx_u32(0x0, x348, x350, &x362);
- { uint32_t x365; uint8_t x366 = _addcarryx_u32(x363, x351, x353, &x365);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(x366, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint8_t x373 = (x372 + x360);
- { uint32_t _; uint8_t x376 = _addcarryx_u32(0x0, x326, x347, &_);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x329, x362, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x332, x365, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x335, x368, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x338, x371, &x387);
- { uint32_t x390; uint8_t x391 = _addcarryx_u32(x388, x341, x373, &x390);
- { uint8_t x392 = (x391 + x342);
- { uint32_t x395; uint32_t x394 = _mulx_u32(x10, x13, &x395);
- { uint32_t x398; uint32_t x397 = _mulx_u32(x10, x15, &x398);
- { uint32_t x401; uint32_t x400 = _mulx_u32(x10, x17, &x401);
- { uint32_t x404; uint32_t x403 = _mulx_u32(x10, x19, &x404);
- { uint32_t x407; uint32_t x406 = _mulx_u32(x10, x18, &x407);
- { uint32_t x409; uint8_t x410 = _addcarryx_u32(0x0, x395, x397, &x409);
- { uint32_t x412; uint8_t x413 = _addcarryx_u32(x410, x398, x400, &x412);
- { uint32_t x415; uint8_t x416 = _addcarryx_u32(x413, x401, x403, &x415);
- { uint32_t x418; uint8_t x419 = _addcarryx_u32(x416, x404, x406, &x418);
- { uint32_t x421; uint8_t _ = _addcarryx_u32(0x0, x419, x407, &x421);
- { uint32_t x424; uint8_t x425 = _addcarryx_u32(0x0, x378, x394, &x424);
- { uint32_t x427; uint8_t x428 = _addcarryx_u32(x425, x381, x409, &x427);
- { uint32_t x430; uint8_t x431 = _addcarryx_u32(x428, x384, x412, &x430);
- { uint32_t x433; uint8_t x434 = _addcarryx_u32(x431, x387, x415, &x433);
- { uint32_t x436; uint8_t x437 = _addcarryx_u32(x434, x390, x418, &x436);
- { uint32_t x439; uint8_t x440 = _addcarryx_u32(x437, x392, x421, &x439);
- { uint32_t _; uint32_t x442 = _mulx_u32(x424, 0xcccccccd, &_);
- { uint32_t x446; uint32_t x445 = _mulx_u32(x442, 0xfffffffb, &x446);
- { uint32_t x449; uint32_t x448 = _mulx_u32(x442, 0xffffffff, &x449);
- { uint32_t x452; uint32_t x451 = _mulx_u32(x442, 0xffffffff, &x452);
- { uint32_t x455; uint32_t x454 = _mulx_u32(x442, 0xffffffff, &x455);
- { uint8_t x458; uint32_t x457 = _mulx_u32_out_u8(x442, 0x3, &x458);
- { uint32_t x460; uint8_t x461 = _addcarryx_u32(0x0, x446, x448, &x460);
- { uint32_t x463; uint8_t x464 = _addcarryx_u32(x461, x449, x451, &x463);
- { uint32_t x466; uint8_t x467 = _addcarryx_u32(x464, x452, x454, &x466);
- { uint32_t x469; uint8_t x470 = _addcarryx_u32(x467, x455, x457, &x469);
- { uint8_t x471 = (x470 + x458);
- { uint32_t _; uint8_t x474 = _addcarryx_u32(0x0, x424, x445, &_);
- { uint32_t x476; uint8_t x477 = _addcarryx_u32(x474, x427, x460, &x476);
- { uint32_t x479; uint8_t x480 = _addcarryx_u32(x477, x430, x463, &x479);
- { uint32_t x482; uint8_t x483 = _addcarryx_u32(x480, x433, x466, &x482);
- { uint32_t x485; uint8_t x486 = _addcarryx_u32(x483, x436, x469, &x485);
- { uint32_t x488; uint8_t x489 = _addcarryx_u32(x486, x439, x471, &x488);
- { uint8_t x490 = (x489 + x440);
- { uint32_t x492; uint8_t x493 = _subborrow_u32(0x0, x476, 0xfffffffb, &x492);
- { uint32_t x495; uint8_t x496 = _subborrow_u32(x493, x479, 0xffffffff, &x495);
- { uint32_t x498; uint8_t x499 = _subborrow_u32(x496, x482, 0xffffffff, &x498);
- { uint32_t x501; uint8_t x502 = _subborrow_u32(x499, x485, 0xffffffff, &x501);
- { uint32_t x504; uint8_t x505 = _subborrow_u32(x502, x488, 0x3, &x504);
- { uint32_t _; uint8_t x508 = _subborrow_u32(x505, x490, 0x0, &_);
- { uint32_t x509 = cmovznz32(x508, x504, x488);
- { uint32_t x510 = cmovznz32(x508, x501, x485);
- { uint32_t x511 = cmovznz32(x508, x498, x482);
- { uint32_t x512 = cmovznz32(x508, x495, x479);
- { uint32_t x513 = cmovznz32(x508, x492, x476);
- out[0] = x513;
- out[1] = x512;
- out[2] = x511;
- out[3] = x510;
- out[4] = x509;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e130m5/femul.v b/src/Specific/montgomery32_2e130m5/femul.v
deleted file mode 100644
index fda2af144..000000000
--- a/src/Specific/montgomery32_2e130m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e130m5/femulDisplay.log b/src/Specific/montgomery32_2e130m5/femulDisplay.log
deleted file mode 100644
index 913522927..000000000
--- a/src/Specific/montgomery32_2e130m5/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xcccccccd);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffffb);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint8_t x67 = mulx_u32_out_u8(x51, 0x3);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint8_t x80 = (x79 + x67);
- uint32_t _, uint8_t x83 = addcarryx_u32(0x0, x21, x54);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x36, x69);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x39, x72);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x42, x75);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x45, x78);
- uint32_t x97, uint8_t x98 = addcarryx_u32(x95, x48, x80);
- uint32_t x100, uint32_t x101 = mulx_u32(x7, x13);
- uint32_t x103, uint32_t x104 = mulx_u32(x7, x15);
- uint32_t x106, uint32_t x107 = mulx_u32(x7, x17);
- uint32_t x109, uint32_t x110 = mulx_u32(x7, x19);
- uint32_t x112, uint32_t x113 = mulx_u32(x7, x18);
- uint32_t x115, uint8_t x116 = addcarryx_u32(0x0, x101, x103);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x104, x106);
- uint32_t x121, uint8_t x122 = addcarryx_u32(x119, x107, x109);
- uint32_t x124, uint8_t x125 = addcarryx_u32(x122, x110, x112);
- uint32_t x127, uint8_t _ = addcarryx_u32(0x0, x125, x113);
- uint32_t x130, uint8_t x131 = addcarryx_u32(0x0, x85, x100);
- uint32_t x133, uint8_t x134 = addcarryx_u32(x131, x88, x115);
- uint32_t x136, uint8_t x137 = addcarryx_u32(x134, x91, x118);
- uint32_t x139, uint8_t x140 = addcarryx_u32(x137, x94, x121);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x97, x124);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x98, x127);
- uint32_t x148, uint32_t _ = mulx_u32(x130, 0xcccccccd);
- uint32_t x151, uint32_t x152 = mulx_u32(x148, 0xfffffffb);
- uint32_t x154, uint32_t x155 = mulx_u32(x148, 0xffffffff);
- uint32_t x157, uint32_t x158 = mulx_u32(x148, 0xffffffff);
- uint32_t x160, uint32_t x161 = mulx_u32(x148, 0xffffffff);
- uint32_t x163, uint8_t x164 = mulx_u32_out_u8(x148, 0x3);
- uint32_t x166, uint8_t x167 = addcarryx_u32(0x0, x152, x154);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x155, x157);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x158, x160);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x161, x163);
- uint8_t x177 = (x176 + x164);
- uint32_t _, uint8_t x180 = addcarryx_u32(0x0, x130, x151);
- uint32_t x182, uint8_t x183 = addcarryx_u32(x180, x133, x166);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x136, x169);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x139, x172);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x142, x175);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x145, x177);
- uint8_t x196 = (x195 + x146);
- uint32_t x198, uint32_t x199 = mulx_u32(x9, x13);
- uint32_t x201, uint32_t x202 = mulx_u32(x9, x15);
- uint32_t x204, uint32_t x205 = mulx_u32(x9, x17);
- uint32_t x207, uint32_t x208 = mulx_u32(x9, x19);
- uint32_t x210, uint32_t x211 = mulx_u32(x9, x18);
- uint32_t x213, uint8_t x214 = addcarryx_u32(0x0, x199, x201);
- uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x202, x204);
- uint32_t x219, uint8_t x220 = addcarryx_u32(x217, x205, x207);
- uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x208, x210);
- uint32_t x225, uint8_t _ = addcarryx_u32(0x0, x223, x211);
- uint32_t x228, uint8_t x229 = addcarryx_u32(0x0, x182, x198);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x185, x213);
- uint32_t x234, uint8_t x235 = addcarryx_u32(x232, x188, x216);
- uint32_t x237, uint8_t x238 = addcarryx_u32(x235, x191, x219);
- uint32_t x240, uint8_t x241 = addcarryx_u32(x238, x194, x222);
- uint32_t x243, uint8_t x244 = addcarryx_u32(x241, x196, x225);
- uint32_t x246, uint32_t _ = mulx_u32(x228, 0xcccccccd);
- uint32_t x249, uint32_t x250 = mulx_u32(x246, 0xfffffffb);
- uint32_t x252, uint32_t x253 = mulx_u32(x246, 0xffffffff);
- uint32_t x255, uint32_t x256 = mulx_u32(x246, 0xffffffff);
- uint32_t x258, uint32_t x259 = mulx_u32(x246, 0xffffffff);
- uint32_t x261, uint8_t x262 = mulx_u32_out_u8(x246, 0x3);
- uint32_t x264, uint8_t x265 = addcarryx_u32(0x0, x250, x252);
- uint32_t x267, uint8_t x268 = addcarryx_u32(x265, x253, x255);
- uint32_t x270, uint8_t x271 = addcarryx_u32(x268, x256, x258);
- uint32_t x273, uint8_t x274 = addcarryx_u32(x271, x259, x261);
- uint8_t x275 = (x274 + x262);
- uint32_t _, uint8_t x278 = addcarryx_u32(0x0, x228, x249);
- uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x231, x264);
- uint32_t x283, uint8_t x284 = addcarryx_u32(x281, x234, x267);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x237, x270);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x240, x273);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x243, x275);
- uint8_t x294 = (x293 + x244);
- uint32_t x296, uint32_t x297 = mulx_u32(x11, x13);
- uint32_t x299, uint32_t x300 = mulx_u32(x11, x15);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x17);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x19);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x18);
- uint32_t x311, uint8_t x312 = addcarryx_u32(0x0, x297, x299);
- uint32_t x314, uint8_t x315 = addcarryx_u32(x312, x300, x302);
- uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t _ = addcarryx_u32(0x0, x321, x309);
- uint32_t x326, uint8_t x327 = addcarryx_u32(0x0, x280, x296);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x283, x311);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x286, x314);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x294, x323);
- uint32_t x344, uint32_t _ = mulx_u32(x326, 0xcccccccd);
- uint32_t x347, uint32_t x348 = mulx_u32(x344, 0xfffffffb);
- uint32_t x350, uint32_t x351 = mulx_u32(x344, 0xffffffff);
- uint32_t x353, uint32_t x354 = mulx_u32(x344, 0xffffffff);
- uint32_t x356, uint32_t x357 = mulx_u32(x344, 0xffffffff);
- uint32_t x359, uint8_t x360 = mulx_u32_out_u8(x344, 0x3);
- uint32_t x362, uint8_t x363 = addcarryx_u32(0x0, x348, x350);
- uint32_t x365, uint8_t x366 = addcarryx_u32(x363, x351, x353);
- uint32_t x368, uint8_t x369 = addcarryx_u32(x366, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint8_t x373 = (x372 + x360);
- uint32_t _, uint8_t x376 = addcarryx_u32(0x0, x326, x347);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x329, x362);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x332, x365);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x335, x368);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x338, x371);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x341, x373);
- uint8_t x392 = (x391 + x342);
- uint32_t x394, uint32_t x395 = mulx_u32(x10, x13);
- uint32_t x397, uint32_t x398 = mulx_u32(x10, x15);
- uint32_t x400, uint32_t x401 = mulx_u32(x10, x17);
- uint32_t x403, uint32_t x404 = mulx_u32(x10, x19);
- uint32_t x406, uint32_t x407 = mulx_u32(x10, x18);
- uint32_t x409, uint8_t x410 = addcarryx_u32(0x0, x395, x397);
- uint32_t x412, uint8_t x413 = addcarryx_u32(x410, x398, x400);
- uint32_t x415, uint8_t x416 = addcarryx_u32(x413, x401, x403);
- uint32_t x418, uint8_t x419 = addcarryx_u32(x416, x404, x406);
- uint32_t x421, uint8_t _ = addcarryx_u32(0x0, x419, x407);
- uint32_t x424, uint8_t x425 = addcarryx_u32(0x0, x378, x394);
- uint32_t x427, uint8_t x428 = addcarryx_u32(x425, x381, x409);
- uint32_t x430, uint8_t x431 = addcarryx_u32(x428, x384, x412);
- uint32_t x433, uint8_t x434 = addcarryx_u32(x431, x387, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x390, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x392, x421);
- uint32_t x442, uint32_t _ = mulx_u32(x424, 0xcccccccd);
- uint32_t x445, uint32_t x446 = mulx_u32(x442, 0xfffffffb);
- uint32_t x448, uint32_t x449 = mulx_u32(x442, 0xffffffff);
- uint32_t x451, uint32_t x452 = mulx_u32(x442, 0xffffffff);
- uint32_t x454, uint32_t x455 = mulx_u32(x442, 0xffffffff);
- uint32_t x457, uint8_t x458 = mulx_u32_out_u8(x442, 0x3);
- uint32_t x460, uint8_t x461 = addcarryx_u32(0x0, x446, x448);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x449, x451);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x452, x454);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x455, x457);
- uint8_t x471 = (x470 + x458);
- uint32_t _, uint8_t x474 = addcarryx_u32(0x0, x424, x445);
- uint32_t x476, uint8_t x477 = addcarryx_u32(x474, x427, x460);
- uint32_t x479, uint8_t x480 = addcarryx_u32(x477, x430, x463);
- uint32_t x482, uint8_t x483 = addcarryx_u32(x480, x433, x466);
- uint32_t x485, uint8_t x486 = addcarryx_u32(x483, x436, x469);
- uint32_t x488, uint8_t x489 = addcarryx_u32(x486, x439, x471);
- uint8_t x490 = (x489 + x440);
- uint32_t x492, uint8_t x493 = subborrow_u32(0x0, x476, 0xfffffffb);
- uint32_t x495, uint8_t x496 = subborrow_u32(x493, x479, 0xffffffff);
- uint32_t x498, uint8_t x499 = subborrow_u32(x496, x482, 0xffffffff);
- uint32_t x501, uint8_t x502 = subborrow_u32(x499, x485, 0xffffffff);
- uint32_t x504, uint8_t x505 = subborrow_u32(x502, x488, 0x3);
- uint32_t _, uint8_t x508 = subborrow_u32(x505, x490, 0x0);
- uint32_t x509 = cmovznz32(x508, x504, x488);
- uint32_t x510 = cmovznz32(x508, x501, x485);
- uint32_t x511 = cmovznz32(x508, x498, x482);
- uint32_t x512 = cmovznz32(x508, x495, x479);
- uint32_t x513 = cmovznz32(x508, x492, x476);
- return (x509, x510, x511, x512, x513))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e130m5/femulDisplay.v b/src/Specific/montgomery32_2e130m5/femulDisplay.v
deleted file mode 100644
index aab805e5f..000000000
--- a/src/Specific/montgomery32_2e130m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e130m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e130m5/fenz.c b/src/Specific/montgomery32_2e130m5/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e130m5/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e130m5/fenz.v b/src/Specific/montgomery32_2e130m5/fenz.v
deleted file mode 100644
index c32c5716f..000000000
--- a/src/Specific/montgomery32_2e130m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e130m5/fenzDisplay.log b/src/Specific/montgomery32_2e130m5/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e130m5/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e130m5/fenzDisplay.v b/src/Specific/montgomery32_2e130m5/fenzDisplay.v
deleted file mode 100644
index fd8bbe621..000000000
--- a/src/Specific/montgomery32_2e130m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e130m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e130m5/feopp.c b/src/Specific/montgomery32_2e130m5/feopp.c
deleted file mode 100644
index 52806d593..000000000
--- a/src/Specific/montgomery32_2e130m5/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffffb);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint8_t x41 = ((uint8_t)x24 & 0x3);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e130m5/feopp.v b/src/Specific/montgomery32_2e130m5/feopp.v
deleted file mode 100644
index 03b9e12c7..000000000
--- a/src/Specific/montgomery32_2e130m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e130m5/feoppDisplay.log b/src/Specific/montgomery32_2e130m5/feoppDisplay.log
deleted file mode 100644
index 3f460c1dd..000000000
--- a/src/Specific/montgomery32_2e130m5/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffffb);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint8_t x41 = ((uint8_t)x24 & 0x3);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e130m5/feoppDisplay.v b/src/Specific/montgomery32_2e130m5/feoppDisplay.v
deleted file mode 100644
index 994ca0371..000000000
--- a/src/Specific/montgomery32_2e130m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e130m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e130m5/fesquare.c b/src/Specific/montgomery32_2e130m5/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e130m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e130m5/fesub.c b/src/Specific/montgomery32_2e130m5/fesub.c
deleted file mode 100644
index fed7c8420..000000000
--- a/src/Specific/montgomery32_2e130m5/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffffb);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint8_t x52 = ((uint8_t)x35 & 0x3);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e130m5/fesub.v b/src/Specific/montgomery32_2e130m5/fesub.v
deleted file mode 100644
index 50b9f082b..000000000
--- a/src/Specific/montgomery32_2e130m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e130m5/fesubDisplay.log b/src/Specific/montgomery32_2e130m5/fesubDisplay.log
deleted file mode 100644
index e12f2c9c3..000000000
--- a/src/Specific/montgomery32_2e130m5/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffffb);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint8_t x52 = ((uint8_t)x35 & 0x3);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e130m5/fesubDisplay.v b/src/Specific/montgomery32_2e130m5/fesubDisplay.v
deleted file mode 100644
index c85637ff1..000000000
--- a/src/Specific/montgomery32_2e130m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e130m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e130m5/CurveParameters.v b/src/Specific/montgomery32_2e130m5_5limbs/CurveParameters.v
index 4dfc2991f..4dfc2991f 100644
--- a/src/Specific/montgomery32_2e130m5/CurveParameters.v
+++ b/src/Specific/montgomery32_2e130m5_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/Synthesis.v b/src/Specific/montgomery32_2e130m5_5limbs/Synthesis.v
new file mode 100644
index 000000000..59fb07950
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e130m5/compiler.sh b/src/Specific/montgomery32_2e130m5_5limbs/compiler.sh
index 53dc4682c..53dc4682c 100755
--- a/src/Specific/montgomery32_2e130m5/compiler.sh
+++ b/src/Specific/montgomery32_2e130m5_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e130m5/compilerxx.sh b/src/Specific/montgomery32_2e130m5_5limbs/compilerxx.sh
index 162b8bb29..162b8bb29 100755
--- a/src/Specific/montgomery32_2e130m5/compilerxx.sh
+++ b/src/Specific/montgomery32_2e130m5_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/feadd.v b/src/Specific/montgomery32_2e130m5_5limbs/feadd.v
new file mode 100644
index 000000000..7adfcf552
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e130m5_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..90935a752
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/femul.v b/src/Specific/montgomery32_2e130m5_5limbs/femul.v
new file mode 100644
index 000000000..ea475c8ed
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e130m5_5limbs/femulDisplay.v
new file mode 100644
index 000000000..e4cbca3c6
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/fenz.v b/src/Specific/montgomery32_2e130m5_5limbs/fenz.v
new file mode 100644
index 000000000..8b9c5ba27
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e130m5_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..32b0b16c9
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/feopp.v b/src/Specific/montgomery32_2e130m5_5limbs/feopp.v
new file mode 100644
index 000000000..ac54e2776
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e130m5_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..938271ace
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/fesub.v b/src/Specific/montgomery32_2e130m5_5limbs/fesub.v
new file mode 100644
index 000000000..145b55a60
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e130m5_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e130m5_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..e67451fe7
--- /dev/null
+++ b/src/Specific/montgomery32_2e130m5_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e130m5_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e130m5/py_interpreter.sh b/src/Specific/montgomery32_2e130m5_5limbs/py_interpreter.sh
index d46af80e8..d46af80e8 100755
--- a/src/Specific/montgomery32_2e130m5/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e130m5_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e137m13/Synthesis.v b/src/Specific/montgomery32_2e137m13/Synthesis.v
deleted file mode 100644
index e8d2084e9..000000000
--- a/src/Specific/montgomery32_2e137m13/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e137m13.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e137m13/feadd.c b/src/Specific/montgomery32_2e137m13/feadd.c
deleted file mode 100644
index 9551c2a6f..000000000
--- a/src/Specific/montgomery32_2e137m13/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffff3, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x1ff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e137m13/feadd.v b/src/Specific/montgomery32_2e137m13/feadd.v
deleted file mode 100644
index d6a3852c7..000000000
--- a/src/Specific/montgomery32_2e137m13/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e137m13/feaddDisplay.log b/src/Specific/montgomery32_2e137m13/feaddDisplay.log
deleted file mode 100644
index ce18e4d1f..000000000
--- a/src/Specific/montgomery32_2e137m13/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffff3);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x1ff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e137m13/feaddDisplay.v b/src/Specific/montgomery32_2e137m13/feaddDisplay.v
deleted file mode 100644
index ad387e156..000000000
--- a/src/Specific/montgomery32_2e137m13/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e137m13.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e137m13/femul.c b/src/Specific/montgomery32_2e137m13/femul.c
deleted file mode 100644
index 95d505d62..000000000
--- a/src/Specific/montgomery32_2e137m13/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xc4ec4ec5, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffff3, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x1ff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xc4ec4ec5, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffff3, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x1ff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xc4ec4ec5, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffff3, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x1ff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xc4ec4ec5, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffff3, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x1ff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xc4ec4ec5, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffff3, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x1ff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffff3, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x1ff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e137m13/femul.v b/src/Specific/montgomery32_2e137m13/femul.v
deleted file mode 100644
index 590ba8c18..000000000
--- a/src/Specific/montgomery32_2e137m13/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e137m13/femulDisplay.log b/src/Specific/montgomery32_2e137m13/femulDisplay.log
deleted file mode 100644
index e2ecb1b74..000000000
--- a/src/Specific/montgomery32_2e137m13/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xc4ec4ec5);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffff3);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0x1ff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0xc4ec4ec5);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xfffffff3);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0x1ff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0xc4ec4ec5);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xfffffff3);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0x1ff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0xc4ec4ec5);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xfffffff3);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0x1ff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0xc4ec4ec5);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xfffffff3);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0x1ff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xfffffff3);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0x1ff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e137m13/femulDisplay.v b/src/Specific/montgomery32_2e137m13/femulDisplay.v
deleted file mode 100644
index 43ddf0442..000000000
--- a/src/Specific/montgomery32_2e137m13/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e137m13.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e137m13/fenz.c b/src/Specific/montgomery32_2e137m13/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e137m13/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e137m13/fenz.v b/src/Specific/montgomery32_2e137m13/fenz.v
deleted file mode 100644
index 48f681ce5..000000000
--- a/src/Specific/montgomery32_2e137m13/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e137m13/fenzDisplay.log b/src/Specific/montgomery32_2e137m13/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e137m13/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e137m13/fenzDisplay.v b/src/Specific/montgomery32_2e137m13/fenzDisplay.v
deleted file mode 100644
index 7f4704f1e..000000000
--- a/src/Specific/montgomery32_2e137m13/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e137m13.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e137m13/feopp.c b/src/Specific/montgomery32_2e137m13/feopp.c
deleted file mode 100644
index 39924b58e..000000000
--- a/src/Specific/montgomery32_2e137m13/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffff3);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0x1ff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e137m13/feopp.v b/src/Specific/montgomery32_2e137m13/feopp.v
deleted file mode 100644
index 594d26f84..000000000
--- a/src/Specific/montgomery32_2e137m13/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e137m13/feoppDisplay.log b/src/Specific/montgomery32_2e137m13/feoppDisplay.log
deleted file mode 100644
index f1cfb1f67..000000000
--- a/src/Specific/montgomery32_2e137m13/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffff3);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0x1ff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e137m13/feoppDisplay.v b/src/Specific/montgomery32_2e137m13/feoppDisplay.v
deleted file mode 100644
index df95457ea..000000000
--- a/src/Specific/montgomery32_2e137m13/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e137m13.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e137m13/fesquare.c b/src/Specific/montgomery32_2e137m13/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e137m13/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e137m13/fesub.c b/src/Specific/montgomery32_2e137m13/fesub.c
deleted file mode 100644
index ee8fe44ce..000000000
--- a/src/Specific/montgomery32_2e137m13/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffff3);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0x1ff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e137m13/fesub.v b/src/Specific/montgomery32_2e137m13/fesub.v
deleted file mode 100644
index 8f73ba4da..000000000
--- a/src/Specific/montgomery32_2e137m13/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e137m13/fesubDisplay.log b/src/Specific/montgomery32_2e137m13/fesubDisplay.log
deleted file mode 100644
index 795077b02..000000000
--- a/src/Specific/montgomery32_2e137m13/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffff3);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0x1ff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e137m13/fesubDisplay.v b/src/Specific/montgomery32_2e137m13/fesubDisplay.v
deleted file mode 100644
index 992b1a675..000000000
--- a/src/Specific/montgomery32_2e137m13/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e137m13.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e137m13/CurveParameters.v b/src/Specific/montgomery32_2e137m13_5limbs/CurveParameters.v
index 941f2eebd..941f2eebd 100644
--- a/src/Specific/montgomery32_2e137m13/CurveParameters.v
+++ b/src/Specific/montgomery32_2e137m13_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/Synthesis.v b/src/Specific/montgomery32_2e137m13_5limbs/Synthesis.v
new file mode 100644
index 000000000..b56dd46b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e137m13/compiler.sh b/src/Specific/montgomery32_2e137m13_5limbs/compiler.sh
index 2d8bc5746..2d8bc5746 100755
--- a/src/Specific/montgomery32_2e137m13/compiler.sh
+++ b/src/Specific/montgomery32_2e137m13_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e137m13/compilerxx.sh b/src/Specific/montgomery32_2e137m13_5limbs/compilerxx.sh
index 5a0ed021c..5a0ed021c 100755
--- a/src/Specific/montgomery32_2e137m13/compilerxx.sh
+++ b/src/Specific/montgomery32_2e137m13_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/feadd.v b/src/Specific/montgomery32_2e137m13_5limbs/feadd.v
new file mode 100644
index 000000000..78808dc89
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e137m13_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..0469bd3bd
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/femul.v b/src/Specific/montgomery32_2e137m13_5limbs/femul.v
new file mode 100644
index 000000000..bd4825a7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e137m13_5limbs/femulDisplay.v
new file mode 100644
index 000000000..ba617c773
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/fenz.v b/src/Specific/montgomery32_2e137m13_5limbs/fenz.v
new file mode 100644
index 000000000..73595f696
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e137m13_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..c080f5f06
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/feopp.v b/src/Specific/montgomery32_2e137m13_5limbs/feopp.v
new file mode 100644
index 000000000..c701f3fc4
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e137m13_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..daa6255a6
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/fesub.v b/src/Specific/montgomery32_2e137m13_5limbs/fesub.v
new file mode 100644
index 000000000..553ed7091
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e137m13_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e137m13_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..3e210f0e0
--- /dev/null
+++ b/src/Specific/montgomery32_2e137m13_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e137m13_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e137m13/py_interpreter.sh b/src/Specific/montgomery32_2e137m13_5limbs/py_interpreter.sh
index 50240a08b..50240a08b 100755
--- a/src/Specific/montgomery32_2e137m13/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e137m13_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e140m27/Synthesis.v b/src/Specific/montgomery32_2e140m27/Synthesis.v
deleted file mode 100644
index 214f41a1f..000000000
--- a/src/Specific/montgomery32_2e140m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e140m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e140m27/feadd.c b/src/Specific/montgomery32_2e140m27/feadd.c
deleted file mode 100644
index a836d6e4b..000000000
--- a/src/Specific/montgomery32_2e140m27/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xffffffe5, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0xfff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e140m27/feadd.v b/src/Specific/montgomery32_2e140m27/feadd.v
deleted file mode 100644
index b556d34e8..000000000
--- a/src/Specific/montgomery32_2e140m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e140m27/feaddDisplay.log b/src/Specific/montgomery32_2e140m27/feaddDisplay.log
deleted file mode 100644
index 1d528f09a..000000000
--- a/src/Specific/montgomery32_2e140m27/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xffffffe5);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0xfff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e140m27/feaddDisplay.v b/src/Specific/montgomery32_2e140m27/feaddDisplay.v
deleted file mode 100644
index 8ad4cfb37..000000000
--- a/src/Specific/montgomery32_2e140m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e140m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e140m27/femul.c b/src/Specific/montgomery32_2e140m27/femul.c
deleted file mode 100644
index 71d6053f7..000000000
--- a/src/Specific/montgomery32_2e140m27/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0x684bda13, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xffffffe5, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0xfff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0x684bda13, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xffffffe5, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0xfff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0x684bda13, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xffffffe5, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0xfff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0x684bda13, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xffffffe5, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0xfff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0x684bda13, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xffffffe5, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0xfff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xffffffe5, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0xfff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e140m27/femul.v b/src/Specific/montgomery32_2e140m27/femul.v
deleted file mode 100644
index dce04c0e4..000000000
--- a/src/Specific/montgomery32_2e140m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e140m27/femulDisplay.log b/src/Specific/montgomery32_2e140m27/femulDisplay.log
deleted file mode 100644
index 5dfdbcff6..000000000
--- a/src/Specific/montgomery32_2e140m27/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0x684bda13);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xffffffe5);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0xfff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0x684bda13);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xffffffe5);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0xfff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0x684bda13);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xffffffe5);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0xfff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0x684bda13);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xffffffe5);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0xfff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0x684bda13);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xffffffe5);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0xfff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xffffffe5);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0xfff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e140m27/femulDisplay.v b/src/Specific/montgomery32_2e140m27/femulDisplay.v
deleted file mode 100644
index 3c2568258..000000000
--- a/src/Specific/montgomery32_2e140m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e140m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e140m27/fenz.c b/src/Specific/montgomery32_2e140m27/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e140m27/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e140m27/fenz.v b/src/Specific/montgomery32_2e140m27/fenz.v
deleted file mode 100644
index 8fe31c295..000000000
--- a/src/Specific/montgomery32_2e140m27/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e140m27/fenzDisplay.log b/src/Specific/montgomery32_2e140m27/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e140m27/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e140m27/fenzDisplay.v b/src/Specific/montgomery32_2e140m27/fenzDisplay.v
deleted file mode 100644
index 3e74fef0c..000000000
--- a/src/Specific/montgomery32_2e140m27/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e140m27.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e140m27/feopp.c b/src/Specific/montgomery32_2e140m27/feopp.c
deleted file mode 100644
index 5b9a3606e..000000000
--- a/src/Specific/montgomery32_2e140m27/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xffffffe5);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0xfff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e140m27/feopp.v b/src/Specific/montgomery32_2e140m27/feopp.v
deleted file mode 100644
index e206046e5..000000000
--- a/src/Specific/montgomery32_2e140m27/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e140m27/feoppDisplay.log b/src/Specific/montgomery32_2e140m27/feoppDisplay.log
deleted file mode 100644
index 4b3132870..000000000
--- a/src/Specific/montgomery32_2e140m27/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xffffffe5);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0xfff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e140m27/feoppDisplay.v b/src/Specific/montgomery32_2e140m27/feoppDisplay.v
deleted file mode 100644
index c9ccccb74..000000000
--- a/src/Specific/montgomery32_2e140m27/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e140m27.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e140m27/fesquare.c b/src/Specific/montgomery32_2e140m27/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e140m27/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e140m27/fesub.c b/src/Specific/montgomery32_2e140m27/fesub.c
deleted file mode 100644
index 66c4f3cc0..000000000
--- a/src/Specific/montgomery32_2e140m27/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xffffffe5);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0xfff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e140m27/fesub.v b/src/Specific/montgomery32_2e140m27/fesub.v
deleted file mode 100644
index dc4b9af91..000000000
--- a/src/Specific/montgomery32_2e140m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e140m27/fesubDisplay.log b/src/Specific/montgomery32_2e140m27/fesubDisplay.log
deleted file mode 100644
index f4896928b..000000000
--- a/src/Specific/montgomery32_2e140m27/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xffffffe5);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0xfff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e140m27/fesubDisplay.v b/src/Specific/montgomery32_2e140m27/fesubDisplay.v
deleted file mode 100644
index 4764c3f86..000000000
--- a/src/Specific/montgomery32_2e140m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e140m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e140m27/CurveParameters.v b/src/Specific/montgomery32_2e140m27_5limbs/CurveParameters.v
index 541761b3b..541761b3b 100644
--- a/src/Specific/montgomery32_2e140m27/CurveParameters.v
+++ b/src/Specific/montgomery32_2e140m27_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/Synthesis.v b/src/Specific/montgomery32_2e140m27_5limbs/Synthesis.v
new file mode 100644
index 000000000..5d3a616f1
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e140m27/compiler.sh b/src/Specific/montgomery32_2e140m27_5limbs/compiler.sh
index f9f279547..f9f279547 100755
--- a/src/Specific/montgomery32_2e140m27/compiler.sh
+++ b/src/Specific/montgomery32_2e140m27_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e140m27/compilerxx.sh b/src/Specific/montgomery32_2e140m27_5limbs/compilerxx.sh
index 856384bf5..856384bf5 100755
--- a/src/Specific/montgomery32_2e140m27/compilerxx.sh
+++ b/src/Specific/montgomery32_2e140m27_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feadd.v b/src/Specific/montgomery32_2e140m27_5limbs/feadd.v
new file mode 100644
index 000000000..b162d72d8
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..8c4b08316
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/femul.v b/src/Specific/montgomery32_2e140m27_5limbs/femul.v
new file mode 100644
index 000000000..ccdbc9a54
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.v
new file mode 100644
index 000000000..09889813a
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fenz.v b/src/Specific/montgomery32_2e140m27_5limbs/fenz.v
new file mode 100644
index 000000000..006963fda
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..cf91b5d6b
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feopp.v b/src/Specific/montgomery32_2e140m27_5limbs/feopp.v
new file mode 100644
index 000000000..7120c2abc
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..b89cce730
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fesub.v b/src/Specific/montgomery32_2e140m27_5limbs/fesub.v
new file mode 100644
index 000000000..61d5c7d70
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..ee49f5655
--- /dev/null
+++ b/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e140m27_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e140m27/py_interpreter.sh b/src/Specific/montgomery32_2e140m27_5limbs/py_interpreter.sh
index c02634165..c02634165 100755
--- a/src/Specific/montgomery32_2e140m27/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e140m27_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e141m9/Synthesis.v b/src/Specific/montgomery32_2e141m9/Synthesis.v
deleted file mode 100644
index 6ffc2eb40..000000000
--- a/src/Specific/montgomery32_2e141m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e141m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e141m9/feadd.c b/src/Specific/montgomery32_2e141m9/feadd.c
deleted file mode 100644
index 29f2dbfd7..000000000
--- a/src/Specific/montgomery32_2e141m9/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffff7, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x1fff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e141m9/feadd.v b/src/Specific/montgomery32_2e141m9/feadd.v
deleted file mode 100644
index 3815b725c..000000000
--- a/src/Specific/montgomery32_2e141m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e141m9/feaddDisplay.log b/src/Specific/montgomery32_2e141m9/feaddDisplay.log
deleted file mode 100644
index 5a7279038..000000000
--- a/src/Specific/montgomery32_2e141m9/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffff7);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x1fff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e141m9/feaddDisplay.v b/src/Specific/montgomery32_2e141m9/feaddDisplay.v
deleted file mode 100644
index c86b4a613..000000000
--- a/src/Specific/montgomery32_2e141m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e141m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e141m9/femul.c b/src/Specific/montgomery32_2e141m9/femul.c
deleted file mode 100644
index 1d70a8f0c..000000000
--- a/src/Specific/montgomery32_2e141m9/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0x38e38e39, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffff7, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x1fff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0x38e38e39, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffff7, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x1fff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0x38e38e39, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffff7, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x1fff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0x38e38e39, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffff7, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x1fff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0x38e38e39, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffff7, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x1fff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffff7, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x1fff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e141m9/femul.v b/src/Specific/montgomery32_2e141m9/femul.v
deleted file mode 100644
index bea319f3e..000000000
--- a/src/Specific/montgomery32_2e141m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e141m9/femulDisplay.log b/src/Specific/montgomery32_2e141m9/femulDisplay.log
deleted file mode 100644
index de7cb15c0..000000000
--- a/src/Specific/montgomery32_2e141m9/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0x38e38e39);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffff7);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0x1fff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0x38e38e39);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xfffffff7);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0x1fff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0x38e38e39);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xfffffff7);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0x1fff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0x38e38e39);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xfffffff7);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0x1fff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0x38e38e39);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xfffffff7);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0x1fff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xfffffff7);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0x1fff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e141m9/femulDisplay.v b/src/Specific/montgomery32_2e141m9/femulDisplay.v
deleted file mode 100644
index 3aeb76d98..000000000
--- a/src/Specific/montgomery32_2e141m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e141m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e141m9/fenz.c b/src/Specific/montgomery32_2e141m9/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e141m9/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e141m9/fenz.v b/src/Specific/montgomery32_2e141m9/fenz.v
deleted file mode 100644
index 709cfcde5..000000000
--- a/src/Specific/montgomery32_2e141m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e141m9/fenzDisplay.log b/src/Specific/montgomery32_2e141m9/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e141m9/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e141m9/fenzDisplay.v b/src/Specific/montgomery32_2e141m9/fenzDisplay.v
deleted file mode 100644
index b9bc2e325..000000000
--- a/src/Specific/montgomery32_2e141m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e141m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e141m9/feopp.c b/src/Specific/montgomery32_2e141m9/feopp.c
deleted file mode 100644
index 1df743151..000000000
--- a/src/Specific/montgomery32_2e141m9/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffff7);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0x1fff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e141m9/feopp.v b/src/Specific/montgomery32_2e141m9/feopp.v
deleted file mode 100644
index 8eb1810f6..000000000
--- a/src/Specific/montgomery32_2e141m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e141m9/feoppDisplay.log b/src/Specific/montgomery32_2e141m9/feoppDisplay.log
deleted file mode 100644
index 0bb6e4ef5..000000000
--- a/src/Specific/montgomery32_2e141m9/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffff7);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0x1fff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e141m9/feoppDisplay.v b/src/Specific/montgomery32_2e141m9/feoppDisplay.v
deleted file mode 100644
index e5bf6e3a9..000000000
--- a/src/Specific/montgomery32_2e141m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e141m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e141m9/fesquare.c b/src/Specific/montgomery32_2e141m9/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e141m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e141m9/fesub.c b/src/Specific/montgomery32_2e141m9/fesub.c
deleted file mode 100644
index ac66bcd49..000000000
--- a/src/Specific/montgomery32_2e141m9/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffff7);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0x1fff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e141m9/fesub.v b/src/Specific/montgomery32_2e141m9/fesub.v
deleted file mode 100644
index ceb1b92c3..000000000
--- a/src/Specific/montgomery32_2e141m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e141m9/fesubDisplay.log b/src/Specific/montgomery32_2e141m9/fesubDisplay.log
deleted file mode 100644
index 68b2db085..000000000
--- a/src/Specific/montgomery32_2e141m9/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffff7);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0x1fff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e141m9/fesubDisplay.v b/src/Specific/montgomery32_2e141m9/fesubDisplay.v
deleted file mode 100644
index 6c3f299da..000000000
--- a/src/Specific/montgomery32_2e141m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e141m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e141m9/CurveParameters.v b/src/Specific/montgomery32_2e141m9_5limbs/CurveParameters.v
index 341a4a51e..341a4a51e 100644
--- a/src/Specific/montgomery32_2e141m9/CurveParameters.v
+++ b/src/Specific/montgomery32_2e141m9_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/Synthesis.v b/src/Specific/montgomery32_2e141m9_5limbs/Synthesis.v
new file mode 100644
index 000000000..da08f76a8
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e141m9/compiler.sh b/src/Specific/montgomery32_2e141m9_5limbs/compiler.sh
index ea2456e89..ea2456e89 100755
--- a/src/Specific/montgomery32_2e141m9/compiler.sh
+++ b/src/Specific/montgomery32_2e141m9_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e141m9/compilerxx.sh b/src/Specific/montgomery32_2e141m9_5limbs/compilerxx.sh
index 4b76dc72f..4b76dc72f 100755
--- a/src/Specific/montgomery32_2e141m9/compilerxx.sh
+++ b/src/Specific/montgomery32_2e141m9_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/feadd.v b/src/Specific/montgomery32_2e141m9_5limbs/feadd.v
new file mode 100644
index 000000000..bb1b4de4f
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e141m9_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..7cba42aa2
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/femul.v b/src/Specific/montgomery32_2e141m9_5limbs/femul.v
new file mode 100644
index 000000000..6ea02e6a3
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e141m9_5limbs/femulDisplay.v
new file mode 100644
index 000000000..d68128c60
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/fenz.v b/src/Specific/montgomery32_2e141m9_5limbs/fenz.v
new file mode 100644
index 000000000..ce075993d
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e141m9_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..bf6031d0c
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/feopp.v b/src/Specific/montgomery32_2e141m9_5limbs/feopp.v
new file mode 100644
index 000000000..01aa4b127
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e141m9_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..01c672f9b
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/fesub.v b/src/Specific/montgomery32_2e141m9_5limbs/fesub.v
new file mode 100644
index 000000000..2636b0188
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e141m9_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e141m9_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..34de3f43c
--- /dev/null
+++ b/src/Specific/montgomery32_2e141m9_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e141m9_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e141m9/py_interpreter.sh b/src/Specific/montgomery32_2e141m9_5limbs/py_interpreter.sh
index efdc6d4ce..efdc6d4ce 100755
--- a/src/Specific/montgomery32_2e141m9/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e141m9_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e150m3/Synthesis.v b/src/Specific/montgomery32_2e150m3/Synthesis.v
deleted file mode 100644
index 3ed8f95bd..000000000
--- a/src/Specific/montgomery32_2e150m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e150m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e150m3/feadd.c b/src/Specific/montgomery32_2e150m3/feadd.c
deleted file mode 100644
index 9a127229b..000000000
--- a/src/Specific/montgomery32_2e150m3/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffffd, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3fffff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m3/feadd.v b/src/Specific/montgomery32_2e150m3/feadd.v
deleted file mode 100644
index 6e5f21892..000000000
--- a/src/Specific/montgomery32_2e150m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e150m3/feaddDisplay.log b/src/Specific/montgomery32_2e150m3/feaddDisplay.log
deleted file mode 100644
index 2633d1b6d..000000000
--- a/src/Specific/montgomery32_2e150m3/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffffd);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x3fffff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m3/feaddDisplay.v b/src/Specific/montgomery32_2e150m3/feaddDisplay.v
deleted file mode 100644
index ae4edea8f..000000000
--- a/src/Specific/montgomery32_2e150m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e150m3/femul.c b/src/Specific/montgomery32_2e150m3/femul.c
deleted file mode 100644
index a7b4e9f8f..000000000
--- a/src/Specific/montgomery32_2e150m3/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xaaaaaaab, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffffd, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x3fffff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xaaaaaaab, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffffd, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x3fffff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xaaaaaaab, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffffd, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x3fffff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xaaaaaaab, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffffd, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x3fffff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xaaaaaaab, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffffd, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x3fffff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffffd, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x3fffff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m3/femul.v b/src/Specific/montgomery32_2e150m3/femul.v
deleted file mode 100644
index 2630ebbc2..000000000
--- a/src/Specific/montgomery32_2e150m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e150m3/femulDisplay.log b/src/Specific/montgomery32_2e150m3/femulDisplay.log
deleted file mode 100644
index 6258382e3..000000000
--- a/src/Specific/montgomery32_2e150m3/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xaaaaaaab);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffffd);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0x3fffff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0xaaaaaaab);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xfffffffd);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0x3fffff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0xaaaaaaab);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xfffffffd);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0x3fffff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0xaaaaaaab);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xfffffffd);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0x3fffff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0xaaaaaaab);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xfffffffd);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0x3fffff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xfffffffd);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0x3fffff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m3/femulDisplay.v b/src/Specific/montgomery32_2e150m3/femulDisplay.v
deleted file mode 100644
index bf7b16acc..000000000
--- a/src/Specific/montgomery32_2e150m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e150m3/fenz.c b/src/Specific/montgomery32_2e150m3/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e150m3/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m3/fenz.v b/src/Specific/montgomery32_2e150m3/fenz.v
deleted file mode 100644
index 2a76fb424..000000000
--- a/src/Specific/montgomery32_2e150m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e150m3/fenzDisplay.log b/src/Specific/montgomery32_2e150m3/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e150m3/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e150m3/fenzDisplay.v b/src/Specific/montgomery32_2e150m3/fenzDisplay.v
deleted file mode 100644
index bb79afed9..000000000
--- a/src/Specific/montgomery32_2e150m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e150m3/feopp.c b/src/Specific/montgomery32_2e150m3/feopp.c
deleted file mode 100644
index d20b45d9f..000000000
--- a/src/Specific/montgomery32_2e150m3/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffffd);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0x3fffff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m3/feopp.v b/src/Specific/montgomery32_2e150m3/feopp.v
deleted file mode 100644
index e9ac2150e..000000000
--- a/src/Specific/montgomery32_2e150m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e150m3/feoppDisplay.log b/src/Specific/montgomery32_2e150m3/feoppDisplay.log
deleted file mode 100644
index 15ae1a066..000000000
--- a/src/Specific/montgomery32_2e150m3/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffffd);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0x3fffff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m3/feoppDisplay.v b/src/Specific/montgomery32_2e150m3/feoppDisplay.v
deleted file mode 100644
index 7982036cd..000000000
--- a/src/Specific/montgomery32_2e150m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e150m3/fesquare.c b/src/Specific/montgomery32_2e150m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e150m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e150m3/fesub.c b/src/Specific/montgomery32_2e150m3/fesub.c
deleted file mode 100644
index 4de3e1ed2..000000000
--- a/src/Specific/montgomery32_2e150m3/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffffd);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0x3fffff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m3/fesub.v b/src/Specific/montgomery32_2e150m3/fesub.v
deleted file mode 100644
index ae1e7acb7..000000000
--- a/src/Specific/montgomery32_2e150m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e150m3/fesubDisplay.log b/src/Specific/montgomery32_2e150m3/fesubDisplay.log
deleted file mode 100644
index 9fe6254c8..000000000
--- a/src/Specific/montgomery32_2e150m3/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffffd);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0x3fffff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m3/fesubDisplay.v b/src/Specific/montgomery32_2e150m3/fesubDisplay.v
deleted file mode 100644
index 1be1a9da5..000000000
--- a/src/Specific/montgomery32_2e150m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e150m3/CurveParameters.v b/src/Specific/montgomery32_2e150m3_5limbs/CurveParameters.v
index 761ac9131..761ac9131 100644
--- a/src/Specific/montgomery32_2e150m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e150m3_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/Synthesis.v b/src/Specific/montgomery32_2e150m3_5limbs/Synthesis.v
new file mode 100644
index 000000000..4b788c221
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e150m3/compiler.sh b/src/Specific/montgomery32_2e150m3_5limbs/compiler.sh
index 80b66a38c..80b66a38c 100755
--- a/src/Specific/montgomery32_2e150m3/compiler.sh
+++ b/src/Specific/montgomery32_2e150m3_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e150m3/compilerxx.sh b/src/Specific/montgomery32_2e150m3_5limbs/compilerxx.sh
index 73cc50983..73cc50983 100755
--- a/src/Specific/montgomery32_2e150m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e150m3_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/feadd.v b/src/Specific/montgomery32_2e150m3_5limbs/feadd.v
new file mode 100644
index 000000000..51ae22d1e
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e150m3_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..a87ae2476
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/femul.v b/src/Specific/montgomery32_2e150m3_5limbs/femul.v
new file mode 100644
index 000000000..e88f08d14
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e150m3_5limbs/femulDisplay.v
new file mode 100644
index 000000000..48f659f86
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/fenz.v b/src/Specific/montgomery32_2e150m3_5limbs/fenz.v
new file mode 100644
index 000000000..6dba2f111
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e150m3_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..a16ea3ceb
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/feopp.v b/src/Specific/montgomery32_2e150m3_5limbs/feopp.v
new file mode 100644
index 000000000..5cfa8918d
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e150m3_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..1ede3cecb
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/fesub.v b/src/Specific/montgomery32_2e150m3_5limbs/fesub.v
new file mode 100644
index 000000000..8a2697292
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e150m3_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e150m3_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..6b896ff42
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m3_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m3_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e150m3/py_interpreter.sh b/src/Specific/montgomery32_2e150m3_5limbs/py_interpreter.sh
index 9d6257b10..9d6257b10 100755
--- a/src/Specific/montgomery32_2e150m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e150m3_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e150m5/Synthesis.v b/src/Specific/montgomery32_2e150m5/Synthesis.v
deleted file mode 100644
index db992a500..000000000
--- a/src/Specific/montgomery32_2e150m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e150m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e150m5/feadd.c b/src/Specific/montgomery32_2e150m5/feadd.c
deleted file mode 100644
index 6101067bb..000000000
--- a/src/Specific/montgomery32_2e150m5/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffffb, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3fffff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m5/feadd.v b/src/Specific/montgomery32_2e150m5/feadd.v
deleted file mode 100644
index 43bb2d4c6..000000000
--- a/src/Specific/montgomery32_2e150m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e150m5/feaddDisplay.log b/src/Specific/montgomery32_2e150m5/feaddDisplay.log
deleted file mode 100644
index 28a86c45b..000000000
--- a/src/Specific/montgomery32_2e150m5/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffffb);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x3fffff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m5/feaddDisplay.v b/src/Specific/montgomery32_2e150m5/feaddDisplay.v
deleted file mode 100644
index 9dc093043..000000000
--- a/src/Specific/montgomery32_2e150m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e150m5/femul.c b/src/Specific/montgomery32_2e150m5/femul.c
deleted file mode 100644
index bf7026593..000000000
--- a/src/Specific/montgomery32_2e150m5/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xcccccccd, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffffb, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x3fffff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xcccccccd, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffffb, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x3fffff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xcccccccd, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffffb, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x3fffff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xcccccccd, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffffb, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x3fffff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xcccccccd, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffffb, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x3fffff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffffb, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x3fffff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m5/femul.v b/src/Specific/montgomery32_2e150m5/femul.v
deleted file mode 100644
index 9f74ccd35..000000000
--- a/src/Specific/montgomery32_2e150m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e150m5/femulDisplay.log b/src/Specific/montgomery32_2e150m5/femulDisplay.log
deleted file mode 100644
index c78e55401..000000000
--- a/src/Specific/montgomery32_2e150m5/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xcccccccd);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffffb);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0x3fffff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0xcccccccd);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xfffffffb);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0x3fffff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0xcccccccd);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xfffffffb);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0x3fffff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0xcccccccd);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xfffffffb);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0x3fffff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0xcccccccd);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xfffffffb);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0x3fffff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xfffffffb);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0x3fffff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m5/femulDisplay.v b/src/Specific/montgomery32_2e150m5/femulDisplay.v
deleted file mode 100644
index bd3639c32..000000000
--- a/src/Specific/montgomery32_2e150m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e150m5/fenz.c b/src/Specific/montgomery32_2e150m5/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e150m5/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m5/fenz.v b/src/Specific/montgomery32_2e150m5/fenz.v
deleted file mode 100644
index 4c76daf9e..000000000
--- a/src/Specific/montgomery32_2e150m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e150m5/fenzDisplay.log b/src/Specific/montgomery32_2e150m5/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e150m5/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e150m5/fenzDisplay.v b/src/Specific/montgomery32_2e150m5/fenzDisplay.v
deleted file mode 100644
index 2fbbc4cf2..000000000
--- a/src/Specific/montgomery32_2e150m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e150m5/feopp.c b/src/Specific/montgomery32_2e150m5/feopp.c
deleted file mode 100644
index a73292a9e..000000000
--- a/src/Specific/montgomery32_2e150m5/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffffb);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0x3fffff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m5/feopp.v b/src/Specific/montgomery32_2e150m5/feopp.v
deleted file mode 100644
index 5c7bf1d74..000000000
--- a/src/Specific/montgomery32_2e150m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e150m5/feoppDisplay.log b/src/Specific/montgomery32_2e150m5/feoppDisplay.log
deleted file mode 100644
index 91f1653b3..000000000
--- a/src/Specific/montgomery32_2e150m5/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffffb);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0x3fffff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m5/feoppDisplay.v b/src/Specific/montgomery32_2e150m5/feoppDisplay.v
deleted file mode 100644
index 9e8ee1a1b..000000000
--- a/src/Specific/montgomery32_2e150m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e150m5/fesquare.c b/src/Specific/montgomery32_2e150m5/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e150m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e150m5/fesub.c b/src/Specific/montgomery32_2e150m5/fesub.c
deleted file mode 100644
index 7f860d2ba..000000000
--- a/src/Specific/montgomery32_2e150m5/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffffb);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0x3fffff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e150m5/fesub.v b/src/Specific/montgomery32_2e150m5/fesub.v
deleted file mode 100644
index 3efa571b7..000000000
--- a/src/Specific/montgomery32_2e150m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e150m5/fesubDisplay.log b/src/Specific/montgomery32_2e150m5/fesubDisplay.log
deleted file mode 100644
index 96fa1ea1d..000000000
--- a/src/Specific/montgomery32_2e150m5/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffffb);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0x3fffff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e150m5/fesubDisplay.v b/src/Specific/montgomery32_2e150m5/fesubDisplay.v
deleted file mode 100644
index 7c312b0c0..000000000
--- a/src/Specific/montgomery32_2e150m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e150m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e150m5/CurveParameters.v b/src/Specific/montgomery32_2e150m5_5limbs/CurveParameters.v
index 906516faa..906516faa 100644
--- a/src/Specific/montgomery32_2e150m5/CurveParameters.v
+++ b/src/Specific/montgomery32_2e150m5_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/Synthesis.v b/src/Specific/montgomery32_2e150m5_5limbs/Synthesis.v
new file mode 100644
index 000000000..dde355b73
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e150m5/compiler.sh b/src/Specific/montgomery32_2e150m5_5limbs/compiler.sh
index 820c77cdb..820c77cdb 100755
--- a/src/Specific/montgomery32_2e150m5/compiler.sh
+++ b/src/Specific/montgomery32_2e150m5_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e150m5/compilerxx.sh b/src/Specific/montgomery32_2e150m5_5limbs/compilerxx.sh
index 70facc0f3..70facc0f3 100755
--- a/src/Specific/montgomery32_2e150m5/compilerxx.sh
+++ b/src/Specific/montgomery32_2e150m5_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/feadd.v b/src/Specific/montgomery32_2e150m5_5limbs/feadd.v
new file mode 100644
index 000000000..69655f147
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e150m5_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..9154e825e
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/femul.v b/src/Specific/montgomery32_2e150m5_5limbs/femul.v
new file mode 100644
index 000000000..23af1d3dd
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e150m5_5limbs/femulDisplay.v
new file mode 100644
index 000000000..3946f2a44
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/fenz.v b/src/Specific/montgomery32_2e150m5_5limbs/fenz.v
new file mode 100644
index 000000000..4de7adb0a
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e150m5_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..c64254096
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/feopp.v b/src/Specific/montgomery32_2e150m5_5limbs/feopp.v
new file mode 100644
index 000000000..5664d761c
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e150m5_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..6b93c764a
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/fesub.v b/src/Specific/montgomery32_2e150m5_5limbs/fesub.v
new file mode 100644
index 000000000..973f52ae0
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e150m5_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e150m5_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..e71e48443
--- /dev/null
+++ b/src/Specific/montgomery32_2e150m5_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e150m5_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e150m5/py_interpreter.sh b/src/Specific/montgomery32_2e150m5_5limbs/py_interpreter.sh
index 65d951fe9..65d951fe9 100755
--- a/src/Specific/montgomery32_2e150m5/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e150m5_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e152m17/Synthesis.v b/src/Specific/montgomery32_2e152m17/Synthesis.v
deleted file mode 100644
index 131f2eea6..000000000
--- a/src/Specific/montgomery32_2e152m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e152m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e152m17/feadd.c b/src/Specific/montgomery32_2e152m17/feadd.c
deleted file mode 100644
index 7aa9a97e8..000000000
--- a/src/Specific/montgomery32_2e152m17/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xffffffef, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0xffffff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e152m17/feadd.v b/src/Specific/montgomery32_2e152m17/feadd.v
deleted file mode 100644
index 54eb1805e..000000000
--- a/src/Specific/montgomery32_2e152m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e152m17/feaddDisplay.log b/src/Specific/montgomery32_2e152m17/feaddDisplay.log
deleted file mode 100644
index f5e728c70..000000000
--- a/src/Specific/montgomery32_2e152m17/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xffffffef);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0xffffff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e152m17/feaddDisplay.v b/src/Specific/montgomery32_2e152m17/feaddDisplay.v
deleted file mode 100644
index d105f1de5..000000000
--- a/src/Specific/montgomery32_2e152m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e152m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e152m17/femul.c b/src/Specific/montgomery32_2e152m17/femul.c
deleted file mode 100644
index b7f131ce6..000000000
--- a/src/Specific/montgomery32_2e152m17/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xf0f0f0f1, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xffffffef, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0xffffff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xf0f0f0f1, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xffffffef, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0xffffff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xf0f0f0f1, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xffffffef, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0xffffff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xf0f0f0f1, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xffffffef, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0xffffff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xf0f0f0f1, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xffffffef, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0xffffff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xffffffef, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0xffffff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e152m17/femul.v b/src/Specific/montgomery32_2e152m17/femul.v
deleted file mode 100644
index 8a1d50827..000000000
--- a/src/Specific/montgomery32_2e152m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e152m17/femulDisplay.log b/src/Specific/montgomery32_2e152m17/femulDisplay.log
deleted file mode 100644
index b6c0f4374..000000000
--- a/src/Specific/montgomery32_2e152m17/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xf0f0f0f1);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xffffffef);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0xffffff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0xf0f0f0f1);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xffffffef);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0xffffff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0xf0f0f0f1);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xffffffef);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0xffffff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0xf0f0f0f1);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xffffffef);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0xffffff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0xf0f0f0f1);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xffffffef);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0xffffff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xffffffef);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0xffffff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e152m17/femulDisplay.v b/src/Specific/montgomery32_2e152m17/femulDisplay.v
deleted file mode 100644
index 09b817d68..000000000
--- a/src/Specific/montgomery32_2e152m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e152m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e152m17/fenz.c b/src/Specific/montgomery32_2e152m17/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e152m17/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e152m17/fenz.v b/src/Specific/montgomery32_2e152m17/fenz.v
deleted file mode 100644
index c5aa26bff..000000000
--- a/src/Specific/montgomery32_2e152m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e152m17/fenzDisplay.log b/src/Specific/montgomery32_2e152m17/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e152m17/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e152m17/fenzDisplay.v b/src/Specific/montgomery32_2e152m17/fenzDisplay.v
deleted file mode 100644
index 77b77f1a8..000000000
--- a/src/Specific/montgomery32_2e152m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e152m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e152m17/feopp.c b/src/Specific/montgomery32_2e152m17/feopp.c
deleted file mode 100644
index 9315b0eb2..000000000
--- a/src/Specific/montgomery32_2e152m17/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xffffffef);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0xffffff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e152m17/feopp.v b/src/Specific/montgomery32_2e152m17/feopp.v
deleted file mode 100644
index bb4018ddb..000000000
--- a/src/Specific/montgomery32_2e152m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e152m17/feoppDisplay.log b/src/Specific/montgomery32_2e152m17/feoppDisplay.log
deleted file mode 100644
index 75f6eb65a..000000000
--- a/src/Specific/montgomery32_2e152m17/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xffffffef);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0xffffff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e152m17/feoppDisplay.v b/src/Specific/montgomery32_2e152m17/feoppDisplay.v
deleted file mode 100644
index 5cec5298f..000000000
--- a/src/Specific/montgomery32_2e152m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e152m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e152m17/fesquare.c b/src/Specific/montgomery32_2e152m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e152m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e152m17/fesub.c b/src/Specific/montgomery32_2e152m17/fesub.c
deleted file mode 100644
index 613b712b5..000000000
--- a/src/Specific/montgomery32_2e152m17/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xffffffef);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0xffffff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e152m17/fesub.v b/src/Specific/montgomery32_2e152m17/fesub.v
deleted file mode 100644
index df898f6ae..000000000
--- a/src/Specific/montgomery32_2e152m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e152m17/fesubDisplay.log b/src/Specific/montgomery32_2e152m17/fesubDisplay.log
deleted file mode 100644
index ee2a25baf..000000000
--- a/src/Specific/montgomery32_2e152m17/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xffffffef);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0xffffff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e152m17/fesubDisplay.v b/src/Specific/montgomery32_2e152m17/fesubDisplay.v
deleted file mode 100644
index 22f29e493..000000000
--- a/src/Specific/montgomery32_2e152m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e152m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e152m17/CurveParameters.v b/src/Specific/montgomery32_2e152m17_5limbs/CurveParameters.v
index 9192d3590..9192d3590 100644
--- a/src/Specific/montgomery32_2e152m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e152m17_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/Synthesis.v b/src/Specific/montgomery32_2e152m17_5limbs/Synthesis.v
new file mode 100644
index 000000000..83cae829c
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e152m17/compiler.sh b/src/Specific/montgomery32_2e152m17_5limbs/compiler.sh
index 9ef0bf7e3..9ef0bf7e3 100755
--- a/src/Specific/montgomery32_2e152m17/compiler.sh
+++ b/src/Specific/montgomery32_2e152m17_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e152m17/compilerxx.sh b/src/Specific/montgomery32_2e152m17_5limbs/compilerxx.sh
index a11b67e22..a11b67e22 100755
--- a/src/Specific/montgomery32_2e152m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e152m17_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/feadd.v b/src/Specific/montgomery32_2e152m17_5limbs/feadd.v
new file mode 100644
index 000000000..735f65f34
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e152m17_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..36f9f7f2c
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/femul.v b/src/Specific/montgomery32_2e152m17_5limbs/femul.v
new file mode 100644
index 000000000..3e6c93cdc
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e152m17_5limbs/femulDisplay.v
new file mode 100644
index 000000000..5881d2bf3
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/fenz.v b/src/Specific/montgomery32_2e152m17_5limbs/fenz.v
new file mode 100644
index 000000000..36879601b
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e152m17_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..64937127c
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/feopp.v b/src/Specific/montgomery32_2e152m17_5limbs/feopp.v
new file mode 100644
index 000000000..ac9bb7548
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e152m17_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..b7c7f7e48
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/fesub.v b/src/Specific/montgomery32_2e152m17_5limbs/fesub.v
new file mode 100644
index 000000000..7f943ed76
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e152m17_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e152m17_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..872631ac6
--- /dev/null
+++ b/src/Specific/montgomery32_2e152m17_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e152m17_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e152m17/py_interpreter.sh b/src/Specific/montgomery32_2e152m17_5limbs/py_interpreter.sh
index b6dee011d..b6dee011d 100755
--- a/src/Specific/montgomery32_2e152m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e152m17_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e158m15/Synthesis.v b/src/Specific/montgomery32_2e158m15/Synthesis.v
deleted file mode 100644
index 4fc53a610..000000000
--- a/src/Specific/montgomery32_2e158m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e158m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e158m15/feadd.c b/src/Specific/montgomery32_2e158m15/feadd.c
deleted file mode 100644
index ea813d3c5..000000000
--- a/src/Specific/montgomery32_2e158m15/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33);
- { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffff1, &x36);
- { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39);
- { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42);
- { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45);
- { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3fffffff, &x48);
- { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_);
- { uint32_t x53 = cmovznz32(x52, x48, x33);
- { uint32_t x54 = cmovznz32(x52, x45, x30);
- { uint32_t x55 = cmovznz32(x52, x42, x27);
- { uint32_t x56 = cmovznz32(x52, x39, x24);
- { uint32_t x57 = cmovznz32(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e158m15/feadd.v b/src/Specific/montgomery32_2e158m15/feadd.v
deleted file mode 100644
index 7652ecd64..000000000
--- a/src/Specific/montgomery32_2e158m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e158m15/feaddDisplay.log b/src/Specific/montgomery32_2e158m15/feaddDisplay.log
deleted file mode 100644
index b65769f73..000000000
--- a/src/Specific/montgomery32_2e158m15/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18);
- uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xfffffff1);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0x3fffffff);
- uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0);
- uint32_t x53 = cmovznz32(x52, x48, x33);
- uint32_t x54 = cmovznz32(x52, x45, x30);
- uint32_t x55 = cmovznz32(x52, x42, x27);
- uint32_t x56 = cmovznz32(x52, x39, x24);
- uint32_t x57 = cmovznz32(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e158m15/feaddDisplay.v b/src/Specific/montgomery32_2e158m15/feaddDisplay.v
deleted file mode 100644
index ce30ed078..000000000
--- a/src/Specific/montgomery32_2e158m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e158m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e158m15/femul.c b/src/Specific/montgomery32_2e158m15/femul.c
deleted file mode 100644
index c3a464980..000000000
--- a/src/Specific/montgomery32_2e158m15/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22);
- { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25);
- { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28);
- { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31);
- { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45);
- { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48);
- { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xeeeeeeef, &_);
- { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffff1, &x55);
- { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58);
- { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61);
- { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64);
- { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x3fffffff, &x67);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78);
- { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81);
- { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99);
- { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103);
- { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106);
- { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109);
- { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112);
- { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117);
- { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120);
- { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123);
- { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126);
- { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129);
- { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132);
- { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135);
- { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138);
- { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141);
- { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144);
- { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147);
- { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xeeeeeeef, &_);
- { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffff1, &x154);
- { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157);
- { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160);
- { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163);
- { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x3fffffff, &x166);
- { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168);
- { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171);
- { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174);
- { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177);
- { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180);
- { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_);
- { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186);
- { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189);
- { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192);
- { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195);
- { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203);
- { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206);
- { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209);
- { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212);
- { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226);
- { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235);
- { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238);
- { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241);
- { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244);
- { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247);
- { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xeeeeeeef, &_);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffff1, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263);
- { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x3fffffff, &x266);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277);
- { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280);
- { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326);
- { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347);
- { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xeeeeeeef, &_);
- { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffff1, &x354);
- { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357);
- { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360);
- { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363);
- { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x3fffffff, &x366);
- { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368);
- { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371);
- { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374);
- { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377);
- { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380);
- { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_);
- { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386);
- { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389);
- { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392);
- { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395);
- { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415);
- { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417);
- { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426);
- { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447);
- { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xeeeeeeef, &_);
- { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffff1, &x454);
- { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457);
- { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460);
- { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463);
- { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x3fffffff, &x466);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477);
- { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480);
- { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_);
- { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486);
- { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489);
- { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492);
- { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495);
- { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffff1, &x502);
- { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505);
- { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508);
- { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511);
- { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x3fffffff, &x514);
- { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_);
- { uint32_t x519 = cmovznz32(x518, x514, x498);
- { uint32_t x520 = cmovznz32(x518, x511, x495);
- { uint32_t x521 = cmovznz32(x518, x508, x492);
- { uint32_t x522 = cmovznz32(x518, x505, x489);
- { uint32_t x523 = cmovznz32(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e158m15/femul.v b/src/Specific/montgomery32_2e158m15/femul.v
deleted file mode 100644
index 31a5e0d29..000000000
--- a/src/Specific/montgomery32_2e158m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e158m15/femulDisplay.log b/src/Specific/montgomery32_2e158m15/femulDisplay.log
deleted file mode 100644
index f849fb9b8..000000000
--- a/src/Specific/montgomery32_2e158m15/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint32_t x22 = mulx_u32(x5, x13);
- uint32_t x24, uint32_t x25 = mulx_u32(x5, x15);
- uint32_t x27, uint32_t x28 = mulx_u32(x5, x17);
- uint32_t x30, uint32_t x31 = mulx_u32(x5, x19);
- uint32_t x33, uint32_t x34 = mulx_u32(x5, x18);
- uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33);
- uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34);
- uint32_t x51, uint32_t _ = mulx_u32(x21, 0xeeeeeeef);
- uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xfffffff1);
- uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff);
- uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff);
- uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff);
- uint32_t x66, uint32_t x67 = mulx_u32(x51, 0x3fffffff);
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66);
- uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67);
- uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81);
- uint32_t x102, uint32_t x103 = mulx_u32(x7, x13);
- uint32_t x105, uint32_t x106 = mulx_u32(x7, x15);
- uint32_t x108, uint32_t x109 = mulx_u32(x7, x17);
- uint32_t x111, uint32_t x112 = mulx_u32(x7, x19);
- uint32_t x114, uint32_t x115 = mulx_u32(x7, x18);
- uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114);
- uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115);
- uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117);
- uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120);
- uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123);
- uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126);
- uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129);
- uint32_t x150, uint32_t _ = mulx_u32(x132, 0xeeeeeeef);
- uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xfffffff1);
- uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff);
- uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff);
- uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff);
- uint32_t x165, uint32_t x166 = mulx_u32(x150, 0x3fffffff);
- uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162);
- uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165);
- uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166);
- uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint32_t x202, uint32_t x203 = mulx_u32(x9, x13);
- uint32_t x205, uint32_t x206 = mulx_u32(x9, x15);
- uint32_t x208, uint32_t x209 = mulx_u32(x9, x17);
- uint32_t x211, uint32_t x212 = mulx_u32(x9, x19);
- uint32_t x214, uint32_t x215 = mulx_u32(x9, x18);
- uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214);
- uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215);
- uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217);
- uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220);
- uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223);
- uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226);
- uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229);
- uint32_t x250, uint32_t _ = mulx_u32(x232, 0xeeeeeeef);
- uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xfffffff1);
- uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff);
- uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff);
- uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff);
- uint32_t x265, uint32_t x266 = mulx_u32(x250, 0x3fffffff);
- uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265);
- uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266);
- uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint32_t x302, uint32_t x303 = mulx_u32(x11, x13);
- uint32_t x305, uint32_t x306 = mulx_u32(x11, x15);
- uint32_t x308, uint32_t x309 = mulx_u32(x11, x17);
- uint32_t x311, uint32_t x312 = mulx_u32(x11, x19);
- uint32_t x314, uint32_t x315 = mulx_u32(x11, x18);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314);
- uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315);
- uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329);
- uint32_t x350, uint32_t _ = mulx_u32(x332, 0xeeeeeeef);
- uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xfffffff1);
- uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff);
- uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff);
- uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff);
- uint32_t x365, uint32_t x366 = mulx_u32(x350, 0x3fffffff);
- uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365);
- uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366);
- uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353);
- uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368);
- uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371);
- uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374);
- uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377);
- uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint32_t x402, uint32_t x403 = mulx_u32(x10, x13);
- uint32_t x405, uint32_t x406 = mulx_u32(x10, x15);
- uint32_t x408, uint32_t x409 = mulx_u32(x10, x17);
- uint32_t x411, uint32_t x412 = mulx_u32(x10, x19);
- uint32_t x414, uint32_t x415 = mulx_u32(x10, x18);
- uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405);
- uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408);
- uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414);
- uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415);
- uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429);
- uint32_t x450, uint32_t _ = mulx_u32(x432, 0xeeeeeeef);
- uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xfffffff1);
- uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff);
- uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff);
- uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff);
- uint32_t x465, uint32_t x466 = mulx_u32(x450, 0x3fffffff);
- uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465);
- uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466);
- uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453);
- uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468);
- uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471);
- uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474);
- uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477);
- uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xfffffff1);
- uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff);
- uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff);
- uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff);
- uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0x3fffffff);
- uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0);
- uint32_t x519 = cmovznz32(x518, x514, x498);
- uint32_t x520 = cmovznz32(x518, x511, x495);
- uint32_t x521 = cmovznz32(x518, x508, x492);
- uint32_t x522 = cmovznz32(x518, x505, x489);
- uint32_t x523 = cmovznz32(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e158m15/femulDisplay.v b/src/Specific/montgomery32_2e158m15/femulDisplay.v
deleted file mode 100644
index b476b8ee0..000000000
--- a/src/Specific/montgomery32_2e158m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e158m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e158m15/fenz.c b/src/Specific/montgomery32_2e158m15/fenz.c
deleted file mode 100644
index 5601e8c15..000000000
--- a/src/Specific/montgomery32_2e158m15/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x9 = (x8 | x7);
- { uint32_t x10 = (x6 | x9);
- { uint32_t x11 = (x4 | x10);
- { uint32_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e158m15/fenz.v b/src/Specific/montgomery32_2e158m15/fenz.v
deleted file mode 100644
index 0ad9df431..000000000
--- a/src/Specific/montgomery32_2e158m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e158m15/fenzDisplay.log b/src/Specific/montgomery32_2e158m15/fenzDisplay.log
deleted file mode 100644
index 723d13164..000000000
--- a/src/Specific/montgomery32_2e158m15/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x9 = (x8 | x7);
- uint32_t x10 = (x6 | x9);
- uint32_t x11 = (x4 | x10);
- uint32_t x12 = (x2 | x11);
- return x12)
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e158m15/fenzDisplay.v b/src/Specific/montgomery32_2e158m15/fenzDisplay.v
deleted file mode 100644
index b773211c7..000000000
--- a/src/Specific/montgomery32_2e158m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e158m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e158m15/feopp.c b/src/Specific/montgomery32_2e158m15/feopp.c
deleted file mode 100644
index 3f4e5751a..000000000
--- a/src/Specific/montgomery32_2e158m15/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10);
- { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13);
- { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16);
- { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19);
- { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0xfffffff1);
- { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27);
- { uint32_t x29 = (x24 & 0xffffffff);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31);
- { uint32_t x33 = (x24 & 0xffffffff);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35);
- { uint32_t x37 = (x24 & 0xffffffff);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39);
- { uint32_t x41 = (x24 & 0x3fffffff);
- { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e158m15/feopp.v b/src/Specific/montgomery32_2e158m15/feopp.v
deleted file mode 100644
index 607bceb69..000000000
--- a/src/Specific/montgomery32_2e158m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e158m15/feoppDisplay.log b/src/Specific/montgomery32_2e158m15/feoppDisplay.log
deleted file mode 100644
index 2697f64f6..000000000
--- a/src/Specific/montgomery32_2e158m15/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4);
- uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0xfffffff1);
- uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25);
- uint32_t x29 = (x24 & 0xffffffff);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29);
- uint32_t x33 = (x24 & 0xffffffff);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33);
- uint32_t x37 = (x24 & 0xffffffff);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37);
- uint32_t x41 = (x24 & 0x3fffffff);
- uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e158m15/feoppDisplay.v b/src/Specific/montgomery32_2e158m15/feoppDisplay.v
deleted file mode 100644
index e69d0cf88..000000000
--- a/src/Specific/montgomery32_2e158m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e158m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e158m15/fesquare.c b/src/Specific/montgomery32_2e158m15/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e158m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e158m15/fesub.c b/src/Specific/montgomery32_2e158m15/fesub.c
deleted file mode 100644
index 454b73e85..000000000
--- a/src/Specific/montgomery32_2e158m15/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27);
- { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30);
- { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33);
- { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- { uint32_t x36 = (x35 & 0xfffffff1);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38);
- { uint32_t x40 = (x35 & 0xffffffff);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42);
- { uint32_t x44 = (x35 & 0xffffffff);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46);
- { uint32_t x48 = (x35 & 0xffffffff);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50);
- { uint32_t x52 = (x35 & 0x3fffffff);
- { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e158m15/fesub.v b/src/Specific/montgomery32_2e158m15/fesub.v
deleted file mode 100644
index cfa43a346..000000000
--- a/src/Specific/montgomery32_2e158m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e158m15/fesubDisplay.log b/src/Specific/montgomery32_2e158m15/fesubDisplay.log
deleted file mode 100644
index feebc0497..000000000
--- a/src/Specific/montgomery32_2e158m15/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17);
- uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19);
- uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18);
- uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff);
- uint32_t x36 = (x35 & 0xfffffff1);
- uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36);
- uint32_t x40 = (x35 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40);
- uint32_t x44 = (x35 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44);
- uint32_t x48 = (x35 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48);
- uint32_t x52 = (x35 & 0x3fffffff);
- uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e158m15/fesubDisplay.v b/src/Specific/montgomery32_2e158m15/fesubDisplay.v
deleted file mode 100644
index 1e89857c8..000000000
--- a/src/Specific/montgomery32_2e158m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e158m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e158m15/CurveParameters.v b/src/Specific/montgomery32_2e158m15_5limbs/CurveParameters.v
index 282dd6dba..282dd6dba 100644
--- a/src/Specific/montgomery32_2e158m15/CurveParameters.v
+++ b/src/Specific/montgomery32_2e158m15_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/Synthesis.v b/src/Specific/montgomery32_2e158m15_5limbs/Synthesis.v
new file mode 100644
index 000000000..4b384a199
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e158m15/compiler.sh b/src/Specific/montgomery32_2e158m15_5limbs/compiler.sh
index 828a0f006..828a0f006 100755
--- a/src/Specific/montgomery32_2e158m15/compiler.sh
+++ b/src/Specific/montgomery32_2e158m15_5limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e158m15/compilerxx.sh b/src/Specific/montgomery32_2e158m15_5limbs/compilerxx.sh
index 8fb4e2d87..8fb4e2d87 100755
--- a/src/Specific/montgomery32_2e158m15/compilerxx.sh
+++ b/src/Specific/montgomery32_2e158m15_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/feadd.v b/src/Specific/montgomery32_2e158m15_5limbs/feadd.v
new file mode 100644
index 000000000..14023b2f1
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/feaddDisplay.v b/src/Specific/montgomery32_2e158m15_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..18ce7f295
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/femul.v b/src/Specific/montgomery32_2e158m15_5limbs/femul.v
new file mode 100644
index 000000000..7177cebc0
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/femulDisplay.v b/src/Specific/montgomery32_2e158m15_5limbs/femulDisplay.v
new file mode 100644
index 000000000..ef3d630a8
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/fenz.v b/src/Specific/montgomery32_2e158m15_5limbs/fenz.v
new file mode 100644
index 000000000..b4645e2ad
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/fenzDisplay.v b/src/Specific/montgomery32_2e158m15_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..8bd92bb79
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/feopp.v b/src/Specific/montgomery32_2e158m15_5limbs/feopp.v
new file mode 100644
index 000000000..51d6f09e7
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/feoppDisplay.v b/src/Specific/montgomery32_2e158m15_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..3a9db7f14
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/fesub.v b/src/Specific/montgomery32_2e158m15_5limbs/fesub.v
new file mode 100644
index 000000000..f3256c90a
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e158m15_5limbs/fesubDisplay.v b/src/Specific/montgomery32_2e158m15_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..4b77e7106
--- /dev/null
+++ b/src/Specific/montgomery32_2e158m15_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e158m15_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e158m15/py_interpreter.sh b/src/Specific/montgomery32_2e158m15_5limbs/py_interpreter.sh
index 5ea532959..5ea532959 100755
--- a/src/Specific/montgomery32_2e158m15/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e158m15_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e165m25/Synthesis.v b/src/Specific/montgomery32_2e165m25/Synthesis.v
deleted file mode 100644
index 8beac47a1..000000000
--- a/src/Specific/montgomery32_2e165m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e165m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e165m25/feadd.c b/src/Specific/montgomery32_2e165m25/feadd.c
deleted file mode 100644
index e05f2ca1b..000000000
--- a/src/Specific/montgomery32_2e165m25/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffe7, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x1f, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e165m25/feadd.v b/src/Specific/montgomery32_2e165m25/feadd.v
deleted file mode 100644
index 7f7384058..000000000
--- a/src/Specific/montgomery32_2e165m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e165m25/feaddDisplay.log b/src/Specific/montgomery32_2e165m25/feaddDisplay.log
deleted file mode 100644
index 2d8233e99..000000000
--- a/src/Specific/montgomery32_2e165m25/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffe7);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x1f);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e165m25/feaddDisplay.v b/src/Specific/montgomery32_2e165m25/feaddDisplay.v
deleted file mode 100644
index ad74f6bc5..000000000
--- a/src/Specific/montgomery32_2e165m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e165m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e165m25/femul.c b/src/Specific/montgomery32_2e165m25/femul.c
deleted file mode 100644
index 42401356b..000000000
--- a/src/Specific/montgomery32_2e165m25/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xc28f5c29, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffe7, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint8_t x80; uint32_t x79 = _mulx_u32_out_u8(x61, 0x1f, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint8_t x96 = (x95 + x80);
- { uint32_t _; uint8_t x99 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x43, x82, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x46, x85, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x49, x88, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x52, x91, &x110);
- { uint32_t x113; uint8_t x114 = _addcarryx_u32(x111, x55, x94, &x113);
- { uint32_t x116; uint8_t x117 = _addcarryx_u32(x114, x58, x96, &x116);
- { uint32_t x120; uint32_t x119 = _mulx_u32(x7, x15, &x120);
- { uint32_t x123; uint32_t x122 = _mulx_u32(x7, x17, &x123);
- { uint32_t x126; uint32_t x125 = _mulx_u32(x7, x19, &x126);
- { uint32_t x129; uint32_t x128 = _mulx_u32(x7, x21, &x129);
- { uint32_t x132; uint32_t x131 = _mulx_u32(x7, x23, &x132);
- { uint32_t x135; uint32_t x134 = _mulx_u32(x7, x22, &x135);
- { uint32_t x137; uint8_t x138 = _addcarryx_u32(0x0, x120, x122, &x137);
- { uint32_t x140; uint8_t x141 = _addcarryx_u32(x138, x123, x125, &x140);
- { uint32_t x143; uint8_t x144 = _addcarryx_u32(x141, x126, x128, &x143);
- { uint32_t x146; uint8_t x147 = _addcarryx_u32(x144, x129, x131, &x146);
- { uint32_t x149; uint8_t x150 = _addcarryx_u32(x147, x132, x134, &x149);
- { uint32_t x152; uint8_t _ = _addcarryx_u32(0x0, x150, x135, &x152);
- { uint32_t x155; uint8_t x156 = _addcarryx_u32(0x0, x101, x119, &x155);
- { uint32_t x158; uint8_t x159 = _addcarryx_u32(x156, x104, x137, &x158);
- { uint32_t x161; uint8_t x162 = _addcarryx_u32(x159, x107, x140, &x161);
- { uint32_t x164; uint8_t x165 = _addcarryx_u32(x162, x110, x143, &x164);
- { uint32_t x167; uint8_t x168 = _addcarryx_u32(x165, x113, x146, &x167);
- { uint32_t x170; uint8_t x171 = _addcarryx_u32(x168, x116, x149, &x170);
- { uint32_t x173; uint8_t x174 = _addcarryx_u32(x171, x117, x152, &x173);
- { uint32_t _; uint32_t x176 = _mulx_u32(x155, 0xc28f5c29, &_);
- { uint32_t x180; uint32_t x179 = _mulx_u32(x176, 0xffffffe7, &x180);
- { uint32_t x183; uint32_t x182 = _mulx_u32(x176, 0xffffffff, &x183);
- { uint32_t x186; uint32_t x185 = _mulx_u32(x176, 0xffffffff, &x186);
- { uint32_t x189; uint32_t x188 = _mulx_u32(x176, 0xffffffff, &x189);
- { uint32_t x192; uint32_t x191 = _mulx_u32(x176, 0xffffffff, &x192);
- { uint8_t x195; uint32_t x194 = _mulx_u32_out_u8(x176, 0x1f, &x195);
- { uint32_t x197; uint8_t x198 = _addcarryx_u32(0x0, x180, x182, &x197);
- { uint32_t x200; uint8_t x201 = _addcarryx_u32(x198, x183, x185, &x200);
- { uint32_t x203; uint8_t x204 = _addcarryx_u32(x201, x186, x188, &x203);
- { uint32_t x206; uint8_t x207 = _addcarryx_u32(x204, x189, x191, &x206);
- { uint32_t x209; uint8_t x210 = _addcarryx_u32(x207, x192, x194, &x209);
- { uint8_t x211 = (x210 + x195);
- { uint32_t _; uint8_t x214 = _addcarryx_u32(0x0, x155, x179, &_);
- { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x158, x197, &x216);
- { uint32_t x219; uint8_t x220 = _addcarryx_u32(x217, x161, x200, &x219);
- { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x164, x203, &x222);
- { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x167, x206, &x225);
- { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x170, x209, &x228);
- { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x173, x211, &x231);
- { uint8_t x233 = (x232 + x174);
- { uint32_t x236; uint32_t x235 = _mulx_u32(x9, x15, &x236);
- { uint32_t x239; uint32_t x238 = _mulx_u32(x9, x17, &x239);
- { uint32_t x242; uint32_t x241 = _mulx_u32(x9, x19, &x242);
- { uint32_t x245; uint32_t x244 = _mulx_u32(x9, x21, &x245);
- { uint32_t x248; uint32_t x247 = _mulx_u32(x9, x23, &x248);
- { uint32_t x251; uint32_t x250 = _mulx_u32(x9, x22, &x251);
- { uint32_t x253; uint8_t x254 = _addcarryx_u32(0x0, x236, x238, &x253);
- { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x239, x241, &x256);
- { uint32_t x259; uint8_t x260 = _addcarryx_u32(x257, x242, x244, &x259);
- { uint32_t x262; uint8_t x263 = _addcarryx_u32(x260, x245, x247, &x262);
- { uint32_t x265; uint8_t x266 = _addcarryx_u32(x263, x248, x250, &x265);
- { uint32_t x268; uint8_t _ = _addcarryx_u32(0x0, x266, x251, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(0x0, x216, x235, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x219, x253, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x222, x256, &x277);
- { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x225, x259, &x280);
- { uint32_t x283; uint8_t x284 = _addcarryx_u32(x281, x228, x262, &x283);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x231, x265, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x233, x268, &x289);
- { uint32_t _; uint32_t x292 = _mulx_u32(x271, 0xc28f5c29, &_);
- { uint32_t x296; uint32_t x295 = _mulx_u32(x292, 0xffffffe7, &x296);
- { uint32_t x299; uint32_t x298 = _mulx_u32(x292, 0xffffffff, &x299);
- { uint32_t x302; uint32_t x301 = _mulx_u32(x292, 0xffffffff, &x302);
- { uint32_t x305; uint32_t x304 = _mulx_u32(x292, 0xffffffff, &x305);
- { uint32_t x308; uint32_t x307 = _mulx_u32(x292, 0xffffffff, &x308);
- { uint8_t x311; uint32_t x310 = _mulx_u32_out_u8(x292, 0x1f, &x311);
- { uint32_t x313; uint8_t x314 = _addcarryx_u32(0x0, x296, x298, &x313);
- { uint32_t x316; uint8_t x317 = _addcarryx_u32(x314, x299, x301, &x316);
- { uint32_t x319; uint8_t x320 = _addcarryx_u32(x317, x302, x304, &x319);
- { uint32_t x322; uint8_t x323 = _addcarryx_u32(x320, x305, x307, &x322);
- { uint32_t x325; uint8_t x326 = _addcarryx_u32(x323, x308, x310, &x325);
- { uint8_t x327 = (x326 + x311);
- { uint32_t _; uint8_t x330 = _addcarryx_u32(0x0, x271, x295, &_);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x274, x313, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x277, x316, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x280, x319, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x283, x322, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x286, x325, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x289, x327, &x347);
- { uint8_t x349 = (x348 + x290);
- { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x15, &x352);
- { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x17, &x355);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x19, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x21, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x23, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x22, &x367);
- { uint32_t x369; uint8_t x370 = _addcarryx_u32(0x0, x352, x354, &x369);
- { uint32_t x372; uint8_t x373 = _addcarryx_u32(x370, x355, x357, &x372);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(x373, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t _ = _addcarryx_u32(0x0, x382, x367, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(0x0, x332, x351, &x387);
- { uint32_t x390; uint8_t x391 = _addcarryx_u32(x388, x335, x369, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(x391, x338, x372, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x349, x384, &x405);
- { uint32_t _; uint32_t x408 = _mulx_u32(x387, 0xc28f5c29, &_);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x408, 0xffffffe7, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x408, 0xffffffff, &x415);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x408, 0xffffffff, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x408, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x408, 0xffffffff, &x424);
- { uint8_t x427; uint32_t x426 = _mulx_u32_out_u8(x408, 0x1f, &x427);
- { uint32_t x429; uint8_t x430 = _addcarryx_u32(0x0, x412, x414, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(x430, x415, x417, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint8_t x443 = (x442 + x427);
- { uint32_t _; uint8_t x446 = _addcarryx_u32(0x0, x387, x411, &_);
- { uint32_t x448; uint8_t x449 = _addcarryx_u32(x446, x390, x429, &x448);
- { uint32_t x451; uint8_t x452 = _addcarryx_u32(x449, x393, x432, &x451);
- { uint32_t x454; uint8_t x455 = _addcarryx_u32(x452, x396, x435, &x454);
- { uint32_t x457; uint8_t x458 = _addcarryx_u32(x455, x399, x438, &x457);
- { uint32_t x460; uint8_t x461 = _addcarryx_u32(x458, x402, x441, &x460);
- { uint32_t x463; uint8_t x464 = _addcarryx_u32(x461, x405, x443, &x463);
- { uint8_t x465 = (x464 + x406);
- { uint32_t x468; uint32_t x467 = _mulx_u32(x13, x15, &x468);
- { uint32_t x471; uint32_t x470 = _mulx_u32(x13, x17, &x471);
- { uint32_t x474; uint32_t x473 = _mulx_u32(x13, x19, &x474);
- { uint32_t x477; uint32_t x476 = _mulx_u32(x13, x21, &x477);
- { uint32_t x480; uint32_t x479 = _mulx_u32(x13, x23, &x480);
- { uint32_t x483; uint32_t x482 = _mulx_u32(x13, x22, &x483);
- { uint32_t x485; uint8_t x486 = _addcarryx_u32(0x0, x468, x470, &x485);
- { uint32_t x488; uint8_t x489 = _addcarryx_u32(x486, x471, x473, &x488);
- { uint32_t x491; uint8_t x492 = _addcarryx_u32(x489, x474, x476, &x491);
- { uint32_t x494; uint8_t x495 = _addcarryx_u32(x492, x477, x479, &x494);
- { uint32_t x497; uint8_t x498 = _addcarryx_u32(x495, x480, x482, &x497);
- { uint32_t x500; uint8_t _ = _addcarryx_u32(0x0, x498, x483, &x500);
- { uint32_t x503; uint8_t x504 = _addcarryx_u32(0x0, x448, x467, &x503);
- { uint32_t x506; uint8_t x507 = _addcarryx_u32(x504, x451, x485, &x506);
- { uint32_t x509; uint8_t x510 = _addcarryx_u32(x507, x454, x488, &x509);
- { uint32_t x512; uint8_t x513 = _addcarryx_u32(x510, x457, x491, &x512);
- { uint32_t x515; uint8_t x516 = _addcarryx_u32(x513, x460, x494, &x515);
- { uint32_t x518; uint8_t x519 = _addcarryx_u32(x516, x463, x497, &x518);
- { uint32_t x521; uint8_t x522 = _addcarryx_u32(x519, x465, x500, &x521);
- { uint32_t _; uint32_t x524 = _mulx_u32(x503, 0xc28f5c29, &_);
- { uint32_t x528; uint32_t x527 = _mulx_u32(x524, 0xffffffe7, &x528);
- { uint32_t x531; uint32_t x530 = _mulx_u32(x524, 0xffffffff, &x531);
- { uint32_t x534; uint32_t x533 = _mulx_u32(x524, 0xffffffff, &x534);
- { uint32_t x537; uint32_t x536 = _mulx_u32(x524, 0xffffffff, &x537);
- { uint32_t x540; uint32_t x539 = _mulx_u32(x524, 0xffffffff, &x540);
- { uint8_t x543; uint32_t x542 = _mulx_u32_out_u8(x524, 0x1f, &x543);
- { uint32_t x545; uint8_t x546 = _addcarryx_u32(0x0, x528, x530, &x545);
- { uint32_t x548; uint8_t x549 = _addcarryx_u32(x546, x531, x533, &x548);
- { uint32_t x551; uint8_t x552 = _addcarryx_u32(x549, x534, x536, &x551);
- { uint32_t x554; uint8_t x555 = _addcarryx_u32(x552, x537, x539, &x554);
- { uint32_t x557; uint8_t x558 = _addcarryx_u32(x555, x540, x542, &x557);
- { uint8_t x559 = (x558 + x543);
- { uint32_t _; uint8_t x562 = _addcarryx_u32(0x0, x503, x527, &_);
- { uint32_t x564; uint8_t x565 = _addcarryx_u32(x562, x506, x545, &x564);
- { uint32_t x567; uint8_t x568 = _addcarryx_u32(x565, x509, x548, &x567);
- { uint32_t x570; uint8_t x571 = _addcarryx_u32(x568, x512, x551, &x570);
- { uint32_t x573; uint8_t x574 = _addcarryx_u32(x571, x515, x554, &x573);
- { uint32_t x576; uint8_t x577 = _addcarryx_u32(x574, x518, x557, &x576);
- { uint32_t x579; uint8_t x580 = _addcarryx_u32(x577, x521, x559, &x579);
- { uint8_t x581 = (x580 + x522);
- { uint32_t x584; uint32_t x583 = _mulx_u32(x12, x15, &x584);
- { uint32_t x587; uint32_t x586 = _mulx_u32(x12, x17, &x587);
- { uint32_t x590; uint32_t x589 = _mulx_u32(x12, x19, &x590);
- { uint32_t x593; uint32_t x592 = _mulx_u32(x12, x21, &x593);
- { uint32_t x596; uint32_t x595 = _mulx_u32(x12, x23, &x596);
- { uint32_t x599; uint32_t x598 = _mulx_u32(x12, x22, &x599);
- { uint32_t x601; uint8_t x602 = _addcarryx_u32(0x0, x584, x586, &x601);
- { uint32_t x604; uint8_t x605 = _addcarryx_u32(x602, x587, x589, &x604);
- { uint32_t x607; uint8_t x608 = _addcarryx_u32(x605, x590, x592, &x607);
- { uint32_t x610; uint8_t x611 = _addcarryx_u32(x608, x593, x595, &x610);
- { uint32_t x613; uint8_t x614 = _addcarryx_u32(x611, x596, x598, &x613);
- { uint32_t x616; uint8_t _ = _addcarryx_u32(0x0, x614, x599, &x616);
- { uint32_t x619; uint8_t x620 = _addcarryx_u32(0x0, x564, x583, &x619);
- { uint32_t x622; uint8_t x623 = _addcarryx_u32(x620, x567, x601, &x622);
- { uint32_t x625; uint8_t x626 = _addcarryx_u32(x623, x570, x604, &x625);
- { uint32_t x628; uint8_t x629 = _addcarryx_u32(x626, x573, x607, &x628);
- { uint32_t x631; uint8_t x632 = _addcarryx_u32(x629, x576, x610, &x631);
- { uint32_t x634; uint8_t x635 = _addcarryx_u32(x632, x579, x613, &x634);
- { uint32_t x637; uint8_t x638 = _addcarryx_u32(x635, x581, x616, &x637);
- { uint32_t _; uint32_t x640 = _mulx_u32(x619, 0xc28f5c29, &_);
- { uint32_t x644; uint32_t x643 = _mulx_u32(x640, 0xffffffe7, &x644);
- { uint32_t x647; uint32_t x646 = _mulx_u32(x640, 0xffffffff, &x647);
- { uint32_t x650; uint32_t x649 = _mulx_u32(x640, 0xffffffff, &x650);
- { uint32_t x653; uint32_t x652 = _mulx_u32(x640, 0xffffffff, &x653);
- { uint32_t x656; uint32_t x655 = _mulx_u32(x640, 0xffffffff, &x656);
- { uint8_t x659; uint32_t x658 = _mulx_u32_out_u8(x640, 0x1f, &x659);
- { uint32_t x661; uint8_t x662 = _addcarryx_u32(0x0, x644, x646, &x661);
- { uint32_t x664; uint8_t x665 = _addcarryx_u32(x662, x647, x649, &x664);
- { uint32_t x667; uint8_t x668 = _addcarryx_u32(x665, x650, x652, &x667);
- { uint32_t x670; uint8_t x671 = _addcarryx_u32(x668, x653, x655, &x670);
- { uint32_t x673; uint8_t x674 = _addcarryx_u32(x671, x656, x658, &x673);
- { uint8_t x675 = (x674 + x659);
- { uint32_t _; uint8_t x678 = _addcarryx_u32(0x0, x619, x643, &_);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x622, x661, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x625, x664, &x683);
- { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x628, x667, &x686);
- { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x631, x670, &x689);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x634, x673, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x637, x675, &x695);
- { uint8_t x697 = (x696 + x638);
- { uint32_t x699; uint8_t x700 = _subborrow_u32(0x0, x680, 0xffffffe7, &x699);
- { uint32_t x702; uint8_t x703 = _subborrow_u32(x700, x683, 0xffffffff, &x702);
- { uint32_t x705; uint8_t x706 = _subborrow_u32(x703, x686, 0xffffffff, &x705);
- { uint32_t x708; uint8_t x709 = _subborrow_u32(x706, x689, 0xffffffff, &x708);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(x709, x692, 0xffffffff, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0x1f, &x714);
- { uint32_t _; uint8_t x718 = _subborrow_u32(x715, x697, 0x0, &_);
- { uint32_t x719 = cmovznz32(x718, x714, x695);
- { uint32_t x720 = cmovznz32(x718, x711, x692);
- { uint32_t x721 = cmovznz32(x718, x708, x689);
- { uint32_t x722 = cmovznz32(x718, x705, x686);
- { uint32_t x723 = cmovznz32(x718, x702, x683);
- { uint32_t x724 = cmovznz32(x718, x699, x680);
- out[0] = x724;
- out[1] = x723;
- out[2] = x722;
- out[3] = x721;
- out[4] = x720;
- out[5] = x719;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e165m25/femul.v b/src/Specific/montgomery32_2e165m25/femul.v
deleted file mode 100644
index b80572dfc..000000000
--- a/src/Specific/montgomery32_2e165m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e165m25/femulDisplay.log b/src/Specific/montgomery32_2e165m25/femulDisplay.log
deleted file mode 100644
index 76e90e61d..000000000
--- a/src/Specific/montgomery32_2e165m25/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xc28f5c29);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffe7);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint8_t x80 = mulx_u32_out_u8(x61, 0x1f);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint8_t x96 = (x95 + x80);
- uint32_t _, uint8_t x99 = addcarryx_u32(0x0, x25, x64);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x43, x82);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x46, x85);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x49, x88);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x52, x91);
- uint32_t x113, uint8_t x114 = addcarryx_u32(x111, x55, x94);
- uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x58, x96);
- uint32_t x119, uint32_t x120 = mulx_u32(x7, x15);
- uint32_t x122, uint32_t x123 = mulx_u32(x7, x17);
- uint32_t x125, uint32_t x126 = mulx_u32(x7, x19);
- uint32_t x128, uint32_t x129 = mulx_u32(x7, x21);
- uint32_t x131, uint32_t x132 = mulx_u32(x7, x23);
- uint32_t x134, uint32_t x135 = mulx_u32(x7, x22);
- uint32_t x137, uint8_t x138 = addcarryx_u32(0x0, x120, x122);
- uint32_t x140, uint8_t x141 = addcarryx_u32(x138, x123, x125);
- uint32_t x143, uint8_t x144 = addcarryx_u32(x141, x126, x128);
- uint32_t x146, uint8_t x147 = addcarryx_u32(x144, x129, x131);
- uint32_t x149, uint8_t x150 = addcarryx_u32(x147, x132, x134);
- uint32_t x152, uint8_t _ = addcarryx_u32(0x0, x150, x135);
- uint32_t x155, uint8_t x156 = addcarryx_u32(0x0, x101, x119);
- uint32_t x158, uint8_t x159 = addcarryx_u32(x156, x104, x137);
- uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x107, x140);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x110, x143);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x113, x146);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x116, x149);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x117, x152);
- uint32_t x176, uint32_t _ = mulx_u32(x155, 0xc28f5c29);
- uint32_t x179, uint32_t x180 = mulx_u32(x176, 0xffffffe7);
- uint32_t x182, uint32_t x183 = mulx_u32(x176, 0xffffffff);
- uint32_t x185, uint32_t x186 = mulx_u32(x176, 0xffffffff);
- uint32_t x188, uint32_t x189 = mulx_u32(x176, 0xffffffff);
- uint32_t x191, uint32_t x192 = mulx_u32(x176, 0xffffffff);
- uint32_t x194, uint8_t x195 = mulx_u32_out_u8(x176, 0x1f);
- uint32_t x197, uint8_t x198 = addcarryx_u32(0x0, x180, x182);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x183, x185);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x186, x188);
- uint32_t x206, uint8_t x207 = addcarryx_u32(x204, x189, x191);
- uint32_t x209, uint8_t x210 = addcarryx_u32(x207, x192, x194);
- uint8_t x211 = (x210 + x195);
- uint32_t _, uint8_t x214 = addcarryx_u32(0x0, x155, x179);
- uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x158, x197);
- uint32_t x219, uint8_t x220 = addcarryx_u32(x217, x161, x200);
- uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x164, x203);
- uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x167, x206);
- uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x170, x209);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x173, x211);
- uint8_t x233 = (x232 + x174);
- uint32_t x235, uint32_t x236 = mulx_u32(x9, x15);
- uint32_t x238, uint32_t x239 = mulx_u32(x9, x17);
- uint32_t x241, uint32_t x242 = mulx_u32(x9, x19);
- uint32_t x244, uint32_t x245 = mulx_u32(x9, x21);
- uint32_t x247, uint32_t x248 = mulx_u32(x9, x23);
- uint32_t x250, uint32_t x251 = mulx_u32(x9, x22);
- uint32_t x253, uint8_t x254 = addcarryx_u32(0x0, x236, x238);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x239, x241);
- uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x242, x244);
- uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x245, x247);
- uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x248, x250);
- uint32_t x268, uint8_t _ = addcarryx_u32(0x0, x266, x251);
- uint32_t x271, uint8_t x272 = addcarryx_u32(0x0, x216, x235);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x219, x253);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x222, x256);
- uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x225, x259);
- uint32_t x283, uint8_t x284 = addcarryx_u32(x281, x228, x262);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x231, x265);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x233, x268);
- uint32_t x292, uint32_t _ = mulx_u32(x271, 0xc28f5c29);
- uint32_t x295, uint32_t x296 = mulx_u32(x292, 0xffffffe7);
- uint32_t x298, uint32_t x299 = mulx_u32(x292, 0xffffffff);
- uint32_t x301, uint32_t x302 = mulx_u32(x292, 0xffffffff);
- uint32_t x304, uint32_t x305 = mulx_u32(x292, 0xffffffff);
- uint32_t x307, uint32_t x308 = mulx_u32(x292, 0xffffffff);
- uint32_t x310, uint8_t x311 = mulx_u32_out_u8(x292, 0x1f);
- uint32_t x313, uint8_t x314 = addcarryx_u32(0x0, x296, x298);
- uint32_t x316, uint8_t x317 = addcarryx_u32(x314, x299, x301);
- uint32_t x319, uint8_t x320 = addcarryx_u32(x317, x302, x304);
- uint32_t x322, uint8_t x323 = addcarryx_u32(x320, x305, x307);
- uint32_t x325, uint8_t x326 = addcarryx_u32(x323, x308, x310);
- uint8_t x327 = (x326 + x311);
- uint32_t _, uint8_t x330 = addcarryx_u32(0x0, x271, x295);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x274, x313);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x277, x316);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x280, x319);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x283, x322);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x286, x325);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x289, x327);
- uint8_t x349 = (x348 + x290);
- uint32_t x351, uint32_t x352 = mulx_u32(x11, x15);
- uint32_t x354, uint32_t x355 = mulx_u32(x11, x17);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x19);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x21);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x23);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x22);
- uint32_t x369, uint8_t x370 = addcarryx_u32(0x0, x352, x354);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x355, x357);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x367);
- uint32_t x387, uint8_t x388 = addcarryx_u32(0x0, x332, x351);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x335, x369);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x338, x372);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x349, x384);
- uint32_t x408, uint32_t _ = mulx_u32(x387, 0xc28f5c29);
- uint32_t x411, uint32_t x412 = mulx_u32(x408, 0xffffffe7);
- uint32_t x414, uint32_t x415 = mulx_u32(x408, 0xffffffff);
- uint32_t x417, uint32_t x418 = mulx_u32(x408, 0xffffffff);
- uint32_t x420, uint32_t x421 = mulx_u32(x408, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x408, 0xffffffff);
- uint32_t x426, uint8_t x427 = mulx_u32_out_u8(x408, 0x1f);
- uint32_t x429, uint8_t x430 = addcarryx_u32(0x0, x412, x414);
- uint32_t x432, uint8_t x433 = addcarryx_u32(x430, x415, x417);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint8_t x443 = (x442 + x427);
- uint32_t _, uint8_t x446 = addcarryx_u32(0x0, x387, x411);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x390, x429);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x393, x432);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x396, x435);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x399, x438);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x402, x441);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x405, x443);
- uint8_t x465 = (x464 + x406);
- uint32_t x467, uint32_t x468 = mulx_u32(x13, x15);
- uint32_t x470, uint32_t x471 = mulx_u32(x13, x17);
- uint32_t x473, uint32_t x474 = mulx_u32(x13, x19);
- uint32_t x476, uint32_t x477 = mulx_u32(x13, x21);
- uint32_t x479, uint32_t x480 = mulx_u32(x13, x23);
- uint32_t x482, uint32_t x483 = mulx_u32(x13, x22);
- uint32_t x485, uint8_t x486 = addcarryx_u32(0x0, x468, x470);
- uint32_t x488, uint8_t x489 = addcarryx_u32(x486, x471, x473);
- uint32_t x491, uint8_t x492 = addcarryx_u32(x489, x474, x476);
- uint32_t x494, uint8_t x495 = addcarryx_u32(x492, x477, x479);
- uint32_t x497, uint8_t x498 = addcarryx_u32(x495, x480, x482);
- uint32_t x500, uint8_t _ = addcarryx_u32(0x0, x498, x483);
- uint32_t x503, uint8_t x504 = addcarryx_u32(0x0, x448, x467);
- uint32_t x506, uint8_t x507 = addcarryx_u32(x504, x451, x485);
- uint32_t x509, uint8_t x510 = addcarryx_u32(x507, x454, x488);
- uint32_t x512, uint8_t x513 = addcarryx_u32(x510, x457, x491);
- uint32_t x515, uint8_t x516 = addcarryx_u32(x513, x460, x494);
- uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x463, x497);
- uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x465, x500);
- uint32_t x524, uint32_t _ = mulx_u32(x503, 0xc28f5c29);
- uint32_t x527, uint32_t x528 = mulx_u32(x524, 0xffffffe7);
- uint32_t x530, uint32_t x531 = mulx_u32(x524, 0xffffffff);
- uint32_t x533, uint32_t x534 = mulx_u32(x524, 0xffffffff);
- uint32_t x536, uint32_t x537 = mulx_u32(x524, 0xffffffff);
- uint32_t x539, uint32_t x540 = mulx_u32(x524, 0xffffffff);
- uint32_t x542, uint8_t x543 = mulx_u32_out_u8(x524, 0x1f);
- uint32_t x545, uint8_t x546 = addcarryx_u32(0x0, x528, x530);
- uint32_t x548, uint8_t x549 = addcarryx_u32(x546, x531, x533);
- uint32_t x551, uint8_t x552 = addcarryx_u32(x549, x534, x536);
- uint32_t x554, uint8_t x555 = addcarryx_u32(x552, x537, x539);
- uint32_t x557, uint8_t x558 = addcarryx_u32(x555, x540, x542);
- uint8_t x559 = (x558 + x543);
- uint32_t _, uint8_t x562 = addcarryx_u32(0x0, x503, x527);
- uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x506, x545);
- uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x509, x548);
- uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x512, x551);
- uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x515, x554);
- uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x518, x557);
- uint32_t x579, uint8_t x580 = addcarryx_u32(x577, x521, x559);
- uint8_t x581 = (x580 + x522);
- uint32_t x583, uint32_t x584 = mulx_u32(x12, x15);
- uint32_t x586, uint32_t x587 = mulx_u32(x12, x17);
- uint32_t x589, uint32_t x590 = mulx_u32(x12, x19);
- uint32_t x592, uint32_t x593 = mulx_u32(x12, x21);
- uint32_t x595, uint32_t x596 = mulx_u32(x12, x23);
- uint32_t x598, uint32_t x599 = mulx_u32(x12, x22);
- uint32_t x601, uint8_t x602 = addcarryx_u32(0x0, x584, x586);
- uint32_t x604, uint8_t x605 = addcarryx_u32(x602, x587, x589);
- uint32_t x607, uint8_t x608 = addcarryx_u32(x605, x590, x592);
- uint32_t x610, uint8_t x611 = addcarryx_u32(x608, x593, x595);
- uint32_t x613, uint8_t x614 = addcarryx_u32(x611, x596, x598);
- uint32_t x616, uint8_t _ = addcarryx_u32(0x0, x614, x599);
- uint32_t x619, uint8_t x620 = addcarryx_u32(0x0, x564, x583);
- uint32_t x622, uint8_t x623 = addcarryx_u32(x620, x567, x601);
- uint32_t x625, uint8_t x626 = addcarryx_u32(x623, x570, x604);
- uint32_t x628, uint8_t x629 = addcarryx_u32(x626, x573, x607);
- uint32_t x631, uint8_t x632 = addcarryx_u32(x629, x576, x610);
- uint32_t x634, uint8_t x635 = addcarryx_u32(x632, x579, x613);
- uint32_t x637, uint8_t x638 = addcarryx_u32(x635, x581, x616);
- uint32_t x640, uint32_t _ = mulx_u32(x619, 0xc28f5c29);
- uint32_t x643, uint32_t x644 = mulx_u32(x640, 0xffffffe7);
- uint32_t x646, uint32_t x647 = mulx_u32(x640, 0xffffffff);
- uint32_t x649, uint32_t x650 = mulx_u32(x640, 0xffffffff);
- uint32_t x652, uint32_t x653 = mulx_u32(x640, 0xffffffff);
- uint32_t x655, uint32_t x656 = mulx_u32(x640, 0xffffffff);
- uint32_t x658, uint8_t x659 = mulx_u32_out_u8(x640, 0x1f);
- uint32_t x661, uint8_t x662 = addcarryx_u32(0x0, x644, x646);
- uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x647, x649);
- uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x650, x652);
- uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x653, x655);
- uint32_t x673, uint8_t x674 = addcarryx_u32(x671, x656, x658);
- uint8_t x675 = (x674 + x659);
- uint32_t _, uint8_t x678 = addcarryx_u32(0x0, x619, x643);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x622, x661);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x625, x664);
- uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x628, x667);
- uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x631, x670);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x634, x673);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x637, x675);
- uint8_t x697 = (x696 + x638);
- uint32_t x699, uint8_t x700 = subborrow_u32(0x0, x680, 0xffffffe7);
- uint32_t x702, uint8_t x703 = subborrow_u32(x700, x683, 0xffffffff);
- uint32_t x705, uint8_t x706 = subborrow_u32(x703, x686, 0xffffffff);
- uint32_t x708, uint8_t x709 = subborrow_u32(x706, x689, 0xffffffff);
- uint32_t x711, uint8_t x712 = subborrow_u32(x709, x692, 0xffffffff);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0x1f);
- uint32_t _, uint8_t x718 = subborrow_u32(x715, x697, 0x0);
- uint32_t x719 = cmovznz32(x718, x714, x695);
- uint32_t x720 = cmovznz32(x718, x711, x692);
- uint32_t x721 = cmovznz32(x718, x708, x689);
- uint32_t x722 = cmovznz32(x718, x705, x686);
- uint32_t x723 = cmovznz32(x718, x702, x683);
- uint32_t x724 = cmovznz32(x718, x699, x680);
- return (x719, x720, x721, x722, x723, x724))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e165m25/femulDisplay.v b/src/Specific/montgomery32_2e165m25/femulDisplay.v
deleted file mode 100644
index 14f016226..000000000
--- a/src/Specific/montgomery32_2e165m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e165m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e165m25/fenz.c b/src/Specific/montgomery32_2e165m25/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e165m25/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e165m25/fenz.v b/src/Specific/montgomery32_2e165m25/fenz.v
deleted file mode 100644
index 3af08d6c0..000000000
--- a/src/Specific/montgomery32_2e165m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e165m25/fenzDisplay.log b/src/Specific/montgomery32_2e165m25/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e165m25/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e165m25/fenzDisplay.v b/src/Specific/montgomery32_2e165m25/fenzDisplay.v
deleted file mode 100644
index 81b2a02c3..000000000
--- a/src/Specific/montgomery32_2e165m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e165m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e165m25/feopp.c b/src/Specific/montgomery32_2e165m25/feopp.c
deleted file mode 100644
index e8e2767ae..000000000
--- a/src/Specific/montgomery32_2e165m25/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffe7);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint8_t x50 = ((uint8_t)x29 & 0x1f);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e165m25/feopp.v b/src/Specific/montgomery32_2e165m25/feopp.v
deleted file mode 100644
index 28bf36f9b..000000000
--- a/src/Specific/montgomery32_2e165m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e165m25/feoppDisplay.log b/src/Specific/montgomery32_2e165m25/feoppDisplay.log
deleted file mode 100644
index df49ff1ff..000000000
--- a/src/Specific/montgomery32_2e165m25/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffe7);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint8_t x50 = ((uint8_t)x29 & 0x1f);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e165m25/feoppDisplay.v b/src/Specific/montgomery32_2e165m25/feoppDisplay.v
deleted file mode 100644
index 105d0ceaa..000000000
--- a/src/Specific/montgomery32_2e165m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e165m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e165m25/fesquare.c b/src/Specific/montgomery32_2e165m25/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e165m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e165m25/fesub.c b/src/Specific/montgomery32_2e165m25/fesub.c
deleted file mode 100644
index 2f1872aba..000000000
--- a/src/Specific/montgomery32_2e165m25/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffe7);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint8_t x63 = ((uint8_t)x42 & 0x1f);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e165m25/fesub.v b/src/Specific/montgomery32_2e165m25/fesub.v
deleted file mode 100644
index 37a38cf13..000000000
--- a/src/Specific/montgomery32_2e165m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e165m25/fesubDisplay.log b/src/Specific/montgomery32_2e165m25/fesubDisplay.log
deleted file mode 100644
index c64a7d5aa..000000000
--- a/src/Specific/montgomery32_2e165m25/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffe7);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint8_t x63 = ((uint8_t)x42 & 0x1f);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e165m25/fesubDisplay.v b/src/Specific/montgomery32_2e165m25/fesubDisplay.v
deleted file mode 100644
index 1bb58c507..000000000
--- a/src/Specific/montgomery32_2e165m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e165m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e165m25/CurveParameters.v b/src/Specific/montgomery32_2e165m25_6limbs/CurveParameters.v
index 8d3c00d6d..8d3c00d6d 100644
--- a/src/Specific/montgomery32_2e165m25/CurveParameters.v
+++ b/src/Specific/montgomery32_2e165m25_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/Synthesis.v b/src/Specific/montgomery32_2e165m25_6limbs/Synthesis.v
new file mode 100644
index 000000000..495851996
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e165m25/compiler.sh b/src/Specific/montgomery32_2e165m25_6limbs/compiler.sh
index 18700fb5b..18700fb5b 100755
--- a/src/Specific/montgomery32_2e165m25/compiler.sh
+++ b/src/Specific/montgomery32_2e165m25_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e165m25/compilerxx.sh b/src/Specific/montgomery32_2e165m25_6limbs/compilerxx.sh
index 83de2d461..83de2d461 100755
--- a/src/Specific/montgomery32_2e165m25/compilerxx.sh
+++ b/src/Specific/montgomery32_2e165m25_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feadd.v b/src/Specific/montgomery32_2e165m25_6limbs/feadd.v
new file mode 100644
index 000000000..14e23bcb3
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..13548dd88
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/femul.v b/src/Specific/montgomery32_2e165m25_6limbs/femul.v
new file mode 100644
index 000000000..6a15d083c
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.v
new file mode 100644
index 000000000..941a96963
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fenz.v b/src/Specific/montgomery32_2e165m25_6limbs/fenz.v
new file mode 100644
index 000000000..5a3cfc99d
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..28713add6
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feopp.v b/src/Specific/montgomery32_2e165m25_6limbs/feopp.v
new file mode 100644
index 000000000..a361e5fb0
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..46e604e05
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fesub.v b/src/Specific/montgomery32_2e165m25_6limbs/fesub.v
new file mode 100644
index 000000000..02b3601e5
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..50856ffec
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e165m25_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e165m25/py_interpreter.sh b/src/Specific/montgomery32_2e165m25_6limbs/py_interpreter.sh
index 870509253..870509253 100755
--- a/src/Specific/montgomery32_2e165m25/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e165m25_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e166m5/Synthesis.v b/src/Specific/montgomery32_2e166m5/Synthesis.v
deleted file mode 100644
index a86a94588..000000000
--- a/src/Specific/montgomery32_2e166m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e166m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e166m5/feadd.c b/src/Specific/montgomery32_2e166m5/feadd.c
deleted file mode 100644
index cd706f5c5..000000000
--- a/src/Specific/montgomery32_2e166m5/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffffb, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3f, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e166m5/feadd.v b/src/Specific/montgomery32_2e166m5/feadd.v
deleted file mode 100644
index 45c2d917c..000000000
--- a/src/Specific/montgomery32_2e166m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e166m5/feaddDisplay.log b/src/Specific/montgomery32_2e166m5/feaddDisplay.log
deleted file mode 100644
index 194e37fb2..000000000
--- a/src/Specific/montgomery32_2e166m5/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffffb);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3f);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e166m5/feaddDisplay.v b/src/Specific/montgomery32_2e166m5/feaddDisplay.v
deleted file mode 100644
index 8f924bda5..000000000
--- a/src/Specific/montgomery32_2e166m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e166m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e166m5/femul.c b/src/Specific/montgomery32_2e166m5/femul.c
deleted file mode 100644
index b834472fd..000000000
--- a/src/Specific/montgomery32_2e166m5/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xcccccccd, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xfffffffb, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint8_t x80; uint32_t x79 = _mulx_u32_out_u8(x61, 0x3f, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint8_t x96 = (x95 + x80);
- { uint32_t _; uint8_t x99 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x43, x82, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x46, x85, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x49, x88, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x52, x91, &x110);
- { uint32_t x113; uint8_t x114 = _addcarryx_u32(x111, x55, x94, &x113);
- { uint32_t x116; uint8_t x117 = _addcarryx_u32(x114, x58, x96, &x116);
- { uint32_t x120; uint32_t x119 = _mulx_u32(x7, x15, &x120);
- { uint32_t x123; uint32_t x122 = _mulx_u32(x7, x17, &x123);
- { uint32_t x126; uint32_t x125 = _mulx_u32(x7, x19, &x126);
- { uint32_t x129; uint32_t x128 = _mulx_u32(x7, x21, &x129);
- { uint32_t x132; uint32_t x131 = _mulx_u32(x7, x23, &x132);
- { uint32_t x135; uint32_t x134 = _mulx_u32(x7, x22, &x135);
- { uint32_t x137; uint8_t x138 = _addcarryx_u32(0x0, x120, x122, &x137);
- { uint32_t x140; uint8_t x141 = _addcarryx_u32(x138, x123, x125, &x140);
- { uint32_t x143; uint8_t x144 = _addcarryx_u32(x141, x126, x128, &x143);
- { uint32_t x146; uint8_t x147 = _addcarryx_u32(x144, x129, x131, &x146);
- { uint32_t x149; uint8_t x150 = _addcarryx_u32(x147, x132, x134, &x149);
- { uint32_t x152; uint8_t _ = _addcarryx_u32(0x0, x150, x135, &x152);
- { uint32_t x155; uint8_t x156 = _addcarryx_u32(0x0, x101, x119, &x155);
- { uint32_t x158; uint8_t x159 = _addcarryx_u32(x156, x104, x137, &x158);
- { uint32_t x161; uint8_t x162 = _addcarryx_u32(x159, x107, x140, &x161);
- { uint32_t x164; uint8_t x165 = _addcarryx_u32(x162, x110, x143, &x164);
- { uint32_t x167; uint8_t x168 = _addcarryx_u32(x165, x113, x146, &x167);
- { uint32_t x170; uint8_t x171 = _addcarryx_u32(x168, x116, x149, &x170);
- { uint32_t x173; uint8_t x174 = _addcarryx_u32(x171, x117, x152, &x173);
- { uint32_t _; uint32_t x176 = _mulx_u32(x155, 0xcccccccd, &_);
- { uint32_t x180; uint32_t x179 = _mulx_u32(x176, 0xfffffffb, &x180);
- { uint32_t x183; uint32_t x182 = _mulx_u32(x176, 0xffffffff, &x183);
- { uint32_t x186; uint32_t x185 = _mulx_u32(x176, 0xffffffff, &x186);
- { uint32_t x189; uint32_t x188 = _mulx_u32(x176, 0xffffffff, &x189);
- { uint32_t x192; uint32_t x191 = _mulx_u32(x176, 0xffffffff, &x192);
- { uint8_t x195; uint32_t x194 = _mulx_u32_out_u8(x176, 0x3f, &x195);
- { uint32_t x197; uint8_t x198 = _addcarryx_u32(0x0, x180, x182, &x197);
- { uint32_t x200; uint8_t x201 = _addcarryx_u32(x198, x183, x185, &x200);
- { uint32_t x203; uint8_t x204 = _addcarryx_u32(x201, x186, x188, &x203);
- { uint32_t x206; uint8_t x207 = _addcarryx_u32(x204, x189, x191, &x206);
- { uint32_t x209; uint8_t x210 = _addcarryx_u32(x207, x192, x194, &x209);
- { uint8_t x211 = (x210 + x195);
- { uint32_t _; uint8_t x214 = _addcarryx_u32(0x0, x155, x179, &_);
- { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x158, x197, &x216);
- { uint32_t x219; uint8_t x220 = _addcarryx_u32(x217, x161, x200, &x219);
- { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x164, x203, &x222);
- { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x167, x206, &x225);
- { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x170, x209, &x228);
- { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x173, x211, &x231);
- { uint8_t x233 = (x232 + x174);
- { uint32_t x236; uint32_t x235 = _mulx_u32(x9, x15, &x236);
- { uint32_t x239; uint32_t x238 = _mulx_u32(x9, x17, &x239);
- { uint32_t x242; uint32_t x241 = _mulx_u32(x9, x19, &x242);
- { uint32_t x245; uint32_t x244 = _mulx_u32(x9, x21, &x245);
- { uint32_t x248; uint32_t x247 = _mulx_u32(x9, x23, &x248);
- { uint32_t x251; uint32_t x250 = _mulx_u32(x9, x22, &x251);
- { uint32_t x253; uint8_t x254 = _addcarryx_u32(0x0, x236, x238, &x253);
- { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x239, x241, &x256);
- { uint32_t x259; uint8_t x260 = _addcarryx_u32(x257, x242, x244, &x259);
- { uint32_t x262; uint8_t x263 = _addcarryx_u32(x260, x245, x247, &x262);
- { uint32_t x265; uint8_t x266 = _addcarryx_u32(x263, x248, x250, &x265);
- { uint32_t x268; uint8_t _ = _addcarryx_u32(0x0, x266, x251, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(0x0, x216, x235, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x219, x253, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x222, x256, &x277);
- { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x225, x259, &x280);
- { uint32_t x283; uint8_t x284 = _addcarryx_u32(x281, x228, x262, &x283);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x231, x265, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x233, x268, &x289);
- { uint32_t _; uint32_t x292 = _mulx_u32(x271, 0xcccccccd, &_);
- { uint32_t x296; uint32_t x295 = _mulx_u32(x292, 0xfffffffb, &x296);
- { uint32_t x299; uint32_t x298 = _mulx_u32(x292, 0xffffffff, &x299);
- { uint32_t x302; uint32_t x301 = _mulx_u32(x292, 0xffffffff, &x302);
- { uint32_t x305; uint32_t x304 = _mulx_u32(x292, 0xffffffff, &x305);
- { uint32_t x308; uint32_t x307 = _mulx_u32(x292, 0xffffffff, &x308);
- { uint8_t x311; uint32_t x310 = _mulx_u32_out_u8(x292, 0x3f, &x311);
- { uint32_t x313; uint8_t x314 = _addcarryx_u32(0x0, x296, x298, &x313);
- { uint32_t x316; uint8_t x317 = _addcarryx_u32(x314, x299, x301, &x316);
- { uint32_t x319; uint8_t x320 = _addcarryx_u32(x317, x302, x304, &x319);
- { uint32_t x322; uint8_t x323 = _addcarryx_u32(x320, x305, x307, &x322);
- { uint32_t x325; uint8_t x326 = _addcarryx_u32(x323, x308, x310, &x325);
- { uint8_t x327 = (x326 + x311);
- { uint32_t _; uint8_t x330 = _addcarryx_u32(0x0, x271, x295, &_);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x274, x313, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x277, x316, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x280, x319, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x283, x322, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x286, x325, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x289, x327, &x347);
- { uint8_t x349 = (x348 + x290);
- { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x15, &x352);
- { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x17, &x355);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x19, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x21, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x23, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x22, &x367);
- { uint32_t x369; uint8_t x370 = _addcarryx_u32(0x0, x352, x354, &x369);
- { uint32_t x372; uint8_t x373 = _addcarryx_u32(x370, x355, x357, &x372);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(x373, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t _ = _addcarryx_u32(0x0, x382, x367, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(0x0, x332, x351, &x387);
- { uint32_t x390; uint8_t x391 = _addcarryx_u32(x388, x335, x369, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(x391, x338, x372, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x349, x384, &x405);
- { uint32_t _; uint32_t x408 = _mulx_u32(x387, 0xcccccccd, &_);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x408, 0xfffffffb, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x408, 0xffffffff, &x415);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x408, 0xffffffff, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x408, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x408, 0xffffffff, &x424);
- { uint8_t x427; uint32_t x426 = _mulx_u32_out_u8(x408, 0x3f, &x427);
- { uint32_t x429; uint8_t x430 = _addcarryx_u32(0x0, x412, x414, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(x430, x415, x417, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint8_t x443 = (x442 + x427);
- { uint32_t _; uint8_t x446 = _addcarryx_u32(0x0, x387, x411, &_);
- { uint32_t x448; uint8_t x449 = _addcarryx_u32(x446, x390, x429, &x448);
- { uint32_t x451; uint8_t x452 = _addcarryx_u32(x449, x393, x432, &x451);
- { uint32_t x454; uint8_t x455 = _addcarryx_u32(x452, x396, x435, &x454);
- { uint32_t x457; uint8_t x458 = _addcarryx_u32(x455, x399, x438, &x457);
- { uint32_t x460; uint8_t x461 = _addcarryx_u32(x458, x402, x441, &x460);
- { uint32_t x463; uint8_t x464 = _addcarryx_u32(x461, x405, x443, &x463);
- { uint8_t x465 = (x464 + x406);
- { uint32_t x468; uint32_t x467 = _mulx_u32(x13, x15, &x468);
- { uint32_t x471; uint32_t x470 = _mulx_u32(x13, x17, &x471);
- { uint32_t x474; uint32_t x473 = _mulx_u32(x13, x19, &x474);
- { uint32_t x477; uint32_t x476 = _mulx_u32(x13, x21, &x477);
- { uint32_t x480; uint32_t x479 = _mulx_u32(x13, x23, &x480);
- { uint32_t x483; uint32_t x482 = _mulx_u32(x13, x22, &x483);
- { uint32_t x485; uint8_t x486 = _addcarryx_u32(0x0, x468, x470, &x485);
- { uint32_t x488; uint8_t x489 = _addcarryx_u32(x486, x471, x473, &x488);
- { uint32_t x491; uint8_t x492 = _addcarryx_u32(x489, x474, x476, &x491);
- { uint32_t x494; uint8_t x495 = _addcarryx_u32(x492, x477, x479, &x494);
- { uint32_t x497; uint8_t x498 = _addcarryx_u32(x495, x480, x482, &x497);
- { uint32_t x500; uint8_t _ = _addcarryx_u32(0x0, x498, x483, &x500);
- { uint32_t x503; uint8_t x504 = _addcarryx_u32(0x0, x448, x467, &x503);
- { uint32_t x506; uint8_t x507 = _addcarryx_u32(x504, x451, x485, &x506);
- { uint32_t x509; uint8_t x510 = _addcarryx_u32(x507, x454, x488, &x509);
- { uint32_t x512; uint8_t x513 = _addcarryx_u32(x510, x457, x491, &x512);
- { uint32_t x515; uint8_t x516 = _addcarryx_u32(x513, x460, x494, &x515);
- { uint32_t x518; uint8_t x519 = _addcarryx_u32(x516, x463, x497, &x518);
- { uint32_t x521; uint8_t x522 = _addcarryx_u32(x519, x465, x500, &x521);
- { uint32_t _; uint32_t x524 = _mulx_u32(x503, 0xcccccccd, &_);
- { uint32_t x528; uint32_t x527 = _mulx_u32(x524, 0xfffffffb, &x528);
- { uint32_t x531; uint32_t x530 = _mulx_u32(x524, 0xffffffff, &x531);
- { uint32_t x534; uint32_t x533 = _mulx_u32(x524, 0xffffffff, &x534);
- { uint32_t x537; uint32_t x536 = _mulx_u32(x524, 0xffffffff, &x537);
- { uint32_t x540; uint32_t x539 = _mulx_u32(x524, 0xffffffff, &x540);
- { uint8_t x543; uint32_t x542 = _mulx_u32_out_u8(x524, 0x3f, &x543);
- { uint32_t x545; uint8_t x546 = _addcarryx_u32(0x0, x528, x530, &x545);
- { uint32_t x548; uint8_t x549 = _addcarryx_u32(x546, x531, x533, &x548);
- { uint32_t x551; uint8_t x552 = _addcarryx_u32(x549, x534, x536, &x551);
- { uint32_t x554; uint8_t x555 = _addcarryx_u32(x552, x537, x539, &x554);
- { uint32_t x557; uint8_t x558 = _addcarryx_u32(x555, x540, x542, &x557);
- { uint8_t x559 = (x558 + x543);
- { uint32_t _; uint8_t x562 = _addcarryx_u32(0x0, x503, x527, &_);
- { uint32_t x564; uint8_t x565 = _addcarryx_u32(x562, x506, x545, &x564);
- { uint32_t x567; uint8_t x568 = _addcarryx_u32(x565, x509, x548, &x567);
- { uint32_t x570; uint8_t x571 = _addcarryx_u32(x568, x512, x551, &x570);
- { uint32_t x573; uint8_t x574 = _addcarryx_u32(x571, x515, x554, &x573);
- { uint32_t x576; uint8_t x577 = _addcarryx_u32(x574, x518, x557, &x576);
- { uint32_t x579; uint8_t x580 = _addcarryx_u32(x577, x521, x559, &x579);
- { uint8_t x581 = (x580 + x522);
- { uint32_t x584; uint32_t x583 = _mulx_u32(x12, x15, &x584);
- { uint32_t x587; uint32_t x586 = _mulx_u32(x12, x17, &x587);
- { uint32_t x590; uint32_t x589 = _mulx_u32(x12, x19, &x590);
- { uint32_t x593; uint32_t x592 = _mulx_u32(x12, x21, &x593);
- { uint32_t x596; uint32_t x595 = _mulx_u32(x12, x23, &x596);
- { uint32_t x599; uint32_t x598 = _mulx_u32(x12, x22, &x599);
- { uint32_t x601; uint8_t x602 = _addcarryx_u32(0x0, x584, x586, &x601);
- { uint32_t x604; uint8_t x605 = _addcarryx_u32(x602, x587, x589, &x604);
- { uint32_t x607; uint8_t x608 = _addcarryx_u32(x605, x590, x592, &x607);
- { uint32_t x610; uint8_t x611 = _addcarryx_u32(x608, x593, x595, &x610);
- { uint32_t x613; uint8_t x614 = _addcarryx_u32(x611, x596, x598, &x613);
- { uint32_t x616; uint8_t _ = _addcarryx_u32(0x0, x614, x599, &x616);
- { uint32_t x619; uint8_t x620 = _addcarryx_u32(0x0, x564, x583, &x619);
- { uint32_t x622; uint8_t x623 = _addcarryx_u32(x620, x567, x601, &x622);
- { uint32_t x625; uint8_t x626 = _addcarryx_u32(x623, x570, x604, &x625);
- { uint32_t x628; uint8_t x629 = _addcarryx_u32(x626, x573, x607, &x628);
- { uint32_t x631; uint8_t x632 = _addcarryx_u32(x629, x576, x610, &x631);
- { uint32_t x634; uint8_t x635 = _addcarryx_u32(x632, x579, x613, &x634);
- { uint32_t x637; uint8_t x638 = _addcarryx_u32(x635, x581, x616, &x637);
- { uint32_t _; uint32_t x640 = _mulx_u32(x619, 0xcccccccd, &_);
- { uint32_t x644; uint32_t x643 = _mulx_u32(x640, 0xfffffffb, &x644);
- { uint32_t x647; uint32_t x646 = _mulx_u32(x640, 0xffffffff, &x647);
- { uint32_t x650; uint32_t x649 = _mulx_u32(x640, 0xffffffff, &x650);
- { uint32_t x653; uint32_t x652 = _mulx_u32(x640, 0xffffffff, &x653);
- { uint32_t x656; uint32_t x655 = _mulx_u32(x640, 0xffffffff, &x656);
- { uint8_t x659; uint32_t x658 = _mulx_u32_out_u8(x640, 0x3f, &x659);
- { uint32_t x661; uint8_t x662 = _addcarryx_u32(0x0, x644, x646, &x661);
- { uint32_t x664; uint8_t x665 = _addcarryx_u32(x662, x647, x649, &x664);
- { uint32_t x667; uint8_t x668 = _addcarryx_u32(x665, x650, x652, &x667);
- { uint32_t x670; uint8_t x671 = _addcarryx_u32(x668, x653, x655, &x670);
- { uint32_t x673; uint8_t x674 = _addcarryx_u32(x671, x656, x658, &x673);
- { uint8_t x675 = (x674 + x659);
- { uint32_t _; uint8_t x678 = _addcarryx_u32(0x0, x619, x643, &_);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x622, x661, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x625, x664, &x683);
- { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x628, x667, &x686);
- { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x631, x670, &x689);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x634, x673, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x637, x675, &x695);
- { uint8_t x697 = (x696 + x638);
- { uint32_t x699; uint8_t x700 = _subborrow_u32(0x0, x680, 0xfffffffb, &x699);
- { uint32_t x702; uint8_t x703 = _subborrow_u32(x700, x683, 0xffffffff, &x702);
- { uint32_t x705; uint8_t x706 = _subborrow_u32(x703, x686, 0xffffffff, &x705);
- { uint32_t x708; uint8_t x709 = _subborrow_u32(x706, x689, 0xffffffff, &x708);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(x709, x692, 0xffffffff, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0x3f, &x714);
- { uint32_t _; uint8_t x718 = _subborrow_u32(x715, x697, 0x0, &_);
- { uint32_t x719 = cmovznz32(x718, x714, x695);
- { uint32_t x720 = cmovznz32(x718, x711, x692);
- { uint32_t x721 = cmovznz32(x718, x708, x689);
- { uint32_t x722 = cmovznz32(x718, x705, x686);
- { uint32_t x723 = cmovznz32(x718, x702, x683);
- { uint32_t x724 = cmovznz32(x718, x699, x680);
- out[0] = x724;
- out[1] = x723;
- out[2] = x722;
- out[3] = x721;
- out[4] = x720;
- out[5] = x719;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e166m5/femul.v b/src/Specific/montgomery32_2e166m5/femul.v
deleted file mode 100644
index 40b4d1adb..000000000
--- a/src/Specific/montgomery32_2e166m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e166m5/femulDisplay.log b/src/Specific/montgomery32_2e166m5/femulDisplay.log
deleted file mode 100644
index 7202f403c..000000000
--- a/src/Specific/montgomery32_2e166m5/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xcccccccd);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xfffffffb);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint8_t x80 = mulx_u32_out_u8(x61, 0x3f);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint8_t x96 = (x95 + x80);
- uint32_t _, uint8_t x99 = addcarryx_u32(0x0, x25, x64);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x43, x82);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x46, x85);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x49, x88);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x52, x91);
- uint32_t x113, uint8_t x114 = addcarryx_u32(x111, x55, x94);
- uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x58, x96);
- uint32_t x119, uint32_t x120 = mulx_u32(x7, x15);
- uint32_t x122, uint32_t x123 = mulx_u32(x7, x17);
- uint32_t x125, uint32_t x126 = mulx_u32(x7, x19);
- uint32_t x128, uint32_t x129 = mulx_u32(x7, x21);
- uint32_t x131, uint32_t x132 = mulx_u32(x7, x23);
- uint32_t x134, uint32_t x135 = mulx_u32(x7, x22);
- uint32_t x137, uint8_t x138 = addcarryx_u32(0x0, x120, x122);
- uint32_t x140, uint8_t x141 = addcarryx_u32(x138, x123, x125);
- uint32_t x143, uint8_t x144 = addcarryx_u32(x141, x126, x128);
- uint32_t x146, uint8_t x147 = addcarryx_u32(x144, x129, x131);
- uint32_t x149, uint8_t x150 = addcarryx_u32(x147, x132, x134);
- uint32_t x152, uint8_t _ = addcarryx_u32(0x0, x150, x135);
- uint32_t x155, uint8_t x156 = addcarryx_u32(0x0, x101, x119);
- uint32_t x158, uint8_t x159 = addcarryx_u32(x156, x104, x137);
- uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x107, x140);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x110, x143);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x113, x146);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x116, x149);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x117, x152);
- uint32_t x176, uint32_t _ = mulx_u32(x155, 0xcccccccd);
- uint32_t x179, uint32_t x180 = mulx_u32(x176, 0xfffffffb);
- uint32_t x182, uint32_t x183 = mulx_u32(x176, 0xffffffff);
- uint32_t x185, uint32_t x186 = mulx_u32(x176, 0xffffffff);
- uint32_t x188, uint32_t x189 = mulx_u32(x176, 0xffffffff);
- uint32_t x191, uint32_t x192 = mulx_u32(x176, 0xffffffff);
- uint32_t x194, uint8_t x195 = mulx_u32_out_u8(x176, 0x3f);
- uint32_t x197, uint8_t x198 = addcarryx_u32(0x0, x180, x182);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x183, x185);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x186, x188);
- uint32_t x206, uint8_t x207 = addcarryx_u32(x204, x189, x191);
- uint32_t x209, uint8_t x210 = addcarryx_u32(x207, x192, x194);
- uint8_t x211 = (x210 + x195);
- uint32_t _, uint8_t x214 = addcarryx_u32(0x0, x155, x179);
- uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x158, x197);
- uint32_t x219, uint8_t x220 = addcarryx_u32(x217, x161, x200);
- uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x164, x203);
- uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x167, x206);
- uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x170, x209);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x173, x211);
- uint8_t x233 = (x232 + x174);
- uint32_t x235, uint32_t x236 = mulx_u32(x9, x15);
- uint32_t x238, uint32_t x239 = mulx_u32(x9, x17);
- uint32_t x241, uint32_t x242 = mulx_u32(x9, x19);
- uint32_t x244, uint32_t x245 = mulx_u32(x9, x21);
- uint32_t x247, uint32_t x248 = mulx_u32(x9, x23);
- uint32_t x250, uint32_t x251 = mulx_u32(x9, x22);
- uint32_t x253, uint8_t x254 = addcarryx_u32(0x0, x236, x238);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x239, x241);
- uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x242, x244);
- uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x245, x247);
- uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x248, x250);
- uint32_t x268, uint8_t _ = addcarryx_u32(0x0, x266, x251);
- uint32_t x271, uint8_t x272 = addcarryx_u32(0x0, x216, x235);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x219, x253);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x222, x256);
- uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x225, x259);
- uint32_t x283, uint8_t x284 = addcarryx_u32(x281, x228, x262);
- uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x231, x265);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x233, x268);
- uint32_t x292, uint32_t _ = mulx_u32(x271, 0xcccccccd);
- uint32_t x295, uint32_t x296 = mulx_u32(x292, 0xfffffffb);
- uint32_t x298, uint32_t x299 = mulx_u32(x292, 0xffffffff);
- uint32_t x301, uint32_t x302 = mulx_u32(x292, 0xffffffff);
- uint32_t x304, uint32_t x305 = mulx_u32(x292, 0xffffffff);
- uint32_t x307, uint32_t x308 = mulx_u32(x292, 0xffffffff);
- uint32_t x310, uint8_t x311 = mulx_u32_out_u8(x292, 0x3f);
- uint32_t x313, uint8_t x314 = addcarryx_u32(0x0, x296, x298);
- uint32_t x316, uint8_t x317 = addcarryx_u32(x314, x299, x301);
- uint32_t x319, uint8_t x320 = addcarryx_u32(x317, x302, x304);
- uint32_t x322, uint8_t x323 = addcarryx_u32(x320, x305, x307);
- uint32_t x325, uint8_t x326 = addcarryx_u32(x323, x308, x310);
- uint8_t x327 = (x326 + x311);
- uint32_t _, uint8_t x330 = addcarryx_u32(0x0, x271, x295);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x274, x313);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x277, x316);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x280, x319);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x283, x322);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x286, x325);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x289, x327);
- uint8_t x349 = (x348 + x290);
- uint32_t x351, uint32_t x352 = mulx_u32(x11, x15);
- uint32_t x354, uint32_t x355 = mulx_u32(x11, x17);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x19);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x21);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x23);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x22);
- uint32_t x369, uint8_t x370 = addcarryx_u32(0x0, x352, x354);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x355, x357);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x367);
- uint32_t x387, uint8_t x388 = addcarryx_u32(0x0, x332, x351);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x335, x369);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x338, x372);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x349, x384);
- uint32_t x408, uint32_t _ = mulx_u32(x387, 0xcccccccd);
- uint32_t x411, uint32_t x412 = mulx_u32(x408, 0xfffffffb);
- uint32_t x414, uint32_t x415 = mulx_u32(x408, 0xffffffff);
- uint32_t x417, uint32_t x418 = mulx_u32(x408, 0xffffffff);
- uint32_t x420, uint32_t x421 = mulx_u32(x408, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x408, 0xffffffff);
- uint32_t x426, uint8_t x427 = mulx_u32_out_u8(x408, 0x3f);
- uint32_t x429, uint8_t x430 = addcarryx_u32(0x0, x412, x414);
- uint32_t x432, uint8_t x433 = addcarryx_u32(x430, x415, x417);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint8_t x443 = (x442 + x427);
- uint32_t _, uint8_t x446 = addcarryx_u32(0x0, x387, x411);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x390, x429);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x393, x432);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x396, x435);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x399, x438);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x402, x441);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x405, x443);
- uint8_t x465 = (x464 + x406);
- uint32_t x467, uint32_t x468 = mulx_u32(x13, x15);
- uint32_t x470, uint32_t x471 = mulx_u32(x13, x17);
- uint32_t x473, uint32_t x474 = mulx_u32(x13, x19);
- uint32_t x476, uint32_t x477 = mulx_u32(x13, x21);
- uint32_t x479, uint32_t x480 = mulx_u32(x13, x23);
- uint32_t x482, uint32_t x483 = mulx_u32(x13, x22);
- uint32_t x485, uint8_t x486 = addcarryx_u32(0x0, x468, x470);
- uint32_t x488, uint8_t x489 = addcarryx_u32(x486, x471, x473);
- uint32_t x491, uint8_t x492 = addcarryx_u32(x489, x474, x476);
- uint32_t x494, uint8_t x495 = addcarryx_u32(x492, x477, x479);
- uint32_t x497, uint8_t x498 = addcarryx_u32(x495, x480, x482);
- uint32_t x500, uint8_t _ = addcarryx_u32(0x0, x498, x483);
- uint32_t x503, uint8_t x504 = addcarryx_u32(0x0, x448, x467);
- uint32_t x506, uint8_t x507 = addcarryx_u32(x504, x451, x485);
- uint32_t x509, uint8_t x510 = addcarryx_u32(x507, x454, x488);
- uint32_t x512, uint8_t x513 = addcarryx_u32(x510, x457, x491);
- uint32_t x515, uint8_t x516 = addcarryx_u32(x513, x460, x494);
- uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x463, x497);
- uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x465, x500);
- uint32_t x524, uint32_t _ = mulx_u32(x503, 0xcccccccd);
- uint32_t x527, uint32_t x528 = mulx_u32(x524, 0xfffffffb);
- uint32_t x530, uint32_t x531 = mulx_u32(x524, 0xffffffff);
- uint32_t x533, uint32_t x534 = mulx_u32(x524, 0xffffffff);
- uint32_t x536, uint32_t x537 = mulx_u32(x524, 0xffffffff);
- uint32_t x539, uint32_t x540 = mulx_u32(x524, 0xffffffff);
- uint32_t x542, uint8_t x543 = mulx_u32_out_u8(x524, 0x3f);
- uint32_t x545, uint8_t x546 = addcarryx_u32(0x0, x528, x530);
- uint32_t x548, uint8_t x549 = addcarryx_u32(x546, x531, x533);
- uint32_t x551, uint8_t x552 = addcarryx_u32(x549, x534, x536);
- uint32_t x554, uint8_t x555 = addcarryx_u32(x552, x537, x539);
- uint32_t x557, uint8_t x558 = addcarryx_u32(x555, x540, x542);
- uint8_t x559 = (x558 + x543);
- uint32_t _, uint8_t x562 = addcarryx_u32(0x0, x503, x527);
- uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x506, x545);
- uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x509, x548);
- uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x512, x551);
- uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x515, x554);
- uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x518, x557);
- uint32_t x579, uint8_t x580 = addcarryx_u32(x577, x521, x559);
- uint8_t x581 = (x580 + x522);
- uint32_t x583, uint32_t x584 = mulx_u32(x12, x15);
- uint32_t x586, uint32_t x587 = mulx_u32(x12, x17);
- uint32_t x589, uint32_t x590 = mulx_u32(x12, x19);
- uint32_t x592, uint32_t x593 = mulx_u32(x12, x21);
- uint32_t x595, uint32_t x596 = mulx_u32(x12, x23);
- uint32_t x598, uint32_t x599 = mulx_u32(x12, x22);
- uint32_t x601, uint8_t x602 = addcarryx_u32(0x0, x584, x586);
- uint32_t x604, uint8_t x605 = addcarryx_u32(x602, x587, x589);
- uint32_t x607, uint8_t x608 = addcarryx_u32(x605, x590, x592);
- uint32_t x610, uint8_t x611 = addcarryx_u32(x608, x593, x595);
- uint32_t x613, uint8_t x614 = addcarryx_u32(x611, x596, x598);
- uint32_t x616, uint8_t _ = addcarryx_u32(0x0, x614, x599);
- uint32_t x619, uint8_t x620 = addcarryx_u32(0x0, x564, x583);
- uint32_t x622, uint8_t x623 = addcarryx_u32(x620, x567, x601);
- uint32_t x625, uint8_t x626 = addcarryx_u32(x623, x570, x604);
- uint32_t x628, uint8_t x629 = addcarryx_u32(x626, x573, x607);
- uint32_t x631, uint8_t x632 = addcarryx_u32(x629, x576, x610);
- uint32_t x634, uint8_t x635 = addcarryx_u32(x632, x579, x613);
- uint32_t x637, uint8_t x638 = addcarryx_u32(x635, x581, x616);
- uint32_t x640, uint32_t _ = mulx_u32(x619, 0xcccccccd);
- uint32_t x643, uint32_t x644 = mulx_u32(x640, 0xfffffffb);
- uint32_t x646, uint32_t x647 = mulx_u32(x640, 0xffffffff);
- uint32_t x649, uint32_t x650 = mulx_u32(x640, 0xffffffff);
- uint32_t x652, uint32_t x653 = mulx_u32(x640, 0xffffffff);
- uint32_t x655, uint32_t x656 = mulx_u32(x640, 0xffffffff);
- uint32_t x658, uint8_t x659 = mulx_u32_out_u8(x640, 0x3f);
- uint32_t x661, uint8_t x662 = addcarryx_u32(0x0, x644, x646);
- uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x647, x649);
- uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x650, x652);
- uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x653, x655);
- uint32_t x673, uint8_t x674 = addcarryx_u32(x671, x656, x658);
- uint8_t x675 = (x674 + x659);
- uint32_t _, uint8_t x678 = addcarryx_u32(0x0, x619, x643);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x622, x661);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x625, x664);
- uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x628, x667);
- uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x631, x670);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x634, x673);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x637, x675);
- uint8_t x697 = (x696 + x638);
- uint32_t x699, uint8_t x700 = subborrow_u32(0x0, x680, 0xfffffffb);
- uint32_t x702, uint8_t x703 = subborrow_u32(x700, x683, 0xffffffff);
- uint32_t x705, uint8_t x706 = subborrow_u32(x703, x686, 0xffffffff);
- uint32_t x708, uint8_t x709 = subborrow_u32(x706, x689, 0xffffffff);
- uint32_t x711, uint8_t x712 = subborrow_u32(x709, x692, 0xffffffff);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0x3f);
- uint32_t _, uint8_t x718 = subborrow_u32(x715, x697, 0x0);
- uint32_t x719 = cmovznz32(x718, x714, x695);
- uint32_t x720 = cmovznz32(x718, x711, x692);
- uint32_t x721 = cmovznz32(x718, x708, x689);
- uint32_t x722 = cmovznz32(x718, x705, x686);
- uint32_t x723 = cmovznz32(x718, x702, x683);
- uint32_t x724 = cmovznz32(x718, x699, x680);
- return (x719, x720, x721, x722, x723, x724))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e166m5/femulDisplay.v b/src/Specific/montgomery32_2e166m5/femulDisplay.v
deleted file mode 100644
index b8abe9973..000000000
--- a/src/Specific/montgomery32_2e166m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e166m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e166m5/fenz.c b/src/Specific/montgomery32_2e166m5/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e166m5/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e166m5/fenz.v b/src/Specific/montgomery32_2e166m5/fenz.v
deleted file mode 100644
index b4e9ef573..000000000
--- a/src/Specific/montgomery32_2e166m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e166m5/fenzDisplay.log b/src/Specific/montgomery32_2e166m5/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e166m5/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e166m5/fenzDisplay.v b/src/Specific/montgomery32_2e166m5/fenzDisplay.v
deleted file mode 100644
index 9c050db08..000000000
--- a/src/Specific/montgomery32_2e166m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e166m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e166m5/feopp.c b/src/Specific/montgomery32_2e166m5/feopp.c
deleted file mode 100644
index d9caf7596..000000000
--- a/src/Specific/montgomery32_2e166m5/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xfffffffb);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint8_t x50 = ((uint8_t)x29 & 0x3f);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e166m5/feopp.v b/src/Specific/montgomery32_2e166m5/feopp.v
deleted file mode 100644
index d1091c7b2..000000000
--- a/src/Specific/montgomery32_2e166m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e166m5/feoppDisplay.log b/src/Specific/montgomery32_2e166m5/feoppDisplay.log
deleted file mode 100644
index 8b39a6b4e..000000000
--- a/src/Specific/montgomery32_2e166m5/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xfffffffb);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint8_t x50 = ((uint8_t)x29 & 0x3f);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e166m5/feoppDisplay.v b/src/Specific/montgomery32_2e166m5/feoppDisplay.v
deleted file mode 100644
index d1f7a8a08..000000000
--- a/src/Specific/montgomery32_2e166m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e166m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e166m5/fesquare.c b/src/Specific/montgomery32_2e166m5/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e166m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e166m5/fesub.c b/src/Specific/montgomery32_2e166m5/fesub.c
deleted file mode 100644
index 5ce4a0e74..000000000
--- a/src/Specific/montgomery32_2e166m5/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xfffffffb);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint8_t x63 = ((uint8_t)x42 & 0x3f);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e166m5/fesub.v b/src/Specific/montgomery32_2e166m5/fesub.v
deleted file mode 100644
index 81da62ba4..000000000
--- a/src/Specific/montgomery32_2e166m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e166m5/fesubDisplay.log b/src/Specific/montgomery32_2e166m5/fesubDisplay.log
deleted file mode 100644
index 5b6f35fd1..000000000
--- a/src/Specific/montgomery32_2e166m5/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xfffffffb);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint8_t x63 = ((uint8_t)x42 & 0x3f);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e166m5/fesubDisplay.v b/src/Specific/montgomery32_2e166m5/fesubDisplay.v
deleted file mode 100644
index d0ad9d58b..000000000
--- a/src/Specific/montgomery32_2e166m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e166m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e166m5/CurveParameters.v b/src/Specific/montgomery32_2e166m5_6limbs/CurveParameters.v
index b75c925d1..b75c925d1 100644
--- a/src/Specific/montgomery32_2e166m5/CurveParameters.v
+++ b/src/Specific/montgomery32_2e166m5_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/Synthesis.v b/src/Specific/montgomery32_2e166m5_6limbs/Synthesis.v
new file mode 100644
index 000000000..112591174
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e166m5/compiler.sh b/src/Specific/montgomery32_2e166m5_6limbs/compiler.sh
index e266d9306..e266d9306 100755
--- a/src/Specific/montgomery32_2e166m5/compiler.sh
+++ b/src/Specific/montgomery32_2e166m5_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e166m5/compilerxx.sh b/src/Specific/montgomery32_2e166m5_6limbs/compilerxx.sh
index e792ea62f..e792ea62f 100755
--- a/src/Specific/montgomery32_2e166m5/compilerxx.sh
+++ b/src/Specific/montgomery32_2e166m5_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feadd.v b/src/Specific/montgomery32_2e166m5_6limbs/feadd.v
new file mode 100644
index 000000000..5ede21213
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..45d080280
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/femul.v b/src/Specific/montgomery32_2e166m5_6limbs/femul.v
new file mode 100644
index 000000000..da8ceb05f
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.v
new file mode 100644
index 000000000..ef490d3b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fenz.v b/src/Specific/montgomery32_2e166m5_6limbs/fenz.v
new file mode 100644
index 000000000..f2faf3cde
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..ff598cdd8
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feopp.v b/src/Specific/montgomery32_2e166m5_6limbs/feopp.v
new file mode 100644
index 000000000..7cce66503
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..f4bf79759
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fesub.v b/src/Specific/montgomery32_2e166m5_6limbs/fesub.v
new file mode 100644
index 000000000..6f40465e7
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..d219fea11
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e166m5_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e166m5/py_interpreter.sh b/src/Specific/montgomery32_2e166m5_6limbs/py_interpreter.sh
index 8d5ad5dcf..8d5ad5dcf 100755
--- a/src/Specific/montgomery32_2e166m5/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e166m5_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e171m19/Synthesis.v b/src/Specific/montgomery32_2e171m19/Synthesis.v
deleted file mode 100644
index 8a40d938e..000000000
--- a/src/Specific/montgomery32_2e171m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e171m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e171m19/feadd.c b/src/Specific/montgomery32_2e171m19/feadd.c
deleted file mode 100644
index 85dcc582d..000000000
--- a/src/Specific/montgomery32_2e171m19/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffed, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x7ff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e171m19/feadd.v b/src/Specific/montgomery32_2e171m19/feadd.v
deleted file mode 100644
index 5e2a1897e..000000000
--- a/src/Specific/montgomery32_2e171m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e171m19/feaddDisplay.log b/src/Specific/montgomery32_2e171m19/feaddDisplay.log
deleted file mode 100644
index 4a39a15c4..000000000
--- a/src/Specific/montgomery32_2e171m19/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffed);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x7ff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e171m19/feaddDisplay.v b/src/Specific/montgomery32_2e171m19/feaddDisplay.v
deleted file mode 100644
index 85efdf32a..000000000
--- a/src/Specific/montgomery32_2e171m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e171m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e171m19/femul.c b/src/Specific/montgomery32_2e171m19/femul.c
deleted file mode 100644
index e41566974..000000000
--- a/src/Specific/montgomery32_2e171m19/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0x286bca1b, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffed, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x7ff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0x286bca1b, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffed, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x7ff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0x286bca1b, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffed, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x7ff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0x286bca1b, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffed, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x7ff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0x286bca1b, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffed, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x7ff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0x286bca1b, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffed, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x7ff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffed, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x7ff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e171m19/femul.v b/src/Specific/montgomery32_2e171m19/femul.v
deleted file mode 100644
index ceae1f3e2..000000000
--- a/src/Specific/montgomery32_2e171m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e171m19/femulDisplay.log b/src/Specific/montgomery32_2e171m19/femulDisplay.log
deleted file mode 100644
index d4b873886..000000000
--- a/src/Specific/montgomery32_2e171m19/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0x286bca1b);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffed);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x7ff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0x286bca1b);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffed);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x7ff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0x286bca1b);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffed);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x7ff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0x286bca1b);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffed);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x7ff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0x286bca1b);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffed);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x7ff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0x286bca1b);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffed);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x7ff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffed);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x7ff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e171m19/femulDisplay.v b/src/Specific/montgomery32_2e171m19/femulDisplay.v
deleted file mode 100644
index 6939ec696..000000000
--- a/src/Specific/montgomery32_2e171m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e171m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e171m19/fenz.c b/src/Specific/montgomery32_2e171m19/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e171m19/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e171m19/fenz.v b/src/Specific/montgomery32_2e171m19/fenz.v
deleted file mode 100644
index d146235dc..000000000
--- a/src/Specific/montgomery32_2e171m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e171m19/fenzDisplay.log b/src/Specific/montgomery32_2e171m19/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e171m19/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e171m19/fenzDisplay.v b/src/Specific/montgomery32_2e171m19/fenzDisplay.v
deleted file mode 100644
index 499a92be1..000000000
--- a/src/Specific/montgomery32_2e171m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e171m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e171m19/feopp.c b/src/Specific/montgomery32_2e171m19/feopp.c
deleted file mode 100644
index c7d34f427..000000000
--- a/src/Specific/montgomery32_2e171m19/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffed);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x7ff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e171m19/feopp.v b/src/Specific/montgomery32_2e171m19/feopp.v
deleted file mode 100644
index dd8b1d547..000000000
--- a/src/Specific/montgomery32_2e171m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e171m19/feoppDisplay.log b/src/Specific/montgomery32_2e171m19/feoppDisplay.log
deleted file mode 100644
index c49945ba8..000000000
--- a/src/Specific/montgomery32_2e171m19/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffed);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x7ff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e171m19/feoppDisplay.v b/src/Specific/montgomery32_2e171m19/feoppDisplay.v
deleted file mode 100644
index ca5910e4b..000000000
--- a/src/Specific/montgomery32_2e171m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e171m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e171m19/fesquare.c b/src/Specific/montgomery32_2e171m19/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e171m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e171m19/fesub.c b/src/Specific/montgomery32_2e171m19/fesub.c
deleted file mode 100644
index 7dc4f0d26..000000000
--- a/src/Specific/montgomery32_2e171m19/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffed);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x7ff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e171m19/fesub.v b/src/Specific/montgomery32_2e171m19/fesub.v
deleted file mode 100644
index 6af933378..000000000
--- a/src/Specific/montgomery32_2e171m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e171m19/fesubDisplay.log b/src/Specific/montgomery32_2e171m19/fesubDisplay.log
deleted file mode 100644
index 4f3a0717b..000000000
--- a/src/Specific/montgomery32_2e171m19/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffed);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x7ff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e171m19/fesubDisplay.v b/src/Specific/montgomery32_2e171m19/fesubDisplay.v
deleted file mode 100644
index 12f893b6c..000000000
--- a/src/Specific/montgomery32_2e171m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e171m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e171m19/CurveParameters.v b/src/Specific/montgomery32_2e171m19_6limbs/CurveParameters.v
index 54b82b346..54b82b346 100644
--- a/src/Specific/montgomery32_2e171m19/CurveParameters.v
+++ b/src/Specific/montgomery32_2e171m19_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/Synthesis.v b/src/Specific/montgomery32_2e171m19_6limbs/Synthesis.v
new file mode 100644
index 000000000..6e0e62bb8
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e171m19/compiler.sh b/src/Specific/montgomery32_2e171m19_6limbs/compiler.sh
index 20f3ed572..20f3ed572 100755
--- a/src/Specific/montgomery32_2e171m19/compiler.sh
+++ b/src/Specific/montgomery32_2e171m19_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e171m19/compilerxx.sh b/src/Specific/montgomery32_2e171m19_6limbs/compilerxx.sh
index cca9cef1a..cca9cef1a 100755
--- a/src/Specific/montgomery32_2e171m19/compilerxx.sh
+++ b/src/Specific/montgomery32_2e171m19_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/feadd.v b/src/Specific/montgomery32_2e171m19_6limbs/feadd.v
new file mode 100644
index 000000000..a14e0b391
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..e423d3403
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/femul.v b/src/Specific/montgomery32_2e171m19_6limbs/femul.v
new file mode 100644
index 000000000..a10273efc
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.v
new file mode 100644
index 000000000..0b2f6980f
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/fenz.v b/src/Specific/montgomery32_2e171m19_6limbs/fenz.v
new file mode 100644
index 000000000..114ac2f82
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..592c288c7
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/feopp.v b/src/Specific/montgomery32_2e171m19_6limbs/feopp.v
new file mode 100644
index 000000000..2653d12a9
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..7cb06a34f
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/fesub.v b/src/Specific/montgomery32_2e171m19_6limbs/fesub.v
new file mode 100644
index 000000000..31675ab9a
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..6aa9ddfa8
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e171m19_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e171m19/py_interpreter.sh b/src/Specific/montgomery32_2e171m19_6limbs/py_interpreter.sh
index 97053ad74..97053ad74 100755
--- a/src/Specific/montgomery32_2e171m19/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e171m19_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e174m17/Synthesis.v b/src/Specific/montgomery32_2e174m17/Synthesis.v
deleted file mode 100644
index 816dcffd4..000000000
--- a/src/Specific/montgomery32_2e174m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e174m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e174m17/feadd.c b/src/Specific/montgomery32_2e174m17/feadd.c
deleted file mode 100644
index a361d09df..000000000
--- a/src/Specific/montgomery32_2e174m17/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffef, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m17/feadd.v b/src/Specific/montgomery32_2e174m17/feadd.v
deleted file mode 100644
index 9bc9dffd7..000000000
--- a/src/Specific/montgomery32_2e174m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e174m17/feaddDisplay.log b/src/Specific/montgomery32_2e174m17/feaddDisplay.log
deleted file mode 100644
index 31e22218b..000000000
--- a/src/Specific/montgomery32_2e174m17/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffef);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m17/feaddDisplay.v b/src/Specific/montgomery32_2e174m17/feaddDisplay.v
deleted file mode 100644
index 582e2a81b..000000000
--- a/src/Specific/montgomery32_2e174m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e174m17/femul.c b/src/Specific/montgomery32_2e174m17/femul.c
deleted file mode 100644
index b24bb3ee2..000000000
--- a/src/Specific/montgomery32_2e174m17/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xf0f0f0f1, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffef, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x3fff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0xf0f0f0f1, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffef, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x3fff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0xf0f0f0f1, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffef, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x3fff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0xf0f0f0f1, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffef, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x3fff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0xf0f0f0f1, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffef, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x3fff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0xf0f0f0f1, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffef, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x3fff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffef, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x3fff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m17/femul.v b/src/Specific/montgomery32_2e174m17/femul.v
deleted file mode 100644
index 514ae2119..000000000
--- a/src/Specific/montgomery32_2e174m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e174m17/femulDisplay.log b/src/Specific/montgomery32_2e174m17/femulDisplay.log
deleted file mode 100644
index 047054f7e..000000000
--- a/src/Specific/montgomery32_2e174m17/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xf0f0f0f1);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffef);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x3fff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0xf0f0f0f1);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffef);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x3fff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0xf0f0f0f1);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffef);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x3fff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0xf0f0f0f1);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffef);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x3fff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0xf0f0f0f1);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffef);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x3fff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0xf0f0f0f1);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffef);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x3fff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffef);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x3fff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m17/femulDisplay.v b/src/Specific/montgomery32_2e174m17/femulDisplay.v
deleted file mode 100644
index 673b1116a..000000000
--- a/src/Specific/montgomery32_2e174m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e174m17/fenz.c b/src/Specific/montgomery32_2e174m17/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e174m17/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m17/fenz.v b/src/Specific/montgomery32_2e174m17/fenz.v
deleted file mode 100644
index cce48df8d..000000000
--- a/src/Specific/montgomery32_2e174m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e174m17/fenzDisplay.log b/src/Specific/montgomery32_2e174m17/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e174m17/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e174m17/fenzDisplay.v b/src/Specific/montgomery32_2e174m17/fenzDisplay.v
deleted file mode 100644
index 91476fa22..000000000
--- a/src/Specific/montgomery32_2e174m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e174m17/feopp.c b/src/Specific/montgomery32_2e174m17/feopp.c
deleted file mode 100644
index 65336f912..000000000
--- a/src/Specific/montgomery32_2e174m17/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffef);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x3fff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m17/feopp.v b/src/Specific/montgomery32_2e174m17/feopp.v
deleted file mode 100644
index eb80562c5..000000000
--- a/src/Specific/montgomery32_2e174m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e174m17/feoppDisplay.log b/src/Specific/montgomery32_2e174m17/feoppDisplay.log
deleted file mode 100644
index 189315f28..000000000
--- a/src/Specific/montgomery32_2e174m17/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffef);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x3fff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m17/feoppDisplay.v b/src/Specific/montgomery32_2e174m17/feoppDisplay.v
deleted file mode 100644
index 9742d8ebd..000000000
--- a/src/Specific/montgomery32_2e174m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e174m17/fesquare.c b/src/Specific/montgomery32_2e174m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e174m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e174m17/fesub.c b/src/Specific/montgomery32_2e174m17/fesub.c
deleted file mode 100644
index e66d18339..000000000
--- a/src/Specific/montgomery32_2e174m17/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffef);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x3fff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m17/fesub.v b/src/Specific/montgomery32_2e174m17/fesub.v
deleted file mode 100644
index 2e3dc26bb..000000000
--- a/src/Specific/montgomery32_2e174m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e174m17/fesubDisplay.log b/src/Specific/montgomery32_2e174m17/fesubDisplay.log
deleted file mode 100644
index d5763203a..000000000
--- a/src/Specific/montgomery32_2e174m17/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffef);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x3fff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m17/fesubDisplay.v b/src/Specific/montgomery32_2e174m17/fesubDisplay.v
deleted file mode 100644
index 7491b4c21..000000000
--- a/src/Specific/montgomery32_2e174m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e174m17/CurveParameters.v b/src/Specific/montgomery32_2e174m17_6limbs/CurveParameters.v
index 4084ea061..4084ea061 100644
--- a/src/Specific/montgomery32_2e174m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e174m17_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/Synthesis.v b/src/Specific/montgomery32_2e174m17_6limbs/Synthesis.v
new file mode 100644
index 000000000..cf5b92427
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e174m17/compiler.sh b/src/Specific/montgomery32_2e174m17_6limbs/compiler.sh
index baec3edb0..baec3edb0 100755
--- a/src/Specific/montgomery32_2e174m17/compiler.sh
+++ b/src/Specific/montgomery32_2e174m17_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e174m17/compilerxx.sh b/src/Specific/montgomery32_2e174m17_6limbs/compilerxx.sh
index 2ba8e7418..2ba8e7418 100755
--- a/src/Specific/montgomery32_2e174m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e174m17_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/feadd.v b/src/Specific/montgomery32_2e174m17_6limbs/feadd.v
new file mode 100644
index 000000000..81e8f3cf1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..4ea08b6f1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/femul.v b/src/Specific/montgomery32_2e174m17_6limbs/femul.v
new file mode 100644
index 000000000..1f69b1793
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.v
new file mode 100644
index 000000000..05308cd1c
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/fenz.v b/src/Specific/montgomery32_2e174m17_6limbs/fenz.v
new file mode 100644
index 000000000..994fabd7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..07974e3c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/feopp.v b/src/Specific/montgomery32_2e174m17_6limbs/feopp.v
new file mode 100644
index 000000000..b165d23c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..91a7358f1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/fesub.v b/src/Specific/montgomery32_2e174m17_6limbs/fesub.v
new file mode 100644
index 000000000..03d09f0b7
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..0c89f8a7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m17_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e174m17/py_interpreter.sh b/src/Specific/montgomery32_2e174m17_6limbs/py_interpreter.sh
index d804b4d00..d804b4d00 100755
--- a/src/Specific/montgomery32_2e174m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e174m17_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e174m3/Synthesis.v b/src/Specific/montgomery32_2e174m3/Synthesis.v
deleted file mode 100644
index bd48969cc..000000000
--- a/src/Specific/montgomery32_2e174m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e174m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e174m3/feadd.c b/src/Specific/montgomery32_2e174m3/feadd.c
deleted file mode 100644
index e6f12dcab..000000000
--- a/src/Specific/montgomery32_2e174m3/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffffd, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m3/feadd.v b/src/Specific/montgomery32_2e174m3/feadd.v
deleted file mode 100644
index de69f673b..000000000
--- a/src/Specific/montgomery32_2e174m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e174m3/feaddDisplay.log b/src/Specific/montgomery32_2e174m3/feaddDisplay.log
deleted file mode 100644
index e0691d08d..000000000
--- a/src/Specific/montgomery32_2e174m3/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffffd);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m3/feaddDisplay.v b/src/Specific/montgomery32_2e174m3/feaddDisplay.v
deleted file mode 100644
index af03ecfd6..000000000
--- a/src/Specific/montgomery32_2e174m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e174m3/femul.c b/src/Specific/montgomery32_2e174m3/femul.c
deleted file mode 100644
index 62d0623a2..000000000
--- a/src/Specific/montgomery32_2e174m3/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xaaaaaaab, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xfffffffd, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x3fff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0xaaaaaaab, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xfffffffd, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x3fff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0xaaaaaaab, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xfffffffd, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x3fff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0xaaaaaaab, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xfffffffd, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x3fff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0xaaaaaaab, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xfffffffd, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x3fff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0xaaaaaaab, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xfffffffd, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x3fff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xfffffffd, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x3fff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m3/femul.v b/src/Specific/montgomery32_2e174m3/femul.v
deleted file mode 100644
index 1fa11320a..000000000
--- a/src/Specific/montgomery32_2e174m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e174m3/femulDisplay.log b/src/Specific/montgomery32_2e174m3/femulDisplay.log
deleted file mode 100644
index bc626a982..000000000
--- a/src/Specific/montgomery32_2e174m3/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xaaaaaaab);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xfffffffd);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x3fff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0xaaaaaaab);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xfffffffd);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x3fff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0xaaaaaaab);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xfffffffd);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x3fff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0xaaaaaaab);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xfffffffd);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x3fff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0xaaaaaaab);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xfffffffd);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x3fff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0xaaaaaaab);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xfffffffd);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x3fff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xfffffffd);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x3fff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m3/femulDisplay.v b/src/Specific/montgomery32_2e174m3/femulDisplay.v
deleted file mode 100644
index 76c4f50d1..000000000
--- a/src/Specific/montgomery32_2e174m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e174m3/fenz.c b/src/Specific/montgomery32_2e174m3/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e174m3/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m3/fenz.v b/src/Specific/montgomery32_2e174m3/fenz.v
deleted file mode 100644
index 030752b51..000000000
--- a/src/Specific/montgomery32_2e174m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e174m3/fenzDisplay.log b/src/Specific/montgomery32_2e174m3/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e174m3/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e174m3/fenzDisplay.v b/src/Specific/montgomery32_2e174m3/fenzDisplay.v
deleted file mode 100644
index d3911c248..000000000
--- a/src/Specific/montgomery32_2e174m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e174m3/feopp.c b/src/Specific/montgomery32_2e174m3/feopp.c
deleted file mode 100644
index f163e0729..000000000
--- a/src/Specific/montgomery32_2e174m3/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xfffffffd);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x3fff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m3/feopp.v b/src/Specific/montgomery32_2e174m3/feopp.v
deleted file mode 100644
index cbcf36876..000000000
--- a/src/Specific/montgomery32_2e174m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e174m3/feoppDisplay.log b/src/Specific/montgomery32_2e174m3/feoppDisplay.log
deleted file mode 100644
index 1f234f789..000000000
--- a/src/Specific/montgomery32_2e174m3/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xfffffffd);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x3fff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m3/feoppDisplay.v b/src/Specific/montgomery32_2e174m3/feoppDisplay.v
deleted file mode 100644
index ca787582d..000000000
--- a/src/Specific/montgomery32_2e174m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e174m3/fesquare.c b/src/Specific/montgomery32_2e174m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e174m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e174m3/fesub.c b/src/Specific/montgomery32_2e174m3/fesub.c
deleted file mode 100644
index 01db95d89..000000000
--- a/src/Specific/montgomery32_2e174m3/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xfffffffd);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x3fff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e174m3/fesub.v b/src/Specific/montgomery32_2e174m3/fesub.v
deleted file mode 100644
index 3e32b8128..000000000
--- a/src/Specific/montgomery32_2e174m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e174m3/fesubDisplay.log b/src/Specific/montgomery32_2e174m3/fesubDisplay.log
deleted file mode 100644
index 7efb22e98..000000000
--- a/src/Specific/montgomery32_2e174m3/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xfffffffd);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x3fff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e174m3/fesubDisplay.v b/src/Specific/montgomery32_2e174m3/fesubDisplay.v
deleted file mode 100644
index 4b95e7505..000000000
--- a/src/Specific/montgomery32_2e174m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e174m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e174m3/CurveParameters.v b/src/Specific/montgomery32_2e174m3_6limbs/CurveParameters.v
index 722991370..722991370 100644
--- a/src/Specific/montgomery32_2e174m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e174m3_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/Synthesis.v b/src/Specific/montgomery32_2e174m3_6limbs/Synthesis.v
new file mode 100644
index 000000000..8502091ec
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e174m3/compiler.sh b/src/Specific/montgomery32_2e174m3_6limbs/compiler.sh
index 8ca3e776e..8ca3e776e 100755
--- a/src/Specific/montgomery32_2e174m3/compiler.sh
+++ b/src/Specific/montgomery32_2e174m3_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e174m3/compilerxx.sh b/src/Specific/montgomery32_2e174m3_6limbs/compilerxx.sh
index 2fa7dbe77..2fa7dbe77 100755
--- a/src/Specific/montgomery32_2e174m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e174m3_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/feadd.v b/src/Specific/montgomery32_2e174m3_6limbs/feadd.v
new file mode 100644
index 000000000..0832c6441
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..59a5affe3
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/femul.v b/src/Specific/montgomery32_2e174m3_6limbs/femul.v
new file mode 100644
index 000000000..02ab209a5
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e174m3_6limbs/femulDisplay.v
new file mode 100644
index 000000000..6e835a03f
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/fenz.v b/src/Specific/montgomery32_2e174m3_6limbs/fenz.v
new file mode 100644
index 000000000..0cb249a45
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..e3a97d556
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/feopp.v b/src/Specific/montgomery32_2e174m3_6limbs/feopp.v
new file mode 100644
index 000000000..0f2f5c5eb
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..2d7d49d3b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/fesub.v b/src/Specific/montgomery32_2e174m3_6limbs/fesub.v
new file mode 100644
index 000000000..973f21b8c
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..9d3236693
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e174m3_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e174m3/py_interpreter.sh b/src/Specific/montgomery32_2e174m3_6limbs/py_interpreter.sh
index a352c1e14..a352c1e14 100755
--- a/src/Specific/montgomery32_2e174m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e174m3_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e189m25/Synthesis.v b/src/Specific/montgomery32_2e189m25/Synthesis.v
deleted file mode 100644
index 69627182e..000000000
--- a/src/Specific/montgomery32_2e189m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e189m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e189m25/feadd.c b/src/Specific/montgomery32_2e189m25/feadd.c
deleted file mode 100644
index 7bc1da67f..000000000
--- a/src/Specific/montgomery32_2e189m25/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffe7, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x1fffffff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e189m25/feadd.v b/src/Specific/montgomery32_2e189m25/feadd.v
deleted file mode 100644
index e0abed055..000000000
--- a/src/Specific/montgomery32_2e189m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e189m25/feaddDisplay.log b/src/Specific/montgomery32_2e189m25/feaddDisplay.log
deleted file mode 100644
index 4a1bcdf23..000000000
--- a/src/Specific/montgomery32_2e189m25/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffe7);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x1fffffff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e189m25/feaddDisplay.v b/src/Specific/montgomery32_2e189m25/feaddDisplay.v
deleted file mode 100644
index 307d3eea8..000000000
--- a/src/Specific/montgomery32_2e189m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e189m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e189m25/femul.c b/src/Specific/montgomery32_2e189m25/femul.c
deleted file mode 100644
index bca4a73ab..000000000
--- a/src/Specific/montgomery32_2e189m25/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xc28f5c29, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffe7, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x1fffffff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0xc28f5c29, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffe7, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x1fffffff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0xc28f5c29, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffe7, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x1fffffff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0xc28f5c29, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffe7, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x1fffffff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0xc28f5c29, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffe7, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x1fffffff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0xc28f5c29, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffe7, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x1fffffff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffe7, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x1fffffff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e189m25/femul.v b/src/Specific/montgomery32_2e189m25/femul.v
deleted file mode 100644
index 67c6ec616..000000000
--- a/src/Specific/montgomery32_2e189m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e189m25/femulDisplay.log b/src/Specific/montgomery32_2e189m25/femulDisplay.log
deleted file mode 100644
index b5219a8ff..000000000
--- a/src/Specific/montgomery32_2e189m25/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xc28f5c29);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffe7);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x1fffffff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0xc28f5c29);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffe7);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x1fffffff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0xc28f5c29);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffe7);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x1fffffff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0xc28f5c29);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffe7);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x1fffffff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0xc28f5c29);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffe7);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x1fffffff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0xc28f5c29);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffe7);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x1fffffff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffe7);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x1fffffff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e189m25/femulDisplay.v b/src/Specific/montgomery32_2e189m25/femulDisplay.v
deleted file mode 100644
index 5f4e9d31e..000000000
--- a/src/Specific/montgomery32_2e189m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e189m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e189m25/fenz.c b/src/Specific/montgomery32_2e189m25/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e189m25/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e189m25/fenz.v b/src/Specific/montgomery32_2e189m25/fenz.v
deleted file mode 100644
index c02a95339..000000000
--- a/src/Specific/montgomery32_2e189m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e189m25/fenzDisplay.log b/src/Specific/montgomery32_2e189m25/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e189m25/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e189m25/fenzDisplay.v b/src/Specific/montgomery32_2e189m25/fenzDisplay.v
deleted file mode 100644
index b3f4c9256..000000000
--- a/src/Specific/montgomery32_2e189m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e189m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e189m25/feopp.c b/src/Specific/montgomery32_2e189m25/feopp.c
deleted file mode 100644
index 53268a96c..000000000
--- a/src/Specific/montgomery32_2e189m25/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffe7);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x1fffffff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e189m25/feopp.v b/src/Specific/montgomery32_2e189m25/feopp.v
deleted file mode 100644
index 6aaa3b9fe..000000000
--- a/src/Specific/montgomery32_2e189m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e189m25/feoppDisplay.log b/src/Specific/montgomery32_2e189m25/feoppDisplay.log
deleted file mode 100644
index 619df7d75..000000000
--- a/src/Specific/montgomery32_2e189m25/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffe7);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x1fffffff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e189m25/feoppDisplay.v b/src/Specific/montgomery32_2e189m25/feoppDisplay.v
deleted file mode 100644
index 7dcadea73..000000000
--- a/src/Specific/montgomery32_2e189m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e189m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e189m25/fesquare.c b/src/Specific/montgomery32_2e189m25/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e189m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e189m25/fesub.c b/src/Specific/montgomery32_2e189m25/fesub.c
deleted file mode 100644
index 6dcd995c0..000000000
--- a/src/Specific/montgomery32_2e189m25/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffe7);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x1fffffff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e189m25/fesub.v b/src/Specific/montgomery32_2e189m25/fesub.v
deleted file mode 100644
index aea8b71d5..000000000
--- a/src/Specific/montgomery32_2e189m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e189m25/fesubDisplay.log b/src/Specific/montgomery32_2e189m25/fesubDisplay.log
deleted file mode 100644
index 2e7956b02..000000000
--- a/src/Specific/montgomery32_2e189m25/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffe7);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x1fffffff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e189m25/fesubDisplay.v b/src/Specific/montgomery32_2e189m25/fesubDisplay.v
deleted file mode 100644
index f69d562fc..000000000
--- a/src/Specific/montgomery32_2e189m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e189m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e189m25/CurveParameters.v b/src/Specific/montgomery32_2e189m25_6limbs/CurveParameters.v
index c6dffce9b..c6dffce9b 100644
--- a/src/Specific/montgomery32_2e189m25/CurveParameters.v
+++ b/src/Specific/montgomery32_2e189m25_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/Synthesis.v b/src/Specific/montgomery32_2e189m25_6limbs/Synthesis.v
new file mode 100644
index 000000000..10fce69d6
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e189m25/compiler.sh b/src/Specific/montgomery32_2e189m25_6limbs/compiler.sh
index 71aba0e02..71aba0e02 100755
--- a/src/Specific/montgomery32_2e189m25/compiler.sh
+++ b/src/Specific/montgomery32_2e189m25_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e189m25/compilerxx.sh b/src/Specific/montgomery32_2e189m25_6limbs/compilerxx.sh
index 3ed7fca4c..3ed7fca4c 100755
--- a/src/Specific/montgomery32_2e189m25/compilerxx.sh
+++ b/src/Specific/montgomery32_2e189m25_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/feadd.v b/src/Specific/montgomery32_2e189m25_6limbs/feadd.v
new file mode 100644
index 000000000..7b5f01efa
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..84457773d
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/femul.v b/src/Specific/montgomery32_2e189m25_6limbs/femul.v
new file mode 100644
index 000000000..aad556f06
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e189m25_6limbs/femulDisplay.v
new file mode 100644
index 000000000..f70776e7c
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/fenz.v b/src/Specific/montgomery32_2e189m25_6limbs/fenz.v
new file mode 100644
index 000000000..ab9fda2ab
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..3ec4412a7
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/feopp.v b/src/Specific/montgomery32_2e189m25_6limbs/feopp.v
new file mode 100644
index 000000000..a3c27a45a
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..029c1cffe
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/fesub.v b/src/Specific/montgomery32_2e189m25_6limbs/fesub.v
new file mode 100644
index 000000000..fafd61759
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e189m25_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..6bd99aeb9
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e189m25_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e189m25/py_interpreter.sh b/src/Specific/montgomery32_2e189m25_6limbs/py_interpreter.sh
index 91ca61590..91ca61590 100755
--- a/src/Specific/montgomery32_2e189m25/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e189m25_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e190m11/Synthesis.v b/src/Specific/montgomery32_2e190m11/Synthesis.v
deleted file mode 100644
index c74345f7c..000000000
--- a/src/Specific/montgomery32_2e190m11/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e190m11.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e190m11/feadd.c b/src/Specific/montgomery32_2e190m11/feadd.c
deleted file mode 100644
index 411144107..000000000
--- a/src/Specific/montgomery32_2e190m11/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffff5, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fffffff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e190m11/feadd.v b/src/Specific/montgomery32_2e190m11/feadd.v
deleted file mode 100644
index f4ab60845..000000000
--- a/src/Specific/montgomery32_2e190m11/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e190m11/feaddDisplay.log b/src/Specific/montgomery32_2e190m11/feaddDisplay.log
deleted file mode 100644
index 3b885fe29..000000000
--- a/src/Specific/montgomery32_2e190m11/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffff5);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fffffff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e190m11/feaddDisplay.v b/src/Specific/montgomery32_2e190m11/feaddDisplay.v
deleted file mode 100644
index 6c47c3515..000000000
--- a/src/Specific/montgomery32_2e190m11/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e190m11.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e190m11/femul.c b/src/Specific/montgomery32_2e190m11/femul.c
deleted file mode 100644
index b62e2cb3c..000000000
--- a/src/Specific/montgomery32_2e190m11/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0xba2e8ba3, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xfffffff5, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x3fffffff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0xba2e8ba3, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xfffffff5, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x3fffffff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0xba2e8ba3, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xfffffff5, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x3fffffff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0xba2e8ba3, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xfffffff5, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x3fffffff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0xba2e8ba3, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xfffffff5, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x3fffffff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0xba2e8ba3, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xfffffff5, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x3fffffff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xfffffff5, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x3fffffff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e190m11/femul.v b/src/Specific/montgomery32_2e190m11/femul.v
deleted file mode 100644
index 21976c333..000000000
--- a/src/Specific/montgomery32_2e190m11/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e190m11/femulDisplay.log b/src/Specific/montgomery32_2e190m11/femulDisplay.log
deleted file mode 100644
index c302cbb1d..000000000
--- a/src/Specific/montgomery32_2e190m11/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0xba2e8ba3);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xfffffff5);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x3fffffff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0xba2e8ba3);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xfffffff5);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x3fffffff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0xba2e8ba3);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xfffffff5);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x3fffffff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0xba2e8ba3);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xfffffff5);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x3fffffff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0xba2e8ba3);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xfffffff5);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x3fffffff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0xba2e8ba3);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xfffffff5);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x3fffffff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xfffffff5);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x3fffffff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e190m11/femulDisplay.v b/src/Specific/montgomery32_2e190m11/femulDisplay.v
deleted file mode 100644
index 349e5ceb8..000000000
--- a/src/Specific/montgomery32_2e190m11/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e190m11.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e190m11/fenz.c b/src/Specific/montgomery32_2e190m11/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e190m11/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e190m11/fenz.v b/src/Specific/montgomery32_2e190m11/fenz.v
deleted file mode 100644
index ac0479c7a..000000000
--- a/src/Specific/montgomery32_2e190m11/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e190m11/fenzDisplay.log b/src/Specific/montgomery32_2e190m11/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e190m11/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e190m11/fenzDisplay.v b/src/Specific/montgomery32_2e190m11/fenzDisplay.v
deleted file mode 100644
index 2e3c92d83..000000000
--- a/src/Specific/montgomery32_2e190m11/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e190m11.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e190m11/feopp.c b/src/Specific/montgomery32_2e190m11/feopp.c
deleted file mode 100644
index c3aa5103a..000000000
--- a/src/Specific/montgomery32_2e190m11/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xfffffff5);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x3fffffff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e190m11/feopp.v b/src/Specific/montgomery32_2e190m11/feopp.v
deleted file mode 100644
index 70a8e3f0d..000000000
--- a/src/Specific/montgomery32_2e190m11/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e190m11/feoppDisplay.log b/src/Specific/montgomery32_2e190m11/feoppDisplay.log
deleted file mode 100644
index 3a36d2db7..000000000
--- a/src/Specific/montgomery32_2e190m11/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xfffffff5);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x3fffffff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e190m11/feoppDisplay.v b/src/Specific/montgomery32_2e190m11/feoppDisplay.v
deleted file mode 100644
index 4008af959..000000000
--- a/src/Specific/montgomery32_2e190m11/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e190m11.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e190m11/fesquare.c b/src/Specific/montgomery32_2e190m11/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e190m11/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e190m11/fesub.c b/src/Specific/montgomery32_2e190m11/fesub.c
deleted file mode 100644
index c1db0ba51..000000000
--- a/src/Specific/montgomery32_2e190m11/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xfffffff5);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x3fffffff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e190m11/fesub.v b/src/Specific/montgomery32_2e190m11/fesub.v
deleted file mode 100644
index 4756e6914..000000000
--- a/src/Specific/montgomery32_2e190m11/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e190m11/fesubDisplay.log b/src/Specific/montgomery32_2e190m11/fesubDisplay.log
deleted file mode 100644
index fc2472ce7..000000000
--- a/src/Specific/montgomery32_2e190m11/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xfffffff5);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x3fffffff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e190m11/fesubDisplay.v b/src/Specific/montgomery32_2e190m11/fesubDisplay.v
deleted file mode 100644
index 18c413664..000000000
--- a/src/Specific/montgomery32_2e190m11/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e190m11.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e190m11/CurveParameters.v b/src/Specific/montgomery32_2e190m11_6limbs/CurveParameters.v
index 17ea93c10..17ea93c10 100644
--- a/src/Specific/montgomery32_2e190m11/CurveParameters.v
+++ b/src/Specific/montgomery32_2e190m11_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/Synthesis.v b/src/Specific/montgomery32_2e190m11_6limbs/Synthesis.v
new file mode 100644
index 000000000..212a68859
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e190m11/compiler.sh b/src/Specific/montgomery32_2e190m11_6limbs/compiler.sh
index c2235fa64..c2235fa64 100755
--- a/src/Specific/montgomery32_2e190m11/compiler.sh
+++ b/src/Specific/montgomery32_2e190m11_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e190m11/compilerxx.sh b/src/Specific/montgomery32_2e190m11_6limbs/compilerxx.sh
index 1b0e0c9be..1b0e0c9be 100755
--- a/src/Specific/montgomery32_2e190m11/compilerxx.sh
+++ b/src/Specific/montgomery32_2e190m11_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/feadd.v b/src/Specific/montgomery32_2e190m11_6limbs/feadd.v
new file mode 100644
index 000000000..53ce999ae
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..b28308124
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/femul.v b/src/Specific/montgomery32_2e190m11_6limbs/femul.v
new file mode 100644
index 000000000..b0602fff1
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e190m11_6limbs/femulDisplay.v
new file mode 100644
index 000000000..124426d6f
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/fenz.v b/src/Specific/montgomery32_2e190m11_6limbs/fenz.v
new file mode 100644
index 000000000..1a8450286
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..bfafc09ab
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/feopp.v b/src/Specific/montgomery32_2e190m11_6limbs/feopp.v
new file mode 100644
index 000000000..df8e5ca34
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e190m11_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..7686263c9
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/fesub.v b/src/Specific/montgomery32_2e190m11_6limbs/fesub.v
new file mode 100644
index 000000000..75bfed4f8
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e190m11_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..61512e951
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e190m11_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e190m11/py_interpreter.sh b/src/Specific/montgomery32_2e190m11_6limbs/py_interpreter.sh
index 8ea8cabcc..8ea8cabcc 100755
--- a/src/Specific/montgomery32_2e190m11/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e190m11_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e191m19/Synthesis.v b/src/Specific/montgomery32_2e191m19/Synthesis.v
deleted file mode 100644
index 21cb4c6ee..000000000
--- a/src/Specific/montgomery32_2e191m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e191m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e191m19/feadd.c b/src/Specific/montgomery32_2e191m19/feadd.c
deleted file mode 100644
index 849c7a45e..000000000
--- a/src/Specific/montgomery32_2e191m19/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffed, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x7fffffff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e191m19/feadd.v b/src/Specific/montgomery32_2e191m19/feadd.v
deleted file mode 100644
index bd81c9cb8..000000000
--- a/src/Specific/montgomery32_2e191m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e191m19/feaddDisplay.log b/src/Specific/montgomery32_2e191m19/feaddDisplay.log
deleted file mode 100644
index 522ef5d71..000000000
--- a/src/Specific/montgomery32_2e191m19/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffed);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x7fffffff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e191m19/feaddDisplay.v b/src/Specific/montgomery32_2e191m19/feaddDisplay.v
deleted file mode 100644
index 7bcabe444..000000000
--- a/src/Specific/montgomery32_2e191m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e191m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e191m19/femul.c b/src/Specific/montgomery32_2e191m19/femul.c
deleted file mode 100644
index 70f742a25..000000000
--- a/src/Specific/montgomery32_2e191m19/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t _; uint32_t x61 = _mulx_u32(x25, 0x286bca1b, &_);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffed, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
- { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x7fffffff, &x80);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x77, x79, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x134, x136, &x151);
- { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x118, x151, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
- { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0x286bca1b, &_);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffed, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x7fffffff, &x197);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t x209 = _addcarryx_u32(x206, x191, x193, &x208);
- { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
- { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
- { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
- { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
- { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
- { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
- { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t x267 = _addcarryx_u32(x264, x249, x251, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
- { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x232, x266, &x287);
- { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
- { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
- { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0x286bca1b, &_);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffed, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
- { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
- { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
- { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x7fffffff, &x315);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
- { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
- { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
- { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
- { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
- { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
- { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
- { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
- { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
- { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
- { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x347, x381, &x402);
- { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
- { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
- { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
- { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0x286bca1b, &_);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffed, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
- { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
- { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
- { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
- { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x7fffffff, &x433);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
- { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
- { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
- { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
- { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
- { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
- { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
- { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
- { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
- { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0x286bca1b, &_);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffed, &x536);
- { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
- { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
- { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
- { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
- { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x7fffffff, &x551);
- { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
- { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
- { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
- { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
- { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
- { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
- { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
- { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
- { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
- { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
- { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
- { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
- { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
- { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
- { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
- { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
- { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
- { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
- { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
- { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
- { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
- { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0x286bca1b, &_);
- { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffed, &x654);
- { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
- { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
- { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
- { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
- { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x7fffffff, &x669);
- { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
- { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
- { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
- { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
- { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
- { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
- { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
- { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
- { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffed, &x711);
- { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
- { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
- { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
- { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
- { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x7fffffff, &x726);
- { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
- { uint32_t x731 = cmovznz32(x730, x726, x707);
- { uint32_t x732 = cmovznz32(x730, x723, x704);
- { uint32_t x733 = cmovznz32(x730, x720, x701);
- { uint32_t x734 = cmovznz32(x730, x717, x698);
- { uint32_t x735 = cmovznz32(x730, x714, x695);
- { uint32_t x736 = cmovznz32(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e191m19/femul.v b/src/Specific/montgomery32_2e191m19/femul.v
deleted file mode 100644
index 7d59f24f4..000000000
--- a/src/Specific/montgomery32_2e191m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e191m19/femulDisplay.log b/src/Specific/montgomery32_2e191m19/femulDisplay.log
deleted file mode 100644
index 7b0e96d28..000000000
--- a/src/Specific/montgomery32_2e191m19/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t _ = mulx_u32(x25, 0x286bca1b);
- uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffed);
- uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
- uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
- uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x7fffffff);
- uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x77, x79);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
- uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x134, x136);
- uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
- uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x118, x151);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
- uint32_t x178, uint32_t _ = mulx_u32(x157, 0x286bca1b);
- uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffed);
- uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x7fffffff);
- uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t x209 = addcarryx_u32(x206, x191, x193);
- uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
- uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
- uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
- uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
- uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
- uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
- uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
- uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x249, x251);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
- uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
- uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x232, x266);
- uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
- uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
- uint32_t x296, uint32_t _ = mulx_u32(x275, 0x286bca1b);
- uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffed);
- uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
- uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
- uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
- uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x7fffffff);
- uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
- uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
- uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
- uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
- uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
- uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
- uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
- uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
- uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
- uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
- uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
- uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x347, x381);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
- uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
- uint32_t x414, uint32_t _ = mulx_u32(x393, 0x286bca1b);
- uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffed);
- uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
- uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
- uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
- uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
- uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x7fffffff);
- uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
- uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
- uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
- uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
- uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
- uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
- uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
- uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
- uint32_t x532, uint32_t _ = mulx_u32(x511, 0x286bca1b);
- uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffed);
- uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
- uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
- uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
- uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
- uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x7fffffff);
- uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
- uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
- uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
- uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
- uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
- uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
- uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
- uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
- uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
- uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
- uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
- uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
- uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
- uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
- uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
- uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
- uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
- uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
- uint32_t x650, uint32_t _ = mulx_u32(x629, 0x286bca1b);
- uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffed);
- uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
- uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
- uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
- uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
- uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x7fffffff);
- uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
- uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
- uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
- uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
- uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffed);
- uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
- uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
- uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
- uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
- uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x7fffffff);
- uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
- uint32_t x731 = cmovznz32(x730, x726, x707);
- uint32_t x732 = cmovznz32(x730, x723, x704);
- uint32_t x733 = cmovznz32(x730, x720, x701);
- uint32_t x734 = cmovznz32(x730, x717, x698);
- uint32_t x735 = cmovznz32(x730, x714, x695);
- uint32_t x736 = cmovznz32(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e191m19/femulDisplay.v b/src/Specific/montgomery32_2e191m19/femulDisplay.v
deleted file mode 100644
index 6986a374e..000000000
--- a/src/Specific/montgomery32_2e191m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e191m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e191m19/fenz.c b/src/Specific/montgomery32_2e191m19/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e191m19/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e191m19/fenz.v b/src/Specific/montgomery32_2e191m19/fenz.v
deleted file mode 100644
index a318b9d97..000000000
--- a/src/Specific/montgomery32_2e191m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e191m19/fenzDisplay.log b/src/Specific/montgomery32_2e191m19/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e191m19/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e191m19/fenzDisplay.v b/src/Specific/montgomery32_2e191m19/fenzDisplay.v
deleted file mode 100644
index 787fdcf7e..000000000
--- a/src/Specific/montgomery32_2e191m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e191m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e191m19/feopp.c b/src/Specific/montgomery32_2e191m19/feopp.c
deleted file mode 100644
index 7d6c52941..000000000
--- a/src/Specific/montgomery32_2e191m19/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffed);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xffffffff);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0x7fffffff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e191m19/feopp.v b/src/Specific/montgomery32_2e191m19/feopp.v
deleted file mode 100644
index d13666038..000000000
--- a/src/Specific/montgomery32_2e191m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e191m19/feoppDisplay.log b/src/Specific/montgomery32_2e191m19/feoppDisplay.log
deleted file mode 100644
index eec3da830..000000000
--- a/src/Specific/montgomery32_2e191m19/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffed);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xffffffff);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0x7fffffff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e191m19/feoppDisplay.v b/src/Specific/montgomery32_2e191m19/feoppDisplay.v
deleted file mode 100644
index c7b681f99..000000000
--- a/src/Specific/montgomery32_2e191m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e191m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e191m19/fesquare.c b/src/Specific/montgomery32_2e191m19/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e191m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e191m19/fesub.c b/src/Specific/montgomery32_2e191m19/fesub.c
deleted file mode 100644
index 9a3cb209c..000000000
--- a/src/Specific/montgomery32_2e191m19/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffed);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xffffffff);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0x7fffffff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e191m19/fesub.v b/src/Specific/montgomery32_2e191m19/fesub.v
deleted file mode 100644
index 609b83007..000000000
--- a/src/Specific/montgomery32_2e191m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e191m19/fesubDisplay.log b/src/Specific/montgomery32_2e191m19/fesubDisplay.log
deleted file mode 100644
index 25cedd032..000000000
--- a/src/Specific/montgomery32_2e191m19/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffed);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0x7fffffff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e191m19/fesubDisplay.v b/src/Specific/montgomery32_2e191m19/fesubDisplay.v
deleted file mode 100644
index 28d7306c6..000000000
--- a/src/Specific/montgomery32_2e191m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e191m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e191m19/CurveParameters.v b/src/Specific/montgomery32_2e191m19_6limbs/CurveParameters.v
index 173cd0e0e..173cd0e0e 100644
--- a/src/Specific/montgomery32_2e191m19/CurveParameters.v
+++ b/src/Specific/montgomery32_2e191m19_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/Synthesis.v b/src/Specific/montgomery32_2e191m19_6limbs/Synthesis.v
new file mode 100644
index 000000000..683002931
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e191m19/compiler.sh b/src/Specific/montgomery32_2e191m19_6limbs/compiler.sh
index 0fdb0e9a3..0fdb0e9a3 100755
--- a/src/Specific/montgomery32_2e191m19/compiler.sh
+++ b/src/Specific/montgomery32_2e191m19_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e191m19/compilerxx.sh b/src/Specific/montgomery32_2e191m19_6limbs/compilerxx.sh
index b6aca8df5..b6aca8df5 100755
--- a/src/Specific/montgomery32_2e191m19/compilerxx.sh
+++ b/src/Specific/montgomery32_2e191m19_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/feadd.v b/src/Specific/montgomery32_2e191m19_6limbs/feadd.v
new file mode 100644
index 000000000..c868adea6
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e191m19_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..decea4a95
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/femul.v b/src/Specific/montgomery32_2e191m19_6limbs/femul.v
new file mode 100644
index 000000000..2bc9657e9
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e191m19_6limbs/femulDisplay.v
new file mode 100644
index 000000000..bb5083ca5
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/fenz.v b/src/Specific/montgomery32_2e191m19_6limbs/fenz.v
new file mode 100644
index 000000000..29b2a4078
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e191m19_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..52de78906
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/feopp.v b/src/Specific/montgomery32_2e191m19_6limbs/feopp.v
new file mode 100644
index 000000000..19ab6dd3d
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e191m19_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..ffa7938a7
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/fesub.v b/src/Specific/montgomery32_2e191m19_6limbs/fesub.v
new file mode 100644
index 000000000..a027c4fd6
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e191m19_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e191m19_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..4277db36c
--- /dev/null
+++ b/src/Specific/montgomery32_2e191m19_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e191m19_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e191m19/py_interpreter.sh b/src/Specific/montgomery32_2e191m19_6limbs/py_interpreter.sh
index ac9b7615f..ac9b7615f 100755
--- a/src/Specific/montgomery32_2e191m19/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e191m19_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v b/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v
deleted file mode 100644
index 6899e4b9b..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feadd.c b/src/Specific/montgomery32_2e192m2e64m1/feadd.c
deleted file mode 100644
index 9357de067..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
- { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffff, &x43);
- { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
- { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xfffffffe, &x49);
- { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
- { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
- { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0xffffffff, &x58);
- { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
- { uint32_t x63 = cmovznz32(x62, x58, x40);
- { uint32_t x64 = cmovznz32(x62, x55, x37);
- { uint32_t x65 = cmovznz32(x62, x52, x34);
- { uint32_t x66 = cmovznz32(x62, x49, x31);
- { uint32_t x67 = cmovznz32(x62, x46, x28);
- { uint32_t x68 = cmovznz32(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feadd.v b/src/Specific/montgomery32_2e192m2e64m1/feadd.v
deleted file mode 100644
index 1296e27d7..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.log b/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.log
deleted file mode 100644
index 630037baa..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
- uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffff);
- uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
- uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xfffffffe);
- uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
- uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
- uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0xffffffff);
- uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
- uint32_t x63 = cmovznz32(x62, x58, x40);
- uint32_t x64 = cmovznz32(x62, x55, x37);
- uint32_t x65 = cmovznz32(x62, x52, x34);
- uint32_t x66 = cmovznz32(x62, x49, x31);
- uint32_t x67 = cmovznz32(x62, x46, x28);
- uint32_t x68 = cmovznz32(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v
deleted file mode 100644
index 5d8dfe65f..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/femul.c b/src/Specific/montgomery32_2e192m2e64m1/femul.c
deleted file mode 100644
index 319702b09..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/femul.c
+++ /dev/null
@@ -1,260 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
- { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
- { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
- { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
- { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
- { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
- { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
- { uint32_t x62; uint32_t x61 = _mulx_u32(x25, 0xffffffff, &x62);
- { uint32_t x65; uint32_t x64 = _mulx_u32(x25, 0xffffffff, &x65);
- { uint32_t x68; uint32_t x67 = _mulx_u32(x25, 0xfffffffe, &x68);
- { uint32_t x71; uint32_t x70 = _mulx_u32(x25, 0xffffffff, &x71);
- { uint32_t x74; uint32_t x73 = _mulx_u32(x25, 0xffffffff, &x74);
- { uint32_t x77; uint32_t x76 = _mulx_u32(x25, 0xffffffff, &x77);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(0x0, x62, x64, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x65, x67, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
- { uint32_t x94; uint8_t _ = _addcarryx_u32(0x0, x92, x77, &x94);
- { uint32_t _; uint8_t x98 = _addcarryx_u32(0x0, x25, x61, &_);
- { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x43, x79, &x100);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x46, x82, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x49, x85, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x52, x88, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x55, x91, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x58, x94, &x115);
- { uint32_t x119; uint32_t x118 = _mulx_u32(x7, x15, &x119);
- { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x17, &x122);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x19, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x21, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x23, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x22, &x134);
- { uint32_t x136; uint8_t x137 = _addcarryx_u32(0x0, x119, x121, &x136);
- { uint32_t x139; uint8_t x140 = _addcarryx_u32(x137, x122, x124, &x139);
- { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
- { uint32_t x151; uint8_t _ = _addcarryx_u32(0x0, x149, x134, &x151);
- { uint32_t x154; uint8_t x155 = _addcarryx_u32(0x0, x100, x118, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(x155, x103, x136, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
- { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x116, x151, &x172);
- { uint32_t x176; uint32_t x175 = _mulx_u32(x154, 0xffffffff, &x176);
- { uint32_t x179; uint32_t x178 = _mulx_u32(x154, 0xffffffff, &x179);
- { uint32_t x182; uint32_t x181 = _mulx_u32(x154, 0xfffffffe, &x182);
- { uint32_t x185; uint32_t x184 = _mulx_u32(x154, 0xffffffff, &x185);
- { uint32_t x188; uint32_t x187 = _mulx_u32(x154, 0xffffffff, &x188);
- { uint32_t x191; uint32_t x190 = _mulx_u32(x154, 0xffffffff, &x191);
- { uint32_t x193; uint8_t x194 = _addcarryx_u32(0x0, x176, x178, &x193);
- { uint32_t x196; uint8_t x197 = _addcarryx_u32(x194, x179, x181, &x196);
- { uint32_t x199; uint8_t x200 = _addcarryx_u32(x197, x182, x184, &x199);
- { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
- { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
- { uint32_t x208; uint8_t _ = _addcarryx_u32(0x0, x206, x191, &x208);
- { uint32_t _; uint8_t x212 = _addcarryx_u32(0x0, x154, x175, &_);
- { uint32_t x214; uint8_t x215 = _addcarryx_u32(x212, x157, x193, &x214);
- { uint32_t x217; uint8_t x218 = _addcarryx_u32(x215, x160, x196, &x217);
- { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x163, x199, &x220);
- { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x166, x202, &x223);
- { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x169, x205, &x226);
- { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x172, x208, &x229);
- { uint8_t x231 = (x230 + x173);
- { uint32_t x234; uint32_t x233 = _mulx_u32(x9, x15, &x234);
- { uint32_t x237; uint32_t x236 = _mulx_u32(x9, x17, &x237);
- { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x19, &x240);
- { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x21, &x243);
- { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x23, &x246);
- { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x22, &x249);
- { uint32_t x251; uint8_t x252 = _addcarryx_u32(0x0, x234, x236, &x251);
- { uint32_t x254; uint8_t x255 = _addcarryx_u32(x252, x237, x239, &x254);
- { uint32_t x257; uint8_t x258 = _addcarryx_u32(x255, x240, x242, &x257);
- { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
- { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
- { uint32_t x266; uint8_t _ = _addcarryx_u32(0x0, x264, x249, &x266);
- { uint32_t x269; uint8_t x270 = _addcarryx_u32(0x0, x214, x233, &x269);
- { uint32_t x272; uint8_t x273 = _addcarryx_u32(x270, x217, x251, &x272);
- { uint32_t x275; uint8_t x276 = _addcarryx_u32(x273, x220, x254, &x275);
- { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
- { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
- { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
- { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x231, x266, &x287);
- { uint32_t x291; uint32_t x290 = _mulx_u32(x269, 0xffffffff, &x291);
- { uint32_t x294; uint32_t x293 = _mulx_u32(x269, 0xffffffff, &x294);
- { uint32_t x297; uint32_t x296 = _mulx_u32(x269, 0xfffffffe, &x297);
- { uint32_t x300; uint32_t x299 = _mulx_u32(x269, 0xffffffff, &x300);
- { uint32_t x303; uint32_t x302 = _mulx_u32(x269, 0xffffffff, &x303);
- { uint32_t x306; uint32_t x305 = _mulx_u32(x269, 0xffffffff, &x306);
- { uint32_t x308; uint8_t x309 = _addcarryx_u32(0x0, x291, x293, &x308);
- { uint32_t x311; uint8_t x312 = _addcarryx_u32(x309, x294, x296, &x311);
- { uint32_t x314; uint8_t x315 = _addcarryx_u32(x312, x297, x299, &x314);
- { uint32_t x317; uint8_t x318 = _addcarryx_u32(x315, x300, x302, &x317);
- { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
- { uint32_t x323; uint8_t _ = _addcarryx_u32(0x0, x321, x306, &x323);
- { uint32_t _; uint8_t x327 = _addcarryx_u32(0x0, x269, x290, &_);
- { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x272, x308, &x329);
- { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x275, x311, &x332);
- { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x278, x314, &x335);
- { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x281, x317, &x338);
- { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x284, x320, &x341);
- { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x287, x323, &x344);
- { uint8_t x346 = (x345 + x288);
- { uint32_t x349; uint32_t x348 = _mulx_u32(x11, x15, &x349);
- { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x17, &x352);
- { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x19, &x355);
- { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x21, &x358);
- { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x23, &x361);
- { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x22, &x364);
- { uint32_t x366; uint8_t x367 = _addcarryx_u32(0x0, x349, x351, &x366);
- { uint32_t x369; uint8_t x370 = _addcarryx_u32(x367, x352, x354, &x369);
- { uint32_t x372; uint8_t x373 = _addcarryx_u32(x370, x355, x357, &x372);
- { uint32_t x375; uint8_t x376 = _addcarryx_u32(x373, x358, x360, &x375);
- { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
- { uint32_t x381; uint8_t _ = _addcarryx_u32(0x0, x379, x364, &x381);
- { uint32_t x384; uint8_t x385 = _addcarryx_u32(0x0, x329, x348, &x384);
- { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x332, x366, &x387);
- { uint32_t x390; uint8_t x391 = _addcarryx_u32(x388, x335, x369, &x390);
- { uint32_t x393; uint8_t x394 = _addcarryx_u32(x391, x338, x372, &x393);
- { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
- { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
- { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x346, x381, &x402);
- { uint32_t x406; uint32_t x405 = _mulx_u32(x384, 0xffffffff, &x406);
- { uint32_t x409; uint32_t x408 = _mulx_u32(x384, 0xffffffff, &x409);
- { uint32_t x412; uint32_t x411 = _mulx_u32(x384, 0xfffffffe, &x412);
- { uint32_t x415; uint32_t x414 = _mulx_u32(x384, 0xffffffff, &x415);
- { uint32_t x418; uint32_t x417 = _mulx_u32(x384, 0xffffffff, &x418);
- { uint32_t x421; uint32_t x420 = _mulx_u32(x384, 0xffffffff, &x421);
- { uint32_t x423; uint8_t x424 = _addcarryx_u32(0x0, x406, x408, &x423);
- { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x409, x411, &x426);
- { uint32_t x429; uint8_t x430 = _addcarryx_u32(x427, x412, x414, &x429);
- { uint32_t x432; uint8_t x433 = _addcarryx_u32(x430, x415, x417, &x432);
- { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x418, x420, &x435);
- { uint32_t x438; uint8_t _ = _addcarryx_u32(0x0, x436, x421, &x438);
- { uint32_t _; uint8_t x442 = _addcarryx_u32(0x0, x384, x405, &_);
- { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x387, x423, &x444);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x390, x426, &x447);
- { uint32_t x450; uint8_t x451 = _addcarryx_u32(x448, x393, x429, &x450);
- { uint32_t x453; uint8_t x454 = _addcarryx_u32(x451, x396, x432, &x453);
- { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x399, x435, &x456);
- { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x402, x438, &x459);
- { uint8_t x461 = (x460 + x403);
- { uint32_t x464; uint32_t x463 = _mulx_u32(x13, x15, &x464);
- { uint32_t x467; uint32_t x466 = _mulx_u32(x13, x17, &x467);
- { uint32_t x470; uint32_t x469 = _mulx_u32(x13, x19, &x470);
- { uint32_t x473; uint32_t x472 = _mulx_u32(x13, x21, &x473);
- { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x23, &x476);
- { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x22, &x479);
- { uint32_t x481; uint8_t x482 = _addcarryx_u32(0x0, x464, x466, &x481);
- { uint32_t x484; uint8_t x485 = _addcarryx_u32(x482, x467, x469, &x484);
- { uint32_t x487; uint8_t x488 = _addcarryx_u32(x485, x470, x472, &x487);
- { uint32_t x490; uint8_t x491 = _addcarryx_u32(x488, x473, x475, &x490);
- { uint32_t x493; uint8_t x494 = _addcarryx_u32(x491, x476, x478, &x493);
- { uint32_t x496; uint8_t _ = _addcarryx_u32(0x0, x494, x479, &x496);
- { uint32_t x499; uint8_t x500 = _addcarryx_u32(0x0, x444, x463, &x499);
- { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x447, x481, &x502);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x450, x484, &x505);
- { uint32_t x508; uint8_t x509 = _addcarryx_u32(x506, x453, x487, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(x509, x456, x490, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x461, x496, &x517);
- { uint32_t x521; uint32_t x520 = _mulx_u32(x499, 0xffffffff, &x521);
- { uint32_t x524; uint32_t x523 = _mulx_u32(x499, 0xffffffff, &x524);
- { uint32_t x527; uint32_t x526 = _mulx_u32(x499, 0xfffffffe, &x527);
- { uint32_t x530; uint32_t x529 = _mulx_u32(x499, 0xffffffff, &x530);
- { uint32_t x533; uint32_t x532 = _mulx_u32(x499, 0xffffffff, &x533);
- { uint32_t x536; uint32_t x535 = _mulx_u32(x499, 0xffffffff, &x536);
- { uint32_t x538; uint8_t x539 = _addcarryx_u32(0x0, x521, x523, &x538);
- { uint32_t x541; uint8_t x542 = _addcarryx_u32(x539, x524, x526, &x541);
- { uint32_t x544; uint8_t x545 = _addcarryx_u32(x542, x527, x529, &x544);
- { uint32_t x547; uint8_t x548 = _addcarryx_u32(x545, x530, x532, &x547);
- { uint32_t x550; uint8_t x551 = _addcarryx_u32(x548, x533, x535, &x550);
- { uint32_t x553; uint8_t _ = _addcarryx_u32(0x0, x551, x536, &x553);
- { uint32_t _; uint8_t x557 = _addcarryx_u32(0x0, x499, x520, &_);
- { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x502, x538, &x559);
- { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x505, x541, &x562);
- { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x508, x544, &x565);
- { uint32_t x568; uint8_t x569 = _addcarryx_u32(x566, x511, x547, &x568);
- { uint32_t x571; uint8_t x572 = _addcarryx_u32(x569, x514, x550, &x571);
- { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x517, x553, &x574);
- { uint8_t x576 = (x575 + x518);
- { uint32_t x579; uint32_t x578 = _mulx_u32(x12, x15, &x579);
- { uint32_t x582; uint32_t x581 = _mulx_u32(x12, x17, &x582);
- { uint32_t x585; uint32_t x584 = _mulx_u32(x12, x19, &x585);
- { uint32_t x588; uint32_t x587 = _mulx_u32(x12, x21, &x588);
- { uint32_t x591; uint32_t x590 = _mulx_u32(x12, x23, &x591);
- { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x22, &x594);
- { uint32_t x596; uint8_t x597 = _addcarryx_u32(0x0, x579, x581, &x596);
- { uint32_t x599; uint8_t x600 = _addcarryx_u32(x597, x582, x584, &x599);
- { uint32_t x602; uint8_t x603 = _addcarryx_u32(x600, x585, x587, &x602);
- { uint32_t x605; uint8_t x606 = _addcarryx_u32(x603, x588, x590, &x605);
- { uint32_t x608; uint8_t x609 = _addcarryx_u32(x606, x591, x593, &x608);
- { uint32_t x611; uint8_t _ = _addcarryx_u32(0x0, x609, x594, &x611);
- { uint32_t x614; uint8_t x615 = _addcarryx_u32(0x0, x559, x578, &x614);
- { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x562, x596, &x617);
- { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x565, x599, &x620);
- { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x568, x602, &x623);
- { uint32_t x626; uint8_t x627 = _addcarryx_u32(x624, x571, x605, &x626);
- { uint32_t x629; uint8_t x630 = _addcarryx_u32(x627, x574, x608, &x629);
- { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x576, x611, &x632);
- { uint32_t x636; uint32_t x635 = _mulx_u32(x614, 0xffffffff, &x636);
- { uint32_t x639; uint32_t x638 = _mulx_u32(x614, 0xffffffff, &x639);
- { uint32_t x642; uint32_t x641 = _mulx_u32(x614, 0xfffffffe, &x642);
- { uint32_t x645; uint32_t x644 = _mulx_u32(x614, 0xffffffff, &x645);
- { uint32_t x648; uint32_t x647 = _mulx_u32(x614, 0xffffffff, &x648);
- { uint32_t x651; uint32_t x650 = _mulx_u32(x614, 0xffffffff, &x651);
- { uint32_t x653; uint8_t x654 = _addcarryx_u32(0x0, x636, x638, &x653);
- { uint32_t x656; uint8_t x657 = _addcarryx_u32(x654, x639, x641, &x656);
- { uint32_t x659; uint8_t x660 = _addcarryx_u32(x657, x642, x644, &x659);
- { uint32_t x662; uint8_t x663 = _addcarryx_u32(x660, x645, x647, &x662);
- { uint32_t x665; uint8_t x666 = _addcarryx_u32(x663, x648, x650, &x665);
- { uint32_t x668; uint8_t _ = _addcarryx_u32(0x0, x666, x651, &x668);
- { uint32_t _; uint8_t x672 = _addcarryx_u32(0x0, x614, x635, &_);
- { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x617, x653, &x674);
- { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x620, x656, &x677);
- { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x623, x659, &x680);
- { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x626, x662, &x683);
- { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x629, x665, &x686);
- { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x632, x668, &x689);
- { uint8_t x691 = (x690 + x633);
- { uint32_t x693; uint8_t x694 = _subborrow_u32(0x0, x674, 0xffffffff, &x693);
- { uint32_t x696; uint8_t x697 = _subborrow_u32(x694, x677, 0xffffffff, &x696);
- { uint32_t x699; uint8_t x700 = _subborrow_u32(x697, x680, 0xfffffffe, &x699);
- { uint32_t x702; uint8_t x703 = _subborrow_u32(x700, x683, 0xffffffff, &x702);
- { uint32_t x705; uint8_t x706 = _subborrow_u32(x703, x686, 0xffffffff, &x705);
- { uint32_t x708; uint8_t x709 = _subborrow_u32(x706, x689, 0xffffffff, &x708);
- { uint32_t _; uint8_t x712 = _subborrow_u32(x709, x691, 0x0, &_);
- { uint32_t x713 = cmovznz32(x712, x708, x689);
- { uint32_t x714 = cmovznz32(x712, x705, x686);
- { uint32_t x715 = cmovznz32(x712, x702, x683);
- { uint32_t x716 = cmovznz32(x712, x699, x680);
- { uint32_t x717 = cmovznz32(x712, x696, x677);
- { uint32_t x718 = cmovznz32(x712, x693, x674);
- out[0] = x718;
- out[1] = x717;
- out[2] = x716;
- out[3] = x715;
- out[4] = x714;
- out[5] = x713;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/femul.v b/src/Specific/montgomery32_2e192m2e64m1/femul.v
deleted file mode 100644
index 738b4317d..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.log b/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.log
deleted file mode 100644
index 8af983b0d..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.log
+++ /dev/null
@@ -1,246 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
- uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
- uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
- uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
- uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
- uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
- uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
- uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
- uint32_t x61, uint32_t x62 = mulx_u32(x25, 0xffffffff);
- uint32_t x64, uint32_t x65 = mulx_u32(x25, 0xffffffff);
- uint32_t x67, uint32_t x68 = mulx_u32(x25, 0xfffffffe);
- uint32_t x70, uint32_t x71 = mulx_u32(x25, 0xffffffff);
- uint32_t x73, uint32_t x74 = mulx_u32(x25, 0xffffffff);
- uint32_t x76, uint32_t x77 = mulx_u32(x25, 0xffffffff);
- uint32_t x79, uint8_t x80 = addcarryx_u32(0x0, x62, x64);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x65, x67);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
- uint32_t x94, uint8_t _ = addcarryx_u32(0x0, x92, x77);
- uint32_t _, uint8_t x98 = addcarryx_u32(0x0, x25, x61);
- uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x43, x79);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x46, x82);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x49, x85);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x52, x88);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x55, x91);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x58, x94);
- uint32_t x118, uint32_t x119 = mulx_u32(x7, x15);
- uint32_t x121, uint32_t x122 = mulx_u32(x7, x17);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x19);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x21);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x23);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x22);
- uint32_t x136, uint8_t x137 = addcarryx_u32(0x0, x119, x121);
- uint32_t x139, uint8_t x140 = addcarryx_u32(x137, x122, x124);
- uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
- uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
- uint32_t x151, uint8_t _ = addcarryx_u32(0x0, x149, x134);
- uint32_t x154, uint8_t x155 = addcarryx_u32(0x0, x100, x118);
- uint32_t x157, uint8_t x158 = addcarryx_u32(x155, x103, x136);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
- uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
- uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x116, x151);
- uint32_t x175, uint32_t x176 = mulx_u32(x154, 0xffffffff);
- uint32_t x178, uint32_t x179 = mulx_u32(x154, 0xffffffff);
- uint32_t x181, uint32_t x182 = mulx_u32(x154, 0xfffffffe);
- uint32_t x184, uint32_t x185 = mulx_u32(x154, 0xffffffff);
- uint32_t x187, uint32_t x188 = mulx_u32(x154, 0xffffffff);
- uint32_t x190, uint32_t x191 = mulx_u32(x154, 0xffffffff);
- uint32_t x193, uint8_t x194 = addcarryx_u32(0x0, x176, x178);
- uint32_t x196, uint8_t x197 = addcarryx_u32(x194, x179, x181);
- uint32_t x199, uint8_t x200 = addcarryx_u32(x197, x182, x184);
- uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
- uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
- uint32_t x208, uint8_t _ = addcarryx_u32(0x0, x206, x191);
- uint32_t _, uint8_t x212 = addcarryx_u32(0x0, x154, x175);
- uint32_t x214, uint8_t x215 = addcarryx_u32(x212, x157, x193);
- uint32_t x217, uint8_t x218 = addcarryx_u32(x215, x160, x196);
- uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x163, x199);
- uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x166, x202);
- uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x169, x205);
- uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x172, x208);
- uint8_t x231 = (x230 + x173);
- uint32_t x233, uint32_t x234 = mulx_u32(x9, x15);
- uint32_t x236, uint32_t x237 = mulx_u32(x9, x17);
- uint32_t x239, uint32_t x240 = mulx_u32(x9, x19);
- uint32_t x242, uint32_t x243 = mulx_u32(x9, x21);
- uint32_t x245, uint32_t x246 = mulx_u32(x9, x23);
- uint32_t x248, uint32_t x249 = mulx_u32(x9, x22);
- uint32_t x251, uint8_t x252 = addcarryx_u32(0x0, x234, x236);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x237, x239);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x240, x242);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
- uint32_t x266, uint8_t _ = addcarryx_u32(0x0, x264, x249);
- uint32_t x269, uint8_t x270 = addcarryx_u32(0x0, x214, x233);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x217, x251);
- uint32_t x275, uint8_t x276 = addcarryx_u32(x273, x220, x254);
- uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
- uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
- uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
- uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x231, x266);
- uint32_t x290, uint32_t x291 = mulx_u32(x269, 0xffffffff);
- uint32_t x293, uint32_t x294 = mulx_u32(x269, 0xffffffff);
- uint32_t x296, uint32_t x297 = mulx_u32(x269, 0xfffffffe);
- uint32_t x299, uint32_t x300 = mulx_u32(x269, 0xffffffff);
- uint32_t x302, uint32_t x303 = mulx_u32(x269, 0xffffffff);
- uint32_t x305, uint32_t x306 = mulx_u32(x269, 0xffffffff);
- uint32_t x308, uint8_t x309 = addcarryx_u32(0x0, x291, x293);
- uint32_t x311, uint8_t x312 = addcarryx_u32(x309, x294, x296);
- uint32_t x314, uint8_t x315 = addcarryx_u32(x312, x297, x299);
- uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x300, x302);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
- uint32_t x323, uint8_t _ = addcarryx_u32(0x0, x321, x306);
- uint32_t _, uint8_t x327 = addcarryx_u32(0x0, x269, x290);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x272, x308);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x275, x311);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x278, x314);
- uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x281, x317);
- uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x284, x320);
- uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x287, x323);
- uint8_t x346 = (x345 + x288);
- uint32_t x348, uint32_t x349 = mulx_u32(x11, x15);
- uint32_t x351, uint32_t x352 = mulx_u32(x11, x17);
- uint32_t x354, uint32_t x355 = mulx_u32(x11, x19);
- uint32_t x357, uint32_t x358 = mulx_u32(x11, x21);
- uint32_t x360, uint32_t x361 = mulx_u32(x11, x23);
- uint32_t x363, uint32_t x364 = mulx_u32(x11, x22);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x349, x351);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x352, x354);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x355, x357);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x358, x360);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
- uint32_t x381, uint8_t _ = addcarryx_u32(0x0, x379, x364);
- uint32_t x384, uint8_t x385 = addcarryx_u32(0x0, x329, x348);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x332, x366);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x335, x369);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x338, x372);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x346, x381);
- uint32_t x405, uint32_t x406 = mulx_u32(x384, 0xffffffff);
- uint32_t x408, uint32_t x409 = mulx_u32(x384, 0xffffffff);
- uint32_t x411, uint32_t x412 = mulx_u32(x384, 0xfffffffe);
- uint32_t x414, uint32_t x415 = mulx_u32(x384, 0xffffffff);
- uint32_t x417, uint32_t x418 = mulx_u32(x384, 0xffffffff);
- uint32_t x420, uint32_t x421 = mulx_u32(x384, 0xffffffff);
- uint32_t x423, uint8_t x424 = addcarryx_u32(0x0, x406, x408);
- uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x409, x411);
- uint32_t x429, uint8_t x430 = addcarryx_u32(x427, x412, x414);
- uint32_t x432, uint8_t x433 = addcarryx_u32(x430, x415, x417);
- uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x418, x420);
- uint32_t x438, uint8_t _ = addcarryx_u32(0x0, x436, x421);
- uint32_t _, uint8_t x442 = addcarryx_u32(0x0, x384, x405);
- uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x387, x423);
- uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x390, x426);
- uint32_t x450, uint8_t x451 = addcarryx_u32(x448, x393, x429);
- uint32_t x453, uint8_t x454 = addcarryx_u32(x451, x396, x432);
- uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x399, x435);
- uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x402, x438);
- uint8_t x461 = (x460 + x403);
- uint32_t x463, uint32_t x464 = mulx_u32(x13, x15);
- uint32_t x466, uint32_t x467 = mulx_u32(x13, x17);
- uint32_t x469, uint32_t x470 = mulx_u32(x13, x19);
- uint32_t x472, uint32_t x473 = mulx_u32(x13, x21);
- uint32_t x475, uint32_t x476 = mulx_u32(x13, x23);
- uint32_t x478, uint32_t x479 = mulx_u32(x13, x22);
- uint32_t x481, uint8_t x482 = addcarryx_u32(0x0, x464, x466);
- uint32_t x484, uint8_t x485 = addcarryx_u32(x482, x467, x469);
- uint32_t x487, uint8_t x488 = addcarryx_u32(x485, x470, x472);
- uint32_t x490, uint8_t x491 = addcarryx_u32(x488, x473, x475);
- uint32_t x493, uint8_t x494 = addcarryx_u32(x491, x476, x478);
- uint32_t x496, uint8_t _ = addcarryx_u32(0x0, x494, x479);
- uint32_t x499, uint8_t x500 = addcarryx_u32(0x0, x444, x463);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x447, x481);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x450, x484);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x453, x487);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x456, x490);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x461, x496);
- uint32_t x520, uint32_t x521 = mulx_u32(x499, 0xffffffff);
- uint32_t x523, uint32_t x524 = mulx_u32(x499, 0xffffffff);
- uint32_t x526, uint32_t x527 = mulx_u32(x499, 0xfffffffe);
- uint32_t x529, uint32_t x530 = mulx_u32(x499, 0xffffffff);
- uint32_t x532, uint32_t x533 = mulx_u32(x499, 0xffffffff);
- uint32_t x535, uint32_t x536 = mulx_u32(x499, 0xffffffff);
- uint32_t x538, uint8_t x539 = addcarryx_u32(0x0, x521, x523);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x524, x526);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x527, x529);
- uint32_t x547, uint8_t x548 = addcarryx_u32(x545, x530, x532);
- uint32_t x550, uint8_t x551 = addcarryx_u32(x548, x533, x535);
- uint32_t x553, uint8_t _ = addcarryx_u32(0x0, x551, x536);
- uint32_t _, uint8_t x557 = addcarryx_u32(0x0, x499, x520);
- uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x502, x538);
- uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x505, x541);
- uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x508, x544);
- uint32_t x568, uint8_t x569 = addcarryx_u32(x566, x511, x547);
- uint32_t x571, uint8_t x572 = addcarryx_u32(x569, x514, x550);
- uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x517, x553);
- uint8_t x576 = (x575 + x518);
- uint32_t x578, uint32_t x579 = mulx_u32(x12, x15);
- uint32_t x581, uint32_t x582 = mulx_u32(x12, x17);
- uint32_t x584, uint32_t x585 = mulx_u32(x12, x19);
- uint32_t x587, uint32_t x588 = mulx_u32(x12, x21);
- uint32_t x590, uint32_t x591 = mulx_u32(x12, x23);
- uint32_t x593, uint32_t x594 = mulx_u32(x12, x22);
- uint32_t x596, uint8_t x597 = addcarryx_u32(0x0, x579, x581);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x582, x584);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x585, x587);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x588, x590);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x591, x593);
- uint32_t x611, uint8_t _ = addcarryx_u32(0x0, x609, x594);
- uint32_t x614, uint8_t x615 = addcarryx_u32(0x0, x559, x578);
- uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x562, x596);
- uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x565, x599);
- uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x568, x602);
- uint32_t x626, uint8_t x627 = addcarryx_u32(x624, x571, x605);
- uint32_t x629, uint8_t x630 = addcarryx_u32(x627, x574, x608);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x576, x611);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0xffffffff);
- uint32_t x638, uint32_t x639 = mulx_u32(x614, 0xffffffff);
- uint32_t x641, uint32_t x642 = mulx_u32(x614, 0xfffffffe);
- uint32_t x644, uint32_t x645 = mulx_u32(x614, 0xffffffff);
- uint32_t x647, uint32_t x648 = mulx_u32(x614, 0xffffffff);
- uint32_t x650, uint32_t x651 = mulx_u32(x614, 0xffffffff);
- uint32_t x653, uint8_t x654 = addcarryx_u32(0x0, x636, x638);
- uint32_t x656, uint8_t x657 = addcarryx_u32(x654, x639, x641);
- uint32_t x659, uint8_t x660 = addcarryx_u32(x657, x642, x644);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x645, x647);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x648, x650);
- uint32_t x668, uint8_t _ = addcarryx_u32(0x0, x666, x651);
- uint32_t _, uint8_t x672 = addcarryx_u32(0x0, x614, x635);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x617, x653);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x620, x656);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x623, x659);
- uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x626, x662);
- uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x629, x665);
- uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x632, x668);
- uint8_t x691 = (x690 + x633);
- uint32_t x693, uint8_t x694 = subborrow_u32(0x0, x674, 0xffffffff);
- uint32_t x696, uint8_t x697 = subborrow_u32(x694, x677, 0xffffffff);
- uint32_t x699, uint8_t x700 = subborrow_u32(x697, x680, 0xfffffffe);
- uint32_t x702, uint8_t x703 = subborrow_u32(x700, x683, 0xffffffff);
- uint32_t x705, uint8_t x706 = subborrow_u32(x703, x686, 0xffffffff);
- uint32_t x708, uint8_t x709 = subborrow_u32(x706, x689, 0xffffffff);
- uint32_t _, uint8_t x712 = subborrow_u32(x709, x691, 0x0);
- uint32_t x713 = cmovznz32(x712, x708, x689);
- uint32_t x714 = cmovznz32(x712, x705, x686);
- uint32_t x715 = cmovznz32(x712, x702, x683);
- uint32_t x716 = cmovznz32(x712, x699, x680);
- uint32_t x717 = cmovznz32(x712, x696, x677);
- uint32_t x718 = cmovznz32(x712, x693, x674);
- return (x713, x714, x715, x716, x717, x718))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v
deleted file mode 100644
index 3d74cc167..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenz.c b/src/Specific/montgomery32_2e192m2e64m1/fenz.c
deleted file mode 100644
index 2e0454af1..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x11 = (x10 | x9);
- { uint32_t x12 = (x8 | x11);
- { uint32_t x13 = (x6 | x12);
- { uint32_t x14 = (x4 | x13);
- { uint32_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenz.v b/src/Specific/montgomery32_2e192m2e64m1/fenz.v
deleted file mode 100644
index 49ce0cfd8..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.log b/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.log
deleted file mode 100644
index 616138b7b..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x11 = (x10 | x9);
- uint32_t x12 = (x8 | x11);
- uint32_t x13 = (x6 | x12);
- uint32_t x14 = (x4 | x13);
- uint32_t x15 = (x2 | x14);
- return x15)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v
deleted file mode 100644
index 2192b6df7..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feopp.c b/src/Specific/montgomery32_2e192m2e64m1/feopp.c
deleted file mode 100644
index 9e9f82dca..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
- { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
- { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
- { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
- { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
- { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffffff);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
- { uint32_t x34 = (x29 & 0xffffffff);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
- { uint32_t x38 = (x29 & 0xfffffffe);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
- { uint32_t x42 = (x29 & 0xffffffff);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
- { uint32_t x46 = (x29 & 0xffffffff);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
- { uint32_t x50 = (x29 & 0xffffffff);
- { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feopp.v b/src/Specific/montgomery32_2e192m2e64m1/feopp.v
deleted file mode 100644
index c277bf9bb..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.log b/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.log
deleted file mode 100644
index e937846f9..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
- uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
- uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
- uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
- uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffffff);
- uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
- uint32_t x34 = (x29 & 0xffffffff);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
- uint32_t x38 = (x29 & 0xfffffffe);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
- uint32_t x42 = (x29 & 0xffffffff);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
- uint32_t x46 = (x29 & 0xffffffff);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
- uint32_t x50 = (x29 & 0xffffffff);
- uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v
deleted file mode 100644
index 33bcbe8c5..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesquare.c b/src/Specific/montgomery32_2e192m2e64m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesub.c b/src/Specific/montgomery32_2e192m2e64m1/fesub.c
deleted file mode 100644
index 5c0d60043..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
- { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
- { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
- { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
- { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
- { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
- { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- { uint32_t x43 = (x42 & 0xffffffff);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
- { uint32_t x47 = (x42 & 0xffffffff);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
- { uint32_t x51 = (x42 & 0xfffffffe);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
- { uint32_t x55 = (x42 & 0xffffffff);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
- { uint32_t x59 = (x42 & 0xffffffff);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
- { uint32_t x63 = (x42 & 0xffffffff);
- { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesub.v b/src/Specific/montgomery32_2e192m2e64m1/fesub.v
deleted file mode 100644
index 05329eaee..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.log b/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.log
deleted file mode 100644
index ec794c27f..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
- uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
- uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
- uint32_t x43 = (x42 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
- uint32_t x47 = (x42 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
- uint32_t x51 = (x42 & 0xfffffffe);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
- uint32_t x55 = (x42 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
- uint32_t x59 = (x42 & 0xffffffff);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
- uint32_t x63 = (x42 & 0xffffffff);
- uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v b/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v
deleted file mode 100644
index a71620480..000000000
--- a/src/Specific/montgomery32_2e192m2e64m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e192m2e64m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/CurveParameters.v
index 76ebb9d37..76ebb9d37 100644
--- a/src/Specific/montgomery32_2e192m2e64m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/Synthesis.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..8a54ef877
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/compiler.sh b/src/Specific/montgomery32_2e192m2e64m1_6limbs/compiler.sh
index 15b5ddf46..15b5ddf46 100755
--- a/src/Specific/montgomery32_2e192m2e64m1/compiler.sh
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e192m2e64m1/compilerxx.sh b/src/Specific/montgomery32_2e192m2e64m1_6limbs/compilerxx.sh
index 889cfe525..889cfe525 100755
--- a/src/Specific/montgomery32_2e192m2e64m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feadd.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feadd.v
new file mode 100644
index 000000000..f0c5f5321
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feaddDisplay.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..6ee035747
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.v
new file mode 100644
index 000000000..fa7d9599c
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..48c89ae88
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenz.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenz.v
new file mode 100644
index 000000000..cd2517cd1
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenzDisplay.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..7c73aecbf
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.v
new file mode 100644
index 000000000..35594e490
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..a55a5e5c5
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.v
new file mode 100644
index 000000000..0efb3f48c
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.v b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..077f2abdc
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e192m2e64m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e192m2e64m1/py_interpreter.sh b/src/Specific/montgomery32_2e192m2e64m1_6limbs/py_interpreter.sh
index 9d29d1b0a..9d29d1b0a 100755
--- a/src/Specific/montgomery32_2e192m2e64m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e194m33/Synthesis.v b/src/Specific/montgomery32_2e194m33/Synthesis.v
deleted file mode 100644
index dfd857211..000000000
--- a/src/Specific/montgomery32_2e194m33/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e194m33.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e194m33/feadd.c b/src/Specific/montgomery32_2e194m33/feadd.c
deleted file mode 100644
index ba45079f7..000000000
--- a/src/Specific/montgomery32_2e194m33/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffdf, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e194m33/feadd.v b/src/Specific/montgomery32_2e194m33/feadd.v
deleted file mode 100644
index e511b6dbd..000000000
--- a/src/Specific/montgomery32_2e194m33/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e194m33/feaddDisplay.log b/src/Specific/montgomery32_2e194m33/feaddDisplay.log
deleted file mode 100644
index c217451c3..000000000
--- a/src/Specific/montgomery32_2e194m33/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffdf);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e194m33/feaddDisplay.v b/src/Specific/montgomery32_2e194m33/feaddDisplay.v
deleted file mode 100644
index b9055d15c..000000000
--- a/src/Specific/montgomery32_2e194m33/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e194m33.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e194m33/femul.v b/src/Specific/montgomery32_2e194m33/femul.v
deleted file mode 100644
index cf1e4db6a..000000000
--- a/src/Specific/montgomery32_2e194m33/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e194m33/femulDisplay.v b/src/Specific/montgomery32_2e194m33/femulDisplay.v
deleted file mode 100644
index dcf8c2692..000000000
--- a/src/Specific/montgomery32_2e194m33/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e194m33.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e194m33/fenz.c b/src/Specific/montgomery32_2e194m33/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e194m33/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e194m33/fenz.v b/src/Specific/montgomery32_2e194m33/fenz.v
deleted file mode 100644
index f95260086..000000000
--- a/src/Specific/montgomery32_2e194m33/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e194m33/fenzDisplay.log b/src/Specific/montgomery32_2e194m33/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e194m33/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e194m33/fenzDisplay.v b/src/Specific/montgomery32_2e194m33/fenzDisplay.v
deleted file mode 100644
index 34bfac84c..000000000
--- a/src/Specific/montgomery32_2e194m33/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e194m33.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e194m33/feopp.v b/src/Specific/montgomery32_2e194m33/feopp.v
deleted file mode 100644
index 2ae52b8d2..000000000
--- a/src/Specific/montgomery32_2e194m33/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e194m33/feoppDisplay.log b/src/Specific/montgomery32_2e194m33/feoppDisplay.log
deleted file mode 100644
index 8ba73c6fb..000000000
--- a/src/Specific/montgomery32_2e194m33/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffffdf);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint8_t x59 = ((uint8_t)x34 & 0x3);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e194m33/feoppDisplay.v b/src/Specific/montgomery32_2e194m33/feoppDisplay.v
deleted file mode 100644
index 23308d632..000000000
--- a/src/Specific/montgomery32_2e194m33/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e194m33.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e194m33/fesquare.c b/src/Specific/montgomery32_2e194m33/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e194m33/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e194m33/fesub.v b/src/Specific/montgomery32_2e194m33/fesub.v
deleted file mode 100644
index 176c4bfb6..000000000
--- a/src/Specific/montgomery32_2e194m33/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e194m33/fesubDisplay.log b/src/Specific/montgomery32_2e194m33/fesubDisplay.log
deleted file mode 100644
index 9ceb3d564..000000000
--- a/src/Specific/montgomery32_2e194m33/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffffdf);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint8_t x74 = ((uint8_t)x49 & 0x3);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e194m33/fesubDisplay.v b/src/Specific/montgomery32_2e194m33/fesubDisplay.v
deleted file mode 100644
index 12e4ada2d..000000000
--- a/src/Specific/montgomery32_2e194m33/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e194m33.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e194m33/CurveParameters.v b/src/Specific/montgomery32_2e194m33_7limbs/CurveParameters.v
index f0ea8cc22..f0ea8cc22 100644
--- a/src/Specific/montgomery32_2e194m33/CurveParameters.v
+++ b/src/Specific/montgomery32_2e194m33_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/Synthesis.v b/src/Specific/montgomery32_2e194m33_7limbs/Synthesis.v
new file mode 100644
index 000000000..4217255fc
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e194m33/compiler.sh b/src/Specific/montgomery32_2e194m33_7limbs/compiler.sh
index eb80fc26a..eb80fc26a 100755
--- a/src/Specific/montgomery32_2e194m33/compiler.sh
+++ b/src/Specific/montgomery32_2e194m33_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e194m33/compilerxx.sh b/src/Specific/montgomery32_2e194m33_7limbs/compilerxx.sh
index ca191bdc7..ca191bdc7 100755
--- a/src/Specific/montgomery32_2e194m33/compilerxx.sh
+++ b/src/Specific/montgomery32_2e194m33_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feadd.v b/src/Specific/montgomery32_2e194m33_7limbs/feadd.v
new file mode 100644
index 000000000..3fd1c6163
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..24139f59f
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/femul.v b/src/Specific/montgomery32_2e194m33_7limbs/femul.v
new file mode 100644
index 000000000..61bc3205e
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e194m33_7limbs/femulDisplay.v
new file mode 100644
index 000000000..8a5f86f05
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fenz.v b/src/Specific/montgomery32_2e194m33_7limbs/fenz.v
new file mode 100644
index 000000000..6173c1322
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..36b2f4bd2
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feopp.v b/src/Specific/montgomery32_2e194m33_7limbs/feopp.v
new file mode 100644
index 000000000..cfdbf7abc
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e194m33_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..bbfac206f
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fesub.v b/src/Specific/montgomery32_2e194m33_7limbs/fesub.v
new file mode 100644
index 000000000..eacc6245e
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e194m33_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..9efd45280
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e194m33_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e194m33/py_interpreter.sh b/src/Specific/montgomery32_2e194m33_7limbs/py_interpreter.sh
index 19760a7c4..19760a7c4 100755
--- a/src/Specific/montgomery32_2e194m33/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e194m33_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e196m15/Synthesis.v b/src/Specific/montgomery32_2e196m15/Synthesis.v
deleted file mode 100644
index 28493d4d3..000000000
--- a/src/Specific/montgomery32_2e196m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e196m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e196m15/feadd.c b/src/Specific/montgomery32_2e196m15/feadd.c
deleted file mode 100644
index 3fe2c20c9..000000000
--- a/src/Specific/montgomery32_2e196m15/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xfffffff1, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0xf, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e196m15/feadd.v b/src/Specific/montgomery32_2e196m15/feadd.v
deleted file mode 100644
index 687c287ae..000000000
--- a/src/Specific/montgomery32_2e196m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e196m15/feaddDisplay.log b/src/Specific/montgomery32_2e196m15/feaddDisplay.log
deleted file mode 100644
index 9398047fb..000000000
--- a/src/Specific/montgomery32_2e196m15/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xfffffff1);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0xf);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e196m15/feaddDisplay.v b/src/Specific/montgomery32_2e196m15/feaddDisplay.v
deleted file mode 100644
index 3d6801f1a..000000000
--- a/src/Specific/montgomery32_2e196m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e196m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e196m15/femul.v b/src/Specific/montgomery32_2e196m15/femul.v
deleted file mode 100644
index 691ddd7d9..000000000
--- a/src/Specific/montgomery32_2e196m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e196m15/femulDisplay.log b/src/Specific/montgomery32_2e196m15/femulDisplay.log
deleted file mode 100644
index 9eb305991..000000000
--- a/src/Specific/montgomery32_2e196m15/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xeeeeeeef);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xfffffff1);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, 0xf);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint8_t x112 = (x111 + x93);
- uint32_t _, uint8_t x115 = addcarryx_u32(0x0, x29, x74);
- uint32_t x117, uint8_t x118 = addcarryx_u32(x115, x50, x95);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x53, x98);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x56, x101);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x59, x104);
- uint32_t x129, uint8_t x130 = addcarryx_u32(x127, x62, x107);
- uint32_t x132, uint8_t x133 = addcarryx_u32(x130, x65, x110);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x68, x112);
- uint32_t x138, uint32_t x139 = mulx_u32(x7, x17);
- uint32_t x141, uint32_t x142 = mulx_u32(x7, x19);
- uint32_t x144, uint32_t x145 = mulx_u32(x7, x21);
- uint32_t x147, uint32_t x148 = mulx_u32(x7, x23);
- uint32_t x150, uint32_t x151 = mulx_u32(x7, x25);
- uint32_t x153, uint32_t x154 = mulx_u32(x7, x27);
- uint32_t x156, uint32_t x157 = mulx_u32(x7, x26);
- uint32_t x159, uint8_t x160 = addcarryx_u32(0x0, x139, x141);
- uint32_t x162, uint8_t x163 = addcarryx_u32(x160, x142, x144);
- uint32_t x165, uint8_t x166 = addcarryx_u32(x163, x145, x147);
- uint32_t x168, uint8_t x169 = addcarryx_u32(x166, x148, x150);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x151, x153);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x154, x156);
- uint32_t x177, uint8_t _ = addcarryx_u32(0x0, x175, x157);
- uint32_t x180, uint8_t x181 = addcarryx_u32(0x0, x117, x138);
- uint32_t x183, uint8_t x184 = addcarryx_u32(x181, x120, x159);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x123, x162);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x126, x165);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x129, x168);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x132, x171);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x135, x174);
- uint32_t x201, uint8_t x202 = addcarryx_u32(x199, x136, x177);
- uint32_t x204, uint32_t _ = mulx_u32(x180, 0xeeeeeeef);
- uint32_t x207, uint32_t x208 = mulx_u32(x204, 0xfffffff1);
- uint32_t x210, uint32_t x211 = mulx_u32(x204, 0xffffffff);
- uint32_t x213, uint32_t x214 = mulx_u32(x204, 0xffffffff);
- uint32_t x216, uint32_t x217 = mulx_u32(x204, 0xffffffff);
- uint32_t x219, uint32_t x220 = mulx_u32(x204, 0xffffffff);
- uint32_t x222, uint32_t x223 = mulx_u32(x204, 0xffffffff);
- uint32_t x225, uint8_t x226 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x204, 0xf);
- uint32_t x228, uint8_t x229 = addcarryx_u32(0x0, x208, x210);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x211, x213);
- uint32_t x234, uint8_t x235 = addcarryx_u32(x232, x214, x216);
- uint32_t x237, uint8_t x238 = addcarryx_u32(x235, x217, x219);
- uint32_t x240, uint8_t x241 = addcarryx_u32(x238, x220, x222);
- uint32_t x243, uint8_t x244 = addcarryx_u32(x241, x223, x225);
- uint8_t x245 = (x244 + x226);
- uint32_t _, uint8_t x248 = addcarryx_u32(0x0, x180, x207);
- uint32_t x250, uint8_t x251 = addcarryx_u32(x248, x183, x228);
- uint32_t x253, uint8_t x254 = addcarryx_u32(x251, x186, x231);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x189, x234);
- uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x192, x237);
- uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x195, x240);
- uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x198, x243);
- uint32_t x268, uint8_t x269 = addcarryx_u32(x266, x201, x245);
- uint8_t x270 = (x269 + x202);
- uint32_t x272, uint32_t x273 = mulx_u32(x9, x17);
- uint32_t x275, uint32_t x276 = mulx_u32(x9, x19);
- uint32_t x278, uint32_t x279 = mulx_u32(x9, x21);
- uint32_t x281, uint32_t x282 = mulx_u32(x9, x23);
- uint32_t x284, uint32_t x285 = mulx_u32(x9, x25);
- uint32_t x287, uint32_t x288 = mulx_u32(x9, x27);
- uint32_t x290, uint32_t x291 = mulx_u32(x9, x26);
- uint32_t x293, uint8_t x294 = addcarryx_u32(0x0, x273, x275);
- uint32_t x296, uint8_t x297 = addcarryx_u32(x294, x276, x278);
- uint32_t x299, uint8_t x300 = addcarryx_u32(x297, x279, x281);
- uint32_t x302, uint8_t x303 = addcarryx_u32(x300, x282, x284);
- uint32_t x305, uint8_t x306 = addcarryx_u32(x303, x285, x287);
- uint32_t x308, uint8_t x309 = addcarryx_u32(x306, x288, x290);
- uint32_t x311, uint8_t _ = addcarryx_u32(0x0, x309, x291);
- uint32_t x314, uint8_t x315 = addcarryx_u32(0x0, x250, x272);
- uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x253, x293);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x256, x296);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x259, x299);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x262, x302);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x265, x305);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x268, x308);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x270, x311);
- uint32_t x338, uint32_t _ = mulx_u32(x314, 0xeeeeeeef);
- uint32_t x341, uint32_t x342 = mulx_u32(x338, 0xfffffff1);
- uint32_t x344, uint32_t x345 = mulx_u32(x338, 0xffffffff);
- uint32_t x347, uint32_t x348 = mulx_u32(x338, 0xffffffff);
- uint32_t x350, uint32_t x351 = mulx_u32(x338, 0xffffffff);
- uint32_t x353, uint32_t x354 = mulx_u32(x338, 0xffffffff);
- uint32_t x356, uint32_t x357 = mulx_u32(x338, 0xffffffff);
- uint32_t x359, uint8_t x360 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x338, 0xf);
- uint32_t x362, uint8_t x363 = addcarryx_u32(0x0, x342, x344);
- uint32_t x365, uint8_t x366 = addcarryx_u32(x363, x345, x347);
- uint32_t x368, uint8_t x369 = addcarryx_u32(x366, x348, x350);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x351, x353);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x354, x356);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x357, x359);
- uint8_t x379 = (x378 + x360);
- uint32_t _, uint8_t x382 = addcarryx_u32(0x0, x314, x341);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x317, x362);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x320, x365);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x323, x368);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x326, x371);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x329, x374);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x332, x377);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x335, x379);
- uint8_t x404 = (x403 + x336);
- uint32_t x406, uint32_t x407 = mulx_u32(x11, x17);
- uint32_t x409, uint32_t x410 = mulx_u32(x11, x19);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x21);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x23);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x25);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x27);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x26);
- uint32_t x427, uint8_t x428 = addcarryx_u32(0x0, x407, x409);
- uint32_t x430, uint8_t x431 = addcarryx_u32(x428, x410, x412);
- uint32_t x433, uint8_t x434 = addcarryx_u32(x431, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t _ = addcarryx_u32(0x0, x443, x425);
- uint32_t x448, uint8_t x449 = addcarryx_u32(0x0, x384, x406);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x387, x427);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x390, x430);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x404, x445);
- uint32_t x472, uint32_t _ = mulx_u32(x448, 0xeeeeeeef);
- uint32_t x475, uint32_t x476 = mulx_u32(x472, 0xfffffff1);
- uint32_t x478, uint32_t x479 = mulx_u32(x472, 0xffffffff);
- uint32_t x481, uint32_t x482 = mulx_u32(x472, 0xffffffff);
- uint32_t x484, uint32_t x485 = mulx_u32(x472, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x472, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x472, 0xffffffff);
- uint32_t x493, uint8_t x494 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x472, 0xf);
- uint32_t x496, uint8_t x497 = addcarryx_u32(0x0, x476, x478);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x479, x481);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint8_t x513 = (x512 + x494);
- uint32_t _, uint8_t x516 = addcarryx_u32(0x0, x448, x475);
- uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x451, x496);
- uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x454, x499);
- uint32_t x524, uint8_t x525 = addcarryx_u32(x522, x457, x502);
- uint32_t x527, uint8_t x528 = addcarryx_u32(x525, x460, x505);
- uint32_t x530, uint8_t x531 = addcarryx_u32(x528, x463, x508);
- uint32_t x533, uint8_t x534 = addcarryx_u32(x531, x466, x511);
- uint32_t x536, uint8_t x537 = addcarryx_u32(x534, x469, x513);
- uint8_t x538 = (x537 + x470);
- uint32_t x540, uint32_t x541 = mulx_u32(x13, x17);
- uint32_t x543, uint32_t x544 = mulx_u32(x13, x19);
- uint32_t x546, uint32_t x547 = mulx_u32(x13, x21);
- uint32_t x549, uint32_t x550 = mulx_u32(x13, x23);
- uint32_t x552, uint32_t x553 = mulx_u32(x13, x25);
- uint32_t x555, uint32_t x556 = mulx_u32(x13, x27);
- uint32_t x558, uint32_t x559 = mulx_u32(x13, x26);
- uint32_t x561, uint8_t x562 = addcarryx_u32(0x0, x541, x543);
- uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x544, x546);
- uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x547, x549);
- uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x550, x552);
- uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x553, x555);
- uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x556, x558);
- uint32_t x579, uint8_t _ = addcarryx_u32(0x0, x577, x559);
- uint32_t x582, uint8_t x583 = addcarryx_u32(0x0, x518, x540);
- uint32_t x585, uint8_t x586 = addcarryx_u32(x583, x521, x561);
- uint32_t x588, uint8_t x589 = addcarryx_u32(x586, x524, x564);
- uint32_t x591, uint8_t x592 = addcarryx_u32(x589, x527, x567);
- uint32_t x594, uint8_t x595 = addcarryx_u32(x592, x530, x570);
- uint32_t x597, uint8_t x598 = addcarryx_u32(x595, x533, x573);
- uint32_t x600, uint8_t x601 = addcarryx_u32(x598, x536, x576);
- uint32_t x603, uint8_t x604 = addcarryx_u32(x601, x538, x579);
- uint32_t x606, uint32_t _ = mulx_u32(x582, 0xeeeeeeef);
- uint32_t x609, uint32_t x610 = mulx_u32(x606, 0xfffffff1);
- uint32_t x612, uint32_t x613 = mulx_u32(x606, 0xffffffff);
- uint32_t x615, uint32_t x616 = mulx_u32(x606, 0xffffffff);
- uint32_t x618, uint32_t x619 = mulx_u32(x606, 0xffffffff);
- uint32_t x621, uint32_t x622 = mulx_u32(x606, 0xffffffff);
- uint32_t x624, uint32_t x625 = mulx_u32(x606, 0xffffffff);
- uint32_t x627, uint8_t x628 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x606, 0xf);
- uint32_t x630, uint8_t x631 = addcarryx_u32(0x0, x610, x612);
- uint32_t x633, uint8_t x634 = addcarryx_u32(x631, x613, x615);
- uint32_t x636, uint8_t x637 = addcarryx_u32(x634, x616, x618);
- uint32_t x639, uint8_t x640 = addcarryx_u32(x637, x619, x621);
- uint32_t x642, uint8_t x643 = addcarryx_u32(x640, x622, x624);
- uint32_t x645, uint8_t x646 = addcarryx_u32(x643, x625, x627);
- uint8_t x647 = (x646 + x628);
- uint32_t _, uint8_t x650 = addcarryx_u32(0x0, x582, x609);
- uint32_t x652, uint8_t x653 = addcarryx_u32(x650, x585, x630);
- uint32_t x655, uint8_t x656 = addcarryx_u32(x653, x588, x633);
- uint32_t x658, uint8_t x659 = addcarryx_u32(x656, x591, x636);
- uint32_t x661, uint8_t x662 = addcarryx_u32(x659, x594, x639);
- uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x597, x642);
- uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x600, x645);
- uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x603, x647);
- uint8_t x672 = (x671 + x604);
- uint32_t x674, uint32_t x675 = mulx_u32(x15, x17);
- uint32_t x677, uint32_t x678 = mulx_u32(x15, x19);
- uint32_t x680, uint32_t x681 = mulx_u32(x15, x21);
- uint32_t x683, uint32_t x684 = mulx_u32(x15, x23);
- uint32_t x686, uint32_t x687 = mulx_u32(x15, x25);
- uint32_t x689, uint32_t x690 = mulx_u32(x15, x27);
- uint32_t x692, uint32_t x693 = mulx_u32(x15, x26);
- uint32_t x695, uint8_t x696 = addcarryx_u32(0x0, x675, x677);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x678, x680);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x681, x683);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x684, x686);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x687, x689);
- uint32_t x710, uint8_t x711 = addcarryx_u32(x708, x690, x692);
- uint32_t x713, uint8_t _ = addcarryx_u32(0x0, x711, x693);
- uint32_t x716, uint8_t x717 = addcarryx_u32(0x0, x652, x674);
- uint32_t x719, uint8_t x720 = addcarryx_u32(x717, x655, x695);
- uint32_t x722, uint8_t x723 = addcarryx_u32(x720, x658, x698);
- uint32_t x725, uint8_t x726 = addcarryx_u32(x723, x661, x701);
- uint32_t x728, uint8_t x729 = addcarryx_u32(x726, x664, x704);
- uint32_t x731, uint8_t x732 = addcarryx_u32(x729, x667, x707);
- uint32_t x734, uint8_t x735 = addcarryx_u32(x732, x670, x710);
- uint32_t x737, uint8_t x738 = addcarryx_u32(x735, x672, x713);
- uint32_t x740, uint32_t _ = mulx_u32(x716, 0xeeeeeeef);
- uint32_t x743, uint32_t x744 = mulx_u32(x740, 0xfffffff1);
- uint32_t x746, uint32_t x747 = mulx_u32(x740, 0xffffffff);
- uint32_t x749, uint32_t x750 = mulx_u32(x740, 0xffffffff);
- uint32_t x752, uint32_t x753 = mulx_u32(x740, 0xffffffff);
- uint32_t x755, uint32_t x756 = mulx_u32(x740, 0xffffffff);
- uint32_t x758, uint32_t x759 = mulx_u32(x740, 0xffffffff);
- uint32_t x761, uint8_t x762 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x740, 0xf);
- uint32_t x764, uint8_t x765 = addcarryx_u32(0x0, x744, x746);
- uint32_t x767, uint8_t x768 = addcarryx_u32(x765, x747, x749);
- uint32_t x770, uint8_t x771 = addcarryx_u32(x768, x750, x752);
- uint32_t x773, uint8_t x774 = addcarryx_u32(x771, x753, x755);
- uint32_t x776, uint8_t x777 = addcarryx_u32(x774, x756, x758);
- uint32_t x779, uint8_t x780 = addcarryx_u32(x777, x759, x761);
- uint8_t x781 = (x780 + x762);
- uint32_t _, uint8_t x784 = addcarryx_u32(0x0, x716, x743);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x719, x764);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x722, x767);
- uint32_t x792, uint8_t x793 = addcarryx_u32(x790, x725, x770);
- uint32_t x795, uint8_t x796 = addcarryx_u32(x793, x728, x773);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x731, x776);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x734, x779);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x737, x781);
- uint8_t x806 = (x805 + x738);
- uint32_t x808, uint32_t x809 = mulx_u32(x14, x17);
- uint32_t x811, uint32_t x812 = mulx_u32(x14, x19);
- uint32_t x814, uint32_t x815 = mulx_u32(x14, x21);
- uint32_t x817, uint32_t x818 = mulx_u32(x14, x23);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x25);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x27);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x26);
- uint32_t x829, uint8_t x830 = addcarryx_u32(0x0, x809, x811);
- uint32_t x832, uint8_t x833 = addcarryx_u32(x830, x812, x814);
- uint32_t x835, uint8_t x836 = addcarryx_u32(x833, x815, x817);
- uint32_t x838, uint8_t x839 = addcarryx_u32(x836, x818, x820);
- uint32_t x841, uint8_t x842 = addcarryx_u32(x839, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t _ = addcarryx_u32(0x0, x845, x827);
- uint32_t x850, uint8_t x851 = addcarryx_u32(0x0, x786, x808);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x789, x829);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x792, x832);
- uint32_t x859, uint8_t x860 = addcarryx_u32(x857, x795, x835);
- uint32_t x862, uint8_t x863 = addcarryx_u32(x860, x798, x838);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x806, x847);
- uint32_t x874, uint32_t _ = mulx_u32(x850, 0xeeeeeeef);
- uint32_t x877, uint32_t x878 = mulx_u32(x874, 0xfffffff1);
- uint32_t x880, uint32_t x881 = mulx_u32(x874, 0xffffffff);
- uint32_t x883, uint32_t x884 = mulx_u32(x874, 0xffffffff);
- uint32_t x886, uint32_t x887 = mulx_u32(x874, 0xffffffff);
- uint32_t x889, uint32_t x890 = mulx_u32(x874, 0xffffffff);
- uint32_t x892, uint32_t x893 = mulx_u32(x874, 0xffffffff);
- uint32_t x895, uint8_t x896 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x874, 0xf);
- uint32_t x898, uint8_t x899 = addcarryx_u32(0x0, x878, x880);
- uint32_t x901, uint8_t x902 = addcarryx_u32(x899, x881, x883);
- uint32_t x904, uint8_t x905 = addcarryx_u32(x902, x884, x886);
- uint32_t x907, uint8_t x908 = addcarryx_u32(x905, x887, x889);
- uint32_t x910, uint8_t x911 = addcarryx_u32(x908, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint8_t x915 = (x914 + x896);
- uint32_t _, uint8_t x918 = addcarryx_u32(0x0, x850, x877);
- uint32_t x920, uint8_t x921 = addcarryx_u32(x918, x853, x898);
- uint32_t x923, uint8_t x924 = addcarryx_u32(x921, x856, x901);
- uint32_t x926, uint8_t x927 = addcarryx_u32(x924, x859, x904);
- uint32_t x929, uint8_t x930 = addcarryx_u32(x927, x862, x907);
- uint32_t x932, uint8_t x933 = addcarryx_u32(x930, x865, x910);
- uint32_t x935, uint8_t x936 = addcarryx_u32(x933, x868, x913);
- uint32_t x938, uint8_t x939 = addcarryx_u32(x936, x871, x915);
- uint8_t x940 = (x939 + x872);
- uint32_t x942, uint8_t x943 = subborrow_u32(0x0, x920, 0xfffffff1);
- uint32_t x945, uint8_t x946 = subborrow_u32(x943, x923, 0xffffffff);
- uint32_t x948, uint8_t x949 = subborrow_u32(x946, x926, 0xffffffff);
- uint32_t x951, uint8_t x952 = subborrow_u32(x949, x929, 0xffffffff);
- uint32_t x954, uint8_t x955 = subborrow_u32(x952, x932, 0xffffffff);
- uint32_t x957, uint8_t x958 = subborrow_u32(x955, x935, 0xffffffff);
- uint32_t x960, uint8_t x961 = subborrow_u32(x958, x938, 0xf);
- uint32_t _, uint8_t x964 = subborrow_u32(x961, x940, 0x0);
- uint32_t x965 = cmovznz(x964, x960, x938);
- uint32_t x966 = cmovznz(x964, x957, x935);
- uint32_t x967 = cmovznz(x964, x954, x932);
- uint32_t x968 = cmovznz(x964, x951, x929);
- uint32_t x969 = cmovznz(x964, x948, x926);
- uint32_t x970 = cmovznz(x964, x945, x923);
- uint32_t x971 = cmovznz(x964, x942, x920);
- return (x965, x966, x967, x968, x969, x970, x971))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e196m15/femulDisplay.v b/src/Specific/montgomery32_2e196m15/femulDisplay.v
deleted file mode 100644
index 06e79eca5..000000000
--- a/src/Specific/montgomery32_2e196m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e196m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e196m15/fenz.c b/src/Specific/montgomery32_2e196m15/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e196m15/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e196m15/fenz.v b/src/Specific/montgomery32_2e196m15/fenz.v
deleted file mode 100644
index b60cde1ca..000000000
--- a/src/Specific/montgomery32_2e196m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e196m15/fenzDisplay.log b/src/Specific/montgomery32_2e196m15/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e196m15/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e196m15/fenzDisplay.v b/src/Specific/montgomery32_2e196m15/fenzDisplay.v
deleted file mode 100644
index eb7d4342e..000000000
--- a/src/Specific/montgomery32_2e196m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e196m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e196m15/feopp.v b/src/Specific/montgomery32_2e196m15/feopp.v
deleted file mode 100644
index f8281a810..000000000
--- a/src/Specific/montgomery32_2e196m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e196m15/feoppDisplay.log b/src/Specific/montgomery32_2e196m15/feoppDisplay.log
deleted file mode 100644
index 8f272a28f..000000000
--- a/src/Specific/montgomery32_2e196m15/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xfffffff1);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint8_t x59 = ((uint8_t)x34 & 0xf);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e196m15/feoppDisplay.v b/src/Specific/montgomery32_2e196m15/feoppDisplay.v
deleted file mode 100644
index c5e923839..000000000
--- a/src/Specific/montgomery32_2e196m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e196m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e196m15/fesquare.c b/src/Specific/montgomery32_2e196m15/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e196m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e196m15/fesub.v b/src/Specific/montgomery32_2e196m15/fesub.v
deleted file mode 100644
index 071449152..000000000
--- a/src/Specific/montgomery32_2e196m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e196m15/fesubDisplay.log b/src/Specific/montgomery32_2e196m15/fesubDisplay.log
deleted file mode 100644
index 82632665f..000000000
--- a/src/Specific/montgomery32_2e196m15/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xfffffff1);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint8_t x74 = ((uint8_t)x49 & 0xf);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e196m15/fesubDisplay.v b/src/Specific/montgomery32_2e196m15/fesubDisplay.v
deleted file mode 100644
index 4845d82f2..000000000
--- a/src/Specific/montgomery32_2e196m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e196m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e196m15/CurveParameters.v b/src/Specific/montgomery32_2e196m15_7limbs/CurveParameters.v
index be8378ba9..be8378ba9 100644
--- a/src/Specific/montgomery32_2e196m15/CurveParameters.v
+++ b/src/Specific/montgomery32_2e196m15_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/Synthesis.v b/src/Specific/montgomery32_2e196m15_7limbs/Synthesis.v
new file mode 100644
index 000000000..b50b59900
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e196m15/compiler.sh b/src/Specific/montgomery32_2e196m15_7limbs/compiler.sh
index 7b6f9dbfb..7b6f9dbfb 100755
--- a/src/Specific/montgomery32_2e196m15/compiler.sh
+++ b/src/Specific/montgomery32_2e196m15_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e196m15/compilerxx.sh b/src/Specific/montgomery32_2e196m15_7limbs/compilerxx.sh
index eae03df61..eae03df61 100755
--- a/src/Specific/montgomery32_2e196m15/compilerxx.sh
+++ b/src/Specific/montgomery32_2e196m15_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feadd.v b/src/Specific/montgomery32_2e196m15_7limbs/feadd.v
new file mode 100644
index 000000000..7d6e10aa3
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..ccb561d37
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/femul.v b/src/Specific/montgomery32_2e196m15_7limbs/femul.v
new file mode 100644
index 000000000..dc6bb44ab
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e196m15_7limbs/femulDisplay.v
new file mode 100644
index 000000000..9d359aed8
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fenz.v b/src/Specific/montgomery32_2e196m15_7limbs/fenz.v
new file mode 100644
index 000000000..c31b8e427
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..5836b0c61
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feopp.v b/src/Specific/montgomery32_2e196m15_7limbs/feopp.v
new file mode 100644
index 000000000..a44c60a6c
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e196m15_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..660cf5399
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fesub.v b/src/Specific/montgomery32_2e196m15_7limbs/fesub.v
new file mode 100644
index 000000000..87e4aa893
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e196m15_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..442dd63b4
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e196m15_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e196m15/py_interpreter.sh b/src/Specific/montgomery32_2e196m15_7limbs/py_interpreter.sh
index 1ed1c0b70..1ed1c0b70 100755
--- a/src/Specific/montgomery32_2e196m15/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e196m15_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e198m17/Synthesis.v b/src/Specific/montgomery32_2e198m17/Synthesis.v
deleted file mode 100644
index ba18c96f4..000000000
--- a/src/Specific/montgomery32_2e198m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e198m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e198m17/feadd.c b/src/Specific/montgomery32_2e198m17/feadd.c
deleted file mode 100644
index 89081d51b..000000000
--- a/src/Specific/montgomery32_2e198m17/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffef, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3f, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e198m17/feadd.v b/src/Specific/montgomery32_2e198m17/feadd.v
deleted file mode 100644
index c95d11ed8..000000000
--- a/src/Specific/montgomery32_2e198m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e198m17/feaddDisplay.log b/src/Specific/montgomery32_2e198m17/feaddDisplay.log
deleted file mode 100644
index 5d5529301..000000000
--- a/src/Specific/montgomery32_2e198m17/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffef);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3f);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e198m17/feaddDisplay.v b/src/Specific/montgomery32_2e198m17/feaddDisplay.v
deleted file mode 100644
index 08d61ce2d..000000000
--- a/src/Specific/montgomery32_2e198m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e198m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e198m17/femul.v b/src/Specific/montgomery32_2e198m17/femul.v
deleted file mode 100644
index fd1ba2f0d..000000000
--- a/src/Specific/montgomery32_2e198m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e198m17/femulDisplay.log b/src/Specific/montgomery32_2e198m17/femulDisplay.log
deleted file mode 100644
index fd3c774eb..000000000
--- a/src/Specific/montgomery32_2e198m17/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xf0f0f0f1);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xffffffef);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, 0x3f);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint8_t x112 = (x111 + x93);
- uint32_t _, uint8_t x115 = addcarryx_u32(0x0, x29, x74);
- uint32_t x117, uint8_t x118 = addcarryx_u32(x115, x50, x95);
- uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x53, x98);
- uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x56, x101);
- uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x59, x104);
- uint32_t x129, uint8_t x130 = addcarryx_u32(x127, x62, x107);
- uint32_t x132, uint8_t x133 = addcarryx_u32(x130, x65, x110);
- uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x68, x112);
- uint32_t x138, uint32_t x139 = mulx_u32(x7, x17);
- uint32_t x141, uint32_t x142 = mulx_u32(x7, x19);
- uint32_t x144, uint32_t x145 = mulx_u32(x7, x21);
- uint32_t x147, uint32_t x148 = mulx_u32(x7, x23);
- uint32_t x150, uint32_t x151 = mulx_u32(x7, x25);
- uint32_t x153, uint32_t x154 = mulx_u32(x7, x27);
- uint32_t x156, uint32_t x157 = mulx_u32(x7, x26);
- uint32_t x159, uint8_t x160 = addcarryx_u32(0x0, x139, x141);
- uint32_t x162, uint8_t x163 = addcarryx_u32(x160, x142, x144);
- uint32_t x165, uint8_t x166 = addcarryx_u32(x163, x145, x147);
- uint32_t x168, uint8_t x169 = addcarryx_u32(x166, x148, x150);
- uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x151, x153);
- uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x154, x156);
- uint32_t x177, uint8_t _ = addcarryx_u32(0x0, x175, x157);
- uint32_t x180, uint8_t x181 = addcarryx_u32(0x0, x117, x138);
- uint32_t x183, uint8_t x184 = addcarryx_u32(x181, x120, x159);
- uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x123, x162);
- uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x126, x165);
- uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x129, x168);
- uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x132, x171);
- uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x135, x174);
- uint32_t x201, uint8_t x202 = addcarryx_u32(x199, x136, x177);
- uint32_t x204, uint32_t _ = mulx_u32(x180, 0xf0f0f0f1);
- uint32_t x207, uint32_t x208 = mulx_u32(x204, 0xffffffef);
- uint32_t x210, uint32_t x211 = mulx_u32(x204, 0xffffffff);
- uint32_t x213, uint32_t x214 = mulx_u32(x204, 0xffffffff);
- uint32_t x216, uint32_t x217 = mulx_u32(x204, 0xffffffff);
- uint32_t x219, uint32_t x220 = mulx_u32(x204, 0xffffffff);
- uint32_t x222, uint32_t x223 = mulx_u32(x204, 0xffffffff);
- uint32_t x225, uint8_t x226 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x204, 0x3f);
- uint32_t x228, uint8_t x229 = addcarryx_u32(0x0, x208, x210);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x211, x213);
- uint32_t x234, uint8_t x235 = addcarryx_u32(x232, x214, x216);
- uint32_t x237, uint8_t x238 = addcarryx_u32(x235, x217, x219);
- uint32_t x240, uint8_t x241 = addcarryx_u32(x238, x220, x222);
- uint32_t x243, uint8_t x244 = addcarryx_u32(x241, x223, x225);
- uint8_t x245 = (x244 + x226);
- uint32_t _, uint8_t x248 = addcarryx_u32(0x0, x180, x207);
- uint32_t x250, uint8_t x251 = addcarryx_u32(x248, x183, x228);
- uint32_t x253, uint8_t x254 = addcarryx_u32(x251, x186, x231);
- uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x189, x234);
- uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x192, x237);
- uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x195, x240);
- uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x198, x243);
- uint32_t x268, uint8_t x269 = addcarryx_u32(x266, x201, x245);
- uint8_t x270 = (x269 + x202);
- uint32_t x272, uint32_t x273 = mulx_u32(x9, x17);
- uint32_t x275, uint32_t x276 = mulx_u32(x9, x19);
- uint32_t x278, uint32_t x279 = mulx_u32(x9, x21);
- uint32_t x281, uint32_t x282 = mulx_u32(x9, x23);
- uint32_t x284, uint32_t x285 = mulx_u32(x9, x25);
- uint32_t x287, uint32_t x288 = mulx_u32(x9, x27);
- uint32_t x290, uint32_t x291 = mulx_u32(x9, x26);
- uint32_t x293, uint8_t x294 = addcarryx_u32(0x0, x273, x275);
- uint32_t x296, uint8_t x297 = addcarryx_u32(x294, x276, x278);
- uint32_t x299, uint8_t x300 = addcarryx_u32(x297, x279, x281);
- uint32_t x302, uint8_t x303 = addcarryx_u32(x300, x282, x284);
- uint32_t x305, uint8_t x306 = addcarryx_u32(x303, x285, x287);
- uint32_t x308, uint8_t x309 = addcarryx_u32(x306, x288, x290);
- uint32_t x311, uint8_t _ = addcarryx_u32(0x0, x309, x291);
- uint32_t x314, uint8_t x315 = addcarryx_u32(0x0, x250, x272);
- uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x253, x293);
- uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x256, x296);
- uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x259, x299);
- uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x262, x302);
- uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x265, x305);
- uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x268, x308);
- uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x270, x311);
- uint32_t x338, uint32_t _ = mulx_u32(x314, 0xf0f0f0f1);
- uint32_t x341, uint32_t x342 = mulx_u32(x338, 0xffffffef);
- uint32_t x344, uint32_t x345 = mulx_u32(x338, 0xffffffff);
- uint32_t x347, uint32_t x348 = mulx_u32(x338, 0xffffffff);
- uint32_t x350, uint32_t x351 = mulx_u32(x338, 0xffffffff);
- uint32_t x353, uint32_t x354 = mulx_u32(x338, 0xffffffff);
- uint32_t x356, uint32_t x357 = mulx_u32(x338, 0xffffffff);
- uint32_t x359, uint8_t x360 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x338, 0x3f);
- uint32_t x362, uint8_t x363 = addcarryx_u32(0x0, x342, x344);
- uint32_t x365, uint8_t x366 = addcarryx_u32(x363, x345, x347);
- uint32_t x368, uint8_t x369 = addcarryx_u32(x366, x348, x350);
- uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x351, x353);
- uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x354, x356);
- uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x357, x359);
- uint8_t x379 = (x378 + x360);
- uint32_t _, uint8_t x382 = addcarryx_u32(0x0, x314, x341);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x317, x362);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x320, x365);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x323, x368);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x326, x371);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x329, x374);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x332, x377);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x335, x379);
- uint8_t x404 = (x403 + x336);
- uint32_t x406, uint32_t x407 = mulx_u32(x11, x17);
- uint32_t x409, uint32_t x410 = mulx_u32(x11, x19);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x21);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x23);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x25);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x27);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x26);
- uint32_t x427, uint8_t x428 = addcarryx_u32(0x0, x407, x409);
- uint32_t x430, uint8_t x431 = addcarryx_u32(x428, x410, x412);
- uint32_t x433, uint8_t x434 = addcarryx_u32(x431, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t _ = addcarryx_u32(0x0, x443, x425);
- uint32_t x448, uint8_t x449 = addcarryx_u32(0x0, x384, x406);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x387, x427);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x390, x430);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x404, x445);
- uint32_t x472, uint32_t _ = mulx_u32(x448, 0xf0f0f0f1);
- uint32_t x475, uint32_t x476 = mulx_u32(x472, 0xffffffef);
- uint32_t x478, uint32_t x479 = mulx_u32(x472, 0xffffffff);
- uint32_t x481, uint32_t x482 = mulx_u32(x472, 0xffffffff);
- uint32_t x484, uint32_t x485 = mulx_u32(x472, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x472, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x472, 0xffffffff);
- uint32_t x493, uint8_t x494 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x472, 0x3f);
- uint32_t x496, uint8_t x497 = addcarryx_u32(0x0, x476, x478);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x479, x481);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint8_t x513 = (x512 + x494);
- uint32_t _, uint8_t x516 = addcarryx_u32(0x0, x448, x475);
- uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x451, x496);
- uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x454, x499);
- uint32_t x524, uint8_t x525 = addcarryx_u32(x522, x457, x502);
- uint32_t x527, uint8_t x528 = addcarryx_u32(x525, x460, x505);
- uint32_t x530, uint8_t x531 = addcarryx_u32(x528, x463, x508);
- uint32_t x533, uint8_t x534 = addcarryx_u32(x531, x466, x511);
- uint32_t x536, uint8_t x537 = addcarryx_u32(x534, x469, x513);
- uint8_t x538 = (x537 + x470);
- uint32_t x540, uint32_t x541 = mulx_u32(x13, x17);
- uint32_t x543, uint32_t x544 = mulx_u32(x13, x19);
- uint32_t x546, uint32_t x547 = mulx_u32(x13, x21);
- uint32_t x549, uint32_t x550 = mulx_u32(x13, x23);
- uint32_t x552, uint32_t x553 = mulx_u32(x13, x25);
- uint32_t x555, uint32_t x556 = mulx_u32(x13, x27);
- uint32_t x558, uint32_t x559 = mulx_u32(x13, x26);
- uint32_t x561, uint8_t x562 = addcarryx_u32(0x0, x541, x543);
- uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x544, x546);
- uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x547, x549);
- uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x550, x552);
- uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x553, x555);
- uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x556, x558);
- uint32_t x579, uint8_t _ = addcarryx_u32(0x0, x577, x559);
- uint32_t x582, uint8_t x583 = addcarryx_u32(0x0, x518, x540);
- uint32_t x585, uint8_t x586 = addcarryx_u32(x583, x521, x561);
- uint32_t x588, uint8_t x589 = addcarryx_u32(x586, x524, x564);
- uint32_t x591, uint8_t x592 = addcarryx_u32(x589, x527, x567);
- uint32_t x594, uint8_t x595 = addcarryx_u32(x592, x530, x570);
- uint32_t x597, uint8_t x598 = addcarryx_u32(x595, x533, x573);
- uint32_t x600, uint8_t x601 = addcarryx_u32(x598, x536, x576);
- uint32_t x603, uint8_t x604 = addcarryx_u32(x601, x538, x579);
- uint32_t x606, uint32_t _ = mulx_u32(x582, 0xf0f0f0f1);
- uint32_t x609, uint32_t x610 = mulx_u32(x606, 0xffffffef);
- uint32_t x612, uint32_t x613 = mulx_u32(x606, 0xffffffff);
- uint32_t x615, uint32_t x616 = mulx_u32(x606, 0xffffffff);
- uint32_t x618, uint32_t x619 = mulx_u32(x606, 0xffffffff);
- uint32_t x621, uint32_t x622 = mulx_u32(x606, 0xffffffff);
- uint32_t x624, uint32_t x625 = mulx_u32(x606, 0xffffffff);
- uint32_t x627, uint8_t x628 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x606, 0x3f);
- uint32_t x630, uint8_t x631 = addcarryx_u32(0x0, x610, x612);
- uint32_t x633, uint8_t x634 = addcarryx_u32(x631, x613, x615);
- uint32_t x636, uint8_t x637 = addcarryx_u32(x634, x616, x618);
- uint32_t x639, uint8_t x640 = addcarryx_u32(x637, x619, x621);
- uint32_t x642, uint8_t x643 = addcarryx_u32(x640, x622, x624);
- uint32_t x645, uint8_t x646 = addcarryx_u32(x643, x625, x627);
- uint8_t x647 = (x646 + x628);
- uint32_t _, uint8_t x650 = addcarryx_u32(0x0, x582, x609);
- uint32_t x652, uint8_t x653 = addcarryx_u32(x650, x585, x630);
- uint32_t x655, uint8_t x656 = addcarryx_u32(x653, x588, x633);
- uint32_t x658, uint8_t x659 = addcarryx_u32(x656, x591, x636);
- uint32_t x661, uint8_t x662 = addcarryx_u32(x659, x594, x639);
- uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x597, x642);
- uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x600, x645);
- uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x603, x647);
- uint8_t x672 = (x671 + x604);
- uint32_t x674, uint32_t x675 = mulx_u32(x15, x17);
- uint32_t x677, uint32_t x678 = mulx_u32(x15, x19);
- uint32_t x680, uint32_t x681 = mulx_u32(x15, x21);
- uint32_t x683, uint32_t x684 = mulx_u32(x15, x23);
- uint32_t x686, uint32_t x687 = mulx_u32(x15, x25);
- uint32_t x689, uint32_t x690 = mulx_u32(x15, x27);
- uint32_t x692, uint32_t x693 = mulx_u32(x15, x26);
- uint32_t x695, uint8_t x696 = addcarryx_u32(0x0, x675, x677);
- uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x678, x680);
- uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x681, x683);
- uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x684, x686);
- uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x687, x689);
- uint32_t x710, uint8_t x711 = addcarryx_u32(x708, x690, x692);
- uint32_t x713, uint8_t _ = addcarryx_u32(0x0, x711, x693);
- uint32_t x716, uint8_t x717 = addcarryx_u32(0x0, x652, x674);
- uint32_t x719, uint8_t x720 = addcarryx_u32(x717, x655, x695);
- uint32_t x722, uint8_t x723 = addcarryx_u32(x720, x658, x698);
- uint32_t x725, uint8_t x726 = addcarryx_u32(x723, x661, x701);
- uint32_t x728, uint8_t x729 = addcarryx_u32(x726, x664, x704);
- uint32_t x731, uint8_t x732 = addcarryx_u32(x729, x667, x707);
- uint32_t x734, uint8_t x735 = addcarryx_u32(x732, x670, x710);
- uint32_t x737, uint8_t x738 = addcarryx_u32(x735, x672, x713);
- uint32_t x740, uint32_t _ = mulx_u32(x716, 0xf0f0f0f1);
- uint32_t x743, uint32_t x744 = mulx_u32(x740, 0xffffffef);
- uint32_t x746, uint32_t x747 = mulx_u32(x740, 0xffffffff);
- uint32_t x749, uint32_t x750 = mulx_u32(x740, 0xffffffff);
- uint32_t x752, uint32_t x753 = mulx_u32(x740, 0xffffffff);
- uint32_t x755, uint32_t x756 = mulx_u32(x740, 0xffffffff);
- uint32_t x758, uint32_t x759 = mulx_u32(x740, 0xffffffff);
- uint32_t x761, uint8_t x762 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x740, 0x3f);
- uint32_t x764, uint8_t x765 = addcarryx_u32(0x0, x744, x746);
- uint32_t x767, uint8_t x768 = addcarryx_u32(x765, x747, x749);
- uint32_t x770, uint8_t x771 = addcarryx_u32(x768, x750, x752);
- uint32_t x773, uint8_t x774 = addcarryx_u32(x771, x753, x755);
- uint32_t x776, uint8_t x777 = addcarryx_u32(x774, x756, x758);
- uint32_t x779, uint8_t x780 = addcarryx_u32(x777, x759, x761);
- uint8_t x781 = (x780 + x762);
- uint32_t _, uint8_t x784 = addcarryx_u32(0x0, x716, x743);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x719, x764);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x722, x767);
- uint32_t x792, uint8_t x793 = addcarryx_u32(x790, x725, x770);
- uint32_t x795, uint8_t x796 = addcarryx_u32(x793, x728, x773);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x731, x776);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x734, x779);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x737, x781);
- uint8_t x806 = (x805 + x738);
- uint32_t x808, uint32_t x809 = mulx_u32(x14, x17);
- uint32_t x811, uint32_t x812 = mulx_u32(x14, x19);
- uint32_t x814, uint32_t x815 = mulx_u32(x14, x21);
- uint32_t x817, uint32_t x818 = mulx_u32(x14, x23);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x25);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x27);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x26);
- uint32_t x829, uint8_t x830 = addcarryx_u32(0x0, x809, x811);
- uint32_t x832, uint8_t x833 = addcarryx_u32(x830, x812, x814);
- uint32_t x835, uint8_t x836 = addcarryx_u32(x833, x815, x817);
- uint32_t x838, uint8_t x839 = addcarryx_u32(x836, x818, x820);
- uint32_t x841, uint8_t x842 = addcarryx_u32(x839, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t _ = addcarryx_u32(0x0, x845, x827);
- uint32_t x850, uint8_t x851 = addcarryx_u32(0x0, x786, x808);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x789, x829);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x792, x832);
- uint32_t x859, uint8_t x860 = addcarryx_u32(x857, x795, x835);
- uint32_t x862, uint8_t x863 = addcarryx_u32(x860, x798, x838);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x806, x847);
- uint32_t x874, uint32_t _ = mulx_u32(x850, 0xf0f0f0f1);
- uint32_t x877, uint32_t x878 = mulx_u32(x874, 0xffffffef);
- uint32_t x880, uint32_t x881 = mulx_u32(x874, 0xffffffff);
- uint32_t x883, uint32_t x884 = mulx_u32(x874, 0xffffffff);
- uint32_t x886, uint32_t x887 = mulx_u32(x874, 0xffffffff);
- uint32_t x889, uint32_t x890 = mulx_u32(x874, 0xffffffff);
- uint32_t x892, uint32_t x893 = mulx_u32(x874, 0xffffffff);
- uint32_t x895, uint8_t x896 = Op (Syntax.MulSplit 32 (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x874, 0x3f);
- uint32_t x898, uint8_t x899 = addcarryx_u32(0x0, x878, x880);
- uint32_t x901, uint8_t x902 = addcarryx_u32(x899, x881, x883);
- uint32_t x904, uint8_t x905 = addcarryx_u32(x902, x884, x886);
- uint32_t x907, uint8_t x908 = addcarryx_u32(x905, x887, x889);
- uint32_t x910, uint8_t x911 = addcarryx_u32(x908, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint8_t x915 = (x914 + x896);
- uint32_t _, uint8_t x918 = addcarryx_u32(0x0, x850, x877);
- uint32_t x920, uint8_t x921 = addcarryx_u32(x918, x853, x898);
- uint32_t x923, uint8_t x924 = addcarryx_u32(x921, x856, x901);
- uint32_t x926, uint8_t x927 = addcarryx_u32(x924, x859, x904);
- uint32_t x929, uint8_t x930 = addcarryx_u32(x927, x862, x907);
- uint32_t x932, uint8_t x933 = addcarryx_u32(x930, x865, x910);
- uint32_t x935, uint8_t x936 = addcarryx_u32(x933, x868, x913);
- uint32_t x938, uint8_t x939 = addcarryx_u32(x936, x871, x915);
- uint8_t x940 = (x939 + x872);
- uint32_t x942, uint8_t x943 = subborrow_u32(0x0, x920, 0xffffffef);
- uint32_t x945, uint8_t x946 = subborrow_u32(x943, x923, 0xffffffff);
- uint32_t x948, uint8_t x949 = subborrow_u32(x946, x926, 0xffffffff);
- uint32_t x951, uint8_t x952 = subborrow_u32(x949, x929, 0xffffffff);
- uint32_t x954, uint8_t x955 = subborrow_u32(x952, x932, 0xffffffff);
- uint32_t x957, uint8_t x958 = subborrow_u32(x955, x935, 0xffffffff);
- uint32_t x960, uint8_t x961 = subborrow_u32(x958, x938, 0x3f);
- uint32_t _, uint8_t x964 = subborrow_u32(x961, x940, 0x0);
- uint32_t x965 = cmovznz(x964, x960, x938);
- uint32_t x966 = cmovznz(x964, x957, x935);
- uint32_t x967 = cmovznz(x964, x954, x932);
- uint32_t x968 = cmovznz(x964, x951, x929);
- uint32_t x969 = cmovznz(x964, x948, x926);
- uint32_t x970 = cmovznz(x964, x945, x923);
- uint32_t x971 = cmovznz(x964, x942, x920);
- return (x965, x966, x967, x968, x969, x970, x971))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e198m17/femulDisplay.v b/src/Specific/montgomery32_2e198m17/femulDisplay.v
deleted file mode 100644
index bff99aa19..000000000
--- a/src/Specific/montgomery32_2e198m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e198m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e198m17/fenz.c b/src/Specific/montgomery32_2e198m17/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e198m17/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e198m17/fenz.v b/src/Specific/montgomery32_2e198m17/fenz.v
deleted file mode 100644
index b729372aa..000000000
--- a/src/Specific/montgomery32_2e198m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e198m17/fenzDisplay.log b/src/Specific/montgomery32_2e198m17/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e198m17/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e198m17/fenzDisplay.v b/src/Specific/montgomery32_2e198m17/fenzDisplay.v
deleted file mode 100644
index 65a94c686..000000000
--- a/src/Specific/montgomery32_2e198m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e198m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e198m17/feopp.v b/src/Specific/montgomery32_2e198m17/feopp.v
deleted file mode 100644
index 6fecd7de8..000000000
--- a/src/Specific/montgomery32_2e198m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e198m17/feoppDisplay.log b/src/Specific/montgomery32_2e198m17/feoppDisplay.log
deleted file mode 100644
index d5bd84fd5..000000000
--- a/src/Specific/montgomery32_2e198m17/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffffef);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint8_t x59 = ((uint8_t)x34 & 0x3f);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e198m17/feoppDisplay.v b/src/Specific/montgomery32_2e198m17/feoppDisplay.v
deleted file mode 100644
index ca60ae061..000000000
--- a/src/Specific/montgomery32_2e198m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e198m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e198m17/fesquare.c b/src/Specific/montgomery32_2e198m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e198m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e198m17/fesub.v b/src/Specific/montgomery32_2e198m17/fesub.v
deleted file mode 100644
index 97b88ef38..000000000
--- a/src/Specific/montgomery32_2e198m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e198m17/fesubDisplay.log b/src/Specific/montgomery32_2e198m17/fesubDisplay.log
deleted file mode 100644
index 6fe3c4d4c..000000000
--- a/src/Specific/montgomery32_2e198m17/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffffef);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint8_t x74 = ((uint8_t)x49 & 0x3f);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e198m17/fesubDisplay.v b/src/Specific/montgomery32_2e198m17/fesubDisplay.v
deleted file mode 100644
index 78e810233..000000000
--- a/src/Specific/montgomery32_2e198m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e198m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e198m17/CurveParameters.v b/src/Specific/montgomery32_2e198m17_7limbs/CurveParameters.v
index 18f056404..18f056404 100644
--- a/src/Specific/montgomery32_2e198m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e198m17_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/Synthesis.v b/src/Specific/montgomery32_2e198m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..82d2c10f4
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e198m17/compiler.sh b/src/Specific/montgomery32_2e198m17_7limbs/compiler.sh
index ead4fdde5..ead4fdde5 100755
--- a/src/Specific/montgomery32_2e198m17/compiler.sh
+++ b/src/Specific/montgomery32_2e198m17_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e198m17/compilerxx.sh b/src/Specific/montgomery32_2e198m17_7limbs/compilerxx.sh
index 422b0e509..422b0e509 100755
--- a/src/Specific/montgomery32_2e198m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e198m17_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feadd.v b/src/Specific/montgomery32_2e198m17_7limbs/feadd.v
new file mode 100644
index 000000000..efb274337
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..4f439f46d
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/femul.v b/src/Specific/montgomery32_2e198m17_7limbs/femul.v
new file mode 100644
index 000000000..674f32cbd
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e198m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..37973475b
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fenz.v b/src/Specific/montgomery32_2e198m17_7limbs/fenz.v
new file mode 100644
index 000000000..c0bbad68e
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..98f33ecd7
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feopp.v b/src/Specific/montgomery32_2e198m17_7limbs/feopp.v
new file mode 100644
index 000000000..95f7cc564
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e198m17_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..c30d38d85
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fesub.v b/src/Specific/montgomery32_2e198m17_7limbs/fesub.v
new file mode 100644
index 000000000..c51b616e8
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e198m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..42d58f836
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e198m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e198m17/py_interpreter.sh b/src/Specific/montgomery32_2e198m17_7limbs/py_interpreter.sh
index 46ee6ade2..46ee6ade2 100755
--- a/src/Specific/montgomery32_2e198m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e198m17_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/Synthesis.v b/src/Specific/montgomery32_2e205m45x2e198m1/Synthesis.v
deleted file mode 100644
index cbcef2a10..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feadd.c b/src/Specific/montgomery32_2e205m45x2e198m1/feadd.c
deleted file mode 100644
index b879f8a35..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffff, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x14bf, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feadd.v b/src/Specific/montgomery32_2e205m45x2e198m1/feadd.v
deleted file mode 100644
index d86390d7e..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.log b/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.log
deleted file mode 100644
index c0d73efa6..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffff);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x14bf);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.v
deleted file mode 100644
index 4c141eaa3..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/femul.v b/src/Specific/montgomery32_2e205m45x2e198m1/femul.v
deleted file mode 100644
index eb03610f7..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.log b/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.log
deleted file mode 100644
index 22a0be41c..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.log
+++ /dev/null
@@ -1,328 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t x72 = mulx_u32(x29, 0xffffffff);
- uint32_t x74, uint32_t x75 = mulx_u32(x29, 0xffffffff);
- uint32_t x77, uint32_t x78 = mulx_u32(x29, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x29, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x29, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x29, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x29, 0x14bf);
- uint32_t x92, uint8_t x93 = addcarryx_u32(0x0, x72, x74);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t _ = addcarryx_u32(0x0, x108, x90);
- uint32_t _, uint8_t x114 = addcarryx_u32(0x0, x29, x71);
- uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x50, x92);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x53, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x56, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x59, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x62, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x65, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x68, x110);
- uint32_t x137, uint32_t x138 = mulx_u32(x7, x17);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x19);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x21);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x23);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x25);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x27);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x26);
- uint32_t x158, uint8_t x159 = addcarryx_u32(0x0, x138, x140);
- uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t _ = addcarryx_u32(0x0, x174, x156);
- uint32_t x179, uint8_t x180 = addcarryx_u32(0x0, x116, x137);
- uint32_t x182, uint8_t x183 = addcarryx_u32(x180, x119, x158);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x135, x176);
- uint32_t x203, uint32_t x204 = mulx_u32(x179, 0xffffffff);
- uint32_t x206, uint32_t x207 = mulx_u32(x179, 0xffffffff);
- uint32_t x209, uint32_t x210 = mulx_u32(x179, 0xffffffff);
- uint32_t x212, uint32_t x213 = mulx_u32(x179, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x179, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x179, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x179, 0x14bf);
- uint32_t x224, uint8_t x225 = addcarryx_u32(0x0, x204, x206);
- uint32_t x227, uint8_t x228 = addcarryx_u32(x225, x207, x209);
- uint32_t x230, uint8_t x231 = addcarryx_u32(x228, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t _ = addcarryx_u32(0x0, x240, x222);
- uint32_t _, uint8_t x246 = addcarryx_u32(0x0, x179, x203);
- uint32_t x248, uint8_t x249 = addcarryx_u32(x246, x182, x224);
- uint32_t x251, uint8_t x252 = addcarryx_u32(x249, x185, x227);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x188, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x191, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x194, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x197, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x200, x242);
- uint8_t x268 = (x267 + x201);
- uint32_t x270, uint32_t x271 = mulx_u32(x9, x17);
- uint32_t x273, uint32_t x274 = mulx_u32(x9, x19);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x21);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x23);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x25);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x27);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x26);
- uint32_t x291, uint8_t x292 = addcarryx_u32(0x0, x271, x273);
- uint32_t x294, uint8_t x295 = addcarryx_u32(x292, x274, x276);
- uint32_t x297, uint8_t x298 = addcarryx_u32(x295, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t _ = addcarryx_u32(0x0, x307, x289);
- uint32_t x312, uint8_t x313 = addcarryx_u32(0x0, x248, x270);
- uint32_t x315, uint8_t x316 = addcarryx_u32(x313, x251, x291);
- uint32_t x318, uint8_t x319 = addcarryx_u32(x316, x254, x294);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x268, x309);
- uint32_t x336, uint32_t x337 = mulx_u32(x312, 0xffffffff);
- uint32_t x339, uint32_t x340 = mulx_u32(x312, 0xffffffff);
- uint32_t x342, uint32_t x343 = mulx_u32(x312, 0xffffffff);
- uint32_t x345, uint32_t x346 = mulx_u32(x312, 0xffffffff);
- uint32_t x348, uint32_t x349 = mulx_u32(x312, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x312, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x312, 0x14bf);
- uint32_t x357, uint8_t x358 = addcarryx_u32(0x0, x337, x339);
- uint32_t x360, uint8_t x361 = addcarryx_u32(x358, x340, x342);
- uint32_t x363, uint8_t x364 = addcarryx_u32(x361, x343, x345);
- uint32_t x366, uint8_t x367 = addcarryx_u32(x364, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t _ = addcarryx_u32(0x0, x373, x355);
- uint32_t _, uint8_t x379 = addcarryx_u32(0x0, x312, x336);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x315, x357);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x318, x360);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x321, x363);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x324, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x327, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x330, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x333, x375);
- uint8_t x401 = (x400 + x334);
- uint32_t x403, uint32_t x404 = mulx_u32(x11, x17);
- uint32_t x406, uint32_t x407 = mulx_u32(x11, x19);
- uint32_t x409, uint32_t x410 = mulx_u32(x11, x21);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x23);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x25);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x27);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x26);
- uint32_t x424, uint8_t x425 = addcarryx_u32(0x0, x404, x406);
- uint32_t x427, uint8_t x428 = addcarryx_u32(x425, x407, x409);
- uint32_t x430, uint8_t x431 = addcarryx_u32(x428, x410, x412);
- uint32_t x433, uint8_t x434 = addcarryx_u32(x431, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t _ = addcarryx_u32(0x0, x440, x422);
- uint32_t x445, uint8_t x446 = addcarryx_u32(0x0, x381, x403);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x384, x424);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x387, x427);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x390, x430);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x401, x442);
- uint32_t x469, uint32_t x470 = mulx_u32(x445, 0xffffffff);
- uint32_t x472, uint32_t x473 = mulx_u32(x445, 0xffffffff);
- uint32_t x475, uint32_t x476 = mulx_u32(x445, 0xffffffff);
- uint32_t x478, uint32_t x479 = mulx_u32(x445, 0xffffffff);
- uint32_t x481, uint32_t x482 = mulx_u32(x445, 0xffffffff);
- uint32_t x484, uint32_t x485 = mulx_u32(x445, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x445, 0x14bf);
- uint32_t x490, uint8_t x491 = addcarryx_u32(0x0, x470, x472);
- uint32_t x493, uint8_t x494 = addcarryx_u32(x491, x473, x475);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x476, x478);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x479, x481);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x488);
- uint32_t _, uint8_t x512 = addcarryx_u32(0x0, x445, x469);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x448, x490);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x451, x493);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x454, x496);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x457, x499);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x460, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x463, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x466, x508);
- uint8_t x534 = (x533 + x467);
- uint32_t x536, uint32_t x537 = mulx_u32(x13, x17);
- uint32_t x539, uint32_t x540 = mulx_u32(x13, x19);
- uint32_t x542, uint32_t x543 = mulx_u32(x13, x21);
- uint32_t x545, uint32_t x546 = mulx_u32(x13, x23);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x25);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x27);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x26);
- uint32_t x557, uint8_t x558 = addcarryx_u32(0x0, x537, x539);
- uint32_t x560, uint8_t x561 = addcarryx_u32(x558, x540, x542);
- uint32_t x563, uint8_t x564 = addcarryx_u32(x561, x543, x545);
- uint32_t x566, uint8_t x567 = addcarryx_u32(x564, x546, x548);
- uint32_t x569, uint8_t x570 = addcarryx_u32(x567, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t _ = addcarryx_u32(0x0, x573, x555);
- uint32_t x578, uint8_t x579 = addcarryx_u32(0x0, x514, x536);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x517, x557);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x520, x560);
- uint32_t x587, uint8_t x588 = addcarryx_u32(x585, x523, x563);
- uint32_t x590, uint8_t x591 = addcarryx_u32(x588, x526, x566);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x534, x575);
- uint32_t x602, uint32_t x603 = mulx_u32(x578, 0xffffffff);
- uint32_t x605, uint32_t x606 = mulx_u32(x578, 0xffffffff);
- uint32_t x608, uint32_t x609 = mulx_u32(x578, 0xffffffff);
- uint32_t x611, uint32_t x612 = mulx_u32(x578, 0xffffffff);
- uint32_t x614, uint32_t x615 = mulx_u32(x578, 0xffffffff);
- uint32_t x617, uint32_t x618 = mulx_u32(x578, 0xffffffff);
- uint32_t x620, uint32_t x621 = mulx_u32(x578, 0x14bf);
- uint32_t x623, uint8_t x624 = addcarryx_u32(0x0, x603, x605);
- uint32_t x626, uint8_t x627 = addcarryx_u32(x624, x606, x608);
- uint32_t x629, uint8_t x630 = addcarryx_u32(x627, x609, x611);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x612, x614);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x615, x617);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x618, x620);
- uint32_t x641, uint8_t _ = addcarryx_u32(0x0, x639, x621);
- uint32_t _, uint8_t x645 = addcarryx_u32(0x0, x578, x602);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x581, x623);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x584, x626);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x587, x629);
- uint32_t x656, uint8_t x657 = addcarryx_u32(x654, x590, x632);
- uint32_t x659, uint8_t x660 = addcarryx_u32(x657, x593, x635);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x596, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x599, x641);
- uint8_t x667 = (x666 + x600);
- uint32_t x669, uint32_t x670 = mulx_u32(x15, x17);
- uint32_t x672, uint32_t x673 = mulx_u32(x15, x19);
- uint32_t x675, uint32_t x676 = mulx_u32(x15, x21);
- uint32_t x678, uint32_t x679 = mulx_u32(x15, x23);
- uint32_t x681, uint32_t x682 = mulx_u32(x15, x25);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x27);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x26);
- uint32_t x690, uint8_t x691 = addcarryx_u32(0x0, x670, x672);
- uint32_t x693, uint8_t x694 = addcarryx_u32(x691, x673, x675);
- uint32_t x696, uint8_t x697 = addcarryx_u32(x694, x676, x678);
- uint32_t x699, uint8_t x700 = addcarryx_u32(x697, x679, x681);
- uint32_t x702, uint8_t x703 = addcarryx_u32(x700, x682, x684);
- uint32_t x705, uint8_t x706 = addcarryx_u32(x703, x685, x687);
- uint32_t x708, uint8_t _ = addcarryx_u32(0x0, x706, x688);
- uint32_t x711, uint8_t x712 = addcarryx_u32(0x0, x647, x669);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x650, x690);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x653, x693);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x656, x696);
- uint32_t x723, uint8_t x724 = addcarryx_u32(x721, x659, x699);
- uint32_t x726, uint8_t x727 = addcarryx_u32(x724, x662, x702);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x667, x708);
- uint32_t x735, uint32_t x736 = mulx_u32(x711, 0xffffffff);
- uint32_t x738, uint32_t x739 = mulx_u32(x711, 0xffffffff);
- uint32_t x741, uint32_t x742 = mulx_u32(x711, 0xffffffff);
- uint32_t x744, uint32_t x745 = mulx_u32(x711, 0xffffffff);
- uint32_t x747, uint32_t x748 = mulx_u32(x711, 0xffffffff);
- uint32_t x750, uint32_t x751 = mulx_u32(x711, 0xffffffff);
- uint32_t x753, uint32_t x754 = mulx_u32(x711, 0x14bf);
- uint32_t x756, uint8_t x757 = addcarryx_u32(0x0, x736, x738);
- uint32_t x759, uint8_t x760 = addcarryx_u32(x757, x739, x741);
- uint32_t x762, uint8_t x763 = addcarryx_u32(x760, x742, x744);
- uint32_t x765, uint8_t x766 = addcarryx_u32(x763, x745, x747);
- uint32_t x768, uint8_t x769 = addcarryx_u32(x766, x748, x750);
- uint32_t x771, uint8_t x772 = addcarryx_u32(x769, x751, x753);
- uint32_t x774, uint8_t _ = addcarryx_u32(0x0, x772, x754);
- uint32_t _, uint8_t x778 = addcarryx_u32(0x0, x711, x735);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x714, x756);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x717, x759);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x720, x762);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x723, x765);
- uint32_t x792, uint8_t x793 = addcarryx_u32(x790, x726, x768);
- uint32_t x795, uint8_t x796 = addcarryx_u32(x793, x729, x771);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x732, x774);
- uint8_t x800 = (x799 + x733);
- uint32_t x802, uint32_t x803 = mulx_u32(x14, x17);
- uint32_t x805, uint32_t x806 = mulx_u32(x14, x19);
- uint32_t x808, uint32_t x809 = mulx_u32(x14, x21);
- uint32_t x811, uint32_t x812 = mulx_u32(x14, x23);
- uint32_t x814, uint32_t x815 = mulx_u32(x14, x25);
- uint32_t x817, uint32_t x818 = mulx_u32(x14, x27);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x26);
- uint32_t x823, uint8_t x824 = addcarryx_u32(0x0, x803, x805);
- uint32_t x826, uint8_t x827 = addcarryx_u32(x824, x806, x808);
- uint32_t x829, uint8_t x830 = addcarryx_u32(x827, x809, x811);
- uint32_t x832, uint8_t x833 = addcarryx_u32(x830, x812, x814);
- uint32_t x835, uint8_t x836 = addcarryx_u32(x833, x815, x817);
- uint32_t x838, uint8_t x839 = addcarryx_u32(x836, x818, x820);
- uint32_t x841, uint8_t _ = addcarryx_u32(0x0, x839, x821);
- uint32_t x844, uint8_t x845 = addcarryx_u32(0x0, x780, x802);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x783, x823);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x786, x826);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x789, x829);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x792, x832);
- uint32_t x859, uint8_t x860 = addcarryx_u32(x857, x795, x835);
- uint32_t x862, uint8_t x863 = addcarryx_u32(x860, x798, x838);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x800, x841);
- uint32_t x868, uint32_t x869 = mulx_u32(x844, 0xffffffff);
- uint32_t x871, uint32_t x872 = mulx_u32(x844, 0xffffffff);
- uint32_t x874, uint32_t x875 = mulx_u32(x844, 0xffffffff);
- uint32_t x877, uint32_t x878 = mulx_u32(x844, 0xffffffff);
- uint32_t x880, uint32_t x881 = mulx_u32(x844, 0xffffffff);
- uint32_t x883, uint32_t x884 = mulx_u32(x844, 0xffffffff);
- uint32_t x886, uint32_t x887 = mulx_u32(x844, 0x14bf);
- uint32_t x889, uint8_t x890 = addcarryx_u32(0x0, x869, x871);
- uint32_t x892, uint8_t x893 = addcarryx_u32(x890, x872, x874);
- uint32_t x895, uint8_t x896 = addcarryx_u32(x893, x875, x877);
- uint32_t x898, uint8_t x899 = addcarryx_u32(x896, x878, x880);
- uint32_t x901, uint8_t x902 = addcarryx_u32(x899, x881, x883);
- uint32_t x904, uint8_t x905 = addcarryx_u32(x902, x884, x886);
- uint32_t x907, uint8_t _ = addcarryx_u32(0x0, x905, x887);
- uint32_t _, uint8_t x911 = addcarryx_u32(0x0, x844, x868);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x847, x889);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x850, x892);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x853, x895);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x856, x898);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x859, x901);
- uint32_t x928, uint8_t x929 = addcarryx_u32(x926, x862, x904);
- uint32_t x931, uint8_t x932 = addcarryx_u32(x929, x865, x907);
- uint8_t x933 = (x932 + x866);
- uint32_t x935, uint8_t x936 = subborrow_u32(0x0, x913, 0xffffffff);
- uint32_t x938, uint8_t x939 = subborrow_u32(x936, x916, 0xffffffff);
- uint32_t x941, uint8_t x942 = subborrow_u32(x939, x919, 0xffffffff);
- uint32_t x944, uint8_t x945 = subborrow_u32(x942, x922, 0xffffffff);
- uint32_t x947, uint8_t x948 = subborrow_u32(x945, x925, 0xffffffff);
- uint32_t x950, uint8_t x951 = subborrow_u32(x948, x928, 0xffffffff);
- uint32_t x953, uint8_t x954 = subborrow_u32(x951, x931, 0x14bf);
- uint32_t _, uint8_t x957 = subborrow_u32(x954, x933, 0x0);
- uint32_t x958 = cmovznz(x957, x953, x931);
- uint32_t x959 = cmovznz(x957, x950, x928);
- uint32_t x960 = cmovznz(x957, x947, x925);
- uint32_t x961 = cmovznz(x957, x944, x922);
- uint32_t x962 = cmovznz(x957, x941, x919);
- uint32_t x963 = cmovznz(x957, x938, x916);
- uint32_t x964 = cmovznz(x957, x935, x913);
- return (x958, x959, x960, x961, x962, x963, x964))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.v
deleted file mode 100644
index f51bb90df..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fenz.c b/src/Specific/montgomery32_2e205m45x2e198m1/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fenz.v b/src/Specific/montgomery32_2e205m45x2e198m1/fenz.v
deleted file mode 100644
index dde9441c0..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.log b/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.v
deleted file mode 100644
index 44965faef..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feopp.v b/src/Specific/montgomery32_2e205m45x2e198m1/feopp.v
deleted file mode 100644
index 0c0ffd4b8..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.log b/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.log
deleted file mode 100644
index e61d0e1a8..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffffff);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0x14bf);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.v
deleted file mode 100644
index eba98ca57..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fesquare.c b/src/Specific/montgomery32_2e205m45x2e198m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fesub.v b/src/Specific/montgomery32_2e205m45x2e198m1/fesub.v
deleted file mode 100644
index 2b2f35c4d..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.log b/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.log
deleted file mode 100644
index ac03bd3c7..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffffff);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0x14bf);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.v
deleted file mode 100644
index 643f85d2d..000000000
--- a/src/Specific/montgomery32_2e205m45x2e198m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/CurveParameters.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/CurveParameters.v
index d3ff2f8a7..d3ff2f8a7 100644
--- a/src/Specific/montgomery32_2e205m45x2e198m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/Synthesis.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/Synthesis.v
new file mode 100644
index 000000000..3cb786103
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/compiler.sh b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/compiler.sh
index e1b5bf36f..e1b5bf36f 100755
--- a/src/Specific/montgomery32_2e205m45x2e198m1/compiler.sh
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/compilerxx.sh b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/compilerxx.sh
index 857cfccbc..857cfccbc 100755
--- a/src/Specific/montgomery32_2e205m45x2e198m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feadd.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feadd.v
new file mode 100644
index 000000000..10194686a
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..a632bd4a9
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femul.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femul.v
new file mode 100644
index 000000000..18bdd83ea
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..217d15e03
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenz.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenz.v
new file mode 100644
index 000000000..ea84cae2d
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..682489513
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feopp.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feopp.v
new file mode 100644
index 000000000..5ede6a556
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..0f9925540
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesub.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesub.v
new file mode 100644
index 000000000..329fb334f
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..b248e8969
--- /dev/null
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e205m45x2e198m1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e205m45x2e198m1/py_interpreter.sh b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/py_interpreter.sh
index 3649864ca..3649864ca 100755
--- a/src/Specific/montgomery32_2e205m45x2e198m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e205m45x2e198m1_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e206m5/Synthesis.v b/src/Specific/montgomery32_2e206m5/Synthesis.v
deleted file mode 100644
index 4648fe5cd..000000000
--- a/src/Specific/montgomery32_2e206m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e206m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e206m5/feadd.c b/src/Specific/montgomery32_2e206m5/feadd.c
deleted file mode 100644
index e6acc71b8..000000000
--- a/src/Specific/montgomery32_2e206m5/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xfffffffb, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3fff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e206m5/feadd.v b/src/Specific/montgomery32_2e206m5/feadd.v
deleted file mode 100644
index 98d61d0cd..000000000
--- a/src/Specific/montgomery32_2e206m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e206m5/feaddDisplay.log b/src/Specific/montgomery32_2e206m5/feaddDisplay.log
deleted file mode 100644
index f74236c7a..000000000
--- a/src/Specific/montgomery32_2e206m5/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xfffffffb);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3fff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e206m5/feaddDisplay.v b/src/Specific/montgomery32_2e206m5/feaddDisplay.v
deleted file mode 100644
index d141f29d2..000000000
--- a/src/Specific/montgomery32_2e206m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e206m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e206m5/femul.v b/src/Specific/montgomery32_2e206m5/femul.v
deleted file mode 100644
index 129e60db8..000000000
--- a/src/Specific/montgomery32_2e206m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e206m5/femulDisplay.log b/src/Specific/montgomery32_2e206m5/femulDisplay.log
deleted file mode 100644
index 04f2d82a0..000000000
--- a/src/Specific/montgomery32_2e206m5/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xcccccccd);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xfffffffb);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint32_t x93 = mulx_u32(x71, 0x3fff);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint32_t x113, uint8_t _ = addcarryx_u32(0x0, x111, x93);
- uint32_t _, uint8_t x117 = addcarryx_u32(0x0, x29, x74);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x50, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x53, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x56, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x59, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x62, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x65, x110);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x68, x113);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x17);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x19);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x21);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x23);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x25);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x27);
- uint32_t x158, uint32_t x159 = mulx_u32(x7, x26);
- uint32_t x161, uint8_t x162 = addcarryx_u32(0x0, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t x177 = addcarryx_u32(x174, x156, x158);
- uint32_t x179, uint8_t _ = addcarryx_u32(0x0, x177, x159);
- uint32_t x182, uint8_t x183 = addcarryx_u32(0x0, x119, x140);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x137, x176);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x138, x179);
- uint32_t x206, uint32_t _ = mulx_u32(x182, 0xcccccccd);
- uint32_t x209, uint32_t x210 = mulx_u32(x206, 0xfffffffb);
- uint32_t x212, uint32_t x213 = mulx_u32(x206, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x206, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x206, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x206, 0xffffffff);
- uint32_t x224, uint32_t x225 = mulx_u32(x206, 0xffffffff);
- uint32_t x227, uint32_t x228 = mulx_u32(x206, 0x3fff);
- uint32_t x230, uint8_t x231 = addcarryx_u32(0x0, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t x243 = addcarryx_u32(x240, x222, x224);
- uint32_t x245, uint8_t x246 = addcarryx_u32(x243, x225, x227);
- uint32_t x248, uint8_t _ = addcarryx_u32(0x0, x246, x228);
- uint32_t _, uint8_t x252 = addcarryx_u32(0x0, x182, x209);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x185, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x188, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x191, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x194, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x197, x242);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x200, x245);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x17);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x19);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x21);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x23);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x25);
- uint32_t x291, uint32_t x292 = mulx_u32(x9, x27);
- uint32_t x294, uint32_t x295 = mulx_u32(x9, x26);
- uint32_t x297, uint8_t x298 = addcarryx_u32(0x0, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t x310 = addcarryx_u32(x307, x289, x291);
- uint32_t x312, uint8_t x313 = addcarryx_u32(x310, x292, x294);
- uint32_t x315, uint8_t _ = addcarryx_u32(0x0, x313, x295);
- uint32_t x318, uint8_t x319 = addcarryx_u32(0x0, x254, x276);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x269, x309);
- uint32_t x336, uint8_t x337 = addcarryx_u32(x334, x272, x312);
- uint32_t x339, uint8_t x340 = addcarryx_u32(x337, x274, x315);
- uint32_t x342, uint32_t _ = mulx_u32(x318, 0xcccccccd);
- uint32_t x345, uint32_t x346 = mulx_u32(x342, 0xfffffffb);
- uint32_t x348, uint32_t x349 = mulx_u32(x342, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x342, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x342, 0xffffffff);
- uint32_t x357, uint32_t x358 = mulx_u32(x342, 0xffffffff);
- uint32_t x360, uint32_t x361 = mulx_u32(x342, 0xffffffff);
- uint32_t x363, uint32_t x364 = mulx_u32(x342, 0x3fff);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x355, x357);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x358, x360);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x361, x363);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x364);
- uint32_t _, uint8_t x388 = addcarryx_u32(0x0, x318, x345);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x321, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x324, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x327, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x330, x375);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x333, x378);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x336, x381);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x17);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x19);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x21);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x23);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x25);
- uint32_t x427, uint32_t x428 = mulx_u32(x11, x27);
- uint32_t x430, uint32_t x431 = mulx_u32(x11, x26);
- uint32_t x433, uint8_t x434 = addcarryx_u32(0x0, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t x446 = addcarryx_u32(x443, x425, x427);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x428, x430);
- uint32_t x451, uint8_t _ = addcarryx_u32(0x0, x449, x431);
- uint32_t x454, uint8_t x455 = addcarryx_u32(0x0, x390, x412);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x405, x445);
- uint32_t x472, uint8_t x473 = addcarryx_u32(x470, x408, x448);
- uint32_t x475, uint8_t x476 = addcarryx_u32(x473, x410, x451);
- uint32_t x478, uint32_t _ = mulx_u32(x454, 0xcccccccd);
- uint32_t x481, uint32_t x482 = mulx_u32(x478, 0xfffffffb);
- uint32_t x484, uint32_t x485 = mulx_u32(x478, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x478, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x478, 0xffffffff);
- uint32_t x493, uint32_t x494 = mulx_u32(x478, 0xffffffff);
- uint32_t x496, uint32_t x497 = mulx_u32(x478, 0xffffffff);
- uint32_t x499, uint32_t x500 = mulx_u32(x478, 0x3fff);
- uint32_t x502, uint8_t x503 = addcarryx_u32(0x0, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t _ = addcarryx_u32(0x0, x518, x500);
- uint32_t _, uint8_t x524 = addcarryx_u32(0x0, x454, x481);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x457, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x460, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x463, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x466, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x469, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x472, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x17);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x19);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x21);
- uint32_t x557, uint32_t x558 = mulx_u32(x13, x23);
- uint32_t x560, uint32_t x561 = mulx_u32(x13, x25);
- uint32_t x563, uint32_t x564 = mulx_u32(x13, x27);
- uint32_t x566, uint32_t x567 = mulx_u32(x13, x26);
- uint32_t x569, uint8_t x570 = addcarryx_u32(0x0, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t x576 = addcarryx_u32(x573, x555, x557);
- uint32_t x578, uint8_t x579 = addcarryx_u32(x576, x558, x560);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x561, x563);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x564, x566);
- uint32_t x587, uint8_t _ = addcarryx_u32(0x0, x585, x567);
- uint32_t x590, uint8_t x591 = addcarryx_u32(0x0, x526, x548);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x535, x575);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x538, x578);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x541, x581);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x544, x584);
- uint32_t x611, uint8_t x612 = addcarryx_u32(x609, x546, x587);
- uint32_t x614, uint32_t _ = mulx_u32(x590, 0xcccccccd);
- uint32_t x617, uint32_t x618 = mulx_u32(x614, 0xfffffffb);
- uint32_t x620, uint32_t x621 = mulx_u32(x614, 0xffffffff);
- uint32_t x623, uint32_t x624 = mulx_u32(x614, 0xffffffff);
- uint32_t x626, uint32_t x627 = mulx_u32(x614, 0xffffffff);
- uint32_t x629, uint32_t x630 = mulx_u32(x614, 0xffffffff);
- uint32_t x632, uint32_t x633 = mulx_u32(x614, 0xffffffff);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0x3fff);
- uint32_t x638, uint8_t x639 = addcarryx_u32(0x0, x618, x620);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x621, x623);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x624, x626);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x627, x629);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x630, x632);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x633, x635);
- uint32_t x656, uint8_t _ = addcarryx_u32(0x0, x654, x636);
- uint32_t _, uint8_t x660 = addcarryx_u32(0x0, x590, x617);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x593, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x596, x641);
- uint32_t x668, uint8_t x669 = addcarryx_u32(x666, x599, x644);
- uint32_t x671, uint8_t x672 = addcarryx_u32(x669, x602, x647);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x605, x650);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x608, x653);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x17);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x19);
- uint32_t x690, uint32_t x691 = mulx_u32(x15, x21);
- uint32_t x693, uint32_t x694 = mulx_u32(x15, x23);
- uint32_t x696, uint32_t x697 = mulx_u32(x15, x25);
- uint32_t x699, uint32_t x700 = mulx_u32(x15, x27);
- uint32_t x702, uint32_t x703 = mulx_u32(x15, x26);
- uint32_t x705, uint8_t x706 = addcarryx_u32(0x0, x685, x687);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x688, x690);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x691, x693);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x694, x696);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x697, x699);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x700, x702);
- uint32_t x723, uint8_t _ = addcarryx_u32(0x0, x721, x703);
- uint32_t x726, uint8_t x727 = addcarryx_u32(0x0, x662, x684);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x668, x708);
- uint32_t x735, uint8_t x736 = addcarryx_u32(x733, x671, x711);
- uint32_t x738, uint8_t x739 = addcarryx_u32(x736, x674, x714);
- uint32_t x741, uint8_t x742 = addcarryx_u32(x739, x677, x717);
- uint32_t x744, uint8_t x745 = addcarryx_u32(x742, x680, x720);
- uint32_t x747, uint8_t x748 = addcarryx_u32(x745, x682, x723);
- uint32_t x750, uint32_t _ = mulx_u32(x726, 0xcccccccd);
- uint32_t x753, uint32_t x754 = mulx_u32(x750, 0xfffffffb);
- uint32_t x756, uint32_t x757 = mulx_u32(x750, 0xffffffff);
- uint32_t x759, uint32_t x760 = mulx_u32(x750, 0xffffffff);
- uint32_t x762, uint32_t x763 = mulx_u32(x750, 0xffffffff);
- uint32_t x765, uint32_t x766 = mulx_u32(x750, 0xffffffff);
- uint32_t x768, uint32_t x769 = mulx_u32(x750, 0xffffffff);
- uint32_t x771, uint32_t x772 = mulx_u32(x750, 0x3fff);
- uint32_t x774, uint8_t x775 = addcarryx_u32(0x0, x754, x756);
- uint32_t x777, uint8_t x778 = addcarryx_u32(x775, x757, x759);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x760, x762);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x763, x765);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x766, x768);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x769, x771);
- uint32_t x792, uint8_t _ = addcarryx_u32(0x0, x790, x772);
- uint32_t _, uint8_t x796 = addcarryx_u32(0x0, x726, x753);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x729, x774);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x732, x777);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x735, x780);
- uint32_t x807, uint8_t x808 = addcarryx_u32(x805, x738, x783);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x741, x786);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x744, x789);
- uint32_t x816, uint8_t x817 = addcarryx_u32(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x17);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x19);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x21);
- uint32_t x829, uint32_t x830 = mulx_u32(x14, x23);
- uint32_t x832, uint32_t x833 = mulx_u32(x14, x25);
- uint32_t x835, uint32_t x836 = mulx_u32(x14, x27);
- uint32_t x838, uint32_t x839 = mulx_u32(x14, x26);
- uint32_t x841, uint8_t x842 = addcarryx_u32(0x0, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x827, x829);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x830, x832);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x833, x835);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x836, x838);
- uint32_t x859, uint8_t _ = addcarryx_u32(0x0, x857, x839);
- uint32_t x862, uint8_t x863 = addcarryx_u32(0x0, x798, x820);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x807, x847);
- uint32_t x874, uint8_t x875 = addcarryx_u32(x872, x810, x850);
- uint32_t x877, uint8_t x878 = addcarryx_u32(x875, x813, x853);
- uint32_t x880, uint8_t x881 = addcarryx_u32(x878, x816, x856);
- uint32_t x883, uint8_t x884 = addcarryx_u32(x881, x818, x859);
- uint32_t x886, uint32_t _ = mulx_u32(x862, 0xcccccccd);
- uint32_t x889, uint32_t x890 = mulx_u32(x886, 0xfffffffb);
- uint32_t x892, uint32_t x893 = mulx_u32(x886, 0xffffffff);
- uint32_t x895, uint32_t x896 = mulx_u32(x886, 0xffffffff);
- uint32_t x898, uint32_t x899 = mulx_u32(x886, 0xffffffff);
- uint32_t x901, uint32_t x902 = mulx_u32(x886, 0xffffffff);
- uint32_t x904, uint32_t x905 = mulx_u32(x886, 0xffffffff);
- uint32_t x907, uint32_t x908 = mulx_u32(x886, 0x3fff);
- uint32_t x910, uint8_t x911 = addcarryx_u32(0x0, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x896, x898);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x899, x901);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x902, x904);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x905, x907);
- uint32_t x928, uint8_t _ = addcarryx_u32(0x0, x926, x908);
- uint32_t _, uint8_t x932 = addcarryx_u32(0x0, x862, x889);
- uint32_t x934, uint8_t x935 = addcarryx_u32(x932, x865, x910);
- uint32_t x937, uint8_t x938 = addcarryx_u32(x935, x868, x913);
- uint32_t x940, uint8_t x941 = addcarryx_u32(x938, x871, x916);
- uint32_t x943, uint8_t x944 = addcarryx_u32(x941, x874, x919);
- uint32_t x946, uint8_t x947 = addcarryx_u32(x944, x877, x922);
- uint32_t x949, uint8_t x950 = addcarryx_u32(x947, x880, x925);
- uint32_t x952, uint8_t x953 = addcarryx_u32(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint32_t x956, uint8_t x957 = subborrow_u32(0x0, x934, 0xfffffffb);
- uint32_t x959, uint8_t x960 = subborrow_u32(x957, x937, 0xffffffff);
- uint32_t x962, uint8_t x963 = subborrow_u32(x960, x940, 0xffffffff);
- uint32_t x965, uint8_t x966 = subborrow_u32(x963, x943, 0xffffffff);
- uint32_t x968, uint8_t x969 = subborrow_u32(x966, x946, 0xffffffff);
- uint32_t x971, uint8_t x972 = subborrow_u32(x969, x949, 0xffffffff);
- uint32_t x974, uint8_t x975 = subborrow_u32(x972, x952, 0x3fff);
- uint32_t _, uint8_t x978 = subborrow_u32(x975, x954, 0x0);
- uint32_t x979 = cmovznz(x978, x974, x952);
- uint32_t x980 = cmovznz(x978, x971, x949);
- uint32_t x981 = cmovznz(x978, x968, x946);
- uint32_t x982 = cmovznz(x978, x965, x943);
- uint32_t x983 = cmovznz(x978, x962, x940);
- uint32_t x984 = cmovznz(x978, x959, x937);
- uint32_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e206m5/femulDisplay.v b/src/Specific/montgomery32_2e206m5/femulDisplay.v
deleted file mode 100644
index 275637fb7..000000000
--- a/src/Specific/montgomery32_2e206m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e206m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e206m5/fenz.c b/src/Specific/montgomery32_2e206m5/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e206m5/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e206m5/fenz.v b/src/Specific/montgomery32_2e206m5/fenz.v
deleted file mode 100644
index 2420a3e9c..000000000
--- a/src/Specific/montgomery32_2e206m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e206m5/fenzDisplay.log b/src/Specific/montgomery32_2e206m5/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e206m5/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e206m5/fenzDisplay.v b/src/Specific/montgomery32_2e206m5/fenzDisplay.v
deleted file mode 100644
index ed141e85e..000000000
--- a/src/Specific/montgomery32_2e206m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e206m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e206m5/feopp.v b/src/Specific/montgomery32_2e206m5/feopp.v
deleted file mode 100644
index 216329856..000000000
--- a/src/Specific/montgomery32_2e206m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e206m5/feoppDisplay.log b/src/Specific/montgomery32_2e206m5/feoppDisplay.log
deleted file mode 100644
index ca28b4007..000000000
--- a/src/Specific/montgomery32_2e206m5/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xfffffffb);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0x3fff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e206m5/feoppDisplay.v b/src/Specific/montgomery32_2e206m5/feoppDisplay.v
deleted file mode 100644
index c9d1d23b4..000000000
--- a/src/Specific/montgomery32_2e206m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e206m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e206m5/fesquare.c b/src/Specific/montgomery32_2e206m5/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e206m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e206m5/fesub.v b/src/Specific/montgomery32_2e206m5/fesub.v
deleted file mode 100644
index a27136a5c..000000000
--- a/src/Specific/montgomery32_2e206m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e206m5/fesubDisplay.log b/src/Specific/montgomery32_2e206m5/fesubDisplay.log
deleted file mode 100644
index 0043630c1..000000000
--- a/src/Specific/montgomery32_2e206m5/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xfffffffb);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0x3fff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e206m5/fesubDisplay.v b/src/Specific/montgomery32_2e206m5/fesubDisplay.v
deleted file mode 100644
index d05995cd1..000000000
--- a/src/Specific/montgomery32_2e206m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e206m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e206m5/CurveParameters.v b/src/Specific/montgomery32_2e206m5_7limbs/CurveParameters.v
index 8b51bfd39..8b51bfd39 100644
--- a/src/Specific/montgomery32_2e206m5/CurveParameters.v
+++ b/src/Specific/montgomery32_2e206m5_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/Synthesis.v b/src/Specific/montgomery32_2e206m5_7limbs/Synthesis.v
new file mode 100644
index 000000000..9b3bc72e2
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e206m5/compiler.sh b/src/Specific/montgomery32_2e206m5_7limbs/compiler.sh
index 7655e1656..7655e1656 100755
--- a/src/Specific/montgomery32_2e206m5/compiler.sh
+++ b/src/Specific/montgomery32_2e206m5_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e206m5/compilerxx.sh b/src/Specific/montgomery32_2e206m5_7limbs/compilerxx.sh
index bf7e2f5f6..bf7e2f5f6 100755
--- a/src/Specific/montgomery32_2e206m5/compilerxx.sh
+++ b/src/Specific/montgomery32_2e206m5_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/feadd.v b/src/Specific/montgomery32_2e206m5_7limbs/feadd.v
new file mode 100644
index 000000000..6434293e2
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e206m5_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..b0ca4d037
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/femul.v b/src/Specific/montgomery32_2e206m5_7limbs/femul.v
new file mode 100644
index 000000000..23e7cb039
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e206m5_7limbs/femulDisplay.v
new file mode 100644
index 000000000..9d6840ec4
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/fenz.v b/src/Specific/montgomery32_2e206m5_7limbs/fenz.v
new file mode 100644
index 000000000..9a0255e2a
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e206m5_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..a864da122
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/feopp.v b/src/Specific/montgomery32_2e206m5_7limbs/feopp.v
new file mode 100644
index 000000000..5355aeeec
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e206m5_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..32d119bdd
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/fesub.v b/src/Specific/montgomery32_2e206m5_7limbs/fesub.v
new file mode 100644
index 000000000..a06e68b74
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e206m5_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e206m5_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..781532864
--- /dev/null
+++ b/src/Specific/montgomery32_2e206m5_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e206m5_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e206m5/py_interpreter.sh b/src/Specific/montgomery32_2e206m5_7limbs/py_interpreter.sh
index 8bf66ae1a..8bf66ae1a 100755
--- a/src/Specific/montgomery32_2e206m5/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e206m5_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e212m29/Synthesis.v b/src/Specific/montgomery32_2e212m29/Synthesis.v
deleted file mode 100644
index 8f1fa665c..000000000
--- a/src/Specific/montgomery32_2e212m29/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e212m29.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e212m29/feadd.c b/src/Specific/montgomery32_2e212m29/feadd.c
deleted file mode 100644
index c075f0e44..000000000
--- a/src/Specific/montgomery32_2e212m29/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffe3, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0xfffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e212m29/feadd.v b/src/Specific/montgomery32_2e212m29/feadd.v
deleted file mode 100644
index 1c37eb6e6..000000000
--- a/src/Specific/montgomery32_2e212m29/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e212m29/feaddDisplay.log b/src/Specific/montgomery32_2e212m29/feaddDisplay.log
deleted file mode 100644
index 4eb882853..000000000
--- a/src/Specific/montgomery32_2e212m29/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffe3);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0xfffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e212m29/feaddDisplay.v b/src/Specific/montgomery32_2e212m29/feaddDisplay.v
deleted file mode 100644
index 5e53e4b35..000000000
--- a/src/Specific/montgomery32_2e212m29/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e212m29.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e212m29/femul.v b/src/Specific/montgomery32_2e212m29/femul.v
deleted file mode 100644
index 973c62a7d..000000000
--- a/src/Specific/montgomery32_2e212m29/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e212m29/femulDisplay.log b/src/Specific/montgomery32_2e212m29/femulDisplay.log
deleted file mode 100644
index 6517da193..000000000
--- a/src/Specific/montgomery32_2e212m29/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0x4f72c235);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xffffffe3);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint32_t x93 = mulx_u32(x71, 0xfffff);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint32_t x113, uint8_t _ = addcarryx_u32(0x0, x111, x93);
- uint32_t _, uint8_t x117 = addcarryx_u32(0x0, x29, x74);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x50, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x53, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x56, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x59, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x62, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x65, x110);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x68, x113);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x17);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x19);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x21);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x23);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x25);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x27);
- uint32_t x158, uint32_t x159 = mulx_u32(x7, x26);
- uint32_t x161, uint8_t x162 = addcarryx_u32(0x0, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t x177 = addcarryx_u32(x174, x156, x158);
- uint32_t x179, uint8_t _ = addcarryx_u32(0x0, x177, x159);
- uint32_t x182, uint8_t x183 = addcarryx_u32(0x0, x119, x140);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x137, x176);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x138, x179);
- uint32_t x206, uint32_t _ = mulx_u32(x182, 0x4f72c235);
- uint32_t x209, uint32_t x210 = mulx_u32(x206, 0xffffffe3);
- uint32_t x212, uint32_t x213 = mulx_u32(x206, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x206, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x206, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x206, 0xffffffff);
- uint32_t x224, uint32_t x225 = mulx_u32(x206, 0xffffffff);
- uint32_t x227, uint32_t x228 = mulx_u32(x206, 0xfffff);
- uint32_t x230, uint8_t x231 = addcarryx_u32(0x0, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t x243 = addcarryx_u32(x240, x222, x224);
- uint32_t x245, uint8_t x246 = addcarryx_u32(x243, x225, x227);
- uint32_t x248, uint8_t _ = addcarryx_u32(0x0, x246, x228);
- uint32_t _, uint8_t x252 = addcarryx_u32(0x0, x182, x209);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x185, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x188, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x191, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x194, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x197, x242);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x200, x245);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x17);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x19);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x21);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x23);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x25);
- uint32_t x291, uint32_t x292 = mulx_u32(x9, x27);
- uint32_t x294, uint32_t x295 = mulx_u32(x9, x26);
- uint32_t x297, uint8_t x298 = addcarryx_u32(0x0, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t x310 = addcarryx_u32(x307, x289, x291);
- uint32_t x312, uint8_t x313 = addcarryx_u32(x310, x292, x294);
- uint32_t x315, uint8_t _ = addcarryx_u32(0x0, x313, x295);
- uint32_t x318, uint8_t x319 = addcarryx_u32(0x0, x254, x276);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x269, x309);
- uint32_t x336, uint8_t x337 = addcarryx_u32(x334, x272, x312);
- uint32_t x339, uint8_t x340 = addcarryx_u32(x337, x274, x315);
- uint32_t x342, uint32_t _ = mulx_u32(x318, 0x4f72c235);
- uint32_t x345, uint32_t x346 = mulx_u32(x342, 0xffffffe3);
- uint32_t x348, uint32_t x349 = mulx_u32(x342, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x342, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x342, 0xffffffff);
- uint32_t x357, uint32_t x358 = mulx_u32(x342, 0xffffffff);
- uint32_t x360, uint32_t x361 = mulx_u32(x342, 0xffffffff);
- uint32_t x363, uint32_t x364 = mulx_u32(x342, 0xfffff);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x355, x357);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x358, x360);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x361, x363);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x364);
- uint32_t _, uint8_t x388 = addcarryx_u32(0x0, x318, x345);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x321, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x324, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x327, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x330, x375);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x333, x378);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x336, x381);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x17);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x19);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x21);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x23);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x25);
- uint32_t x427, uint32_t x428 = mulx_u32(x11, x27);
- uint32_t x430, uint32_t x431 = mulx_u32(x11, x26);
- uint32_t x433, uint8_t x434 = addcarryx_u32(0x0, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t x446 = addcarryx_u32(x443, x425, x427);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x428, x430);
- uint32_t x451, uint8_t _ = addcarryx_u32(0x0, x449, x431);
- uint32_t x454, uint8_t x455 = addcarryx_u32(0x0, x390, x412);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x405, x445);
- uint32_t x472, uint8_t x473 = addcarryx_u32(x470, x408, x448);
- uint32_t x475, uint8_t x476 = addcarryx_u32(x473, x410, x451);
- uint32_t x478, uint32_t _ = mulx_u32(x454, 0x4f72c235);
- uint32_t x481, uint32_t x482 = mulx_u32(x478, 0xffffffe3);
- uint32_t x484, uint32_t x485 = mulx_u32(x478, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x478, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x478, 0xffffffff);
- uint32_t x493, uint32_t x494 = mulx_u32(x478, 0xffffffff);
- uint32_t x496, uint32_t x497 = mulx_u32(x478, 0xffffffff);
- uint32_t x499, uint32_t x500 = mulx_u32(x478, 0xfffff);
- uint32_t x502, uint8_t x503 = addcarryx_u32(0x0, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t _ = addcarryx_u32(0x0, x518, x500);
- uint32_t _, uint8_t x524 = addcarryx_u32(0x0, x454, x481);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x457, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x460, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x463, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x466, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x469, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x472, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x17);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x19);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x21);
- uint32_t x557, uint32_t x558 = mulx_u32(x13, x23);
- uint32_t x560, uint32_t x561 = mulx_u32(x13, x25);
- uint32_t x563, uint32_t x564 = mulx_u32(x13, x27);
- uint32_t x566, uint32_t x567 = mulx_u32(x13, x26);
- uint32_t x569, uint8_t x570 = addcarryx_u32(0x0, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t x576 = addcarryx_u32(x573, x555, x557);
- uint32_t x578, uint8_t x579 = addcarryx_u32(x576, x558, x560);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x561, x563);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x564, x566);
- uint32_t x587, uint8_t _ = addcarryx_u32(0x0, x585, x567);
- uint32_t x590, uint8_t x591 = addcarryx_u32(0x0, x526, x548);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x535, x575);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x538, x578);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x541, x581);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x544, x584);
- uint32_t x611, uint8_t x612 = addcarryx_u32(x609, x546, x587);
- uint32_t x614, uint32_t _ = mulx_u32(x590, 0x4f72c235);
- uint32_t x617, uint32_t x618 = mulx_u32(x614, 0xffffffe3);
- uint32_t x620, uint32_t x621 = mulx_u32(x614, 0xffffffff);
- uint32_t x623, uint32_t x624 = mulx_u32(x614, 0xffffffff);
- uint32_t x626, uint32_t x627 = mulx_u32(x614, 0xffffffff);
- uint32_t x629, uint32_t x630 = mulx_u32(x614, 0xffffffff);
- uint32_t x632, uint32_t x633 = mulx_u32(x614, 0xffffffff);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0xfffff);
- uint32_t x638, uint8_t x639 = addcarryx_u32(0x0, x618, x620);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x621, x623);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x624, x626);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x627, x629);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x630, x632);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x633, x635);
- uint32_t x656, uint8_t _ = addcarryx_u32(0x0, x654, x636);
- uint32_t _, uint8_t x660 = addcarryx_u32(0x0, x590, x617);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x593, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x596, x641);
- uint32_t x668, uint8_t x669 = addcarryx_u32(x666, x599, x644);
- uint32_t x671, uint8_t x672 = addcarryx_u32(x669, x602, x647);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x605, x650);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x608, x653);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x17);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x19);
- uint32_t x690, uint32_t x691 = mulx_u32(x15, x21);
- uint32_t x693, uint32_t x694 = mulx_u32(x15, x23);
- uint32_t x696, uint32_t x697 = mulx_u32(x15, x25);
- uint32_t x699, uint32_t x700 = mulx_u32(x15, x27);
- uint32_t x702, uint32_t x703 = mulx_u32(x15, x26);
- uint32_t x705, uint8_t x706 = addcarryx_u32(0x0, x685, x687);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x688, x690);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x691, x693);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x694, x696);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x697, x699);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x700, x702);
- uint32_t x723, uint8_t _ = addcarryx_u32(0x0, x721, x703);
- uint32_t x726, uint8_t x727 = addcarryx_u32(0x0, x662, x684);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x668, x708);
- uint32_t x735, uint8_t x736 = addcarryx_u32(x733, x671, x711);
- uint32_t x738, uint8_t x739 = addcarryx_u32(x736, x674, x714);
- uint32_t x741, uint8_t x742 = addcarryx_u32(x739, x677, x717);
- uint32_t x744, uint8_t x745 = addcarryx_u32(x742, x680, x720);
- uint32_t x747, uint8_t x748 = addcarryx_u32(x745, x682, x723);
- uint32_t x750, uint32_t _ = mulx_u32(x726, 0x4f72c235);
- uint32_t x753, uint32_t x754 = mulx_u32(x750, 0xffffffe3);
- uint32_t x756, uint32_t x757 = mulx_u32(x750, 0xffffffff);
- uint32_t x759, uint32_t x760 = mulx_u32(x750, 0xffffffff);
- uint32_t x762, uint32_t x763 = mulx_u32(x750, 0xffffffff);
- uint32_t x765, uint32_t x766 = mulx_u32(x750, 0xffffffff);
- uint32_t x768, uint32_t x769 = mulx_u32(x750, 0xffffffff);
- uint32_t x771, uint32_t x772 = mulx_u32(x750, 0xfffff);
- uint32_t x774, uint8_t x775 = addcarryx_u32(0x0, x754, x756);
- uint32_t x777, uint8_t x778 = addcarryx_u32(x775, x757, x759);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x760, x762);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x763, x765);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x766, x768);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x769, x771);
- uint32_t x792, uint8_t _ = addcarryx_u32(0x0, x790, x772);
- uint32_t _, uint8_t x796 = addcarryx_u32(0x0, x726, x753);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x729, x774);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x732, x777);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x735, x780);
- uint32_t x807, uint8_t x808 = addcarryx_u32(x805, x738, x783);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x741, x786);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x744, x789);
- uint32_t x816, uint8_t x817 = addcarryx_u32(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x17);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x19);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x21);
- uint32_t x829, uint32_t x830 = mulx_u32(x14, x23);
- uint32_t x832, uint32_t x833 = mulx_u32(x14, x25);
- uint32_t x835, uint32_t x836 = mulx_u32(x14, x27);
- uint32_t x838, uint32_t x839 = mulx_u32(x14, x26);
- uint32_t x841, uint8_t x842 = addcarryx_u32(0x0, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x827, x829);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x830, x832);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x833, x835);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x836, x838);
- uint32_t x859, uint8_t _ = addcarryx_u32(0x0, x857, x839);
- uint32_t x862, uint8_t x863 = addcarryx_u32(0x0, x798, x820);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x807, x847);
- uint32_t x874, uint8_t x875 = addcarryx_u32(x872, x810, x850);
- uint32_t x877, uint8_t x878 = addcarryx_u32(x875, x813, x853);
- uint32_t x880, uint8_t x881 = addcarryx_u32(x878, x816, x856);
- uint32_t x883, uint8_t x884 = addcarryx_u32(x881, x818, x859);
- uint32_t x886, uint32_t _ = mulx_u32(x862, 0x4f72c235);
- uint32_t x889, uint32_t x890 = mulx_u32(x886, 0xffffffe3);
- uint32_t x892, uint32_t x893 = mulx_u32(x886, 0xffffffff);
- uint32_t x895, uint32_t x896 = mulx_u32(x886, 0xffffffff);
- uint32_t x898, uint32_t x899 = mulx_u32(x886, 0xffffffff);
- uint32_t x901, uint32_t x902 = mulx_u32(x886, 0xffffffff);
- uint32_t x904, uint32_t x905 = mulx_u32(x886, 0xffffffff);
- uint32_t x907, uint32_t x908 = mulx_u32(x886, 0xfffff);
- uint32_t x910, uint8_t x911 = addcarryx_u32(0x0, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x896, x898);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x899, x901);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x902, x904);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x905, x907);
- uint32_t x928, uint8_t _ = addcarryx_u32(0x0, x926, x908);
- uint32_t _, uint8_t x932 = addcarryx_u32(0x0, x862, x889);
- uint32_t x934, uint8_t x935 = addcarryx_u32(x932, x865, x910);
- uint32_t x937, uint8_t x938 = addcarryx_u32(x935, x868, x913);
- uint32_t x940, uint8_t x941 = addcarryx_u32(x938, x871, x916);
- uint32_t x943, uint8_t x944 = addcarryx_u32(x941, x874, x919);
- uint32_t x946, uint8_t x947 = addcarryx_u32(x944, x877, x922);
- uint32_t x949, uint8_t x950 = addcarryx_u32(x947, x880, x925);
- uint32_t x952, uint8_t x953 = addcarryx_u32(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint32_t x956, uint8_t x957 = subborrow_u32(0x0, x934, 0xffffffe3);
- uint32_t x959, uint8_t x960 = subborrow_u32(x957, x937, 0xffffffff);
- uint32_t x962, uint8_t x963 = subborrow_u32(x960, x940, 0xffffffff);
- uint32_t x965, uint8_t x966 = subborrow_u32(x963, x943, 0xffffffff);
- uint32_t x968, uint8_t x969 = subborrow_u32(x966, x946, 0xffffffff);
- uint32_t x971, uint8_t x972 = subborrow_u32(x969, x949, 0xffffffff);
- uint32_t x974, uint8_t x975 = subborrow_u32(x972, x952, 0xfffff);
- uint32_t _, uint8_t x978 = subborrow_u32(x975, x954, 0x0);
- uint32_t x979 = cmovznz(x978, x974, x952);
- uint32_t x980 = cmovznz(x978, x971, x949);
- uint32_t x981 = cmovznz(x978, x968, x946);
- uint32_t x982 = cmovznz(x978, x965, x943);
- uint32_t x983 = cmovznz(x978, x962, x940);
- uint32_t x984 = cmovznz(x978, x959, x937);
- uint32_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e212m29/femulDisplay.v b/src/Specific/montgomery32_2e212m29/femulDisplay.v
deleted file mode 100644
index df7dc64c1..000000000
--- a/src/Specific/montgomery32_2e212m29/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e212m29.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e212m29/fenz.c b/src/Specific/montgomery32_2e212m29/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e212m29/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e212m29/fenz.v b/src/Specific/montgomery32_2e212m29/fenz.v
deleted file mode 100644
index 387eff9a2..000000000
--- a/src/Specific/montgomery32_2e212m29/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e212m29/fenzDisplay.log b/src/Specific/montgomery32_2e212m29/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e212m29/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e212m29/fenzDisplay.v b/src/Specific/montgomery32_2e212m29/fenzDisplay.v
deleted file mode 100644
index 327bc2088..000000000
--- a/src/Specific/montgomery32_2e212m29/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e212m29.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e212m29/feopp.v b/src/Specific/montgomery32_2e212m29/feopp.v
deleted file mode 100644
index bc00a4b6e..000000000
--- a/src/Specific/montgomery32_2e212m29/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e212m29/feoppDisplay.log b/src/Specific/montgomery32_2e212m29/feoppDisplay.log
deleted file mode 100644
index 3068bde76..000000000
--- a/src/Specific/montgomery32_2e212m29/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffffe3);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0xfffff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e212m29/feoppDisplay.v b/src/Specific/montgomery32_2e212m29/feoppDisplay.v
deleted file mode 100644
index 11fd2c17e..000000000
--- a/src/Specific/montgomery32_2e212m29/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e212m29.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e212m29/fesquare.c b/src/Specific/montgomery32_2e212m29/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e212m29/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e212m29/fesub.v b/src/Specific/montgomery32_2e212m29/fesub.v
deleted file mode 100644
index fd45cae3d..000000000
--- a/src/Specific/montgomery32_2e212m29/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e212m29/fesubDisplay.log b/src/Specific/montgomery32_2e212m29/fesubDisplay.log
deleted file mode 100644
index 7e321516e..000000000
--- a/src/Specific/montgomery32_2e212m29/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffffe3);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0xfffff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e212m29/fesubDisplay.v b/src/Specific/montgomery32_2e212m29/fesubDisplay.v
deleted file mode 100644
index 940328e6b..000000000
--- a/src/Specific/montgomery32_2e212m29/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e212m29.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e212m29/CurveParameters.v b/src/Specific/montgomery32_2e212m29_7limbs/CurveParameters.v
index eb3018b24..eb3018b24 100644
--- a/src/Specific/montgomery32_2e212m29/CurveParameters.v
+++ b/src/Specific/montgomery32_2e212m29_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/Synthesis.v b/src/Specific/montgomery32_2e212m29_7limbs/Synthesis.v
new file mode 100644
index 000000000..5b0134559
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e212m29/compiler.sh b/src/Specific/montgomery32_2e212m29_7limbs/compiler.sh
index 3275e1788..3275e1788 100755
--- a/src/Specific/montgomery32_2e212m29/compiler.sh
+++ b/src/Specific/montgomery32_2e212m29_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e212m29/compilerxx.sh b/src/Specific/montgomery32_2e212m29_7limbs/compilerxx.sh
index c6e17ca18..c6e17ca18 100755
--- a/src/Specific/montgomery32_2e212m29/compilerxx.sh
+++ b/src/Specific/montgomery32_2e212m29_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/feadd.v b/src/Specific/montgomery32_2e212m29_7limbs/feadd.v
new file mode 100644
index 000000000..c0fe6e713
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e212m29_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..ca99d3b8b
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/femul.v b/src/Specific/montgomery32_2e212m29_7limbs/femul.v
new file mode 100644
index 000000000..b2d3355b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e212m29_7limbs/femulDisplay.v
new file mode 100644
index 000000000..c6e997070
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/fenz.v b/src/Specific/montgomery32_2e212m29_7limbs/fenz.v
new file mode 100644
index 000000000..95c840bb2
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e212m29_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..037e5db94
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/feopp.v b/src/Specific/montgomery32_2e212m29_7limbs/feopp.v
new file mode 100644
index 000000000..50ff0a780
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e212m29_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..3624d5d16
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/fesub.v b/src/Specific/montgomery32_2e212m29_7limbs/fesub.v
new file mode 100644
index 000000000..320cc3d68
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e212m29_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e212m29_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..1012d51d3
--- /dev/null
+++ b/src/Specific/montgomery32_2e212m29_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e212m29_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e212m29/py_interpreter.sh b/src/Specific/montgomery32_2e212m29_7limbs/py_interpreter.sh
index 765d27254..765d27254 100755
--- a/src/Specific/montgomery32_2e212m29/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e212m29_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e213m3/Synthesis.v b/src/Specific/montgomery32_2e213m3/Synthesis.v
deleted file mode 100644
index 776cddaa6..000000000
--- a/src/Specific/montgomery32_2e213m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e213m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e213m3/feadd.c b/src/Specific/montgomery32_2e213m3/feadd.c
deleted file mode 100644
index 240511a98..000000000
--- a/src/Specific/montgomery32_2e213m3/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xfffffffd, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x1fffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e213m3/feadd.v b/src/Specific/montgomery32_2e213m3/feadd.v
deleted file mode 100644
index 2cc525e0f..000000000
--- a/src/Specific/montgomery32_2e213m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e213m3/feaddDisplay.log b/src/Specific/montgomery32_2e213m3/feaddDisplay.log
deleted file mode 100644
index 1410fe6af..000000000
--- a/src/Specific/montgomery32_2e213m3/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xfffffffd);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x1fffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e213m3/feaddDisplay.v b/src/Specific/montgomery32_2e213m3/feaddDisplay.v
deleted file mode 100644
index 486682872..000000000
--- a/src/Specific/montgomery32_2e213m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e213m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e213m3/femul.v b/src/Specific/montgomery32_2e213m3/femul.v
deleted file mode 100644
index 3a7f9d95d..000000000
--- a/src/Specific/montgomery32_2e213m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e213m3/femulDisplay.log b/src/Specific/montgomery32_2e213m3/femulDisplay.log
deleted file mode 100644
index 2137719d1..000000000
--- a/src/Specific/montgomery32_2e213m3/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xaaaaaaab);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xfffffffd);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint32_t x93 = mulx_u32(x71, 0x1fffff);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint32_t x113, uint8_t _ = addcarryx_u32(0x0, x111, x93);
- uint32_t _, uint8_t x117 = addcarryx_u32(0x0, x29, x74);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x50, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x53, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x56, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x59, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x62, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x65, x110);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x68, x113);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x17);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x19);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x21);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x23);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x25);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x27);
- uint32_t x158, uint32_t x159 = mulx_u32(x7, x26);
- uint32_t x161, uint8_t x162 = addcarryx_u32(0x0, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t x177 = addcarryx_u32(x174, x156, x158);
- uint32_t x179, uint8_t _ = addcarryx_u32(0x0, x177, x159);
- uint32_t x182, uint8_t x183 = addcarryx_u32(0x0, x119, x140);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x137, x176);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x138, x179);
- uint32_t x206, uint32_t _ = mulx_u32(x182, 0xaaaaaaab);
- uint32_t x209, uint32_t x210 = mulx_u32(x206, 0xfffffffd);
- uint32_t x212, uint32_t x213 = mulx_u32(x206, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x206, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x206, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x206, 0xffffffff);
- uint32_t x224, uint32_t x225 = mulx_u32(x206, 0xffffffff);
- uint32_t x227, uint32_t x228 = mulx_u32(x206, 0x1fffff);
- uint32_t x230, uint8_t x231 = addcarryx_u32(0x0, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t x243 = addcarryx_u32(x240, x222, x224);
- uint32_t x245, uint8_t x246 = addcarryx_u32(x243, x225, x227);
- uint32_t x248, uint8_t _ = addcarryx_u32(0x0, x246, x228);
- uint32_t _, uint8_t x252 = addcarryx_u32(0x0, x182, x209);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x185, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x188, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x191, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x194, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x197, x242);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x200, x245);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x17);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x19);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x21);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x23);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x25);
- uint32_t x291, uint32_t x292 = mulx_u32(x9, x27);
- uint32_t x294, uint32_t x295 = mulx_u32(x9, x26);
- uint32_t x297, uint8_t x298 = addcarryx_u32(0x0, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t x310 = addcarryx_u32(x307, x289, x291);
- uint32_t x312, uint8_t x313 = addcarryx_u32(x310, x292, x294);
- uint32_t x315, uint8_t _ = addcarryx_u32(0x0, x313, x295);
- uint32_t x318, uint8_t x319 = addcarryx_u32(0x0, x254, x276);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x269, x309);
- uint32_t x336, uint8_t x337 = addcarryx_u32(x334, x272, x312);
- uint32_t x339, uint8_t x340 = addcarryx_u32(x337, x274, x315);
- uint32_t x342, uint32_t _ = mulx_u32(x318, 0xaaaaaaab);
- uint32_t x345, uint32_t x346 = mulx_u32(x342, 0xfffffffd);
- uint32_t x348, uint32_t x349 = mulx_u32(x342, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x342, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x342, 0xffffffff);
- uint32_t x357, uint32_t x358 = mulx_u32(x342, 0xffffffff);
- uint32_t x360, uint32_t x361 = mulx_u32(x342, 0xffffffff);
- uint32_t x363, uint32_t x364 = mulx_u32(x342, 0x1fffff);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x355, x357);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x358, x360);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x361, x363);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x364);
- uint32_t _, uint8_t x388 = addcarryx_u32(0x0, x318, x345);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x321, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x324, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x327, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x330, x375);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x333, x378);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x336, x381);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x17);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x19);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x21);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x23);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x25);
- uint32_t x427, uint32_t x428 = mulx_u32(x11, x27);
- uint32_t x430, uint32_t x431 = mulx_u32(x11, x26);
- uint32_t x433, uint8_t x434 = addcarryx_u32(0x0, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t x446 = addcarryx_u32(x443, x425, x427);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x428, x430);
- uint32_t x451, uint8_t _ = addcarryx_u32(0x0, x449, x431);
- uint32_t x454, uint8_t x455 = addcarryx_u32(0x0, x390, x412);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x405, x445);
- uint32_t x472, uint8_t x473 = addcarryx_u32(x470, x408, x448);
- uint32_t x475, uint8_t x476 = addcarryx_u32(x473, x410, x451);
- uint32_t x478, uint32_t _ = mulx_u32(x454, 0xaaaaaaab);
- uint32_t x481, uint32_t x482 = mulx_u32(x478, 0xfffffffd);
- uint32_t x484, uint32_t x485 = mulx_u32(x478, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x478, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x478, 0xffffffff);
- uint32_t x493, uint32_t x494 = mulx_u32(x478, 0xffffffff);
- uint32_t x496, uint32_t x497 = mulx_u32(x478, 0xffffffff);
- uint32_t x499, uint32_t x500 = mulx_u32(x478, 0x1fffff);
- uint32_t x502, uint8_t x503 = addcarryx_u32(0x0, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t _ = addcarryx_u32(0x0, x518, x500);
- uint32_t _, uint8_t x524 = addcarryx_u32(0x0, x454, x481);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x457, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x460, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x463, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x466, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x469, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x472, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x17);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x19);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x21);
- uint32_t x557, uint32_t x558 = mulx_u32(x13, x23);
- uint32_t x560, uint32_t x561 = mulx_u32(x13, x25);
- uint32_t x563, uint32_t x564 = mulx_u32(x13, x27);
- uint32_t x566, uint32_t x567 = mulx_u32(x13, x26);
- uint32_t x569, uint8_t x570 = addcarryx_u32(0x0, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t x576 = addcarryx_u32(x573, x555, x557);
- uint32_t x578, uint8_t x579 = addcarryx_u32(x576, x558, x560);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x561, x563);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x564, x566);
- uint32_t x587, uint8_t _ = addcarryx_u32(0x0, x585, x567);
- uint32_t x590, uint8_t x591 = addcarryx_u32(0x0, x526, x548);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x535, x575);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x538, x578);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x541, x581);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x544, x584);
- uint32_t x611, uint8_t x612 = addcarryx_u32(x609, x546, x587);
- uint32_t x614, uint32_t _ = mulx_u32(x590, 0xaaaaaaab);
- uint32_t x617, uint32_t x618 = mulx_u32(x614, 0xfffffffd);
- uint32_t x620, uint32_t x621 = mulx_u32(x614, 0xffffffff);
- uint32_t x623, uint32_t x624 = mulx_u32(x614, 0xffffffff);
- uint32_t x626, uint32_t x627 = mulx_u32(x614, 0xffffffff);
- uint32_t x629, uint32_t x630 = mulx_u32(x614, 0xffffffff);
- uint32_t x632, uint32_t x633 = mulx_u32(x614, 0xffffffff);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0x1fffff);
- uint32_t x638, uint8_t x639 = addcarryx_u32(0x0, x618, x620);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x621, x623);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x624, x626);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x627, x629);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x630, x632);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x633, x635);
- uint32_t x656, uint8_t _ = addcarryx_u32(0x0, x654, x636);
- uint32_t _, uint8_t x660 = addcarryx_u32(0x0, x590, x617);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x593, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x596, x641);
- uint32_t x668, uint8_t x669 = addcarryx_u32(x666, x599, x644);
- uint32_t x671, uint8_t x672 = addcarryx_u32(x669, x602, x647);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x605, x650);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x608, x653);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x17);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x19);
- uint32_t x690, uint32_t x691 = mulx_u32(x15, x21);
- uint32_t x693, uint32_t x694 = mulx_u32(x15, x23);
- uint32_t x696, uint32_t x697 = mulx_u32(x15, x25);
- uint32_t x699, uint32_t x700 = mulx_u32(x15, x27);
- uint32_t x702, uint32_t x703 = mulx_u32(x15, x26);
- uint32_t x705, uint8_t x706 = addcarryx_u32(0x0, x685, x687);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x688, x690);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x691, x693);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x694, x696);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x697, x699);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x700, x702);
- uint32_t x723, uint8_t _ = addcarryx_u32(0x0, x721, x703);
- uint32_t x726, uint8_t x727 = addcarryx_u32(0x0, x662, x684);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x668, x708);
- uint32_t x735, uint8_t x736 = addcarryx_u32(x733, x671, x711);
- uint32_t x738, uint8_t x739 = addcarryx_u32(x736, x674, x714);
- uint32_t x741, uint8_t x742 = addcarryx_u32(x739, x677, x717);
- uint32_t x744, uint8_t x745 = addcarryx_u32(x742, x680, x720);
- uint32_t x747, uint8_t x748 = addcarryx_u32(x745, x682, x723);
- uint32_t x750, uint32_t _ = mulx_u32(x726, 0xaaaaaaab);
- uint32_t x753, uint32_t x754 = mulx_u32(x750, 0xfffffffd);
- uint32_t x756, uint32_t x757 = mulx_u32(x750, 0xffffffff);
- uint32_t x759, uint32_t x760 = mulx_u32(x750, 0xffffffff);
- uint32_t x762, uint32_t x763 = mulx_u32(x750, 0xffffffff);
- uint32_t x765, uint32_t x766 = mulx_u32(x750, 0xffffffff);
- uint32_t x768, uint32_t x769 = mulx_u32(x750, 0xffffffff);
- uint32_t x771, uint32_t x772 = mulx_u32(x750, 0x1fffff);
- uint32_t x774, uint8_t x775 = addcarryx_u32(0x0, x754, x756);
- uint32_t x777, uint8_t x778 = addcarryx_u32(x775, x757, x759);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x760, x762);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x763, x765);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x766, x768);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x769, x771);
- uint32_t x792, uint8_t _ = addcarryx_u32(0x0, x790, x772);
- uint32_t _, uint8_t x796 = addcarryx_u32(0x0, x726, x753);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x729, x774);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x732, x777);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x735, x780);
- uint32_t x807, uint8_t x808 = addcarryx_u32(x805, x738, x783);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x741, x786);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x744, x789);
- uint32_t x816, uint8_t x817 = addcarryx_u32(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x17);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x19);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x21);
- uint32_t x829, uint32_t x830 = mulx_u32(x14, x23);
- uint32_t x832, uint32_t x833 = mulx_u32(x14, x25);
- uint32_t x835, uint32_t x836 = mulx_u32(x14, x27);
- uint32_t x838, uint32_t x839 = mulx_u32(x14, x26);
- uint32_t x841, uint8_t x842 = addcarryx_u32(0x0, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x827, x829);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x830, x832);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x833, x835);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x836, x838);
- uint32_t x859, uint8_t _ = addcarryx_u32(0x0, x857, x839);
- uint32_t x862, uint8_t x863 = addcarryx_u32(0x0, x798, x820);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x807, x847);
- uint32_t x874, uint8_t x875 = addcarryx_u32(x872, x810, x850);
- uint32_t x877, uint8_t x878 = addcarryx_u32(x875, x813, x853);
- uint32_t x880, uint8_t x881 = addcarryx_u32(x878, x816, x856);
- uint32_t x883, uint8_t x884 = addcarryx_u32(x881, x818, x859);
- uint32_t x886, uint32_t _ = mulx_u32(x862, 0xaaaaaaab);
- uint32_t x889, uint32_t x890 = mulx_u32(x886, 0xfffffffd);
- uint32_t x892, uint32_t x893 = mulx_u32(x886, 0xffffffff);
- uint32_t x895, uint32_t x896 = mulx_u32(x886, 0xffffffff);
- uint32_t x898, uint32_t x899 = mulx_u32(x886, 0xffffffff);
- uint32_t x901, uint32_t x902 = mulx_u32(x886, 0xffffffff);
- uint32_t x904, uint32_t x905 = mulx_u32(x886, 0xffffffff);
- uint32_t x907, uint32_t x908 = mulx_u32(x886, 0x1fffff);
- uint32_t x910, uint8_t x911 = addcarryx_u32(0x0, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x896, x898);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x899, x901);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x902, x904);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x905, x907);
- uint32_t x928, uint8_t _ = addcarryx_u32(0x0, x926, x908);
- uint32_t _, uint8_t x932 = addcarryx_u32(0x0, x862, x889);
- uint32_t x934, uint8_t x935 = addcarryx_u32(x932, x865, x910);
- uint32_t x937, uint8_t x938 = addcarryx_u32(x935, x868, x913);
- uint32_t x940, uint8_t x941 = addcarryx_u32(x938, x871, x916);
- uint32_t x943, uint8_t x944 = addcarryx_u32(x941, x874, x919);
- uint32_t x946, uint8_t x947 = addcarryx_u32(x944, x877, x922);
- uint32_t x949, uint8_t x950 = addcarryx_u32(x947, x880, x925);
- uint32_t x952, uint8_t x953 = addcarryx_u32(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint32_t x956, uint8_t x957 = subborrow_u32(0x0, x934, 0xfffffffd);
- uint32_t x959, uint8_t x960 = subborrow_u32(x957, x937, 0xffffffff);
- uint32_t x962, uint8_t x963 = subborrow_u32(x960, x940, 0xffffffff);
- uint32_t x965, uint8_t x966 = subborrow_u32(x963, x943, 0xffffffff);
- uint32_t x968, uint8_t x969 = subborrow_u32(x966, x946, 0xffffffff);
- uint32_t x971, uint8_t x972 = subborrow_u32(x969, x949, 0xffffffff);
- uint32_t x974, uint8_t x975 = subborrow_u32(x972, x952, 0x1fffff);
- uint32_t _, uint8_t x978 = subborrow_u32(x975, x954, 0x0);
- uint32_t x979 = cmovznz(x978, x974, x952);
- uint32_t x980 = cmovznz(x978, x971, x949);
- uint32_t x981 = cmovznz(x978, x968, x946);
- uint32_t x982 = cmovznz(x978, x965, x943);
- uint32_t x983 = cmovznz(x978, x962, x940);
- uint32_t x984 = cmovznz(x978, x959, x937);
- uint32_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e213m3/femulDisplay.v b/src/Specific/montgomery32_2e213m3/femulDisplay.v
deleted file mode 100644
index dab554f56..000000000
--- a/src/Specific/montgomery32_2e213m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e213m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e213m3/fenz.c b/src/Specific/montgomery32_2e213m3/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e213m3/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e213m3/fenz.v b/src/Specific/montgomery32_2e213m3/fenz.v
deleted file mode 100644
index ecb80ca36..000000000
--- a/src/Specific/montgomery32_2e213m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e213m3/fenzDisplay.log b/src/Specific/montgomery32_2e213m3/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e213m3/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e213m3/fenzDisplay.v b/src/Specific/montgomery32_2e213m3/fenzDisplay.v
deleted file mode 100644
index 558a3e400..000000000
--- a/src/Specific/montgomery32_2e213m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e213m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e213m3/feopp.v b/src/Specific/montgomery32_2e213m3/feopp.v
deleted file mode 100644
index f9194d55f..000000000
--- a/src/Specific/montgomery32_2e213m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e213m3/feoppDisplay.log b/src/Specific/montgomery32_2e213m3/feoppDisplay.log
deleted file mode 100644
index 38c6df952..000000000
--- a/src/Specific/montgomery32_2e213m3/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xfffffffd);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0x1fffff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e213m3/feoppDisplay.v b/src/Specific/montgomery32_2e213m3/feoppDisplay.v
deleted file mode 100644
index 62aa8f218..000000000
--- a/src/Specific/montgomery32_2e213m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e213m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e213m3/fesquare.c b/src/Specific/montgomery32_2e213m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e213m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e213m3/fesub.v b/src/Specific/montgomery32_2e213m3/fesub.v
deleted file mode 100644
index 99c7fc676..000000000
--- a/src/Specific/montgomery32_2e213m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e213m3/fesubDisplay.log b/src/Specific/montgomery32_2e213m3/fesubDisplay.log
deleted file mode 100644
index 30ae1176a..000000000
--- a/src/Specific/montgomery32_2e213m3/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xfffffffd);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0x1fffff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e213m3/fesubDisplay.v b/src/Specific/montgomery32_2e213m3/fesubDisplay.v
deleted file mode 100644
index f4e649d11..000000000
--- a/src/Specific/montgomery32_2e213m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e213m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e213m3/CurveParameters.v b/src/Specific/montgomery32_2e213m3_7limbs/CurveParameters.v
index b54fe904f..b54fe904f 100644
--- a/src/Specific/montgomery32_2e213m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e213m3_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/Synthesis.v b/src/Specific/montgomery32_2e213m3_7limbs/Synthesis.v
new file mode 100644
index 000000000..212edbed6
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e213m3/compiler.sh b/src/Specific/montgomery32_2e213m3_7limbs/compiler.sh
index 270210455..270210455 100755
--- a/src/Specific/montgomery32_2e213m3/compiler.sh
+++ b/src/Specific/montgomery32_2e213m3_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e213m3/compilerxx.sh b/src/Specific/montgomery32_2e213m3_7limbs/compilerxx.sh
index dde744006..dde744006 100755
--- a/src/Specific/montgomery32_2e213m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e213m3_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/feadd.v b/src/Specific/montgomery32_2e213m3_7limbs/feadd.v
new file mode 100644
index 000000000..7f27d21a1
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e213m3_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..1265fb97b
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/femul.v b/src/Specific/montgomery32_2e213m3_7limbs/femul.v
new file mode 100644
index 000000000..bbe02230f
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e213m3_7limbs/femulDisplay.v
new file mode 100644
index 000000000..33fb2c01e
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/fenz.v b/src/Specific/montgomery32_2e213m3_7limbs/fenz.v
new file mode 100644
index 000000000..607e2f7f6
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e213m3_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..338b01d76
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/feopp.v b/src/Specific/montgomery32_2e213m3_7limbs/feopp.v
new file mode 100644
index 000000000..f9988be5b
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e213m3_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..cfd020301
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/fesub.v b/src/Specific/montgomery32_2e213m3_7limbs/fesub.v
new file mode 100644
index 000000000..4704a8254
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e213m3_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e213m3_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..f1f14e2b6
--- /dev/null
+++ b/src/Specific/montgomery32_2e213m3_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e213m3_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e213m3/py_interpreter.sh b/src/Specific/montgomery32_2e213m3_7limbs/py_interpreter.sh
index a5e8679c5..a5e8679c5 100755
--- a/src/Specific/montgomery32_2e213m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e213m3_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v b/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v
deleted file mode 100644
index 27d931578..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feadd.c b/src/Specific/montgomery32_2e216m2e108m1/feadd.c
deleted file mode 100644
index 7ddb08291..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffff, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffefff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0xffffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feadd.v b/src/Specific/montgomery32_2e216m2e108m1/feadd.v
deleted file mode 100644
index 5b6264943..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.log b/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.log
deleted file mode 100644
index 8dd5626ae..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffff);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffefff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0xffffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v
deleted file mode 100644
index e69b5149c..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/femul.v b/src/Specific/montgomery32_2e216m2e108m1/femul.v
deleted file mode 100644
index 077f95520..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.log b/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.log
deleted file mode 100644
index e829e0a1a..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.log
+++ /dev/null
@@ -1,328 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t x72 = mulx_u32(x29, 0xffffffff);
- uint32_t x74, uint32_t x75 = mulx_u32(x29, 0xffffffff);
- uint32_t x77, uint32_t x78 = mulx_u32(x29, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x29, 0xffffefff);
- uint32_t x83, uint32_t x84 = mulx_u32(x29, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x29, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x29, 0xffffff);
- uint32_t x92, uint8_t x93 = addcarryx_u32(0x0, x72, x74);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t _ = addcarryx_u32(0x0, x108, x90);
- uint32_t _, uint8_t x114 = addcarryx_u32(0x0, x29, x71);
- uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x50, x92);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x53, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x56, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x59, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x62, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x65, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x68, x110);
- uint32_t x137, uint32_t x138 = mulx_u32(x7, x17);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x19);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x21);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x23);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x25);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x27);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x26);
- uint32_t x158, uint8_t x159 = addcarryx_u32(0x0, x138, x140);
- uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t _ = addcarryx_u32(0x0, x174, x156);
- uint32_t x179, uint8_t x180 = addcarryx_u32(0x0, x116, x137);
- uint32_t x182, uint8_t x183 = addcarryx_u32(x180, x119, x158);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x135, x176);
- uint32_t x203, uint32_t x204 = mulx_u32(x179, 0xffffffff);
- uint32_t x206, uint32_t x207 = mulx_u32(x179, 0xffffffff);
- uint32_t x209, uint32_t x210 = mulx_u32(x179, 0xffffffff);
- uint32_t x212, uint32_t x213 = mulx_u32(x179, 0xffffefff);
- uint32_t x215, uint32_t x216 = mulx_u32(x179, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x179, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x179, 0xffffff);
- uint32_t x224, uint8_t x225 = addcarryx_u32(0x0, x204, x206);
- uint32_t x227, uint8_t x228 = addcarryx_u32(x225, x207, x209);
- uint32_t x230, uint8_t x231 = addcarryx_u32(x228, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t _ = addcarryx_u32(0x0, x240, x222);
- uint32_t _, uint8_t x246 = addcarryx_u32(0x0, x179, x203);
- uint32_t x248, uint8_t x249 = addcarryx_u32(x246, x182, x224);
- uint32_t x251, uint8_t x252 = addcarryx_u32(x249, x185, x227);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x188, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x191, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x194, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x197, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x200, x242);
- uint8_t x268 = (x267 + x201);
- uint32_t x270, uint32_t x271 = mulx_u32(x9, x17);
- uint32_t x273, uint32_t x274 = mulx_u32(x9, x19);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x21);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x23);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x25);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x27);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x26);
- uint32_t x291, uint8_t x292 = addcarryx_u32(0x0, x271, x273);
- uint32_t x294, uint8_t x295 = addcarryx_u32(x292, x274, x276);
- uint32_t x297, uint8_t x298 = addcarryx_u32(x295, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t _ = addcarryx_u32(0x0, x307, x289);
- uint32_t x312, uint8_t x313 = addcarryx_u32(0x0, x248, x270);
- uint32_t x315, uint8_t x316 = addcarryx_u32(x313, x251, x291);
- uint32_t x318, uint8_t x319 = addcarryx_u32(x316, x254, x294);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x268, x309);
- uint32_t x336, uint32_t x337 = mulx_u32(x312, 0xffffffff);
- uint32_t x339, uint32_t x340 = mulx_u32(x312, 0xffffffff);
- uint32_t x342, uint32_t x343 = mulx_u32(x312, 0xffffffff);
- uint32_t x345, uint32_t x346 = mulx_u32(x312, 0xffffefff);
- uint32_t x348, uint32_t x349 = mulx_u32(x312, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x312, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x312, 0xffffff);
- uint32_t x357, uint8_t x358 = addcarryx_u32(0x0, x337, x339);
- uint32_t x360, uint8_t x361 = addcarryx_u32(x358, x340, x342);
- uint32_t x363, uint8_t x364 = addcarryx_u32(x361, x343, x345);
- uint32_t x366, uint8_t x367 = addcarryx_u32(x364, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t _ = addcarryx_u32(0x0, x373, x355);
- uint32_t _, uint8_t x379 = addcarryx_u32(0x0, x312, x336);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x315, x357);
- uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x318, x360);
- uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x321, x363);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x324, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x327, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x330, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x333, x375);
- uint8_t x401 = (x400 + x334);
- uint32_t x403, uint32_t x404 = mulx_u32(x11, x17);
- uint32_t x406, uint32_t x407 = mulx_u32(x11, x19);
- uint32_t x409, uint32_t x410 = mulx_u32(x11, x21);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x23);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x25);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x27);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x26);
- uint32_t x424, uint8_t x425 = addcarryx_u32(0x0, x404, x406);
- uint32_t x427, uint8_t x428 = addcarryx_u32(x425, x407, x409);
- uint32_t x430, uint8_t x431 = addcarryx_u32(x428, x410, x412);
- uint32_t x433, uint8_t x434 = addcarryx_u32(x431, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t _ = addcarryx_u32(0x0, x440, x422);
- uint32_t x445, uint8_t x446 = addcarryx_u32(0x0, x381, x403);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x384, x424);
- uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x387, x427);
- uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x390, x430);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x401, x442);
- uint32_t x469, uint32_t x470 = mulx_u32(x445, 0xffffffff);
- uint32_t x472, uint32_t x473 = mulx_u32(x445, 0xffffffff);
- uint32_t x475, uint32_t x476 = mulx_u32(x445, 0xffffffff);
- uint32_t x478, uint32_t x479 = mulx_u32(x445, 0xffffefff);
- uint32_t x481, uint32_t x482 = mulx_u32(x445, 0xffffffff);
- uint32_t x484, uint32_t x485 = mulx_u32(x445, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x445, 0xffffff);
- uint32_t x490, uint8_t x491 = addcarryx_u32(0x0, x470, x472);
- uint32_t x493, uint8_t x494 = addcarryx_u32(x491, x473, x475);
- uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x476, x478);
- uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x479, x481);
- uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x488);
- uint32_t _, uint8_t x512 = addcarryx_u32(0x0, x445, x469);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x448, x490);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x451, x493);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x454, x496);
- uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x457, x499);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x460, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x463, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x466, x508);
- uint8_t x534 = (x533 + x467);
- uint32_t x536, uint32_t x537 = mulx_u32(x13, x17);
- uint32_t x539, uint32_t x540 = mulx_u32(x13, x19);
- uint32_t x542, uint32_t x543 = mulx_u32(x13, x21);
- uint32_t x545, uint32_t x546 = mulx_u32(x13, x23);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x25);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x27);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x26);
- uint32_t x557, uint8_t x558 = addcarryx_u32(0x0, x537, x539);
- uint32_t x560, uint8_t x561 = addcarryx_u32(x558, x540, x542);
- uint32_t x563, uint8_t x564 = addcarryx_u32(x561, x543, x545);
- uint32_t x566, uint8_t x567 = addcarryx_u32(x564, x546, x548);
- uint32_t x569, uint8_t x570 = addcarryx_u32(x567, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t _ = addcarryx_u32(0x0, x573, x555);
- uint32_t x578, uint8_t x579 = addcarryx_u32(0x0, x514, x536);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x517, x557);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x520, x560);
- uint32_t x587, uint8_t x588 = addcarryx_u32(x585, x523, x563);
- uint32_t x590, uint8_t x591 = addcarryx_u32(x588, x526, x566);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x534, x575);
- uint32_t x602, uint32_t x603 = mulx_u32(x578, 0xffffffff);
- uint32_t x605, uint32_t x606 = mulx_u32(x578, 0xffffffff);
- uint32_t x608, uint32_t x609 = mulx_u32(x578, 0xffffffff);
- uint32_t x611, uint32_t x612 = mulx_u32(x578, 0xffffefff);
- uint32_t x614, uint32_t x615 = mulx_u32(x578, 0xffffffff);
- uint32_t x617, uint32_t x618 = mulx_u32(x578, 0xffffffff);
- uint32_t x620, uint32_t x621 = mulx_u32(x578, 0xffffff);
- uint32_t x623, uint8_t x624 = addcarryx_u32(0x0, x603, x605);
- uint32_t x626, uint8_t x627 = addcarryx_u32(x624, x606, x608);
- uint32_t x629, uint8_t x630 = addcarryx_u32(x627, x609, x611);
- uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x612, x614);
- uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x615, x617);
- uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x618, x620);
- uint32_t x641, uint8_t _ = addcarryx_u32(0x0, x639, x621);
- uint32_t _, uint8_t x645 = addcarryx_u32(0x0, x578, x602);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x581, x623);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x584, x626);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x587, x629);
- uint32_t x656, uint8_t x657 = addcarryx_u32(x654, x590, x632);
- uint32_t x659, uint8_t x660 = addcarryx_u32(x657, x593, x635);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x596, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x599, x641);
- uint8_t x667 = (x666 + x600);
- uint32_t x669, uint32_t x670 = mulx_u32(x15, x17);
- uint32_t x672, uint32_t x673 = mulx_u32(x15, x19);
- uint32_t x675, uint32_t x676 = mulx_u32(x15, x21);
- uint32_t x678, uint32_t x679 = mulx_u32(x15, x23);
- uint32_t x681, uint32_t x682 = mulx_u32(x15, x25);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x27);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x26);
- uint32_t x690, uint8_t x691 = addcarryx_u32(0x0, x670, x672);
- uint32_t x693, uint8_t x694 = addcarryx_u32(x691, x673, x675);
- uint32_t x696, uint8_t x697 = addcarryx_u32(x694, x676, x678);
- uint32_t x699, uint8_t x700 = addcarryx_u32(x697, x679, x681);
- uint32_t x702, uint8_t x703 = addcarryx_u32(x700, x682, x684);
- uint32_t x705, uint8_t x706 = addcarryx_u32(x703, x685, x687);
- uint32_t x708, uint8_t _ = addcarryx_u32(0x0, x706, x688);
- uint32_t x711, uint8_t x712 = addcarryx_u32(0x0, x647, x669);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x650, x690);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x653, x693);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x656, x696);
- uint32_t x723, uint8_t x724 = addcarryx_u32(x721, x659, x699);
- uint32_t x726, uint8_t x727 = addcarryx_u32(x724, x662, x702);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x667, x708);
- uint32_t x735, uint32_t x736 = mulx_u32(x711, 0xffffffff);
- uint32_t x738, uint32_t x739 = mulx_u32(x711, 0xffffffff);
- uint32_t x741, uint32_t x742 = mulx_u32(x711, 0xffffffff);
- uint32_t x744, uint32_t x745 = mulx_u32(x711, 0xffffefff);
- uint32_t x747, uint32_t x748 = mulx_u32(x711, 0xffffffff);
- uint32_t x750, uint32_t x751 = mulx_u32(x711, 0xffffffff);
- uint32_t x753, uint32_t x754 = mulx_u32(x711, 0xffffff);
- uint32_t x756, uint8_t x757 = addcarryx_u32(0x0, x736, x738);
- uint32_t x759, uint8_t x760 = addcarryx_u32(x757, x739, x741);
- uint32_t x762, uint8_t x763 = addcarryx_u32(x760, x742, x744);
- uint32_t x765, uint8_t x766 = addcarryx_u32(x763, x745, x747);
- uint32_t x768, uint8_t x769 = addcarryx_u32(x766, x748, x750);
- uint32_t x771, uint8_t x772 = addcarryx_u32(x769, x751, x753);
- uint32_t x774, uint8_t _ = addcarryx_u32(0x0, x772, x754);
- uint32_t _, uint8_t x778 = addcarryx_u32(0x0, x711, x735);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x714, x756);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x717, x759);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x720, x762);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x723, x765);
- uint32_t x792, uint8_t x793 = addcarryx_u32(x790, x726, x768);
- uint32_t x795, uint8_t x796 = addcarryx_u32(x793, x729, x771);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x732, x774);
- uint8_t x800 = (x799 + x733);
- uint32_t x802, uint32_t x803 = mulx_u32(x14, x17);
- uint32_t x805, uint32_t x806 = mulx_u32(x14, x19);
- uint32_t x808, uint32_t x809 = mulx_u32(x14, x21);
- uint32_t x811, uint32_t x812 = mulx_u32(x14, x23);
- uint32_t x814, uint32_t x815 = mulx_u32(x14, x25);
- uint32_t x817, uint32_t x818 = mulx_u32(x14, x27);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x26);
- uint32_t x823, uint8_t x824 = addcarryx_u32(0x0, x803, x805);
- uint32_t x826, uint8_t x827 = addcarryx_u32(x824, x806, x808);
- uint32_t x829, uint8_t x830 = addcarryx_u32(x827, x809, x811);
- uint32_t x832, uint8_t x833 = addcarryx_u32(x830, x812, x814);
- uint32_t x835, uint8_t x836 = addcarryx_u32(x833, x815, x817);
- uint32_t x838, uint8_t x839 = addcarryx_u32(x836, x818, x820);
- uint32_t x841, uint8_t _ = addcarryx_u32(0x0, x839, x821);
- uint32_t x844, uint8_t x845 = addcarryx_u32(0x0, x780, x802);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x783, x823);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x786, x826);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x789, x829);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x792, x832);
- uint32_t x859, uint8_t x860 = addcarryx_u32(x857, x795, x835);
- uint32_t x862, uint8_t x863 = addcarryx_u32(x860, x798, x838);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x800, x841);
- uint32_t x868, uint32_t x869 = mulx_u32(x844, 0xffffffff);
- uint32_t x871, uint32_t x872 = mulx_u32(x844, 0xffffffff);
- uint32_t x874, uint32_t x875 = mulx_u32(x844, 0xffffffff);
- uint32_t x877, uint32_t x878 = mulx_u32(x844, 0xffffefff);
- uint32_t x880, uint32_t x881 = mulx_u32(x844, 0xffffffff);
- uint32_t x883, uint32_t x884 = mulx_u32(x844, 0xffffffff);
- uint32_t x886, uint32_t x887 = mulx_u32(x844, 0xffffff);
- uint32_t x889, uint8_t x890 = addcarryx_u32(0x0, x869, x871);
- uint32_t x892, uint8_t x893 = addcarryx_u32(x890, x872, x874);
- uint32_t x895, uint8_t x896 = addcarryx_u32(x893, x875, x877);
- uint32_t x898, uint8_t x899 = addcarryx_u32(x896, x878, x880);
- uint32_t x901, uint8_t x902 = addcarryx_u32(x899, x881, x883);
- uint32_t x904, uint8_t x905 = addcarryx_u32(x902, x884, x886);
- uint32_t x907, uint8_t _ = addcarryx_u32(0x0, x905, x887);
- uint32_t _, uint8_t x911 = addcarryx_u32(0x0, x844, x868);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x847, x889);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x850, x892);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x853, x895);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x856, x898);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x859, x901);
- uint32_t x928, uint8_t x929 = addcarryx_u32(x926, x862, x904);
- uint32_t x931, uint8_t x932 = addcarryx_u32(x929, x865, x907);
- uint8_t x933 = (x932 + x866);
- uint32_t x935, uint8_t x936 = subborrow_u32(0x0, x913, 0xffffffff);
- uint32_t x938, uint8_t x939 = subborrow_u32(x936, x916, 0xffffffff);
- uint32_t x941, uint8_t x942 = subborrow_u32(x939, x919, 0xffffffff);
- uint32_t x944, uint8_t x945 = subborrow_u32(x942, x922, 0xffffefff);
- uint32_t x947, uint8_t x948 = subborrow_u32(x945, x925, 0xffffffff);
- uint32_t x950, uint8_t x951 = subborrow_u32(x948, x928, 0xffffffff);
- uint32_t x953, uint8_t x954 = subborrow_u32(x951, x931, 0xffffff);
- uint32_t _, uint8_t x957 = subborrow_u32(x954, x933, 0x0);
- uint32_t x958 = cmovznz(x957, x953, x931);
- uint32_t x959 = cmovznz(x957, x950, x928);
- uint32_t x960 = cmovznz(x957, x947, x925);
- uint32_t x961 = cmovznz(x957, x944, x922);
- uint32_t x962 = cmovznz(x957, x941, x919);
- uint32_t x963 = cmovznz(x957, x938, x916);
- uint32_t x964 = cmovznz(x957, x935, x913);
- return (x958, x959, x960, x961, x962, x963, x964))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v
deleted file mode 100644
index 1c4da24b4..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenz.c b/src/Specific/montgomery32_2e216m2e108m1/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenz.v b/src/Specific/montgomery32_2e216m2e108m1/fenz.v
deleted file mode 100644
index 181876896..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.log b/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v
deleted file mode 100644
index 66d7cd840..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feopp.v b/src/Specific/montgomery32_2e216m2e108m1/feopp.v
deleted file mode 100644
index e3def1f89..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.log b/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.log
deleted file mode 100644
index 44e9922cf..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffffff);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffefff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0xffffff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v
deleted file mode 100644
index f05ce80e8..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesquare.c b/src/Specific/montgomery32_2e216m2e108m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesub.v b/src/Specific/montgomery32_2e216m2e108m1/fesub.v
deleted file mode 100644
index 21133b9f0..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.log b/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.log
deleted file mode 100644
index 694ffa134..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffffff);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffefff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0xffffff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v b/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v
deleted file mode 100644
index 9d63e986e..000000000
--- a/src/Specific/montgomery32_2e216m2e108m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e216m2e108m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/CurveParameters.v
index aac012bf0..aac012bf0 100644
--- a/src/Specific/montgomery32_2e216m2e108m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/Synthesis.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/Synthesis.v
new file mode 100644
index 000000000..2cd5c636b
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/compiler.sh b/src/Specific/montgomery32_2e216m2e108m1_7limbs/compiler.sh
index 657a95d92..657a95d92 100755
--- a/src/Specific/montgomery32_2e216m2e108m1/compiler.sh
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e216m2e108m1/compilerxx.sh b/src/Specific/montgomery32_2e216m2e108m1_7limbs/compilerxx.sh
index 9f0569d8e..9f0569d8e 100755
--- a/src/Specific/montgomery32_2e216m2e108m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/feadd.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feadd.v
new file mode 100644
index 000000000..964bc85ce
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..5bbd74cbe
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/femul.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/femul.v
new file mode 100644
index 000000000..3a0da14ae
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f9ca0157f
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenz.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenz.v
new file mode 100644
index 000000000..3dd34901b
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..a54e3a6bb
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/feopp.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feopp.v
new file mode 100644
index 000000000..d2387b0ec
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..0cf1976b5
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesub.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesub.v
new file mode 100644
index 000000000..69af6b8b0
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..4ffd5ff16
--- /dev/null
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e216m2e108m1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e216m2e108m1/py_interpreter.sh b/src/Specific/montgomery32_2e216m2e108m1_7limbs/py_interpreter.sh
index 344ee243b..344ee243b 100755
--- a/src/Specific/montgomery32_2e216m2e108m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e216m2e108m1_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e221m3/Synthesis.v b/src/Specific/montgomery32_2e221m3/Synthesis.v
deleted file mode 100644
index 46a920665..000000000
--- a/src/Specific/montgomery32_2e221m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e221m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e221m3/feadd.c b/src/Specific/montgomery32_2e221m3/feadd.c
deleted file mode 100644
index abe3c2d31..000000000
--- a/src/Specific/montgomery32_2e221m3/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xfffffffd, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x1fffffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e221m3/feadd.v b/src/Specific/montgomery32_2e221m3/feadd.v
deleted file mode 100644
index 1b985c746..000000000
--- a/src/Specific/montgomery32_2e221m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e221m3/feaddDisplay.log b/src/Specific/montgomery32_2e221m3/feaddDisplay.log
deleted file mode 100644
index 9586e9d0b..000000000
--- a/src/Specific/montgomery32_2e221m3/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xfffffffd);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x1fffffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e221m3/feaddDisplay.v b/src/Specific/montgomery32_2e221m3/feaddDisplay.v
deleted file mode 100644
index 517380f78..000000000
--- a/src/Specific/montgomery32_2e221m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e221m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e221m3/femul.v b/src/Specific/montgomery32_2e221m3/femul.v
deleted file mode 100644
index 577d36d7b..000000000
--- a/src/Specific/montgomery32_2e221m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e221m3/femulDisplay.log b/src/Specific/montgomery32_2e221m3/femulDisplay.log
deleted file mode 100644
index e51862419..000000000
--- a/src/Specific/montgomery32_2e221m3/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xaaaaaaab);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xfffffffd);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint32_t x93 = mulx_u32(x71, 0x1fffffff);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint32_t x113, uint8_t _ = addcarryx_u32(0x0, x111, x93);
- uint32_t _, uint8_t x117 = addcarryx_u32(0x0, x29, x74);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x50, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x53, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x56, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x59, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x62, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x65, x110);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x68, x113);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x17);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x19);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x21);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x23);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x25);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x27);
- uint32_t x158, uint32_t x159 = mulx_u32(x7, x26);
- uint32_t x161, uint8_t x162 = addcarryx_u32(0x0, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t x177 = addcarryx_u32(x174, x156, x158);
- uint32_t x179, uint8_t _ = addcarryx_u32(0x0, x177, x159);
- uint32_t x182, uint8_t x183 = addcarryx_u32(0x0, x119, x140);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x137, x176);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x138, x179);
- uint32_t x206, uint32_t _ = mulx_u32(x182, 0xaaaaaaab);
- uint32_t x209, uint32_t x210 = mulx_u32(x206, 0xfffffffd);
- uint32_t x212, uint32_t x213 = mulx_u32(x206, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x206, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x206, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x206, 0xffffffff);
- uint32_t x224, uint32_t x225 = mulx_u32(x206, 0xffffffff);
- uint32_t x227, uint32_t x228 = mulx_u32(x206, 0x1fffffff);
- uint32_t x230, uint8_t x231 = addcarryx_u32(0x0, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t x243 = addcarryx_u32(x240, x222, x224);
- uint32_t x245, uint8_t x246 = addcarryx_u32(x243, x225, x227);
- uint32_t x248, uint8_t _ = addcarryx_u32(0x0, x246, x228);
- uint32_t _, uint8_t x252 = addcarryx_u32(0x0, x182, x209);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x185, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x188, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x191, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x194, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x197, x242);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x200, x245);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x17);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x19);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x21);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x23);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x25);
- uint32_t x291, uint32_t x292 = mulx_u32(x9, x27);
- uint32_t x294, uint32_t x295 = mulx_u32(x9, x26);
- uint32_t x297, uint8_t x298 = addcarryx_u32(0x0, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t x310 = addcarryx_u32(x307, x289, x291);
- uint32_t x312, uint8_t x313 = addcarryx_u32(x310, x292, x294);
- uint32_t x315, uint8_t _ = addcarryx_u32(0x0, x313, x295);
- uint32_t x318, uint8_t x319 = addcarryx_u32(0x0, x254, x276);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x269, x309);
- uint32_t x336, uint8_t x337 = addcarryx_u32(x334, x272, x312);
- uint32_t x339, uint8_t x340 = addcarryx_u32(x337, x274, x315);
- uint32_t x342, uint32_t _ = mulx_u32(x318, 0xaaaaaaab);
- uint32_t x345, uint32_t x346 = mulx_u32(x342, 0xfffffffd);
- uint32_t x348, uint32_t x349 = mulx_u32(x342, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x342, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x342, 0xffffffff);
- uint32_t x357, uint32_t x358 = mulx_u32(x342, 0xffffffff);
- uint32_t x360, uint32_t x361 = mulx_u32(x342, 0xffffffff);
- uint32_t x363, uint32_t x364 = mulx_u32(x342, 0x1fffffff);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x355, x357);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x358, x360);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x361, x363);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x364);
- uint32_t _, uint8_t x388 = addcarryx_u32(0x0, x318, x345);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x321, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x324, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x327, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x330, x375);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x333, x378);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x336, x381);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x17);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x19);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x21);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x23);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x25);
- uint32_t x427, uint32_t x428 = mulx_u32(x11, x27);
- uint32_t x430, uint32_t x431 = mulx_u32(x11, x26);
- uint32_t x433, uint8_t x434 = addcarryx_u32(0x0, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t x446 = addcarryx_u32(x443, x425, x427);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x428, x430);
- uint32_t x451, uint8_t _ = addcarryx_u32(0x0, x449, x431);
- uint32_t x454, uint8_t x455 = addcarryx_u32(0x0, x390, x412);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x405, x445);
- uint32_t x472, uint8_t x473 = addcarryx_u32(x470, x408, x448);
- uint32_t x475, uint8_t x476 = addcarryx_u32(x473, x410, x451);
- uint32_t x478, uint32_t _ = mulx_u32(x454, 0xaaaaaaab);
- uint32_t x481, uint32_t x482 = mulx_u32(x478, 0xfffffffd);
- uint32_t x484, uint32_t x485 = mulx_u32(x478, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x478, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x478, 0xffffffff);
- uint32_t x493, uint32_t x494 = mulx_u32(x478, 0xffffffff);
- uint32_t x496, uint32_t x497 = mulx_u32(x478, 0xffffffff);
- uint32_t x499, uint32_t x500 = mulx_u32(x478, 0x1fffffff);
- uint32_t x502, uint8_t x503 = addcarryx_u32(0x0, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t _ = addcarryx_u32(0x0, x518, x500);
- uint32_t _, uint8_t x524 = addcarryx_u32(0x0, x454, x481);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x457, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x460, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x463, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x466, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x469, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x472, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x17);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x19);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x21);
- uint32_t x557, uint32_t x558 = mulx_u32(x13, x23);
- uint32_t x560, uint32_t x561 = mulx_u32(x13, x25);
- uint32_t x563, uint32_t x564 = mulx_u32(x13, x27);
- uint32_t x566, uint32_t x567 = mulx_u32(x13, x26);
- uint32_t x569, uint8_t x570 = addcarryx_u32(0x0, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t x576 = addcarryx_u32(x573, x555, x557);
- uint32_t x578, uint8_t x579 = addcarryx_u32(x576, x558, x560);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x561, x563);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x564, x566);
- uint32_t x587, uint8_t _ = addcarryx_u32(0x0, x585, x567);
- uint32_t x590, uint8_t x591 = addcarryx_u32(0x0, x526, x548);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x535, x575);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x538, x578);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x541, x581);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x544, x584);
- uint32_t x611, uint8_t x612 = addcarryx_u32(x609, x546, x587);
- uint32_t x614, uint32_t _ = mulx_u32(x590, 0xaaaaaaab);
- uint32_t x617, uint32_t x618 = mulx_u32(x614, 0xfffffffd);
- uint32_t x620, uint32_t x621 = mulx_u32(x614, 0xffffffff);
- uint32_t x623, uint32_t x624 = mulx_u32(x614, 0xffffffff);
- uint32_t x626, uint32_t x627 = mulx_u32(x614, 0xffffffff);
- uint32_t x629, uint32_t x630 = mulx_u32(x614, 0xffffffff);
- uint32_t x632, uint32_t x633 = mulx_u32(x614, 0xffffffff);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0x1fffffff);
- uint32_t x638, uint8_t x639 = addcarryx_u32(0x0, x618, x620);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x621, x623);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x624, x626);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x627, x629);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x630, x632);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x633, x635);
- uint32_t x656, uint8_t _ = addcarryx_u32(0x0, x654, x636);
- uint32_t _, uint8_t x660 = addcarryx_u32(0x0, x590, x617);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x593, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x596, x641);
- uint32_t x668, uint8_t x669 = addcarryx_u32(x666, x599, x644);
- uint32_t x671, uint8_t x672 = addcarryx_u32(x669, x602, x647);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x605, x650);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x608, x653);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x17);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x19);
- uint32_t x690, uint32_t x691 = mulx_u32(x15, x21);
- uint32_t x693, uint32_t x694 = mulx_u32(x15, x23);
- uint32_t x696, uint32_t x697 = mulx_u32(x15, x25);
- uint32_t x699, uint32_t x700 = mulx_u32(x15, x27);
- uint32_t x702, uint32_t x703 = mulx_u32(x15, x26);
- uint32_t x705, uint8_t x706 = addcarryx_u32(0x0, x685, x687);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x688, x690);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x691, x693);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x694, x696);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x697, x699);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x700, x702);
- uint32_t x723, uint8_t _ = addcarryx_u32(0x0, x721, x703);
- uint32_t x726, uint8_t x727 = addcarryx_u32(0x0, x662, x684);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x668, x708);
- uint32_t x735, uint8_t x736 = addcarryx_u32(x733, x671, x711);
- uint32_t x738, uint8_t x739 = addcarryx_u32(x736, x674, x714);
- uint32_t x741, uint8_t x742 = addcarryx_u32(x739, x677, x717);
- uint32_t x744, uint8_t x745 = addcarryx_u32(x742, x680, x720);
- uint32_t x747, uint8_t x748 = addcarryx_u32(x745, x682, x723);
- uint32_t x750, uint32_t _ = mulx_u32(x726, 0xaaaaaaab);
- uint32_t x753, uint32_t x754 = mulx_u32(x750, 0xfffffffd);
- uint32_t x756, uint32_t x757 = mulx_u32(x750, 0xffffffff);
- uint32_t x759, uint32_t x760 = mulx_u32(x750, 0xffffffff);
- uint32_t x762, uint32_t x763 = mulx_u32(x750, 0xffffffff);
- uint32_t x765, uint32_t x766 = mulx_u32(x750, 0xffffffff);
- uint32_t x768, uint32_t x769 = mulx_u32(x750, 0xffffffff);
- uint32_t x771, uint32_t x772 = mulx_u32(x750, 0x1fffffff);
- uint32_t x774, uint8_t x775 = addcarryx_u32(0x0, x754, x756);
- uint32_t x777, uint8_t x778 = addcarryx_u32(x775, x757, x759);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x760, x762);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x763, x765);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x766, x768);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x769, x771);
- uint32_t x792, uint8_t _ = addcarryx_u32(0x0, x790, x772);
- uint32_t _, uint8_t x796 = addcarryx_u32(0x0, x726, x753);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x729, x774);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x732, x777);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x735, x780);
- uint32_t x807, uint8_t x808 = addcarryx_u32(x805, x738, x783);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x741, x786);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x744, x789);
- uint32_t x816, uint8_t x817 = addcarryx_u32(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x17);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x19);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x21);
- uint32_t x829, uint32_t x830 = mulx_u32(x14, x23);
- uint32_t x832, uint32_t x833 = mulx_u32(x14, x25);
- uint32_t x835, uint32_t x836 = mulx_u32(x14, x27);
- uint32_t x838, uint32_t x839 = mulx_u32(x14, x26);
- uint32_t x841, uint8_t x842 = addcarryx_u32(0x0, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x827, x829);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x830, x832);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x833, x835);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x836, x838);
- uint32_t x859, uint8_t _ = addcarryx_u32(0x0, x857, x839);
- uint32_t x862, uint8_t x863 = addcarryx_u32(0x0, x798, x820);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x807, x847);
- uint32_t x874, uint8_t x875 = addcarryx_u32(x872, x810, x850);
- uint32_t x877, uint8_t x878 = addcarryx_u32(x875, x813, x853);
- uint32_t x880, uint8_t x881 = addcarryx_u32(x878, x816, x856);
- uint32_t x883, uint8_t x884 = addcarryx_u32(x881, x818, x859);
- uint32_t x886, uint32_t _ = mulx_u32(x862, 0xaaaaaaab);
- uint32_t x889, uint32_t x890 = mulx_u32(x886, 0xfffffffd);
- uint32_t x892, uint32_t x893 = mulx_u32(x886, 0xffffffff);
- uint32_t x895, uint32_t x896 = mulx_u32(x886, 0xffffffff);
- uint32_t x898, uint32_t x899 = mulx_u32(x886, 0xffffffff);
- uint32_t x901, uint32_t x902 = mulx_u32(x886, 0xffffffff);
- uint32_t x904, uint32_t x905 = mulx_u32(x886, 0xffffffff);
- uint32_t x907, uint32_t x908 = mulx_u32(x886, 0x1fffffff);
- uint32_t x910, uint8_t x911 = addcarryx_u32(0x0, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x896, x898);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x899, x901);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x902, x904);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x905, x907);
- uint32_t x928, uint8_t _ = addcarryx_u32(0x0, x926, x908);
- uint32_t _, uint8_t x932 = addcarryx_u32(0x0, x862, x889);
- uint32_t x934, uint8_t x935 = addcarryx_u32(x932, x865, x910);
- uint32_t x937, uint8_t x938 = addcarryx_u32(x935, x868, x913);
- uint32_t x940, uint8_t x941 = addcarryx_u32(x938, x871, x916);
- uint32_t x943, uint8_t x944 = addcarryx_u32(x941, x874, x919);
- uint32_t x946, uint8_t x947 = addcarryx_u32(x944, x877, x922);
- uint32_t x949, uint8_t x950 = addcarryx_u32(x947, x880, x925);
- uint32_t x952, uint8_t x953 = addcarryx_u32(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint32_t x956, uint8_t x957 = subborrow_u32(0x0, x934, 0xfffffffd);
- uint32_t x959, uint8_t x960 = subborrow_u32(x957, x937, 0xffffffff);
- uint32_t x962, uint8_t x963 = subborrow_u32(x960, x940, 0xffffffff);
- uint32_t x965, uint8_t x966 = subborrow_u32(x963, x943, 0xffffffff);
- uint32_t x968, uint8_t x969 = subborrow_u32(x966, x946, 0xffffffff);
- uint32_t x971, uint8_t x972 = subborrow_u32(x969, x949, 0xffffffff);
- uint32_t x974, uint8_t x975 = subborrow_u32(x972, x952, 0x1fffffff);
- uint32_t _, uint8_t x978 = subborrow_u32(x975, x954, 0x0);
- uint32_t x979 = cmovznz(x978, x974, x952);
- uint32_t x980 = cmovznz(x978, x971, x949);
- uint32_t x981 = cmovznz(x978, x968, x946);
- uint32_t x982 = cmovznz(x978, x965, x943);
- uint32_t x983 = cmovznz(x978, x962, x940);
- uint32_t x984 = cmovznz(x978, x959, x937);
- uint32_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e221m3/femulDisplay.v b/src/Specific/montgomery32_2e221m3/femulDisplay.v
deleted file mode 100644
index 4c726b756..000000000
--- a/src/Specific/montgomery32_2e221m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e221m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e221m3/fenz.c b/src/Specific/montgomery32_2e221m3/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e221m3/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e221m3/fenz.v b/src/Specific/montgomery32_2e221m3/fenz.v
deleted file mode 100644
index 1da993d93..000000000
--- a/src/Specific/montgomery32_2e221m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e221m3/fenzDisplay.log b/src/Specific/montgomery32_2e221m3/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e221m3/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e221m3/fenzDisplay.v b/src/Specific/montgomery32_2e221m3/fenzDisplay.v
deleted file mode 100644
index 921ecc570..000000000
--- a/src/Specific/montgomery32_2e221m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e221m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e221m3/feopp.v b/src/Specific/montgomery32_2e221m3/feopp.v
deleted file mode 100644
index 4c6f2ee37..000000000
--- a/src/Specific/montgomery32_2e221m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e221m3/feoppDisplay.log b/src/Specific/montgomery32_2e221m3/feoppDisplay.log
deleted file mode 100644
index dc4c2fee4..000000000
--- a/src/Specific/montgomery32_2e221m3/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xfffffffd);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0x1fffffff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e221m3/feoppDisplay.v b/src/Specific/montgomery32_2e221m3/feoppDisplay.v
deleted file mode 100644
index be91f12d7..000000000
--- a/src/Specific/montgomery32_2e221m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e221m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e221m3/fesquare.c b/src/Specific/montgomery32_2e221m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e221m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e221m3/fesub.v b/src/Specific/montgomery32_2e221m3/fesub.v
deleted file mode 100644
index bacb611a6..000000000
--- a/src/Specific/montgomery32_2e221m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e221m3/fesubDisplay.log b/src/Specific/montgomery32_2e221m3/fesubDisplay.log
deleted file mode 100644
index 94ca494e3..000000000
--- a/src/Specific/montgomery32_2e221m3/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xfffffffd);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0x1fffffff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e221m3/fesubDisplay.v b/src/Specific/montgomery32_2e221m3/fesubDisplay.v
deleted file mode 100644
index 7f96e40cd..000000000
--- a/src/Specific/montgomery32_2e221m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e221m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e221m3/CurveParameters.v b/src/Specific/montgomery32_2e221m3_7limbs/CurveParameters.v
index 433140906..433140906 100644
--- a/src/Specific/montgomery32_2e221m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e221m3_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/Synthesis.v b/src/Specific/montgomery32_2e221m3_7limbs/Synthesis.v
new file mode 100644
index 000000000..8e0463490
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e221m3/compiler.sh b/src/Specific/montgomery32_2e221m3_7limbs/compiler.sh
index 2eea15487..2eea15487 100755
--- a/src/Specific/montgomery32_2e221m3/compiler.sh
+++ b/src/Specific/montgomery32_2e221m3_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e221m3/compilerxx.sh b/src/Specific/montgomery32_2e221m3_7limbs/compilerxx.sh
index a4c97ac37..a4c97ac37 100755
--- a/src/Specific/montgomery32_2e221m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e221m3_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/feadd.v b/src/Specific/montgomery32_2e221m3_7limbs/feadd.v
new file mode 100644
index 000000000..42ea21a41
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e221m3_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..ae294b64f
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/femul.v b/src/Specific/montgomery32_2e221m3_7limbs/femul.v
new file mode 100644
index 000000000..5330ee2ad
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e221m3_7limbs/femulDisplay.v
new file mode 100644
index 000000000..8f37f08f4
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/fenz.v b/src/Specific/montgomery32_2e221m3_7limbs/fenz.v
new file mode 100644
index 000000000..e5ebd6e56
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e221m3_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..263da955d
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/feopp.v b/src/Specific/montgomery32_2e221m3_7limbs/feopp.v
new file mode 100644
index 000000000..64a1af2ad
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e221m3_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..2e30d7af3
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/fesub.v b/src/Specific/montgomery32_2e221m3_7limbs/fesub.v
new file mode 100644
index 000000000..0938af09d
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e221m3_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e221m3_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..966fae95a
--- /dev/null
+++ b/src/Specific/montgomery32_2e221m3_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e221m3_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e221m3/py_interpreter.sh b/src/Specific/montgomery32_2e221m3_7limbs/py_interpreter.sh
index fb06eaaa5..fb06eaaa5 100755
--- a/src/Specific/montgomery32_2e221m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e221m3_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e222m117/Synthesis.v b/src/Specific/montgomery32_2e222m117/Synthesis.v
deleted file mode 100644
index 2d6ad4c5c..000000000
--- a/src/Specific/montgomery32_2e222m117/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e222m117.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e222m117/feadd.c b/src/Specific/montgomery32_2e222m117/feadd.c
deleted file mode 100644
index b687807e2..000000000
--- a/src/Specific/montgomery32_2e222m117/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffff8b, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3fffffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e222m117/feadd.v b/src/Specific/montgomery32_2e222m117/feadd.v
deleted file mode 100644
index bf658295e..000000000
--- a/src/Specific/montgomery32_2e222m117/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e222m117/feaddDisplay.log b/src/Specific/montgomery32_2e222m117/feaddDisplay.log
deleted file mode 100644
index 42c686f39..000000000
--- a/src/Specific/montgomery32_2e222m117/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffff8b);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3fffffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e222m117/feaddDisplay.v b/src/Specific/montgomery32_2e222m117/feaddDisplay.v
deleted file mode 100644
index 23f3cba7d..000000000
--- a/src/Specific/montgomery32_2e222m117/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e222m117.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e222m117/femul.v b/src/Specific/montgomery32_2e222m117/femul.v
deleted file mode 100644
index 0f32b9992..000000000
--- a/src/Specific/montgomery32_2e222m117/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e222m117/femulDisplay.log b/src/Specific/montgomery32_2e222m117/femulDisplay.log
deleted file mode 100644
index 280d4e62c..000000000
--- a/src/Specific/montgomery32_2e222m117/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xdcfdcfdd);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xffffff8b);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint32_t x86, uint32_t x87 = mulx_u32(x71, 0xffffffff);
- uint32_t x89, uint32_t x90 = mulx_u32(x71, 0xffffffff);
- uint32_t x92, uint32_t x93 = mulx_u32(x71, 0x3fffffff);
- uint32_t x95, uint8_t x96 = addcarryx_u32(0x0, x75, x77);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x78, x80);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x81, x83);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x84, x86);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x87, x89);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x90, x92);
- uint32_t x113, uint8_t _ = addcarryx_u32(0x0, x111, x93);
- uint32_t _, uint8_t x117 = addcarryx_u32(0x0, x29, x74);
- uint32_t x119, uint8_t x120 = addcarryx_u32(x117, x50, x95);
- uint32_t x122, uint8_t x123 = addcarryx_u32(x120, x53, x98);
- uint32_t x125, uint8_t x126 = addcarryx_u32(x123, x56, x101);
- uint32_t x128, uint8_t x129 = addcarryx_u32(x126, x59, x104);
- uint32_t x131, uint8_t x132 = addcarryx_u32(x129, x62, x107);
- uint32_t x134, uint8_t x135 = addcarryx_u32(x132, x65, x110);
- uint32_t x137, uint8_t x138 = addcarryx_u32(x135, x68, x113);
- uint32_t x140, uint32_t x141 = mulx_u32(x7, x17);
- uint32_t x143, uint32_t x144 = mulx_u32(x7, x19);
- uint32_t x146, uint32_t x147 = mulx_u32(x7, x21);
- uint32_t x149, uint32_t x150 = mulx_u32(x7, x23);
- uint32_t x152, uint32_t x153 = mulx_u32(x7, x25);
- uint32_t x155, uint32_t x156 = mulx_u32(x7, x27);
- uint32_t x158, uint32_t x159 = mulx_u32(x7, x26);
- uint32_t x161, uint8_t x162 = addcarryx_u32(0x0, x141, x143);
- uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x144, x146);
- uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x147, x149);
- uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x150, x152);
- uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x153, x155);
- uint32_t x176, uint8_t x177 = addcarryx_u32(x174, x156, x158);
- uint32_t x179, uint8_t _ = addcarryx_u32(0x0, x177, x159);
- uint32_t x182, uint8_t x183 = addcarryx_u32(0x0, x119, x140);
- uint32_t x185, uint8_t x186 = addcarryx_u32(x183, x122, x161);
- uint32_t x188, uint8_t x189 = addcarryx_u32(x186, x125, x164);
- uint32_t x191, uint8_t x192 = addcarryx_u32(x189, x128, x167);
- uint32_t x194, uint8_t x195 = addcarryx_u32(x192, x131, x170);
- uint32_t x197, uint8_t x198 = addcarryx_u32(x195, x134, x173);
- uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x137, x176);
- uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x138, x179);
- uint32_t x206, uint32_t _ = mulx_u32(x182, 0xdcfdcfdd);
- uint32_t x209, uint32_t x210 = mulx_u32(x206, 0xffffff8b);
- uint32_t x212, uint32_t x213 = mulx_u32(x206, 0xffffffff);
- uint32_t x215, uint32_t x216 = mulx_u32(x206, 0xffffffff);
- uint32_t x218, uint32_t x219 = mulx_u32(x206, 0xffffffff);
- uint32_t x221, uint32_t x222 = mulx_u32(x206, 0xffffffff);
- uint32_t x224, uint32_t x225 = mulx_u32(x206, 0xffffffff);
- uint32_t x227, uint32_t x228 = mulx_u32(x206, 0x3fffffff);
- uint32_t x230, uint8_t x231 = addcarryx_u32(0x0, x210, x212);
- uint32_t x233, uint8_t x234 = addcarryx_u32(x231, x213, x215);
- uint32_t x236, uint8_t x237 = addcarryx_u32(x234, x216, x218);
- uint32_t x239, uint8_t x240 = addcarryx_u32(x237, x219, x221);
- uint32_t x242, uint8_t x243 = addcarryx_u32(x240, x222, x224);
- uint32_t x245, uint8_t x246 = addcarryx_u32(x243, x225, x227);
- uint32_t x248, uint8_t _ = addcarryx_u32(0x0, x246, x228);
- uint32_t _, uint8_t x252 = addcarryx_u32(0x0, x182, x209);
- uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x185, x230);
- uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x188, x233);
- uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x191, x236);
- uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x194, x239);
- uint32_t x266, uint8_t x267 = addcarryx_u32(x264, x197, x242);
- uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x200, x245);
- uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint32_t x276, uint32_t x277 = mulx_u32(x9, x17);
- uint32_t x279, uint32_t x280 = mulx_u32(x9, x19);
- uint32_t x282, uint32_t x283 = mulx_u32(x9, x21);
- uint32_t x285, uint32_t x286 = mulx_u32(x9, x23);
- uint32_t x288, uint32_t x289 = mulx_u32(x9, x25);
- uint32_t x291, uint32_t x292 = mulx_u32(x9, x27);
- uint32_t x294, uint32_t x295 = mulx_u32(x9, x26);
- uint32_t x297, uint8_t x298 = addcarryx_u32(0x0, x277, x279);
- uint32_t x300, uint8_t x301 = addcarryx_u32(x298, x280, x282);
- uint32_t x303, uint8_t x304 = addcarryx_u32(x301, x283, x285);
- uint32_t x306, uint8_t x307 = addcarryx_u32(x304, x286, x288);
- uint32_t x309, uint8_t x310 = addcarryx_u32(x307, x289, x291);
- uint32_t x312, uint8_t x313 = addcarryx_u32(x310, x292, x294);
- uint32_t x315, uint8_t _ = addcarryx_u32(0x0, x313, x295);
- uint32_t x318, uint8_t x319 = addcarryx_u32(0x0, x254, x276);
- uint32_t x321, uint8_t x322 = addcarryx_u32(x319, x257, x297);
- uint32_t x324, uint8_t x325 = addcarryx_u32(x322, x260, x300);
- uint32_t x327, uint8_t x328 = addcarryx_u32(x325, x263, x303);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x266, x306);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x269, x309);
- uint32_t x336, uint8_t x337 = addcarryx_u32(x334, x272, x312);
- uint32_t x339, uint8_t x340 = addcarryx_u32(x337, x274, x315);
- uint32_t x342, uint32_t _ = mulx_u32(x318, 0xdcfdcfdd);
- uint32_t x345, uint32_t x346 = mulx_u32(x342, 0xffffff8b);
- uint32_t x348, uint32_t x349 = mulx_u32(x342, 0xffffffff);
- uint32_t x351, uint32_t x352 = mulx_u32(x342, 0xffffffff);
- uint32_t x354, uint32_t x355 = mulx_u32(x342, 0xffffffff);
- uint32_t x357, uint32_t x358 = mulx_u32(x342, 0xffffffff);
- uint32_t x360, uint32_t x361 = mulx_u32(x342, 0xffffffff);
- uint32_t x363, uint32_t x364 = mulx_u32(x342, 0x3fffffff);
- uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x346, x348);
- uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x349, x351);
- uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x352, x354);
- uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x355, x357);
- uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x358, x360);
- uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x361, x363);
- uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x364);
- uint32_t _, uint8_t x388 = addcarryx_u32(0x0, x318, x345);
- uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x321, x366);
- uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x324, x369);
- uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x327, x372);
- uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x330, x375);
- uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x333, x378);
- uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x336, x381);
- uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint32_t x412, uint32_t x413 = mulx_u32(x11, x17);
- uint32_t x415, uint32_t x416 = mulx_u32(x11, x19);
- uint32_t x418, uint32_t x419 = mulx_u32(x11, x21);
- uint32_t x421, uint32_t x422 = mulx_u32(x11, x23);
- uint32_t x424, uint32_t x425 = mulx_u32(x11, x25);
- uint32_t x427, uint32_t x428 = mulx_u32(x11, x27);
- uint32_t x430, uint32_t x431 = mulx_u32(x11, x26);
- uint32_t x433, uint8_t x434 = addcarryx_u32(0x0, x413, x415);
- uint32_t x436, uint8_t x437 = addcarryx_u32(x434, x416, x418);
- uint32_t x439, uint8_t x440 = addcarryx_u32(x437, x419, x421);
- uint32_t x442, uint8_t x443 = addcarryx_u32(x440, x422, x424);
- uint32_t x445, uint8_t x446 = addcarryx_u32(x443, x425, x427);
- uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x428, x430);
- uint32_t x451, uint8_t _ = addcarryx_u32(0x0, x449, x431);
- uint32_t x454, uint8_t x455 = addcarryx_u32(0x0, x390, x412);
- uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x393, x433);
- uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x396, x436);
- uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x399, x439);
- uint32_t x466, uint8_t x467 = addcarryx_u32(x464, x402, x442);
- uint32_t x469, uint8_t x470 = addcarryx_u32(x467, x405, x445);
- uint32_t x472, uint8_t x473 = addcarryx_u32(x470, x408, x448);
- uint32_t x475, uint8_t x476 = addcarryx_u32(x473, x410, x451);
- uint32_t x478, uint32_t _ = mulx_u32(x454, 0xdcfdcfdd);
- uint32_t x481, uint32_t x482 = mulx_u32(x478, 0xffffff8b);
- uint32_t x484, uint32_t x485 = mulx_u32(x478, 0xffffffff);
- uint32_t x487, uint32_t x488 = mulx_u32(x478, 0xffffffff);
- uint32_t x490, uint32_t x491 = mulx_u32(x478, 0xffffffff);
- uint32_t x493, uint32_t x494 = mulx_u32(x478, 0xffffffff);
- uint32_t x496, uint32_t x497 = mulx_u32(x478, 0xffffffff);
- uint32_t x499, uint32_t x500 = mulx_u32(x478, 0x3fffffff);
- uint32_t x502, uint8_t x503 = addcarryx_u32(0x0, x482, x484);
- uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t _ = addcarryx_u32(0x0, x518, x500);
- uint32_t _, uint8_t x524 = addcarryx_u32(0x0, x454, x481);
- uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x457, x502);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x460, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x463, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x466, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x469, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x472, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint32_t x548, uint32_t x549 = mulx_u32(x13, x17);
- uint32_t x551, uint32_t x552 = mulx_u32(x13, x19);
- uint32_t x554, uint32_t x555 = mulx_u32(x13, x21);
- uint32_t x557, uint32_t x558 = mulx_u32(x13, x23);
- uint32_t x560, uint32_t x561 = mulx_u32(x13, x25);
- uint32_t x563, uint32_t x564 = mulx_u32(x13, x27);
- uint32_t x566, uint32_t x567 = mulx_u32(x13, x26);
- uint32_t x569, uint8_t x570 = addcarryx_u32(0x0, x549, x551);
- uint32_t x572, uint8_t x573 = addcarryx_u32(x570, x552, x554);
- uint32_t x575, uint8_t x576 = addcarryx_u32(x573, x555, x557);
- uint32_t x578, uint8_t x579 = addcarryx_u32(x576, x558, x560);
- uint32_t x581, uint8_t x582 = addcarryx_u32(x579, x561, x563);
- uint32_t x584, uint8_t x585 = addcarryx_u32(x582, x564, x566);
- uint32_t x587, uint8_t _ = addcarryx_u32(0x0, x585, x567);
- uint32_t x590, uint8_t x591 = addcarryx_u32(0x0, x526, x548);
- uint32_t x593, uint8_t x594 = addcarryx_u32(x591, x529, x569);
- uint32_t x596, uint8_t x597 = addcarryx_u32(x594, x532, x572);
- uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x535, x575);
- uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x538, x578);
- uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x541, x581);
- uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x544, x584);
- uint32_t x611, uint8_t x612 = addcarryx_u32(x609, x546, x587);
- uint32_t x614, uint32_t _ = mulx_u32(x590, 0xdcfdcfdd);
- uint32_t x617, uint32_t x618 = mulx_u32(x614, 0xffffff8b);
- uint32_t x620, uint32_t x621 = mulx_u32(x614, 0xffffffff);
- uint32_t x623, uint32_t x624 = mulx_u32(x614, 0xffffffff);
- uint32_t x626, uint32_t x627 = mulx_u32(x614, 0xffffffff);
- uint32_t x629, uint32_t x630 = mulx_u32(x614, 0xffffffff);
- uint32_t x632, uint32_t x633 = mulx_u32(x614, 0xffffffff);
- uint32_t x635, uint32_t x636 = mulx_u32(x614, 0x3fffffff);
- uint32_t x638, uint8_t x639 = addcarryx_u32(0x0, x618, x620);
- uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x621, x623);
- uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x624, x626);
- uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x627, x629);
- uint32_t x650, uint8_t x651 = addcarryx_u32(x648, x630, x632);
- uint32_t x653, uint8_t x654 = addcarryx_u32(x651, x633, x635);
- uint32_t x656, uint8_t _ = addcarryx_u32(0x0, x654, x636);
- uint32_t _, uint8_t x660 = addcarryx_u32(0x0, x590, x617);
- uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x593, x638);
- uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x596, x641);
- uint32_t x668, uint8_t x669 = addcarryx_u32(x666, x599, x644);
- uint32_t x671, uint8_t x672 = addcarryx_u32(x669, x602, x647);
- uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x605, x650);
- uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x608, x653);
- uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint32_t x684, uint32_t x685 = mulx_u32(x15, x17);
- uint32_t x687, uint32_t x688 = mulx_u32(x15, x19);
- uint32_t x690, uint32_t x691 = mulx_u32(x15, x21);
- uint32_t x693, uint32_t x694 = mulx_u32(x15, x23);
- uint32_t x696, uint32_t x697 = mulx_u32(x15, x25);
- uint32_t x699, uint32_t x700 = mulx_u32(x15, x27);
- uint32_t x702, uint32_t x703 = mulx_u32(x15, x26);
- uint32_t x705, uint8_t x706 = addcarryx_u32(0x0, x685, x687);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x688, x690);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x691, x693);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x694, x696);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x697, x699);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x700, x702);
- uint32_t x723, uint8_t _ = addcarryx_u32(0x0, x721, x703);
- uint32_t x726, uint8_t x727 = addcarryx_u32(0x0, x662, x684);
- uint32_t x729, uint8_t x730 = addcarryx_u32(x727, x665, x705);
- uint32_t x732, uint8_t x733 = addcarryx_u32(x730, x668, x708);
- uint32_t x735, uint8_t x736 = addcarryx_u32(x733, x671, x711);
- uint32_t x738, uint8_t x739 = addcarryx_u32(x736, x674, x714);
- uint32_t x741, uint8_t x742 = addcarryx_u32(x739, x677, x717);
- uint32_t x744, uint8_t x745 = addcarryx_u32(x742, x680, x720);
- uint32_t x747, uint8_t x748 = addcarryx_u32(x745, x682, x723);
- uint32_t x750, uint32_t _ = mulx_u32(x726, 0xdcfdcfdd);
- uint32_t x753, uint32_t x754 = mulx_u32(x750, 0xffffff8b);
- uint32_t x756, uint32_t x757 = mulx_u32(x750, 0xffffffff);
- uint32_t x759, uint32_t x760 = mulx_u32(x750, 0xffffffff);
- uint32_t x762, uint32_t x763 = mulx_u32(x750, 0xffffffff);
- uint32_t x765, uint32_t x766 = mulx_u32(x750, 0xffffffff);
- uint32_t x768, uint32_t x769 = mulx_u32(x750, 0xffffffff);
- uint32_t x771, uint32_t x772 = mulx_u32(x750, 0x3fffffff);
- uint32_t x774, uint8_t x775 = addcarryx_u32(0x0, x754, x756);
- uint32_t x777, uint8_t x778 = addcarryx_u32(x775, x757, x759);
- uint32_t x780, uint8_t x781 = addcarryx_u32(x778, x760, x762);
- uint32_t x783, uint8_t x784 = addcarryx_u32(x781, x763, x765);
- uint32_t x786, uint8_t x787 = addcarryx_u32(x784, x766, x768);
- uint32_t x789, uint8_t x790 = addcarryx_u32(x787, x769, x771);
- uint32_t x792, uint8_t _ = addcarryx_u32(0x0, x790, x772);
- uint32_t _, uint8_t x796 = addcarryx_u32(0x0, x726, x753);
- uint32_t x798, uint8_t x799 = addcarryx_u32(x796, x729, x774);
- uint32_t x801, uint8_t x802 = addcarryx_u32(x799, x732, x777);
- uint32_t x804, uint8_t x805 = addcarryx_u32(x802, x735, x780);
- uint32_t x807, uint8_t x808 = addcarryx_u32(x805, x738, x783);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x741, x786);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x744, x789);
- uint32_t x816, uint8_t x817 = addcarryx_u32(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint32_t x820, uint32_t x821 = mulx_u32(x14, x17);
- uint32_t x823, uint32_t x824 = mulx_u32(x14, x19);
- uint32_t x826, uint32_t x827 = mulx_u32(x14, x21);
- uint32_t x829, uint32_t x830 = mulx_u32(x14, x23);
- uint32_t x832, uint32_t x833 = mulx_u32(x14, x25);
- uint32_t x835, uint32_t x836 = mulx_u32(x14, x27);
- uint32_t x838, uint32_t x839 = mulx_u32(x14, x26);
- uint32_t x841, uint8_t x842 = addcarryx_u32(0x0, x821, x823);
- uint32_t x844, uint8_t x845 = addcarryx_u32(x842, x824, x826);
- uint32_t x847, uint8_t x848 = addcarryx_u32(x845, x827, x829);
- uint32_t x850, uint8_t x851 = addcarryx_u32(x848, x830, x832);
- uint32_t x853, uint8_t x854 = addcarryx_u32(x851, x833, x835);
- uint32_t x856, uint8_t x857 = addcarryx_u32(x854, x836, x838);
- uint32_t x859, uint8_t _ = addcarryx_u32(0x0, x857, x839);
- uint32_t x862, uint8_t x863 = addcarryx_u32(0x0, x798, x820);
- uint32_t x865, uint8_t x866 = addcarryx_u32(x863, x801, x841);
- uint32_t x868, uint8_t x869 = addcarryx_u32(x866, x804, x844);
- uint32_t x871, uint8_t x872 = addcarryx_u32(x869, x807, x847);
- uint32_t x874, uint8_t x875 = addcarryx_u32(x872, x810, x850);
- uint32_t x877, uint8_t x878 = addcarryx_u32(x875, x813, x853);
- uint32_t x880, uint8_t x881 = addcarryx_u32(x878, x816, x856);
- uint32_t x883, uint8_t x884 = addcarryx_u32(x881, x818, x859);
- uint32_t x886, uint32_t _ = mulx_u32(x862, 0xdcfdcfdd);
- uint32_t x889, uint32_t x890 = mulx_u32(x886, 0xffffff8b);
- uint32_t x892, uint32_t x893 = mulx_u32(x886, 0xffffffff);
- uint32_t x895, uint32_t x896 = mulx_u32(x886, 0xffffffff);
- uint32_t x898, uint32_t x899 = mulx_u32(x886, 0xffffffff);
- uint32_t x901, uint32_t x902 = mulx_u32(x886, 0xffffffff);
- uint32_t x904, uint32_t x905 = mulx_u32(x886, 0xffffffff);
- uint32_t x907, uint32_t x908 = mulx_u32(x886, 0x3fffffff);
- uint32_t x910, uint8_t x911 = addcarryx_u32(0x0, x890, x892);
- uint32_t x913, uint8_t x914 = addcarryx_u32(x911, x893, x895);
- uint32_t x916, uint8_t x917 = addcarryx_u32(x914, x896, x898);
- uint32_t x919, uint8_t x920 = addcarryx_u32(x917, x899, x901);
- uint32_t x922, uint8_t x923 = addcarryx_u32(x920, x902, x904);
- uint32_t x925, uint8_t x926 = addcarryx_u32(x923, x905, x907);
- uint32_t x928, uint8_t _ = addcarryx_u32(0x0, x926, x908);
- uint32_t _, uint8_t x932 = addcarryx_u32(0x0, x862, x889);
- uint32_t x934, uint8_t x935 = addcarryx_u32(x932, x865, x910);
- uint32_t x937, uint8_t x938 = addcarryx_u32(x935, x868, x913);
- uint32_t x940, uint8_t x941 = addcarryx_u32(x938, x871, x916);
- uint32_t x943, uint8_t x944 = addcarryx_u32(x941, x874, x919);
- uint32_t x946, uint8_t x947 = addcarryx_u32(x944, x877, x922);
- uint32_t x949, uint8_t x950 = addcarryx_u32(x947, x880, x925);
- uint32_t x952, uint8_t x953 = addcarryx_u32(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint32_t x956, uint8_t x957 = subborrow_u32(0x0, x934, 0xffffff8b);
- uint32_t x959, uint8_t x960 = subborrow_u32(x957, x937, 0xffffffff);
- uint32_t x962, uint8_t x963 = subborrow_u32(x960, x940, 0xffffffff);
- uint32_t x965, uint8_t x966 = subborrow_u32(x963, x943, 0xffffffff);
- uint32_t x968, uint8_t x969 = subborrow_u32(x966, x946, 0xffffffff);
- uint32_t x971, uint8_t x972 = subborrow_u32(x969, x949, 0xffffffff);
- uint32_t x974, uint8_t x975 = subborrow_u32(x972, x952, 0x3fffffff);
- uint32_t _, uint8_t x978 = subborrow_u32(x975, x954, 0x0);
- uint32_t x979 = cmovznz(x978, x974, x952);
- uint32_t x980 = cmovznz(x978, x971, x949);
- uint32_t x981 = cmovznz(x978, x968, x946);
- uint32_t x982 = cmovznz(x978, x965, x943);
- uint32_t x983 = cmovznz(x978, x962, x940);
- uint32_t x984 = cmovznz(x978, x959, x937);
- uint32_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e222m117/femulDisplay.v b/src/Specific/montgomery32_2e222m117/femulDisplay.v
deleted file mode 100644
index 0732b56ee..000000000
--- a/src/Specific/montgomery32_2e222m117/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e222m117.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e222m117/fenz.c b/src/Specific/montgomery32_2e222m117/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e222m117/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e222m117/fenz.v b/src/Specific/montgomery32_2e222m117/fenz.v
deleted file mode 100644
index 90c21b432..000000000
--- a/src/Specific/montgomery32_2e222m117/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e222m117/fenzDisplay.log b/src/Specific/montgomery32_2e222m117/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e222m117/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e222m117/fenzDisplay.v b/src/Specific/montgomery32_2e222m117/fenzDisplay.v
deleted file mode 100644
index 5e8e28e48..000000000
--- a/src/Specific/montgomery32_2e222m117/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e222m117.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e222m117/feopp.v b/src/Specific/montgomery32_2e222m117/feopp.v
deleted file mode 100644
index 204c42c79..000000000
--- a/src/Specific/montgomery32_2e222m117/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e222m117/feoppDisplay.log b/src/Specific/montgomery32_2e222m117/feoppDisplay.log
deleted file mode 100644
index f8a47fecf..000000000
--- a/src/Specific/montgomery32_2e222m117/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffff8b);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x39 = (x34 & 0xffffffff);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x38, x17, x39);
- uint32_t x43 = (x34 & 0xffffffff);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x42, x20, x43);
- uint32_t x47 = (x34 & 0xffffffff);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x23, x47);
- uint32_t x51 = (x34 & 0xffffffff);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x26, x51);
- uint32_t x55 = (x34 & 0xffffffff);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x29, x55);
- uint32_t x59 = (x34 & 0x3fffffff);
- uint32_t x61, uint8_t _ = addcarryx_u32(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e222m117/feoppDisplay.v b/src/Specific/montgomery32_2e222m117/feoppDisplay.v
deleted file mode 100644
index ed6eab5de..000000000
--- a/src/Specific/montgomery32_2e222m117/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e222m117.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e222m117/fesquare.c b/src/Specific/montgomery32_2e222m117/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e222m117/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e222m117/fesub.v b/src/Specific/montgomery32_2e222m117/fesub.v
deleted file mode 100644
index f428f98c7..000000000
--- a/src/Specific/montgomery32_2e222m117/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e222m117/fesubDisplay.log b/src/Specific/montgomery32_2e222m117/fesubDisplay.log
deleted file mode 100644
index bb3c83320..000000000
--- a/src/Specific/montgomery32_2e222m117/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xffffff8b);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x54 = (x49 & 0xffffffff);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x53, x32, x54);
- uint32_t x58 = (x49 & 0xffffffff);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x57, x35, x58);
- uint32_t x62 = (x49 & 0xffffffff);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x61, x38, x62);
- uint32_t x66 = (x49 & 0xffffffff);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x65, x41, x66);
- uint32_t x70 = (x49 & 0xffffffff);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x69, x44, x70);
- uint32_t x74 = (x49 & 0x3fffffff);
- uint32_t x76, uint8_t _ = addcarryx_u32(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e222m117/fesubDisplay.v b/src/Specific/montgomery32_2e222m117/fesubDisplay.v
deleted file mode 100644
index 00d21fea5..000000000
--- a/src/Specific/montgomery32_2e222m117/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e222m117.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e222m117/CurveParameters.v b/src/Specific/montgomery32_2e222m117_7limbs/CurveParameters.v
index fdfdf452e..fdfdf452e 100644
--- a/src/Specific/montgomery32_2e222m117/CurveParameters.v
+++ b/src/Specific/montgomery32_2e222m117_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/Synthesis.v b/src/Specific/montgomery32_2e222m117_7limbs/Synthesis.v
new file mode 100644
index 000000000..395113bd9
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e222m117/compiler.sh b/src/Specific/montgomery32_2e222m117_7limbs/compiler.sh
index b077631b6..b077631b6 100755
--- a/src/Specific/montgomery32_2e222m117/compiler.sh
+++ b/src/Specific/montgomery32_2e222m117_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e222m117/compilerxx.sh b/src/Specific/montgomery32_2e222m117_7limbs/compilerxx.sh
index 68945b6de..68945b6de 100755
--- a/src/Specific/montgomery32_2e222m117/compilerxx.sh
+++ b/src/Specific/montgomery32_2e222m117_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/feadd.v b/src/Specific/montgomery32_2e222m117_7limbs/feadd.v
new file mode 100644
index 000000000..2e16f156d
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e222m117_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..96e40d62b
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/femul.v b/src/Specific/montgomery32_2e222m117_7limbs/femul.v
new file mode 100644
index 000000000..83cc67c29
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e222m117_7limbs/femulDisplay.v
new file mode 100644
index 000000000..e50d33416
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/fenz.v b/src/Specific/montgomery32_2e222m117_7limbs/fenz.v
new file mode 100644
index 000000000..52897c98e
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e222m117_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..5938d7ab9
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/feopp.v b/src/Specific/montgomery32_2e222m117_7limbs/feopp.v
new file mode 100644
index 000000000..31c54f100
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e222m117_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..e51b7e893
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/fesub.v b/src/Specific/montgomery32_2e222m117_7limbs/fesub.v
new file mode 100644
index 000000000..24410b11b
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e222m117_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e222m117_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..c099e31ef
--- /dev/null
+++ b/src/Specific/montgomery32_2e222m117_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e222m117_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e222m117/py_interpreter.sh b/src/Specific/montgomery32_2e222m117_7limbs/py_interpreter.sh
index db48f60b3..db48f60b3 100755
--- a/src/Specific/montgomery32_2e222m117/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e222m117_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v b/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v
deleted file mode 100644
index 0d4c31a39..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feadd.c b/src/Specific/montgomery32_2e224m2e96p1/feadd.c
deleted file mode 100644
index accfe4540..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
- { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
- { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
- { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
- { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0x1, &x50);
- { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0x0, &x53);
- { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0x0, &x56);
- { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
- { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
- { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
- { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0xffffffff, &x68);
- { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
- { uint32_t x73 = cmovznz32(x72, x68, x47);
- { uint32_t x74 = cmovznz32(x72, x65, x44);
- { uint32_t x75 = cmovznz32(x72, x62, x41);
- { uint32_t x76 = cmovznz32(x72, x59, x38);
- { uint32_t x77 = cmovznz32(x72, x56, x35);
- { uint32_t x78 = cmovznz32(x72, x53, x32);
- { uint32_t x79 = cmovznz32(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feadd.v b/src/Specific/montgomery32_2e224m2e96p1/feadd.v
deleted file mode 100644
index d77b74e67..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.log b/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.log
deleted file mode 100644
index e35ab18d5..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
- uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0x1);
- uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0x0);
- uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0x0);
- uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
- uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
- uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
- uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0xffffffff);
- uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
- uint32_t x73 = cmovznz32(x72, x68, x47);
- uint32_t x74 = cmovznz32(x72, x65, x44);
- uint32_t x75 = cmovznz32(x72, x62, x41);
- uint32_t x76 = cmovznz32(x72, x59, x38);
- uint32_t x77 = cmovznz32(x72, x56, x35);
- uint32_t x78 = cmovznz32(x72, x53, x32);
- uint32_t x79 = cmovznz32(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v
deleted file mode 100644
index 12d5e6ca0..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/femul.c b/src/Specific/montgomery32_2e224m2e96p1/femul.c
deleted file mode 100644
index 7adbf4aa3..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/femul.c
+++ /dev/null
@@ -1,324 +0,0 @@
-static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint32_t x30; uint32_t x29 = _mulx_u32(x5, x17, &x30);
- { uint32_t x33; uint32_t x32 = _mulx_u32(x5, x19, &x33);
- { uint32_t x36; uint32_t x35 = _mulx_u32(x5, x21, &x36);
- { uint32_t x39; uint32_t x38 = _mulx_u32(x5, x23, &x39);
- { uint32_t x42; uint32_t x41 = _mulx_u32(x5, x25, &x42);
- { uint32_t x45; uint32_t x44 = _mulx_u32(x5, x27, &x45);
- { uint32_t x48; uint32_t x47 = _mulx_u32(x5, x26, &x48);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(0x0, x30, x32, &x50);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x51, x33, x35, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x36, x38, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x39, x41, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x42, x44, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x45, x47, &x65);
- { uint32_t x68; uint8_t _ = _addcarryx_u32(0x0, x66, x48, &x68);
- { uint32_t _; uint32_t x71 = _mulx_u32(x29, 0xffffffff, &_);
- { uint32_t x75; uint32_t x74 = _mulx_u32(x71, 0xffffffff, &x75);
- { uint32_t x78; uint32_t x77 = _mulx_u32(x71, 0xffffffff, &x78);
- { uint32_t x81; uint32_t x80 = _mulx_u32(x71, 0xffffffff, &x81);
- { uint32_t x84; uint32_t x83 = _mulx_u32(x71, 0xffffffff, &x84);
- { uint8_t x85 = (0x0 + 0x0);
- { uint8_t x86 = (0x0 + 0x0);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(0x0, x75, x77, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x78, x80, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x81, x83, &x94);
- { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x84, &x97);
- { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x29, x71, &_);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x50, x85, &x103);
- { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x53, x86, &x106);
- { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x56, x74, &x109);
- { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x59, x88, &x112);
- { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x62, x91, &x115);
- { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x65, x94, &x118);
- { uint32_t x121; uint8_t x122 = _addcarryx_u32(x119, x68, x97, &x121);
- { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
- { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
- { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
- { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
- { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x25, &x137);
- { uint32_t x140; uint32_t x139 = _mulx_u32(x7, x27, &x140);
- { uint32_t x143; uint32_t x142 = _mulx_u32(x7, x26, &x143);
- { uint32_t x145; uint8_t x146 = _addcarryx_u32(0x0, x125, x127, &x145);
- { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x128, x130, &x148);
- { uint32_t x151; uint8_t x152 = _addcarryx_u32(x149, x131, x133, &x151);
- { uint32_t x154; uint8_t x155 = _addcarryx_u32(x152, x134, x136, &x154);
- { uint32_t x157; uint8_t x158 = _addcarryx_u32(x155, x137, x139, &x157);
- { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x140, x142, &x160);
- { uint32_t x163; uint8_t _ = _addcarryx_u32(0x0, x161, x143, &x163);
- { uint32_t x166; uint8_t x167 = _addcarryx_u32(0x0, x103, x124, &x166);
- { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x106, x145, &x169);
- { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x109, x148, &x172);
- { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x112, x151, &x175);
- { uint32_t x178; uint8_t x179 = _addcarryx_u32(x176, x115, x154, &x178);
- { uint32_t x181; uint8_t x182 = _addcarryx_u32(x179, x118, x157, &x181);
- { uint32_t x184; uint8_t x185 = _addcarryx_u32(x182, x121, x160, &x184);
- { uint32_t x187; uint8_t x188 = _addcarryx_u32(x185, x122, x163, &x187);
- { uint32_t _; uint32_t x190 = _mulx_u32(x166, 0xffffffff, &_);
- { uint32_t x194; uint32_t x193 = _mulx_u32(x190, 0xffffffff, &x194);
- { uint32_t x197; uint32_t x196 = _mulx_u32(x190, 0xffffffff, &x197);
- { uint32_t x200; uint32_t x199 = _mulx_u32(x190, 0xffffffff, &x200);
- { uint32_t x203; uint32_t x202 = _mulx_u32(x190, 0xffffffff, &x203);
- { uint8_t x204 = (0x0 + 0x0);
- { uint8_t x205 = (0x0 + 0x0);
- { uint32_t x207; uint8_t x208 = _addcarryx_u32(0x0, x194, x196, &x207);
- { uint32_t x210; uint8_t x211 = _addcarryx_u32(x208, x197, x199, &x210);
- { uint32_t x213; uint8_t x214 = _addcarryx_u32(x211, x200, x202, &x213);
- { uint32_t x216; uint8_t _ = _addcarryx_u32(0x0, x214, x203, &x216);
- { uint32_t _; uint8_t x220 = _addcarryx_u32(0x0, x166, x190, &_);
- { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x169, x204, &x222);
- { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x172, x205, &x225);
- { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x175, x193, &x228);
- { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x178, x207, &x231);
- { uint32_t x234; uint8_t x235 = _addcarryx_u32(x232, x181, x210, &x234);
- { uint32_t x237; uint8_t x238 = _addcarryx_u32(x235, x184, x213, &x237);
- { uint32_t x240; uint8_t x241 = _addcarryx_u32(x238, x187, x216, &x240);
- { uint8_t x242 = (x241 + x188);
- { uint32_t x245; uint32_t x244 = _mulx_u32(x9, x17, &x245);
- { uint32_t x248; uint32_t x247 = _mulx_u32(x9, x19, &x248);
- { uint32_t x251; uint32_t x250 = _mulx_u32(x9, x21, &x251);
- { uint32_t x254; uint32_t x253 = _mulx_u32(x9, x23, &x254);
- { uint32_t x257; uint32_t x256 = _mulx_u32(x9, x25, &x257);
- { uint32_t x260; uint32_t x259 = _mulx_u32(x9, x27, &x260);
- { uint32_t x263; uint32_t x262 = _mulx_u32(x9, x26, &x263);
- { uint32_t x265; uint8_t x266 = _addcarryx_u32(0x0, x245, x247, &x265);
- { uint32_t x268; uint8_t x269 = _addcarryx_u32(x266, x248, x250, &x268);
- { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x251, x253, &x271);
- { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x254, x256, &x274);
- { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x257, x259, &x277);
- { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x260, x262, &x280);
- { uint32_t x283; uint8_t _ = _addcarryx_u32(0x0, x281, x263, &x283);
- { uint32_t x286; uint8_t x287 = _addcarryx_u32(0x0, x222, x244, &x286);
- { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x225, x265, &x289);
- { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x228, x268, &x292);
- { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x231, x271, &x295);
- { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x234, x274, &x298);
- { uint32_t x301; uint8_t x302 = _addcarryx_u32(x299, x237, x277, &x301);
- { uint32_t x304; uint8_t x305 = _addcarryx_u32(x302, x240, x280, &x304);
- { uint32_t x307; uint8_t x308 = _addcarryx_u32(x305, x242, x283, &x307);
- { uint32_t _; uint32_t x310 = _mulx_u32(x286, 0xffffffff, &_);
- { uint32_t x314; uint32_t x313 = _mulx_u32(x310, 0xffffffff, &x314);
- { uint32_t x317; uint32_t x316 = _mulx_u32(x310, 0xffffffff, &x317);
- { uint32_t x320; uint32_t x319 = _mulx_u32(x310, 0xffffffff, &x320);
- { uint32_t x323; uint32_t x322 = _mulx_u32(x310, 0xffffffff, &x323);
- { uint8_t x324 = (0x0 + 0x0);
- { uint8_t x325 = (0x0 + 0x0);
- { uint32_t x327; uint8_t x328 = _addcarryx_u32(0x0, x314, x316, &x327);
- { uint32_t x330; uint8_t x331 = _addcarryx_u32(x328, x317, x319, &x330);
- { uint32_t x333; uint8_t x334 = _addcarryx_u32(x331, x320, x322, &x333);
- { uint32_t x336; uint8_t _ = _addcarryx_u32(0x0, x334, x323, &x336);
- { uint32_t _; uint8_t x340 = _addcarryx_u32(0x0, x286, x310, &_);
- { uint32_t x342; uint8_t x343 = _addcarryx_u32(x340, x289, x324, &x342);
- { uint32_t x345; uint8_t x346 = _addcarryx_u32(x343, x292, x325, &x345);
- { uint32_t x348; uint8_t x349 = _addcarryx_u32(x346, x295, x313, &x348);
- { uint32_t x351; uint8_t x352 = _addcarryx_u32(x349, x298, x327, &x351);
- { uint32_t x354; uint8_t x355 = _addcarryx_u32(x352, x301, x330, &x354);
- { uint32_t x357; uint8_t x358 = _addcarryx_u32(x355, x304, x333, &x357);
- { uint32_t x360; uint8_t x361 = _addcarryx_u32(x358, x307, x336, &x360);
- { uint8_t x362 = (x361 + x308);
- { uint32_t x365; uint32_t x364 = _mulx_u32(x11, x17, &x365);
- { uint32_t x368; uint32_t x367 = _mulx_u32(x11, x19, &x368);
- { uint32_t x371; uint32_t x370 = _mulx_u32(x11, x21, &x371);
- { uint32_t x374; uint32_t x373 = _mulx_u32(x11, x23, &x374);
- { uint32_t x377; uint32_t x376 = _mulx_u32(x11, x25, &x377);
- { uint32_t x380; uint32_t x379 = _mulx_u32(x11, x27, &x380);
- { uint32_t x383; uint32_t x382 = _mulx_u32(x11, x26, &x383);
- { uint32_t x385; uint8_t x386 = _addcarryx_u32(0x0, x365, x367, &x385);
- { uint32_t x388; uint8_t x389 = _addcarryx_u32(x386, x368, x370, &x388);
- { uint32_t x391; uint8_t x392 = _addcarryx_u32(x389, x371, x373, &x391);
- { uint32_t x394; uint8_t x395 = _addcarryx_u32(x392, x374, x376, &x394);
- { uint32_t x397; uint8_t x398 = _addcarryx_u32(x395, x377, x379, &x397);
- { uint32_t x400; uint8_t x401 = _addcarryx_u32(x398, x380, x382, &x400);
- { uint32_t x403; uint8_t _ = _addcarryx_u32(0x0, x401, x383, &x403);
- { uint32_t x406; uint8_t x407 = _addcarryx_u32(0x0, x342, x364, &x406);
- { uint32_t x409; uint8_t x410 = _addcarryx_u32(x407, x345, x385, &x409);
- { uint32_t x412; uint8_t x413 = _addcarryx_u32(x410, x348, x388, &x412);
- { uint32_t x415; uint8_t x416 = _addcarryx_u32(x413, x351, x391, &x415);
- { uint32_t x418; uint8_t x419 = _addcarryx_u32(x416, x354, x394, &x418);
- { uint32_t x421; uint8_t x422 = _addcarryx_u32(x419, x357, x397, &x421);
- { uint32_t x424; uint8_t x425 = _addcarryx_u32(x422, x360, x400, &x424);
- { uint32_t x427; uint8_t x428 = _addcarryx_u32(x425, x362, x403, &x427);
- { uint32_t _; uint32_t x430 = _mulx_u32(x406, 0xffffffff, &_);
- { uint32_t x434; uint32_t x433 = _mulx_u32(x430, 0xffffffff, &x434);
- { uint32_t x437; uint32_t x436 = _mulx_u32(x430, 0xffffffff, &x437);
- { uint32_t x440; uint32_t x439 = _mulx_u32(x430, 0xffffffff, &x440);
- { uint32_t x443; uint32_t x442 = _mulx_u32(x430, 0xffffffff, &x443);
- { uint8_t x444 = (0x0 + 0x0);
- { uint8_t x445 = (0x0 + 0x0);
- { uint32_t x447; uint8_t x448 = _addcarryx_u32(0x0, x434, x436, &x447);
- { uint32_t x450; uint8_t x451 = _addcarryx_u32(x448, x437, x439, &x450);
- { uint32_t x453; uint8_t x454 = _addcarryx_u32(x451, x440, x442, &x453);
- { uint32_t x456; uint8_t _ = _addcarryx_u32(0x0, x454, x443, &x456);
- { uint32_t _; uint8_t x460 = _addcarryx_u32(0x0, x406, x430, &_);
- { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x409, x444, &x462);
- { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x412, x445, &x465);
- { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x415, x433, &x468);
- { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x418, x447, &x471);
- { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x421, x450, &x474);
- { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x424, x453, &x477);
- { uint32_t x480; uint8_t x481 = _addcarryx_u32(x478, x427, x456, &x480);
- { uint8_t x482 = (x481 + x428);
- { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x17, &x485);
- { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x19, &x488);
- { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x21, &x491);
- { uint32_t x494; uint32_t x493 = _mulx_u32(x13, x23, &x494);
- { uint32_t x497; uint32_t x496 = _mulx_u32(x13, x25, &x497);
- { uint32_t x500; uint32_t x499 = _mulx_u32(x13, x27, &x500);
- { uint32_t x503; uint32_t x502 = _mulx_u32(x13, x26, &x503);
- { uint32_t x505; uint8_t x506 = _addcarryx_u32(0x0, x485, x487, &x505);
- { uint32_t x508; uint8_t x509 = _addcarryx_u32(x506, x488, x490, &x508);
- { uint32_t x511; uint8_t x512 = _addcarryx_u32(x509, x491, x493, &x511);
- { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x494, x496, &x514);
- { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x497, x499, &x517);
- { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x500, x502, &x520);
- { uint32_t x523; uint8_t _ = _addcarryx_u32(0x0, x521, x503, &x523);
- { uint32_t x526; uint8_t x527 = _addcarryx_u32(0x0, x462, x484, &x526);
- { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x465, x505, &x529);
- { uint32_t x532; uint8_t x533 = _addcarryx_u32(x530, x468, x508, &x532);
- { uint32_t x535; uint8_t x536 = _addcarryx_u32(x533, x471, x511, &x535);
- { uint32_t x538; uint8_t x539 = _addcarryx_u32(x536, x474, x514, &x538);
- { uint32_t x541; uint8_t x542 = _addcarryx_u32(x539, x477, x517, &x541);
- { uint32_t x544; uint8_t x545 = _addcarryx_u32(x542, x480, x520, &x544);
- { uint32_t x547; uint8_t x548 = _addcarryx_u32(x545, x482, x523, &x547);
- { uint32_t _; uint32_t x550 = _mulx_u32(x526, 0xffffffff, &_);
- { uint32_t x554; uint32_t x553 = _mulx_u32(x550, 0xffffffff, &x554);
- { uint32_t x557; uint32_t x556 = _mulx_u32(x550, 0xffffffff, &x557);
- { uint32_t x560; uint32_t x559 = _mulx_u32(x550, 0xffffffff, &x560);
- { uint32_t x563; uint32_t x562 = _mulx_u32(x550, 0xffffffff, &x563);
- { uint8_t x564 = (0x0 + 0x0);
- { uint8_t x565 = (0x0 + 0x0);
- { uint32_t x567; uint8_t x568 = _addcarryx_u32(0x0, x554, x556, &x567);
- { uint32_t x570; uint8_t x571 = _addcarryx_u32(x568, x557, x559, &x570);
- { uint32_t x573; uint8_t x574 = _addcarryx_u32(x571, x560, x562, &x573);
- { uint32_t x576; uint8_t _ = _addcarryx_u32(0x0, x574, x563, &x576);
- { uint32_t _; uint8_t x580 = _addcarryx_u32(0x0, x526, x550, &_);
- { uint32_t x582; uint8_t x583 = _addcarryx_u32(x580, x529, x564, &x582);
- { uint32_t x585; uint8_t x586 = _addcarryx_u32(x583, x532, x565, &x585);
- { uint32_t x588; uint8_t x589 = _addcarryx_u32(x586, x535, x553, &x588);
- { uint32_t x591; uint8_t x592 = _addcarryx_u32(x589, x538, x567, &x591);
- { uint32_t x594; uint8_t x595 = _addcarryx_u32(x592, x541, x570, &x594);
- { uint32_t x597; uint8_t x598 = _addcarryx_u32(x595, x544, x573, &x597);
- { uint32_t x600; uint8_t x601 = _addcarryx_u32(x598, x547, x576, &x600);
- { uint8_t x602 = (x601 + x548);
- { uint32_t x605; uint32_t x604 = _mulx_u32(x15, x17, &x605);
- { uint32_t x608; uint32_t x607 = _mulx_u32(x15, x19, &x608);
- { uint32_t x611; uint32_t x610 = _mulx_u32(x15, x21, &x611);
- { uint32_t x614; uint32_t x613 = _mulx_u32(x15, x23, &x614);
- { uint32_t x617; uint32_t x616 = _mulx_u32(x15, x25, &x617);
- { uint32_t x620; uint32_t x619 = _mulx_u32(x15, x27, &x620);
- { uint32_t x623; uint32_t x622 = _mulx_u32(x15, x26, &x623);
- { uint32_t x625; uint8_t x626 = _addcarryx_u32(0x0, x605, x607, &x625);
- { uint32_t x628; uint8_t x629 = _addcarryx_u32(x626, x608, x610, &x628);
- { uint32_t x631; uint8_t x632 = _addcarryx_u32(x629, x611, x613, &x631);
- { uint32_t x634; uint8_t x635 = _addcarryx_u32(x632, x614, x616, &x634);
- { uint32_t x637; uint8_t x638 = _addcarryx_u32(x635, x617, x619, &x637);
- { uint32_t x640; uint8_t x641 = _addcarryx_u32(x638, x620, x622, &x640);
- { uint32_t x643; uint8_t _ = _addcarryx_u32(0x0, x641, x623, &x643);
- { uint32_t x646; uint8_t x647 = _addcarryx_u32(0x0, x582, x604, &x646);
- { uint32_t x649; uint8_t x650 = _addcarryx_u32(x647, x585, x625, &x649);
- { uint32_t x652; uint8_t x653 = _addcarryx_u32(x650, x588, x628, &x652);
- { uint32_t x655; uint8_t x656 = _addcarryx_u32(x653, x591, x631, &x655);
- { uint32_t x658; uint8_t x659 = _addcarryx_u32(x656, x594, x634, &x658);
- { uint32_t x661; uint8_t x662 = _addcarryx_u32(x659, x597, x637, &x661);
- { uint32_t x664; uint8_t x665 = _addcarryx_u32(x662, x600, x640, &x664);
- { uint32_t x667; uint8_t x668 = _addcarryx_u32(x665, x602, x643, &x667);
- { uint32_t _; uint32_t x670 = _mulx_u32(x646, 0xffffffff, &_);
- { uint32_t x674; uint32_t x673 = _mulx_u32(x670, 0xffffffff, &x674);
- { uint32_t x677; uint32_t x676 = _mulx_u32(x670, 0xffffffff, &x677);
- { uint32_t x680; uint32_t x679 = _mulx_u32(x670, 0xffffffff, &x680);
- { uint32_t x683; uint32_t x682 = _mulx_u32(x670, 0xffffffff, &x683);
- { uint8_t x684 = (0x0 + 0x0);
- { uint8_t x685 = (0x0 + 0x0);
- { uint32_t x687; uint8_t x688 = _addcarryx_u32(0x0, x674, x676, &x687);
- { uint32_t x690; uint8_t x691 = _addcarryx_u32(x688, x677, x679, &x690);
- { uint32_t x693; uint8_t x694 = _addcarryx_u32(x691, x680, x682, &x693);
- { uint32_t x696; uint8_t _ = _addcarryx_u32(0x0, x694, x683, &x696);
- { uint32_t _; uint8_t x700 = _addcarryx_u32(0x0, x646, x670, &_);
- { uint32_t x702; uint8_t x703 = _addcarryx_u32(x700, x649, x684, &x702);
- { uint32_t x705; uint8_t x706 = _addcarryx_u32(x703, x652, x685, &x705);
- { uint32_t x708; uint8_t x709 = _addcarryx_u32(x706, x655, x673, &x708);
- { uint32_t x711; uint8_t x712 = _addcarryx_u32(x709, x658, x687, &x711);
- { uint32_t x714; uint8_t x715 = _addcarryx_u32(x712, x661, x690, &x714);
- { uint32_t x717; uint8_t x718 = _addcarryx_u32(x715, x664, x693, &x717);
- { uint32_t x720; uint8_t x721 = _addcarryx_u32(x718, x667, x696, &x720);
- { uint8_t x722 = (x721 + x668);
- { uint32_t x725; uint32_t x724 = _mulx_u32(x14, x17, &x725);
- { uint32_t x728; uint32_t x727 = _mulx_u32(x14, x19, &x728);
- { uint32_t x731; uint32_t x730 = _mulx_u32(x14, x21, &x731);
- { uint32_t x734; uint32_t x733 = _mulx_u32(x14, x23, &x734);
- { uint32_t x737; uint32_t x736 = _mulx_u32(x14, x25, &x737);
- { uint32_t x740; uint32_t x739 = _mulx_u32(x14, x27, &x740);
- { uint32_t x743; uint32_t x742 = _mulx_u32(x14, x26, &x743);
- { uint32_t x745; uint8_t x746 = _addcarryx_u32(0x0, x725, x727, &x745);
- { uint32_t x748; uint8_t x749 = _addcarryx_u32(x746, x728, x730, &x748);
- { uint32_t x751; uint8_t x752 = _addcarryx_u32(x749, x731, x733, &x751);
- { uint32_t x754; uint8_t x755 = _addcarryx_u32(x752, x734, x736, &x754);
- { uint32_t x757; uint8_t x758 = _addcarryx_u32(x755, x737, x739, &x757);
- { uint32_t x760; uint8_t x761 = _addcarryx_u32(x758, x740, x742, &x760);
- { uint32_t x763; uint8_t _ = _addcarryx_u32(0x0, x761, x743, &x763);
- { uint32_t x766; uint8_t x767 = _addcarryx_u32(0x0, x702, x724, &x766);
- { uint32_t x769; uint8_t x770 = _addcarryx_u32(x767, x705, x745, &x769);
- { uint32_t x772; uint8_t x773 = _addcarryx_u32(x770, x708, x748, &x772);
- { uint32_t x775; uint8_t x776 = _addcarryx_u32(x773, x711, x751, &x775);
- { uint32_t x778; uint8_t x779 = _addcarryx_u32(x776, x714, x754, &x778);
- { uint32_t x781; uint8_t x782 = _addcarryx_u32(x779, x717, x757, &x781);
- { uint32_t x784; uint8_t x785 = _addcarryx_u32(x782, x720, x760, &x784);
- { uint32_t x787; uint8_t x788 = _addcarryx_u32(x785, x722, x763, &x787);
- { uint32_t _; uint32_t x790 = _mulx_u32(x766, 0xffffffff, &_);
- { uint32_t x794; uint32_t x793 = _mulx_u32(x790, 0xffffffff, &x794);
- { uint32_t x797; uint32_t x796 = _mulx_u32(x790, 0xffffffff, &x797);
- { uint32_t x800; uint32_t x799 = _mulx_u32(x790, 0xffffffff, &x800);
- { uint32_t x803; uint32_t x802 = _mulx_u32(x790, 0xffffffff, &x803);
- { uint8_t x804 = (0x0 + 0x0);
- { uint8_t x805 = (0x0 + 0x0);
- { uint32_t x807; uint8_t x808 = _addcarryx_u32(0x0, x794, x796, &x807);
- { uint32_t x810; uint8_t x811 = _addcarryx_u32(x808, x797, x799, &x810);
- { uint32_t x813; uint8_t x814 = _addcarryx_u32(x811, x800, x802, &x813);
- { uint32_t x816; uint8_t _ = _addcarryx_u32(0x0, x814, x803, &x816);
- { uint32_t _; uint8_t x820 = _addcarryx_u32(0x0, x766, x790, &_);
- { uint32_t x822; uint8_t x823 = _addcarryx_u32(x820, x769, x804, &x822);
- { uint32_t x825; uint8_t x826 = _addcarryx_u32(x823, x772, x805, &x825);
- { uint32_t x828; uint8_t x829 = _addcarryx_u32(x826, x775, x793, &x828);
- { uint32_t x831; uint8_t x832 = _addcarryx_u32(x829, x778, x807, &x831);
- { uint32_t x834; uint8_t x835 = _addcarryx_u32(x832, x781, x810, &x834);
- { uint32_t x837; uint8_t x838 = _addcarryx_u32(x835, x784, x813, &x837);
- { uint32_t x840; uint8_t x841 = _addcarryx_u32(x838, x787, x816, &x840);
- { uint8_t x842 = (x841 + x788);
- { uint32_t x844; uint8_t x845 = _subborrow_u32(0x0, x822, 0x1, &x844);
- { uint32_t x847; uint8_t x848 = _subborrow_u32(x845, x825, 0x0, &x847);
- { uint32_t x850; uint8_t x851 = _subborrow_u32(x848, x828, 0x0, &x850);
- { uint32_t x853; uint8_t x854 = _subborrow_u32(x851, x831, 0xffffffff, &x853);
- { uint32_t x856; uint8_t x857 = _subborrow_u32(x854, x834, 0xffffffff, &x856);
- { uint32_t x859; uint8_t x860 = _subborrow_u32(x857, x837, 0xffffffff, &x859);
- { uint32_t x862; uint8_t x863 = _subborrow_u32(x860, x840, 0xffffffff, &x862);
- { uint32_t _; uint8_t x866 = _subborrow_u32(x863, x842, 0x0, &_);
- { uint32_t x867 = cmovznz32(x866, x862, x840);
- { uint32_t x868 = cmovznz32(x866, x859, x837);
- { uint32_t x869 = cmovznz32(x866, x856, x834);
- { uint32_t x870 = cmovznz32(x866, x853, x831);
- { uint32_t x871 = cmovznz32(x866, x850, x828);
- { uint32_t x872 = cmovznz32(x866, x847, x825);
- { uint32_t x873 = cmovznz32(x866, x844, x822);
- out[0] = x873;
- out[1] = x872;
- out[2] = x871;
- out[3] = x870;
- out[4] = x869;
- out[5] = x868;
- out[6] = x867;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e224m2e96p1/femul.v b/src/Specific/montgomery32_2e224m2e96p1/femul.v
deleted file mode 100644
index aa0c28d49..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.log b/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.log
deleted file mode 100644
index 09714b474..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.log
+++ /dev/null
@@ -1,307 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint32_t x30 = mulx_u32(x5, x17);
- uint32_t x32, uint32_t x33 = mulx_u32(x5, x19);
- uint32_t x35, uint32_t x36 = mulx_u32(x5, x21);
- uint32_t x38, uint32_t x39 = mulx_u32(x5, x23);
- uint32_t x41, uint32_t x42 = mulx_u32(x5, x25);
- uint32_t x44, uint32_t x45 = mulx_u32(x5, x27);
- uint32_t x47, uint32_t x48 = mulx_u32(x5, x26);
- uint32_t x50, uint8_t x51 = addcarryx_u32(0x0, x30, x32);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x33, x35);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x36, x38);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x39, x41);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x42, x44);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x45, x47);
- uint32_t x68, uint8_t _ = addcarryx_u32(0x0, x66, x48);
- uint32_t x71, uint32_t _ = mulx_u32(x29, 0xffffffff);
- uint32_t x74, uint32_t x75 = mulx_u32(x71, 0xffffffff);
- uint32_t x77, uint32_t x78 = mulx_u32(x71, 0xffffffff);
- uint32_t x80, uint32_t x81 = mulx_u32(x71, 0xffffffff);
- uint32_t x83, uint32_t x84 = mulx_u32(x71, 0xffffffff);
- uint8_t x85 = (0x0 + 0x0);
- uint8_t x86 = (0x0 + 0x0);
- uint32_t x88, uint8_t x89 = addcarryx_u32(0x0, x75, x77);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x78, x80);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x81, x83);
- uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x84);
- uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x29, x71);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x50, x85);
- uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x53, x86);
- uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x56, x74);
- uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x59, x88);
- uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x62, x91);
- uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x65, x94);
- uint32_t x121, uint8_t x122 = addcarryx_u32(x119, x68, x97);
- uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
- uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
- uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
- uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
- uint32_t x136, uint32_t x137 = mulx_u32(x7, x25);
- uint32_t x139, uint32_t x140 = mulx_u32(x7, x27);
- uint32_t x142, uint32_t x143 = mulx_u32(x7, x26);
- uint32_t x145, uint8_t x146 = addcarryx_u32(0x0, x125, x127);
- uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x128, x130);
- uint32_t x151, uint8_t x152 = addcarryx_u32(x149, x131, x133);
- uint32_t x154, uint8_t x155 = addcarryx_u32(x152, x134, x136);
- uint32_t x157, uint8_t x158 = addcarryx_u32(x155, x137, x139);
- uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x140, x142);
- uint32_t x163, uint8_t _ = addcarryx_u32(0x0, x161, x143);
- uint32_t x166, uint8_t x167 = addcarryx_u32(0x0, x103, x124);
- uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x106, x145);
- uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x109, x148);
- uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x112, x151);
- uint32_t x178, uint8_t x179 = addcarryx_u32(x176, x115, x154);
- uint32_t x181, uint8_t x182 = addcarryx_u32(x179, x118, x157);
- uint32_t x184, uint8_t x185 = addcarryx_u32(x182, x121, x160);
- uint32_t x187, uint8_t x188 = addcarryx_u32(x185, x122, x163);
- uint32_t x190, uint32_t _ = mulx_u32(x166, 0xffffffff);
- uint32_t x193, uint32_t x194 = mulx_u32(x190, 0xffffffff);
- uint32_t x196, uint32_t x197 = mulx_u32(x190, 0xffffffff);
- uint32_t x199, uint32_t x200 = mulx_u32(x190, 0xffffffff);
- uint32_t x202, uint32_t x203 = mulx_u32(x190, 0xffffffff);
- uint8_t x204 = (0x0 + 0x0);
- uint8_t x205 = (0x0 + 0x0);
- uint32_t x207, uint8_t x208 = addcarryx_u32(0x0, x194, x196);
- uint32_t x210, uint8_t x211 = addcarryx_u32(x208, x197, x199);
- uint32_t x213, uint8_t x214 = addcarryx_u32(x211, x200, x202);
- uint32_t x216, uint8_t _ = addcarryx_u32(0x0, x214, x203);
- uint32_t _, uint8_t x220 = addcarryx_u32(0x0, x166, x190);
- uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x169, x204);
- uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x172, x205);
- uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x175, x193);
- uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x178, x207);
- uint32_t x234, uint8_t x235 = addcarryx_u32(x232, x181, x210);
- uint32_t x237, uint8_t x238 = addcarryx_u32(x235, x184, x213);
- uint32_t x240, uint8_t x241 = addcarryx_u32(x238, x187, x216);
- uint8_t x242 = (x241 + x188);
- uint32_t x244, uint32_t x245 = mulx_u32(x9, x17);
- uint32_t x247, uint32_t x248 = mulx_u32(x9, x19);
- uint32_t x250, uint32_t x251 = mulx_u32(x9, x21);
- uint32_t x253, uint32_t x254 = mulx_u32(x9, x23);
- uint32_t x256, uint32_t x257 = mulx_u32(x9, x25);
- uint32_t x259, uint32_t x260 = mulx_u32(x9, x27);
- uint32_t x262, uint32_t x263 = mulx_u32(x9, x26);
- uint32_t x265, uint8_t x266 = addcarryx_u32(0x0, x245, x247);
- uint32_t x268, uint8_t x269 = addcarryx_u32(x266, x248, x250);
- uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x251, x253);
- uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x254, x256);
- uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x257, x259);
- uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x260, x262);
- uint32_t x283, uint8_t _ = addcarryx_u32(0x0, x281, x263);
- uint32_t x286, uint8_t x287 = addcarryx_u32(0x0, x222, x244);
- uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x225, x265);
- uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x228, x268);
- uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x231, x271);
- uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x234, x274);
- uint32_t x301, uint8_t x302 = addcarryx_u32(x299, x237, x277);
- uint32_t x304, uint8_t x305 = addcarryx_u32(x302, x240, x280);
- uint32_t x307, uint8_t x308 = addcarryx_u32(x305, x242, x283);
- uint32_t x310, uint32_t _ = mulx_u32(x286, 0xffffffff);
- uint32_t x313, uint32_t x314 = mulx_u32(x310, 0xffffffff);
- uint32_t x316, uint32_t x317 = mulx_u32(x310, 0xffffffff);
- uint32_t x319, uint32_t x320 = mulx_u32(x310, 0xffffffff);
- uint32_t x322, uint32_t x323 = mulx_u32(x310, 0xffffffff);
- uint8_t x324 = (0x0 + 0x0);
- uint8_t x325 = (0x0 + 0x0);
- uint32_t x327, uint8_t x328 = addcarryx_u32(0x0, x314, x316);
- uint32_t x330, uint8_t x331 = addcarryx_u32(x328, x317, x319);
- uint32_t x333, uint8_t x334 = addcarryx_u32(x331, x320, x322);
- uint32_t x336, uint8_t _ = addcarryx_u32(0x0, x334, x323);
- uint32_t _, uint8_t x340 = addcarryx_u32(0x0, x286, x310);
- uint32_t x342, uint8_t x343 = addcarryx_u32(x340, x289, x324);
- uint32_t x345, uint8_t x346 = addcarryx_u32(x343, x292, x325);
- uint32_t x348, uint8_t x349 = addcarryx_u32(x346, x295, x313);
- uint32_t x351, uint8_t x352 = addcarryx_u32(x349, x298, x327);
- uint32_t x354, uint8_t x355 = addcarryx_u32(x352, x301, x330);
- uint32_t x357, uint8_t x358 = addcarryx_u32(x355, x304, x333);
- uint32_t x360, uint8_t x361 = addcarryx_u32(x358, x307, x336);
- uint8_t x362 = (x361 + x308);
- uint32_t x364, uint32_t x365 = mulx_u32(x11, x17);
- uint32_t x367, uint32_t x368 = mulx_u32(x11, x19);
- uint32_t x370, uint32_t x371 = mulx_u32(x11, x21);
- uint32_t x373, uint32_t x374 = mulx_u32(x11, x23);
- uint32_t x376, uint32_t x377 = mulx_u32(x11, x25);
- uint32_t x379, uint32_t x380 = mulx_u32(x11, x27);
- uint32_t x382, uint32_t x383 = mulx_u32(x11, x26);
- uint32_t x385, uint8_t x386 = addcarryx_u32(0x0, x365, x367);
- uint32_t x388, uint8_t x389 = addcarryx_u32(x386, x368, x370);
- uint32_t x391, uint8_t x392 = addcarryx_u32(x389, x371, x373);
- uint32_t x394, uint8_t x395 = addcarryx_u32(x392, x374, x376);
- uint32_t x397, uint8_t x398 = addcarryx_u32(x395, x377, x379);
- uint32_t x400, uint8_t x401 = addcarryx_u32(x398, x380, x382);
- uint32_t x403, uint8_t _ = addcarryx_u32(0x0, x401, x383);
- uint32_t x406, uint8_t x407 = addcarryx_u32(0x0, x342, x364);
- uint32_t x409, uint8_t x410 = addcarryx_u32(x407, x345, x385);
- uint32_t x412, uint8_t x413 = addcarryx_u32(x410, x348, x388);
- uint32_t x415, uint8_t x416 = addcarryx_u32(x413, x351, x391);
- uint32_t x418, uint8_t x419 = addcarryx_u32(x416, x354, x394);
- uint32_t x421, uint8_t x422 = addcarryx_u32(x419, x357, x397);
- uint32_t x424, uint8_t x425 = addcarryx_u32(x422, x360, x400);
- uint32_t x427, uint8_t x428 = addcarryx_u32(x425, x362, x403);
- uint32_t x430, uint32_t _ = mulx_u32(x406, 0xffffffff);
- uint32_t x433, uint32_t x434 = mulx_u32(x430, 0xffffffff);
- uint32_t x436, uint32_t x437 = mulx_u32(x430, 0xffffffff);
- uint32_t x439, uint32_t x440 = mulx_u32(x430, 0xffffffff);
- uint32_t x442, uint32_t x443 = mulx_u32(x430, 0xffffffff);
- uint8_t x444 = (0x0 + 0x0);
- uint8_t x445 = (0x0 + 0x0);
- uint32_t x447, uint8_t x448 = addcarryx_u32(0x0, x434, x436);
- uint32_t x450, uint8_t x451 = addcarryx_u32(x448, x437, x439);
- uint32_t x453, uint8_t x454 = addcarryx_u32(x451, x440, x442);
- uint32_t x456, uint8_t _ = addcarryx_u32(0x0, x454, x443);
- uint32_t _, uint8_t x460 = addcarryx_u32(0x0, x406, x430);
- uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x409, x444);
- uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x412, x445);
- uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x415, x433);
- uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x418, x447);
- uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x421, x450);
- uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x424, x453);
- uint32_t x480, uint8_t x481 = addcarryx_u32(x478, x427, x456);
- uint8_t x482 = (x481 + x428);
- uint32_t x484, uint32_t x485 = mulx_u32(x13, x17);
- uint32_t x487, uint32_t x488 = mulx_u32(x13, x19);
- uint32_t x490, uint32_t x491 = mulx_u32(x13, x21);
- uint32_t x493, uint32_t x494 = mulx_u32(x13, x23);
- uint32_t x496, uint32_t x497 = mulx_u32(x13, x25);
- uint32_t x499, uint32_t x500 = mulx_u32(x13, x27);
- uint32_t x502, uint32_t x503 = mulx_u32(x13, x26);
- uint32_t x505, uint8_t x506 = addcarryx_u32(0x0, x485, x487);
- uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x488, x490);
- uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x491, x493);
- uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x494, x496);
- uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x497, x499);
- uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x500, x502);
- uint32_t x523, uint8_t _ = addcarryx_u32(0x0, x521, x503);
- uint32_t x526, uint8_t x527 = addcarryx_u32(0x0, x462, x484);
- uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x465, x505);
- uint32_t x532, uint8_t x533 = addcarryx_u32(x530, x468, x508);
- uint32_t x535, uint8_t x536 = addcarryx_u32(x533, x471, x511);
- uint32_t x538, uint8_t x539 = addcarryx_u32(x536, x474, x514);
- uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x477, x517);
- uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x480, x520);
- uint32_t x547, uint8_t x548 = addcarryx_u32(x545, x482, x523);
- uint32_t x550, uint32_t _ = mulx_u32(x526, 0xffffffff);
- uint32_t x553, uint32_t x554 = mulx_u32(x550, 0xffffffff);
- uint32_t x556, uint32_t x557 = mulx_u32(x550, 0xffffffff);
- uint32_t x559, uint32_t x560 = mulx_u32(x550, 0xffffffff);
- uint32_t x562, uint32_t x563 = mulx_u32(x550, 0xffffffff);
- uint8_t x564 = (0x0 + 0x0);
- uint8_t x565 = (0x0 + 0x0);
- uint32_t x567, uint8_t x568 = addcarryx_u32(0x0, x554, x556);
- uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x557, x559);
- uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x560, x562);
- uint32_t x576, uint8_t _ = addcarryx_u32(0x0, x574, x563);
- uint32_t _, uint8_t x580 = addcarryx_u32(0x0, x526, x550);
- uint32_t x582, uint8_t x583 = addcarryx_u32(x580, x529, x564);
- uint32_t x585, uint8_t x586 = addcarryx_u32(x583, x532, x565);
- uint32_t x588, uint8_t x589 = addcarryx_u32(x586, x535, x553);
- uint32_t x591, uint8_t x592 = addcarryx_u32(x589, x538, x567);
- uint32_t x594, uint8_t x595 = addcarryx_u32(x592, x541, x570);
- uint32_t x597, uint8_t x598 = addcarryx_u32(x595, x544, x573);
- uint32_t x600, uint8_t x601 = addcarryx_u32(x598, x547, x576);
- uint8_t x602 = (x601 + x548);
- uint32_t x604, uint32_t x605 = mulx_u32(x15, x17);
- uint32_t x607, uint32_t x608 = mulx_u32(x15, x19);
- uint32_t x610, uint32_t x611 = mulx_u32(x15, x21);
- uint32_t x613, uint32_t x614 = mulx_u32(x15, x23);
- uint32_t x616, uint32_t x617 = mulx_u32(x15, x25);
- uint32_t x619, uint32_t x620 = mulx_u32(x15, x27);
- uint32_t x622, uint32_t x623 = mulx_u32(x15, x26);
- uint32_t x625, uint8_t x626 = addcarryx_u32(0x0, x605, x607);
- uint32_t x628, uint8_t x629 = addcarryx_u32(x626, x608, x610);
- uint32_t x631, uint8_t x632 = addcarryx_u32(x629, x611, x613);
- uint32_t x634, uint8_t x635 = addcarryx_u32(x632, x614, x616);
- uint32_t x637, uint8_t x638 = addcarryx_u32(x635, x617, x619);
- uint32_t x640, uint8_t x641 = addcarryx_u32(x638, x620, x622);
- uint32_t x643, uint8_t _ = addcarryx_u32(0x0, x641, x623);
- uint32_t x646, uint8_t x647 = addcarryx_u32(0x0, x582, x604);
- uint32_t x649, uint8_t x650 = addcarryx_u32(x647, x585, x625);
- uint32_t x652, uint8_t x653 = addcarryx_u32(x650, x588, x628);
- uint32_t x655, uint8_t x656 = addcarryx_u32(x653, x591, x631);
- uint32_t x658, uint8_t x659 = addcarryx_u32(x656, x594, x634);
- uint32_t x661, uint8_t x662 = addcarryx_u32(x659, x597, x637);
- uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x600, x640);
- uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x602, x643);
- uint32_t x670, uint32_t _ = mulx_u32(x646, 0xffffffff);
- uint32_t x673, uint32_t x674 = mulx_u32(x670, 0xffffffff);
- uint32_t x676, uint32_t x677 = mulx_u32(x670, 0xffffffff);
- uint32_t x679, uint32_t x680 = mulx_u32(x670, 0xffffffff);
- uint32_t x682, uint32_t x683 = mulx_u32(x670, 0xffffffff);
- uint8_t x684 = (0x0 + 0x0);
- uint8_t x685 = (0x0 + 0x0);
- uint32_t x687, uint8_t x688 = addcarryx_u32(0x0, x674, x676);
- uint32_t x690, uint8_t x691 = addcarryx_u32(x688, x677, x679);
- uint32_t x693, uint8_t x694 = addcarryx_u32(x691, x680, x682);
- uint32_t x696, uint8_t _ = addcarryx_u32(0x0, x694, x683);
- uint32_t _, uint8_t x700 = addcarryx_u32(0x0, x646, x670);
- uint32_t x702, uint8_t x703 = addcarryx_u32(x700, x649, x684);
- uint32_t x705, uint8_t x706 = addcarryx_u32(x703, x652, x685);
- uint32_t x708, uint8_t x709 = addcarryx_u32(x706, x655, x673);
- uint32_t x711, uint8_t x712 = addcarryx_u32(x709, x658, x687);
- uint32_t x714, uint8_t x715 = addcarryx_u32(x712, x661, x690);
- uint32_t x717, uint8_t x718 = addcarryx_u32(x715, x664, x693);
- uint32_t x720, uint8_t x721 = addcarryx_u32(x718, x667, x696);
- uint8_t x722 = (x721 + x668);
- uint32_t x724, uint32_t x725 = mulx_u32(x14, x17);
- uint32_t x727, uint32_t x728 = mulx_u32(x14, x19);
- uint32_t x730, uint32_t x731 = mulx_u32(x14, x21);
- uint32_t x733, uint32_t x734 = mulx_u32(x14, x23);
- uint32_t x736, uint32_t x737 = mulx_u32(x14, x25);
- uint32_t x739, uint32_t x740 = mulx_u32(x14, x27);
- uint32_t x742, uint32_t x743 = mulx_u32(x14, x26);
- uint32_t x745, uint8_t x746 = addcarryx_u32(0x0, x725, x727);
- uint32_t x748, uint8_t x749 = addcarryx_u32(x746, x728, x730);
- uint32_t x751, uint8_t x752 = addcarryx_u32(x749, x731, x733);
- uint32_t x754, uint8_t x755 = addcarryx_u32(x752, x734, x736);
- uint32_t x757, uint8_t x758 = addcarryx_u32(x755, x737, x739);
- uint32_t x760, uint8_t x761 = addcarryx_u32(x758, x740, x742);
- uint32_t x763, uint8_t _ = addcarryx_u32(0x0, x761, x743);
- uint32_t x766, uint8_t x767 = addcarryx_u32(0x0, x702, x724);
- uint32_t x769, uint8_t x770 = addcarryx_u32(x767, x705, x745);
- uint32_t x772, uint8_t x773 = addcarryx_u32(x770, x708, x748);
- uint32_t x775, uint8_t x776 = addcarryx_u32(x773, x711, x751);
- uint32_t x778, uint8_t x779 = addcarryx_u32(x776, x714, x754);
- uint32_t x781, uint8_t x782 = addcarryx_u32(x779, x717, x757);
- uint32_t x784, uint8_t x785 = addcarryx_u32(x782, x720, x760);
- uint32_t x787, uint8_t x788 = addcarryx_u32(x785, x722, x763);
- uint32_t x790, uint32_t _ = mulx_u32(x766, 0xffffffff);
- uint32_t x793, uint32_t x794 = mulx_u32(x790, 0xffffffff);
- uint32_t x796, uint32_t x797 = mulx_u32(x790, 0xffffffff);
- uint32_t x799, uint32_t x800 = mulx_u32(x790, 0xffffffff);
- uint32_t x802, uint32_t x803 = mulx_u32(x790, 0xffffffff);
- uint8_t x804 = (0x0 + 0x0);
- uint8_t x805 = (0x0 + 0x0);
- uint32_t x807, uint8_t x808 = addcarryx_u32(0x0, x794, x796);
- uint32_t x810, uint8_t x811 = addcarryx_u32(x808, x797, x799);
- uint32_t x813, uint8_t x814 = addcarryx_u32(x811, x800, x802);
- uint32_t x816, uint8_t _ = addcarryx_u32(0x0, x814, x803);
- uint32_t _, uint8_t x820 = addcarryx_u32(0x0, x766, x790);
- uint32_t x822, uint8_t x823 = addcarryx_u32(x820, x769, x804);
- uint32_t x825, uint8_t x826 = addcarryx_u32(x823, x772, x805);
- uint32_t x828, uint8_t x829 = addcarryx_u32(x826, x775, x793);
- uint32_t x831, uint8_t x832 = addcarryx_u32(x829, x778, x807);
- uint32_t x834, uint8_t x835 = addcarryx_u32(x832, x781, x810);
- uint32_t x837, uint8_t x838 = addcarryx_u32(x835, x784, x813);
- uint32_t x840, uint8_t x841 = addcarryx_u32(x838, x787, x816);
- uint8_t x842 = (x841 + x788);
- uint32_t x844, uint8_t x845 = subborrow_u32(0x0, x822, 0x1);
- uint32_t x847, uint8_t x848 = subborrow_u32(x845, x825, 0x0);
- uint32_t x850, uint8_t x851 = subborrow_u32(x848, x828, 0x0);
- uint32_t x853, uint8_t x854 = subborrow_u32(x851, x831, 0xffffffff);
- uint32_t x856, uint8_t x857 = subborrow_u32(x854, x834, 0xffffffff);
- uint32_t x859, uint8_t x860 = subborrow_u32(x857, x837, 0xffffffff);
- uint32_t x862, uint8_t x863 = subborrow_u32(x860, x840, 0xffffffff);
- uint32_t _, uint8_t x866 = subborrow_u32(x863, x842, 0x0);
- uint32_t x867 = cmovznz32(x866, x862, x840);
- uint32_t x868 = cmovznz32(x866, x859, x837);
- uint32_t x869 = cmovznz32(x866, x856, x834);
- uint32_t x870 = cmovznz32(x866, x853, x831);
- uint32_t x871 = cmovznz32(x866, x850, x828);
- uint32_t x872 = cmovznz32(x866, x847, x825);
- uint32_t x873 = cmovznz32(x866, x844, x822);
- return (x867, x868, x869, x870, x871, x872, x873))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v
deleted file mode 100644
index 51fbf54b2..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenz.c b/src/Specific/montgomery32_2e224m2e96p1/fenz.c
deleted file mode 100644
index 387dcfe67..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x13 = (x12 | x11);
- { uint32_t x14 = (x10 | x13);
- { uint32_t x15 = (x8 | x14);
- { uint32_t x16 = (x6 | x15);
- { uint32_t x17 = (x4 | x16);
- { uint32_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenz.v b/src/Specific/montgomery32_2e224m2e96p1/fenz.v
deleted file mode 100644
index 73ff192f2..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.log b/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.log
deleted file mode 100644
index 9685f89d7..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x13 = (x12 | x11);
- uint32_t x14 = (x10 | x13);
- uint32_t x15 = (x8 | x14);
- uint32_t x16 = (x6 | x15);
- uint32_t x17 = (x4 | x16);
- uint32_t x18 = (x2 | x17);
- return x18)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v
deleted file mode 100644
index 8c5fcf668..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feopp.v b/src/Specific/montgomery32_2e224m2e96p1/feopp.v
deleted file mode 100644
index 2419700c0..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.log b/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.log
deleted file mode 100644
index 0cd0733e8..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.log
+++ /dev/null
@@ -1,27 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x17, uint8_t x18 = subborrow_u32(x15, 0x0, x4);
- uint32_t x20, uint8_t x21 = subborrow_u32(x18, 0x0, x6);
- uint32_t x23, uint8_t x24 = subborrow_u32(x21, 0x0, x8);
- uint32_t x26, uint8_t x27 = subborrow_u32(x24, 0x0, x10);
- uint32_t x29, uint8_t x30 = subborrow_u32(x27, 0x0, x12);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, 0x0, x11);
- uint32_t x34 = (uint32_t)cmovznz(x33, 0x0, 0xffffffff);
- uint8_t x35 = ((uint8_t)x34 & 0x1);
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x14, x35);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x17, 0x0);
- uint32_t x43, uint8_t x44 = addcarryx_u32(x41, x20, 0x0);
- uint32_t x45 = (x34 & 0xffffffff);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x44, x23, x45);
- uint32_t x49 = (x34 & 0xffffffff);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x48, x26, x49);
- uint32_t x53 = (x34 & 0xffffffff);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x52, x29, x53);
- uint32_t x57 = (x34 & 0xffffffff);
- uint32_t x59, uint8_t _ = addcarryx_u32(x56, x32, x57);
- (Return x59, Return x55, Return x51, Return x47, Return x43, Return x40, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v
deleted file mode 100644
index 0a35a107e..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesquare.c b/src/Specific/montgomery32_2e224m2e96p1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesub.v b/src/Specific/montgomery32_2e224m2e96p1/fesub.v
deleted file mode 100644
index e57d95573..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.log b/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.log
deleted file mode 100644
index 1392007a0..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.log
+++ /dev/null
@@ -1,27 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint32_t x29, uint8_t x30 = subborrow_u32(0x0, x5, x17);
- uint32_t x32, uint8_t x33 = subborrow_u32(x30, x7, x19);
- uint32_t x35, uint8_t x36 = subborrow_u32(x33, x9, x21);
- uint32_t x38, uint8_t x39 = subborrow_u32(x36, x11, x23);
- uint32_t x41, uint8_t x42 = subborrow_u32(x39, x13, x25);
- uint32_t x44, uint8_t x45 = subborrow_u32(x42, x15, x27);
- uint32_t x47, uint8_t x48 = subborrow_u32(x45, x14, x26);
- uint32_t x49 = (uint32_t)cmovznz(x48, 0x0, 0xffffffff);
- uint8_t x50 = ((uint8_t)x49 & 0x1);
- uint32_t x52, uint8_t x53 = addcarryx_u32(0x0, x29, x50);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x32, 0x0);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x35, 0x0);
- uint32_t x60 = (x49 & 0xffffffff);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x59, x38, x60);
- uint32_t x64 = (x49 & 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x63, x41, x64);
- uint32_t x68 = (x49 & 0xffffffff);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x67, x44, x68);
- uint32_t x72 = (x49 & 0xffffffff);
- uint32_t x74, uint8_t _ = addcarryx_u32(x71, x47, x72);
- (Return x74, Return x70, Return x66, Return x62, Return x58, Return x55, Return x52))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v b/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v
deleted file mode 100644
index 2a151e111..000000000
--- a/src/Specific/montgomery32_2e224m2e96p1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e224m2e96p1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/CurveParameters.v
index 5777d34fe..5777d34fe 100644
--- a/src/Specific/montgomery32_2e224m2e96p1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/Synthesis.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/Synthesis.v
new file mode 100644
index 000000000..818e75983
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/compiler.sh b/src/Specific/montgomery32_2e224m2e96p1_7limbs/compiler.sh
index 8544a634f..8544a634f 100755
--- a/src/Specific/montgomery32_2e224m2e96p1/compiler.sh
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e224m2e96p1/compilerxx.sh b/src/Specific/montgomery32_2e224m2e96p1_7limbs/compilerxx.sh
index 0a8d7376d..0a8d7376d 100755
--- a/src/Specific/montgomery32_2e224m2e96p1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/feadd.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feadd.v
new file mode 100644
index 000000000..b5f8d616e
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/feaddDisplay.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..cd95abdd5
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/femul.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/femul.v
new file mode 100644
index 000000000..1dbf704a0
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/femulDisplay.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..bba88e5c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenz.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenz.v
new file mode 100644
index 000000000..455eca214
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenzDisplay.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..b703fdefb
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/feopp.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feopp.v
new file mode 100644
index 000000000..d8e27ed3a
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/feoppDisplay.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..a00cc9448
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesub.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesub.v
new file mode 100644
index 000000000..5c0997f5d
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesubDisplay.v b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..f8ea98b3d
--- /dev/null
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e224m2e96p1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e224m2e96p1/py_interpreter.sh b/src/Specific/montgomery32_2e224m2e96p1_7limbs/py_interpreter.sh
index 9bbdf2022..9bbdf2022 100755
--- a/src/Specific/montgomery32_2e224m2e96p1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e224m2e96p1_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e226m5/Synthesis.v b/src/Specific/montgomery32_2e226m5/Synthesis.v
deleted file mode 100644
index 4084c5dce..000000000
--- a/src/Specific/montgomery32_2e226m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e226m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e226m5/feadd.c b/src/Specific/montgomery32_2e226m5/feadd.c
deleted file mode 100644
index e2743057b..000000000
--- a/src/Specific/montgomery32_2e226m5/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffffb, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x3, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e226m5/feadd.v b/src/Specific/montgomery32_2e226m5/feadd.v
deleted file mode 100644
index 6330f1d57..000000000
--- a/src/Specific/montgomery32_2e226m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e226m5/feaddDisplay.log b/src/Specific/montgomery32_2e226m5/feaddDisplay.log
deleted file mode 100644
index 9b27bb47f..000000000
--- a/src/Specific/montgomery32_2e226m5/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffffb);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x3);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e226m5/feaddDisplay.v b/src/Specific/montgomery32_2e226m5/feaddDisplay.v
deleted file mode 100644
index cbdb5957f..000000000
--- a/src/Specific/montgomery32_2e226m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e226m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e226m5/femul.v b/src/Specific/montgomery32_2e226m5/femul.v
deleted file mode 100644
index eaaf83e0b..000000000
--- a/src/Specific/montgomery32_2e226m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e226m5/femulDisplay.v b/src/Specific/montgomery32_2e226m5/femulDisplay.v
deleted file mode 100644
index b33e1133d..000000000
--- a/src/Specific/montgomery32_2e226m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e226m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e226m5/fenz.c b/src/Specific/montgomery32_2e226m5/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e226m5/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e226m5/fenz.v b/src/Specific/montgomery32_2e226m5/fenz.v
deleted file mode 100644
index 4d09ec7d9..000000000
--- a/src/Specific/montgomery32_2e226m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e226m5/fenzDisplay.log b/src/Specific/montgomery32_2e226m5/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e226m5/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e226m5/fenzDisplay.v b/src/Specific/montgomery32_2e226m5/fenzDisplay.v
deleted file mode 100644
index 6bcdc5cea..000000000
--- a/src/Specific/montgomery32_2e226m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e226m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e226m5/feopp.v b/src/Specific/montgomery32_2e226m5/feopp.v
deleted file mode 100644
index 1632d23f8..000000000
--- a/src/Specific/montgomery32_2e226m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e226m5/feoppDisplay.v b/src/Specific/montgomery32_2e226m5/feoppDisplay.v
deleted file mode 100644
index d28af23c6..000000000
--- a/src/Specific/montgomery32_2e226m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e226m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e226m5/fesquare.c b/src/Specific/montgomery32_2e226m5/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e226m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e226m5/fesub.v b/src/Specific/montgomery32_2e226m5/fesub.v
deleted file mode 100644
index 1d63f9742..000000000
--- a/src/Specific/montgomery32_2e226m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e226m5/fesubDisplay.v b/src/Specific/montgomery32_2e226m5/fesubDisplay.v
deleted file mode 100644
index ec7daa604..000000000
--- a/src/Specific/montgomery32_2e226m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e226m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e226m5/CurveParameters.v b/src/Specific/montgomery32_2e226m5_8limbs/CurveParameters.v
index d42852590..d42852590 100644
--- a/src/Specific/montgomery32_2e226m5/CurveParameters.v
+++ b/src/Specific/montgomery32_2e226m5_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/Synthesis.v b/src/Specific/montgomery32_2e226m5_8limbs/Synthesis.v
new file mode 100644
index 000000000..fac23b95f
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e226m5/compiler.sh b/src/Specific/montgomery32_2e226m5_8limbs/compiler.sh
index 12d70d03a..12d70d03a 100755
--- a/src/Specific/montgomery32_2e226m5/compiler.sh
+++ b/src/Specific/montgomery32_2e226m5_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e226m5/compilerxx.sh b/src/Specific/montgomery32_2e226m5_8limbs/compilerxx.sh
index b19da6fda..b19da6fda 100755
--- a/src/Specific/montgomery32_2e226m5/compilerxx.sh
+++ b/src/Specific/montgomery32_2e226m5_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/feadd.v b/src/Specific/montgomery32_2e226m5_8limbs/feadd.v
new file mode 100644
index 000000000..c8b4db270
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e226m5_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..16d13de8f
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/femul.v b/src/Specific/montgomery32_2e226m5_8limbs/femul.v
new file mode 100644
index 000000000..c26fd6f50
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e226m5_8limbs/femulDisplay.v
new file mode 100644
index 000000000..f69955c30
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/fenz.v b/src/Specific/montgomery32_2e226m5_8limbs/fenz.v
new file mode 100644
index 000000000..5a6b10d50
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e226m5_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..ed9968406
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/feopp.v b/src/Specific/montgomery32_2e226m5_8limbs/feopp.v
new file mode 100644
index 000000000..cf12a1918
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e226m5_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..ff0575673
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/fesub.v b/src/Specific/montgomery32_2e226m5_8limbs/fesub.v
new file mode 100644
index 000000000..dbc778d98
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e226m5_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e226m5_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..a1498690b
--- /dev/null
+++ b/src/Specific/montgomery32_2e226m5_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e226m5_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e226m5/py_interpreter.sh b/src/Specific/montgomery32_2e226m5_8limbs/py_interpreter.sh
index 37bc3bc38..37bc3bc38 100755
--- a/src/Specific/montgomery32_2e226m5/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e226m5_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e230m27/Synthesis.v b/src/Specific/montgomery32_2e230m27/Synthesis.v
deleted file mode 100644
index 9e6ea2ff2..000000000
--- a/src/Specific/montgomery32_2e230m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e230m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e230m27/feadd.c b/src/Specific/montgomery32_2e230m27/feadd.c
deleted file mode 100644
index 0b93efdbf..000000000
--- a/src/Specific/montgomery32_2e230m27/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffe5, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x3f, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e230m27/feadd.v b/src/Specific/montgomery32_2e230m27/feadd.v
deleted file mode 100644
index bf4deeada..000000000
--- a/src/Specific/montgomery32_2e230m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e230m27/feaddDisplay.log b/src/Specific/montgomery32_2e230m27/feaddDisplay.log
deleted file mode 100644
index 3b3330e0d..000000000
--- a/src/Specific/montgomery32_2e230m27/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffe5);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x3f);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e230m27/feaddDisplay.v b/src/Specific/montgomery32_2e230m27/feaddDisplay.v
deleted file mode 100644
index 15d265afd..000000000
--- a/src/Specific/montgomery32_2e230m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e230m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e230m27/femul.v b/src/Specific/montgomery32_2e230m27/femul.v
deleted file mode 100644
index 11eedfb78..000000000
--- a/src/Specific/montgomery32_2e230m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e230m27/femulDisplay.v b/src/Specific/montgomery32_2e230m27/femulDisplay.v
deleted file mode 100644
index f908c40ee..000000000
--- a/src/Specific/montgomery32_2e230m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e230m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e230m27/fenz.c b/src/Specific/montgomery32_2e230m27/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e230m27/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e230m27/fenz.v b/src/Specific/montgomery32_2e230m27/fenz.v
deleted file mode 100644
index 5706ba74f..000000000
--- a/src/Specific/montgomery32_2e230m27/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e230m27/fenzDisplay.log b/src/Specific/montgomery32_2e230m27/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e230m27/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e230m27/fenzDisplay.v b/src/Specific/montgomery32_2e230m27/fenzDisplay.v
deleted file mode 100644
index aa5424b57..000000000
--- a/src/Specific/montgomery32_2e230m27/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e230m27.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e230m27/feopp.v b/src/Specific/montgomery32_2e230m27/feopp.v
deleted file mode 100644
index 8527ad54e..000000000
--- a/src/Specific/montgomery32_2e230m27/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e230m27/feoppDisplay.v b/src/Specific/montgomery32_2e230m27/feoppDisplay.v
deleted file mode 100644
index 446fe4344..000000000
--- a/src/Specific/montgomery32_2e230m27/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e230m27.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e230m27/fesquare.c b/src/Specific/montgomery32_2e230m27/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e230m27/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e230m27/fesub.v b/src/Specific/montgomery32_2e230m27/fesub.v
deleted file mode 100644
index 43f62d28a..000000000
--- a/src/Specific/montgomery32_2e230m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e230m27/fesubDisplay.v b/src/Specific/montgomery32_2e230m27/fesubDisplay.v
deleted file mode 100644
index f20137afb..000000000
--- a/src/Specific/montgomery32_2e230m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e230m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e230m27/CurveParameters.v b/src/Specific/montgomery32_2e230m27_8limbs/CurveParameters.v
index 180742861..180742861 100644
--- a/src/Specific/montgomery32_2e230m27/CurveParameters.v
+++ b/src/Specific/montgomery32_2e230m27_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/Synthesis.v b/src/Specific/montgomery32_2e230m27_8limbs/Synthesis.v
new file mode 100644
index 000000000..773f9fe2c
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e230m27/compiler.sh b/src/Specific/montgomery32_2e230m27_8limbs/compiler.sh
index 4ebd20ec9..4ebd20ec9 100755
--- a/src/Specific/montgomery32_2e230m27/compiler.sh
+++ b/src/Specific/montgomery32_2e230m27_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e230m27/compilerxx.sh b/src/Specific/montgomery32_2e230m27_8limbs/compilerxx.sh
index a1acb496e..a1acb496e 100755
--- a/src/Specific/montgomery32_2e230m27/compilerxx.sh
+++ b/src/Specific/montgomery32_2e230m27_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/feadd.v b/src/Specific/montgomery32_2e230m27_8limbs/feadd.v
new file mode 100644
index 000000000..491df52f6
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e230m27_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..aabfdbfa7
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/femul.v b/src/Specific/montgomery32_2e230m27_8limbs/femul.v
new file mode 100644
index 000000000..7ed4d0f71
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e230m27_8limbs/femulDisplay.v
new file mode 100644
index 000000000..c16dda340
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/fenz.v b/src/Specific/montgomery32_2e230m27_8limbs/fenz.v
new file mode 100644
index 000000000..bb5977cb4
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e230m27_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..874b4ad4e
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/feopp.v b/src/Specific/montgomery32_2e230m27_8limbs/feopp.v
new file mode 100644
index 000000000..d39a90f69
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e230m27_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..6805ac515
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/fesub.v b/src/Specific/montgomery32_2e230m27_8limbs/fesub.v
new file mode 100644
index 000000000..bddcf4200
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e230m27_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e230m27_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..244a8404d
--- /dev/null
+++ b/src/Specific/montgomery32_2e230m27_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e230m27_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e230m27/py_interpreter.sh b/src/Specific/montgomery32_2e230m27_8limbs/py_interpreter.sh
index fc71de448..fc71de448 100755
--- a/src/Specific/montgomery32_2e230m27/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e230m27_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e235m15/Synthesis.v b/src/Specific/montgomery32_2e235m15/Synthesis.v
deleted file mode 100644
index 59cee7597..000000000
--- a/src/Specific/montgomery32_2e235m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e235m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e235m15/feadd.c b/src/Specific/montgomery32_2e235m15/feadd.c
deleted file mode 100644
index a3c0c6920..000000000
--- a/src/Specific/montgomery32_2e235m15/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffff1, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7ff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e235m15/feadd.v b/src/Specific/montgomery32_2e235m15/feadd.v
deleted file mode 100644
index f4c309440..000000000
--- a/src/Specific/montgomery32_2e235m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e235m15/feaddDisplay.log b/src/Specific/montgomery32_2e235m15/feaddDisplay.log
deleted file mode 100644
index 85a026c3e..000000000
--- a/src/Specific/montgomery32_2e235m15/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffff1);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7ff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e235m15/feaddDisplay.v b/src/Specific/montgomery32_2e235m15/feaddDisplay.v
deleted file mode 100644
index aaa230343..000000000
--- a/src/Specific/montgomery32_2e235m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e235m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e235m15/femul.v b/src/Specific/montgomery32_2e235m15/femul.v
deleted file mode 100644
index b3e5dd916..000000000
--- a/src/Specific/montgomery32_2e235m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e235m15/femulDisplay.v b/src/Specific/montgomery32_2e235m15/femulDisplay.v
deleted file mode 100644
index c9c02c9ae..000000000
--- a/src/Specific/montgomery32_2e235m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e235m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e235m15/fenz.c b/src/Specific/montgomery32_2e235m15/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e235m15/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e235m15/fenz.v b/src/Specific/montgomery32_2e235m15/fenz.v
deleted file mode 100644
index 5d774021e..000000000
--- a/src/Specific/montgomery32_2e235m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e235m15/fenzDisplay.log b/src/Specific/montgomery32_2e235m15/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e235m15/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e235m15/fenzDisplay.v b/src/Specific/montgomery32_2e235m15/fenzDisplay.v
deleted file mode 100644
index 919b87377..000000000
--- a/src/Specific/montgomery32_2e235m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e235m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e235m15/feopp.v b/src/Specific/montgomery32_2e235m15/feopp.v
deleted file mode 100644
index ba8950851..000000000
--- a/src/Specific/montgomery32_2e235m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e235m15/feoppDisplay.v b/src/Specific/montgomery32_2e235m15/feoppDisplay.v
deleted file mode 100644
index cd684c3df..000000000
--- a/src/Specific/montgomery32_2e235m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e235m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e235m15/fesquare.c b/src/Specific/montgomery32_2e235m15/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e235m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e235m15/fesub.v b/src/Specific/montgomery32_2e235m15/fesub.v
deleted file mode 100644
index 84d86da04..000000000
--- a/src/Specific/montgomery32_2e235m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e235m15/fesubDisplay.v b/src/Specific/montgomery32_2e235m15/fesubDisplay.v
deleted file mode 100644
index 8dfe77ccb..000000000
--- a/src/Specific/montgomery32_2e235m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e235m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e235m15/CurveParameters.v b/src/Specific/montgomery32_2e235m15_8limbs/CurveParameters.v
index cc45478d6..cc45478d6 100644
--- a/src/Specific/montgomery32_2e235m15/CurveParameters.v
+++ b/src/Specific/montgomery32_2e235m15_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/Synthesis.v b/src/Specific/montgomery32_2e235m15_8limbs/Synthesis.v
new file mode 100644
index 000000000..711deadf0
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e235m15/compiler.sh b/src/Specific/montgomery32_2e235m15_8limbs/compiler.sh
index 31f5173a1..31f5173a1 100755
--- a/src/Specific/montgomery32_2e235m15/compiler.sh
+++ b/src/Specific/montgomery32_2e235m15_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e235m15/compilerxx.sh b/src/Specific/montgomery32_2e235m15_8limbs/compilerxx.sh
index 2610129fc..2610129fc 100755
--- a/src/Specific/montgomery32_2e235m15/compilerxx.sh
+++ b/src/Specific/montgomery32_2e235m15_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/feadd.v b/src/Specific/montgomery32_2e235m15_8limbs/feadd.v
new file mode 100644
index 000000000..eb6866c08
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e235m15_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..09ff437fc
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/femul.v b/src/Specific/montgomery32_2e235m15_8limbs/femul.v
new file mode 100644
index 000000000..9217df293
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e235m15_8limbs/femulDisplay.v
new file mode 100644
index 000000000..921d3ccf7
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/fenz.v b/src/Specific/montgomery32_2e235m15_8limbs/fenz.v
new file mode 100644
index 000000000..32ab22a05
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e235m15_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..f4c24bb4f
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/feopp.v b/src/Specific/montgomery32_2e235m15_8limbs/feopp.v
new file mode 100644
index 000000000..5174b9612
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e235m15_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..0b8c0b559
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/fesub.v b/src/Specific/montgomery32_2e235m15_8limbs/fesub.v
new file mode 100644
index 000000000..7153324d5
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e235m15_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e235m15_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..a4256cd61
--- /dev/null
+++ b/src/Specific/montgomery32_2e235m15_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e235m15_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e235m15/py_interpreter.sh b/src/Specific/montgomery32_2e235m15_8limbs/py_interpreter.sh
index 92a64740a..92a64740a 100755
--- a/src/Specific/montgomery32_2e235m15/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e235m15_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e243m9/Synthesis.v b/src/Specific/montgomery32_2e243m9/Synthesis.v
deleted file mode 100644
index 43f1d4556..000000000
--- a/src/Specific/montgomery32_2e243m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e243m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e243m9/feadd.c b/src/Specific/montgomery32_2e243m9/feadd.c
deleted file mode 100644
index f3ec8140b..000000000
--- a/src/Specific/montgomery32_2e243m9/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffff7, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7ffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e243m9/feadd.v b/src/Specific/montgomery32_2e243m9/feadd.v
deleted file mode 100644
index 20746ff9c..000000000
--- a/src/Specific/montgomery32_2e243m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e243m9/feaddDisplay.log b/src/Specific/montgomery32_2e243m9/feaddDisplay.log
deleted file mode 100644
index 8c7f833ea..000000000
--- a/src/Specific/montgomery32_2e243m9/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffff7);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7ffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e243m9/feaddDisplay.v b/src/Specific/montgomery32_2e243m9/feaddDisplay.v
deleted file mode 100644
index 43e7a7d14..000000000
--- a/src/Specific/montgomery32_2e243m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e243m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e243m9/femul.v b/src/Specific/montgomery32_2e243m9/femul.v
deleted file mode 100644
index f30ad7729..000000000
--- a/src/Specific/montgomery32_2e243m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e243m9/femulDisplay.v b/src/Specific/montgomery32_2e243m9/femulDisplay.v
deleted file mode 100644
index 29725d07c..000000000
--- a/src/Specific/montgomery32_2e243m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e243m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e243m9/fenz.c b/src/Specific/montgomery32_2e243m9/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e243m9/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e243m9/fenz.v b/src/Specific/montgomery32_2e243m9/fenz.v
deleted file mode 100644
index bf4f984a9..000000000
--- a/src/Specific/montgomery32_2e243m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e243m9/fenzDisplay.log b/src/Specific/montgomery32_2e243m9/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e243m9/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e243m9/fenzDisplay.v b/src/Specific/montgomery32_2e243m9/fenzDisplay.v
deleted file mode 100644
index 16f90e7ed..000000000
--- a/src/Specific/montgomery32_2e243m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e243m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e243m9/feopp.v b/src/Specific/montgomery32_2e243m9/feopp.v
deleted file mode 100644
index 72de6e22e..000000000
--- a/src/Specific/montgomery32_2e243m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e243m9/feoppDisplay.v b/src/Specific/montgomery32_2e243m9/feoppDisplay.v
deleted file mode 100644
index 0bf7d46c8..000000000
--- a/src/Specific/montgomery32_2e243m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e243m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e243m9/fesquare.c b/src/Specific/montgomery32_2e243m9/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e243m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e243m9/fesub.v b/src/Specific/montgomery32_2e243m9/fesub.v
deleted file mode 100644
index 61220e4f5..000000000
--- a/src/Specific/montgomery32_2e243m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e243m9/fesubDisplay.v b/src/Specific/montgomery32_2e243m9/fesubDisplay.v
deleted file mode 100644
index 088a4a800..000000000
--- a/src/Specific/montgomery32_2e243m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e243m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e243m9/CurveParameters.v b/src/Specific/montgomery32_2e243m9_8limbs/CurveParameters.v
index f02ed60ce..f02ed60ce 100644
--- a/src/Specific/montgomery32_2e243m9/CurveParameters.v
+++ b/src/Specific/montgomery32_2e243m9_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/Synthesis.v b/src/Specific/montgomery32_2e243m9_8limbs/Synthesis.v
new file mode 100644
index 000000000..303cd67a1
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e243m9/compiler.sh b/src/Specific/montgomery32_2e243m9_8limbs/compiler.sh
index 74a3ab40a..74a3ab40a 100755
--- a/src/Specific/montgomery32_2e243m9/compiler.sh
+++ b/src/Specific/montgomery32_2e243m9_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e243m9/compilerxx.sh b/src/Specific/montgomery32_2e243m9_8limbs/compilerxx.sh
index 672f9e91d..672f9e91d 100755
--- a/src/Specific/montgomery32_2e243m9/compilerxx.sh
+++ b/src/Specific/montgomery32_2e243m9_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/feadd.v b/src/Specific/montgomery32_2e243m9_8limbs/feadd.v
new file mode 100644
index 000000000..661dbe85d
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e243m9_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..0d66b61f8
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/femul.v b/src/Specific/montgomery32_2e243m9_8limbs/femul.v
new file mode 100644
index 000000000..1127bc605
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e243m9_8limbs/femulDisplay.v
new file mode 100644
index 000000000..5405e4733
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/fenz.v b/src/Specific/montgomery32_2e243m9_8limbs/fenz.v
new file mode 100644
index 000000000..65c05a852
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e243m9_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..7c50cc807
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/feopp.v b/src/Specific/montgomery32_2e243m9_8limbs/feopp.v
new file mode 100644
index 000000000..3b764a52c
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e243m9_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..90082915f
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/fesub.v b/src/Specific/montgomery32_2e243m9_8limbs/fesub.v
new file mode 100644
index 000000000..afc4e2de0
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e243m9_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e243m9_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..ef6899b42
--- /dev/null
+++ b/src/Specific/montgomery32_2e243m9_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e243m9_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e243m9/py_interpreter.sh b/src/Specific/montgomery32_2e243m9_8limbs/py_interpreter.sh
index 9dbce4aab..9dbce4aab 100755
--- a/src/Specific/montgomery32_2e243m9/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e243m9_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e251m9/Synthesis.v b/src/Specific/montgomery32_2e251m9/Synthesis.v
deleted file mode 100644
index e1b899d2e..000000000
--- a/src/Specific/montgomery32_2e251m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e251m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e251m9/feadd.c b/src/Specific/montgomery32_2e251m9/feadd.c
deleted file mode 100644
index cfd21c577..000000000
--- a/src/Specific/montgomery32_2e251m9/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffff7, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7ffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e251m9/feadd.v b/src/Specific/montgomery32_2e251m9/feadd.v
deleted file mode 100644
index 2823de273..000000000
--- a/src/Specific/montgomery32_2e251m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e251m9/feaddDisplay.log b/src/Specific/montgomery32_2e251m9/feaddDisplay.log
deleted file mode 100644
index 34bfeae75..000000000
--- a/src/Specific/montgomery32_2e251m9/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffff7);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7ffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e251m9/feaddDisplay.v b/src/Specific/montgomery32_2e251m9/feaddDisplay.v
deleted file mode 100644
index 94391352f..000000000
--- a/src/Specific/montgomery32_2e251m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e251m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e251m9/femul.v b/src/Specific/montgomery32_2e251m9/femul.v
deleted file mode 100644
index 2be647a08..000000000
--- a/src/Specific/montgomery32_2e251m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e251m9/femulDisplay.v b/src/Specific/montgomery32_2e251m9/femulDisplay.v
deleted file mode 100644
index 899747c74..000000000
--- a/src/Specific/montgomery32_2e251m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e251m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e251m9/fenz.c b/src/Specific/montgomery32_2e251m9/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e251m9/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e251m9/fenz.v b/src/Specific/montgomery32_2e251m9/fenz.v
deleted file mode 100644
index b80d24f6f..000000000
--- a/src/Specific/montgomery32_2e251m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e251m9/fenzDisplay.log b/src/Specific/montgomery32_2e251m9/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e251m9/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e251m9/fenzDisplay.v b/src/Specific/montgomery32_2e251m9/fenzDisplay.v
deleted file mode 100644
index 6500009d8..000000000
--- a/src/Specific/montgomery32_2e251m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e251m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e251m9/feopp.v b/src/Specific/montgomery32_2e251m9/feopp.v
deleted file mode 100644
index 507520b38..000000000
--- a/src/Specific/montgomery32_2e251m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e251m9/feoppDisplay.v b/src/Specific/montgomery32_2e251m9/feoppDisplay.v
deleted file mode 100644
index 463bafb45..000000000
--- a/src/Specific/montgomery32_2e251m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e251m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e251m9/fesquare.c b/src/Specific/montgomery32_2e251m9/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e251m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e251m9/fesub.v b/src/Specific/montgomery32_2e251m9/fesub.v
deleted file mode 100644
index 4e241e5a3..000000000
--- a/src/Specific/montgomery32_2e251m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e251m9/fesubDisplay.v b/src/Specific/montgomery32_2e251m9/fesubDisplay.v
deleted file mode 100644
index 287eecaf8..000000000
--- a/src/Specific/montgomery32_2e251m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e251m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e251m9/CurveParameters.v b/src/Specific/montgomery32_2e251m9_8limbs/CurveParameters.v
index 243ea3437..243ea3437 100644
--- a/src/Specific/montgomery32_2e251m9/CurveParameters.v
+++ b/src/Specific/montgomery32_2e251m9_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/Synthesis.v b/src/Specific/montgomery32_2e251m9_8limbs/Synthesis.v
new file mode 100644
index 000000000..a536b3faf
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e251m9/compiler.sh b/src/Specific/montgomery32_2e251m9_8limbs/compiler.sh
index a8409528f..a8409528f 100755
--- a/src/Specific/montgomery32_2e251m9/compiler.sh
+++ b/src/Specific/montgomery32_2e251m9_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e251m9/compilerxx.sh b/src/Specific/montgomery32_2e251m9_8limbs/compilerxx.sh
index 0082ccf82..0082ccf82 100755
--- a/src/Specific/montgomery32_2e251m9/compilerxx.sh
+++ b/src/Specific/montgomery32_2e251m9_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/feadd.v b/src/Specific/montgomery32_2e251m9_8limbs/feadd.v
new file mode 100644
index 000000000..4224af29c
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e251m9_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..5d404d4f5
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/femul.v b/src/Specific/montgomery32_2e251m9_8limbs/femul.v
new file mode 100644
index 000000000..7fa9b8680
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e251m9_8limbs/femulDisplay.v
new file mode 100644
index 000000000..98eac4c57
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/fenz.v b/src/Specific/montgomery32_2e251m9_8limbs/fenz.v
new file mode 100644
index 000000000..4bea597b2
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e251m9_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..b969646b5
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/feopp.v b/src/Specific/montgomery32_2e251m9_8limbs/feopp.v
new file mode 100644
index 000000000..82dd8f6fa
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e251m9_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..d772f7876
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/fesub.v b/src/Specific/montgomery32_2e251m9_8limbs/fesub.v
new file mode 100644
index 000000000..834961a30
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e251m9_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e251m9_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..2cc26b6f2
--- /dev/null
+++ b/src/Specific/montgomery32_2e251m9_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e251m9_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e251m9/py_interpreter.sh b/src/Specific/montgomery32_2e251m9_8limbs/py_interpreter.sh
index 8da552b58..8da552b58 100755
--- a/src/Specific/montgomery32_2e251m9/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e251m9_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/Synthesis.v b/src/Specific/montgomery32_2e254m127x2e240m1/Synthesis.v
deleted file mode 100644
index 09250bed0..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feadd.c b/src/Specific/montgomery32_2e254m127x2e240m1/feadd.c
deleted file mode 100644
index 6ffed3913..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffff, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x3f80ffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feadd.v b/src/Specific/montgomery32_2e254m127x2e240m1/feadd.v
deleted file mode 100644
index f6105cd33..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.log b/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.log
deleted file mode 100644
index 846e6f58d..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffff);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x3f80ffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.v
deleted file mode 100644
index a1fa65b73..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/femul.v b/src/Specific/montgomery32_2e254m127x2e240m1/femul.v
deleted file mode 100644
index bd4fc0b79..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/femulDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1/femulDisplay.v
deleted file mode 100644
index c2e8059e0..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fenz.c b/src/Specific/montgomery32_2e254m127x2e240m1/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fenz.v b/src/Specific/montgomery32_2e254m127x2e240m1/fenz.v
deleted file mode 100644
index 0c866adb2..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.log b/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.v
deleted file mode 100644
index b15572fac..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feopp.v b/src/Specific/montgomery32_2e254m127x2e240m1/feopp.v
deleted file mode 100644
index 5262d3b30..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.log b/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.log
deleted file mode 100644
index 26a60cacc..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x4);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x6);
- uint32_t x25, uint8_t x26 = subborrow_u32(x23, 0x0, x8);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, 0x0, x10);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, 0x0, x12);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, 0x0, x14);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, 0x0, x13);
- uint32_t x39 = (uint32_t)cmovznz(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(0x0, x16, x40);
- uint32_t x44 = (x39 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x19, x44);
- uint32_t x48 = (x39 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x22, x48);
- uint32_t x52 = (x39 & 0xffffffff);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x51, x25, x52);
- uint32_t x56 = (x39 & 0xffffffff);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x55, x28, x56);
- uint32_t x60 = (x39 & 0xffffffff);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x59, x31, x60);
- uint32_t x64 = (x39 & 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x63, x34, x64);
- uint32_t x68 = (x39 & 0x3f80ffff);
- uint32_t x70, uint8_t _ = addcarryx_u32(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.v
deleted file mode 100644
index 111090a92..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fesquare.c b/src/Specific/montgomery32_2e254m127x2e240m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fesub.v b/src/Specific/montgomery32_2e254m127x2e240m1/fesub.v
deleted file mode 100644
index 6a43cecb4..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.log b/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.log
deleted file mode 100644
index c36c64d04..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = subborrow_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = subborrow_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = subborrow_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = subborrow_u32(x52, x16, x30);
- uint32_t x56 = (uint32_t)cmovznz(x55, 0x0, 0xffffffff);
- uint32_t x57 = (x56 & 0xffffffff);
- uint32_t x59, uint8_t x60 = addcarryx_u32(0x0, x33, x57);
- uint32_t x61 = (x56 & 0xffffffff);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x36, x61);
- uint32_t x65 = (x56 & 0xffffffff);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x64, x39, x65);
- uint32_t x69 = (x56 & 0xffffffff);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x68, x42, x69);
- uint32_t x73 = (x56 & 0xffffffff);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x72, x45, x73);
- uint32_t x77 = (x56 & 0xffffffff);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x76, x48, x77);
- uint32_t x81 = (x56 & 0xffffffff);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x80, x51, x81);
- uint32_t x85 = (x56 & 0x3f80ffff);
- uint32_t x87, uint8_t _ = addcarryx_u32(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.v
deleted file mode 100644
index 82b7a6c50..000000000
--- a/src/Specific/montgomery32_2e254m127x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/CurveParameters.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/CurveParameters.v
index 04f2fa3e6..04f2fa3e6 100644
--- a/src/Specific/montgomery32_2e254m127x2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/Synthesis.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..eaacbfff5
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/compiler.sh b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/compiler.sh
index f467fe099..f467fe099 100755
--- a/src/Specific/montgomery32_2e254m127x2e240m1/compiler.sh
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/compilerxx.sh b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/compilerxx.sh
index 302d8fe76..302d8fe76 100755
--- a/src/Specific/montgomery32_2e254m127x2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feadd.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feadd.v
new file mode 100644
index 000000000..129a7fe58
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..cbbf5781c
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femul.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femul.v
new file mode 100644
index 000000000..055887526
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..a1902f77e
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenz.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenz.v
new file mode 100644
index 000000000..e3e36e358
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..9ea8e9185
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feopp.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feopp.v
new file mode 100644
index 000000000..0b19dfa0b
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..8fb72ea92
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesub.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesub.v
new file mode 100644
index 000000000..300f6e100
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..e57bd0ce4
--- /dev/null
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e254m127x2e240m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e254m127x2e240m1/py_interpreter.sh b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/py_interpreter.sh
index 4893f7c8e..4893f7c8e 100755
--- a/src/Specific/montgomery32_2e254m127x2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e254m127x2e240m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e255m19/Synthesis.v b/src/Specific/montgomery32_2e255m19/Synthesis.v
deleted file mode 100644
index d5864d0bb..000000000
--- a/src/Specific/montgomery32_2e255m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e255m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e255m19/feadd.c b/src/Specific/montgomery32_2e255m19/feadd.c
deleted file mode 100644
index 898843dd3..000000000
--- a/src/Specific/montgomery32_2e255m19/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffed, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7fffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m19/feadd.v b/src/Specific/montgomery32_2e255m19/feadd.v
deleted file mode 100644
index b518ae60c..000000000
--- a/src/Specific/montgomery32_2e255m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e255m19/feaddDisplay.log b/src/Specific/montgomery32_2e255m19/feaddDisplay.log
deleted file mode 100644
index 94c173f05..000000000
--- a/src/Specific/montgomery32_2e255m19/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffed);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7fffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e255m19/feaddDisplay.v b/src/Specific/montgomery32_2e255m19/feaddDisplay.v
deleted file mode 100644
index 73bda3cae..000000000
--- a/src/Specific/montgomery32_2e255m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e255m19/femul.v b/src/Specific/montgomery32_2e255m19/femul.v
deleted file mode 100644
index 08420b6f0..000000000
--- a/src/Specific/montgomery32_2e255m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e255m19/femulDisplay.v b/src/Specific/montgomery32_2e255m19/femulDisplay.v
deleted file mode 100644
index 9b28e7751..000000000
--- a/src/Specific/montgomery32_2e255m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e255m19/fenz.c b/src/Specific/montgomery32_2e255m19/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e255m19/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m19/fenz.v b/src/Specific/montgomery32_2e255m19/fenz.v
deleted file mode 100644
index c6d0d914a..000000000
--- a/src/Specific/montgomery32_2e255m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e255m19/fenzDisplay.log b/src/Specific/montgomery32_2e255m19/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e255m19/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e255m19/fenzDisplay.v b/src/Specific/montgomery32_2e255m19/fenzDisplay.v
deleted file mode 100644
index 1268d7119..000000000
--- a/src/Specific/montgomery32_2e255m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e255m19/feopp.v b/src/Specific/montgomery32_2e255m19/feopp.v
deleted file mode 100644
index 806184889..000000000
--- a/src/Specific/montgomery32_2e255m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e255m19/feoppDisplay.v b/src/Specific/montgomery32_2e255m19/feoppDisplay.v
deleted file mode 100644
index 7df596f87..000000000
--- a/src/Specific/montgomery32_2e255m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e255m19/fesquare.c b/src/Specific/montgomery32_2e255m19/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e255m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e255m19/fesub.v b/src/Specific/montgomery32_2e255m19/fesub.v
deleted file mode 100644
index 7428e6805..000000000
--- a/src/Specific/montgomery32_2e255m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e255m19/fesubDisplay.v b/src/Specific/montgomery32_2e255m19/fesubDisplay.v
deleted file mode 100644
index 81e9dbb46..000000000
--- a/src/Specific/montgomery32_2e255m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e255m19/CurveParameters.v b/src/Specific/montgomery32_2e255m19_8limbs/CurveParameters.v
index 2912d73c2..2912d73c2 100644
--- a/src/Specific/montgomery32_2e255m19/CurveParameters.v
+++ b/src/Specific/montgomery32_2e255m19_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/Synthesis.v b/src/Specific/montgomery32_2e255m19_8limbs/Synthesis.v
new file mode 100644
index 000000000..95e1946d1
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e255m19/compiler.sh b/src/Specific/montgomery32_2e255m19_8limbs/compiler.sh
index 5e8e8a66d..5e8e8a66d 100755
--- a/src/Specific/montgomery32_2e255m19/compiler.sh
+++ b/src/Specific/montgomery32_2e255m19_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e255m19/compilerxx.sh b/src/Specific/montgomery32_2e255m19_8limbs/compilerxx.sh
index 8ab82f172..8ab82f172 100755
--- a/src/Specific/montgomery32_2e255m19/compilerxx.sh
+++ b/src/Specific/montgomery32_2e255m19_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/feadd.v b/src/Specific/montgomery32_2e255m19_8limbs/feadd.v
new file mode 100644
index 000000000..235f7e489
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e255m19_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..f3cdd8a0d
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/femul.v b/src/Specific/montgomery32_2e255m19_8limbs/femul.v
new file mode 100644
index 000000000..61844d86e
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e255m19_8limbs/femulDisplay.v
new file mode 100644
index 000000000..aaa59f3c8
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/fenz.v b/src/Specific/montgomery32_2e255m19_8limbs/fenz.v
new file mode 100644
index 000000000..6668ff255
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e255m19_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..35bb0b4e5
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/feopp.v b/src/Specific/montgomery32_2e255m19_8limbs/feopp.v
new file mode 100644
index 000000000..349addf54
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e255m19_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..46ae2ba55
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/fesub.v b/src/Specific/montgomery32_2e255m19_8limbs/fesub.v
new file mode 100644
index 000000000..10e6410cf
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e255m19_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e255m19_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..ddf45d162
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m19_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m19_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e255m19/py_interpreter.sh b/src/Specific/montgomery32_2e255m19_8limbs/py_interpreter.sh
index da42d011a..da42d011a 100755
--- a/src/Specific/montgomery32_2e255m19/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e255m19_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v
deleted file mode 100644
index dcd1c1e56..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^255 - 2^4 - 2^1 - 1
-Base: 32
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 32;
- bitwidth := 32;
- s := 2^255;
- c := [(1, 1); (2^1, 1); (2^4, 1)];
- carry_chains := None;
-
- a24 := None;
- coef_div_modulus := None;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := true;
- freeze := Some false;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v
deleted file mode 100644
index 13926de34..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh b/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh
deleted file mode 100755
index 68e5363c4..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/compilerxx.sh b/src/Specific/montgomery32_2e255m2e4m2e1m1/compilerxx.sh
deleted file mode 100755
index ad89f47a1..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.c b/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.c
deleted file mode 100644
index 898843dd3..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffed, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7fffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v
deleted file mode 100644
index 8873eadca..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.log b/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.log
deleted file mode 100644
index 94c173f05..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffed);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7fffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v
deleted file mode 100644
index 5c338d7ab..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v
deleted file mode 100644
index da975ac39..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v
deleted file mode 100644
index 42e395e20..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.c b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v
deleted file mode 100644
index ee6c9ff43..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.log b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v
deleted file mode 100644
index 2855a7516..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v
deleted file mode 100644
index 55d70f3b6..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.log b/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.log
deleted file mode 100644
index a4164fd6f..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x4);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x6);
- uint32_t x25, uint8_t x26 = subborrow_u32(x23, 0x0, x8);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, 0x0, x10);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, 0x0, x12);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, 0x0, x14);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, 0x0, x13);
- uint32_t x39 = (uint32_t)cmovznz(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xffffffed);
- uint32_t x42, uint8_t x43 = addcarryx_u32(0x0, x16, x40);
- uint32_t x44 = (x39 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x19, x44);
- uint32_t x48 = (x39 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x22, x48);
- uint32_t x52 = (x39 & 0xffffffff);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x51, x25, x52);
- uint32_t x56 = (x39 & 0xffffffff);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x55, x28, x56);
- uint32_t x60 = (x39 & 0xffffffff);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x59, x31, x60);
- uint32_t x64 = (x39 & 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x63, x34, x64);
- uint32_t x68 = (x39 & 0x7fffffff);
- uint32_t x70, uint8_t _ = addcarryx_u32(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v
deleted file mode 100644
index 55afbb891..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesquare.c b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v
deleted file mode 100644
index f3fc2936e..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.log b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.log
deleted file mode 100644
index ca30b06ba..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = subborrow_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = subborrow_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = subborrow_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = subborrow_u32(x52, x16, x30);
- uint32_t x56 = (uint32_t)cmovznz(x55, 0x0, 0xffffffff);
- uint32_t x57 = (x56 & 0xffffffed);
- uint32_t x59, uint8_t x60 = addcarryx_u32(0x0, x33, x57);
- uint32_t x61 = (x56 & 0xffffffff);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x36, x61);
- uint32_t x65 = (x56 & 0xffffffff);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x64, x39, x65);
- uint32_t x69 = (x56 & 0xffffffff);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x68, x42, x69);
- uint32_t x73 = (x56 & 0xffffffff);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x72, x45, x73);
- uint32_t x77 = (x56 & 0xffffffff);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x76, x48, x77);
- uint32_t x81 = (x56 & 0xffffffff);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x80, x51, x81);
- uint32_t x85 = (x56 & 0x7fffffff);
- uint32_t x87, uint8_t _ = addcarryx_u32(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v
deleted file mode 100644
index daba7df58..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m2e4m2e1m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e255m2e4m2e1m1/py_interpreter.sh b/src/Specific/montgomery32_2e255m2e4m2e1m1/py_interpreter.sh
deleted file mode 100755
index c5f8ea05b..000000000
--- a/src/Specific/montgomery32_2e255m2e4m2e1m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**255 - 2**4 - 2**1 - 1' -Dmodulus_bytes='32' -Da24='121665'
diff --git a/src/Specific/montgomery32_2e255m765/Synthesis.v b/src/Specific/montgomery32_2e255m765/Synthesis.v
deleted file mode 100644
index 08e2b569e..000000000
--- a/src/Specific/montgomery32_2e255m765/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e255m765.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e255m765/feadd.c b/src/Specific/montgomery32_2e255m765/feadd.c
deleted file mode 100644
index c8a728e51..000000000
--- a/src/Specific/montgomery32_2e255m765/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffd03, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0x7fffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m765/feadd.v b/src/Specific/montgomery32_2e255m765/feadd.v
deleted file mode 100644
index af6507e44..000000000
--- a/src/Specific/montgomery32_2e255m765/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e255m765/feaddDisplay.log b/src/Specific/montgomery32_2e255m765/feaddDisplay.log
deleted file mode 100644
index dd7712447..000000000
--- a/src/Specific/montgomery32_2e255m765/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffd03);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0x7fffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e255m765/feaddDisplay.v b/src/Specific/montgomery32_2e255m765/feaddDisplay.v
deleted file mode 100644
index bd5ab9e1a..000000000
--- a/src/Specific/montgomery32_2e255m765/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m765.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e255m765/femul.v b/src/Specific/montgomery32_2e255m765/femul.v
deleted file mode 100644
index b61d14022..000000000
--- a/src/Specific/montgomery32_2e255m765/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e255m765/femulDisplay.v b/src/Specific/montgomery32_2e255m765/femulDisplay.v
deleted file mode 100644
index 3371b7cf2..000000000
--- a/src/Specific/montgomery32_2e255m765/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m765.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e255m765/fenz.c b/src/Specific/montgomery32_2e255m765/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e255m765/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e255m765/fenz.v b/src/Specific/montgomery32_2e255m765/fenz.v
deleted file mode 100644
index e28836e0d..000000000
--- a/src/Specific/montgomery32_2e255m765/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e255m765/fenzDisplay.log b/src/Specific/montgomery32_2e255m765/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e255m765/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e255m765/fenzDisplay.v b/src/Specific/montgomery32_2e255m765/fenzDisplay.v
deleted file mode 100644
index b6487e70c..000000000
--- a/src/Specific/montgomery32_2e255m765/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m765.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e255m765/feopp.v b/src/Specific/montgomery32_2e255m765/feopp.v
deleted file mode 100644
index f197ce321..000000000
--- a/src/Specific/montgomery32_2e255m765/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e255m765/feoppDisplay.v b/src/Specific/montgomery32_2e255m765/feoppDisplay.v
deleted file mode 100644
index d72c697d8..000000000
--- a/src/Specific/montgomery32_2e255m765/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m765.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e255m765/fesquare.c b/src/Specific/montgomery32_2e255m765/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e255m765/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e255m765/fesub.v b/src/Specific/montgomery32_2e255m765/fesub.v
deleted file mode 100644
index 12fbd1192..000000000
--- a/src/Specific/montgomery32_2e255m765/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e255m765/fesubDisplay.v b/src/Specific/montgomery32_2e255m765/fesubDisplay.v
deleted file mode 100644
index 3dfe2119b..000000000
--- a/src/Specific/montgomery32_2e255m765/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e255m765.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e255m765/CurveParameters.v b/src/Specific/montgomery32_2e255m765_8limbs/CurveParameters.v
index 531d00bbb..531d00bbb 100644
--- a/src/Specific/montgomery32_2e255m765/CurveParameters.v
+++ b/src/Specific/montgomery32_2e255m765_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/Synthesis.v b/src/Specific/montgomery32_2e255m765_8limbs/Synthesis.v
new file mode 100644
index 000000000..7553856b5
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e255m765/compiler.sh b/src/Specific/montgomery32_2e255m765_8limbs/compiler.sh
index a4f5ef982..a4f5ef982 100755
--- a/src/Specific/montgomery32_2e255m765/compiler.sh
+++ b/src/Specific/montgomery32_2e255m765_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e255m765/compilerxx.sh b/src/Specific/montgomery32_2e255m765_8limbs/compilerxx.sh
index 884d08ded..884d08ded 100755
--- a/src/Specific/montgomery32_2e255m765/compilerxx.sh
+++ b/src/Specific/montgomery32_2e255m765_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/feadd.v b/src/Specific/montgomery32_2e255m765_8limbs/feadd.v
new file mode 100644
index 000000000..7a53941d4
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e255m765_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..a23d1d0c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/femul.v b/src/Specific/montgomery32_2e255m765_8limbs/femul.v
new file mode 100644
index 000000000..cf3dd0305
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e255m765_8limbs/femulDisplay.v
new file mode 100644
index 000000000..2dd8d03ca
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/fenz.v b/src/Specific/montgomery32_2e255m765_8limbs/fenz.v
new file mode 100644
index 000000000..dea7924f3
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e255m765_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..73a777b3b
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/feopp.v b/src/Specific/montgomery32_2e255m765_8limbs/feopp.v
new file mode 100644
index 000000000..8ccd506fa
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e255m765_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..3d41d35b5
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/fesub.v b/src/Specific/montgomery32_2e255m765_8limbs/fesub.v
new file mode 100644
index 000000000..499d96f16
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e255m765_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e255m765_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..9e6ab8b9a
--- /dev/null
+++ b/src/Specific/montgomery32_2e255m765_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e255m765_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e255m765/py_interpreter.sh b/src/Specific/montgomery32_2e255m765_8limbs/py_interpreter.sh
index 014423320..014423320 100755
--- a/src/Specific/montgomery32_2e255m765/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e255m765_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e256m189/Synthesis.v b/src/Specific/montgomery32_2e256m189/Synthesis.v
deleted file mode 100644
index 18e895dea..000000000
--- a/src/Specific/montgomery32_2e256m189/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e256m189.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m189/feadd.c b/src/Specific/montgomery32_2e256m189/feadd.c
deleted file mode 100644
index d06e9223e..000000000
--- a/src/Specific/montgomery32_2e256m189/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffff43, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0xffffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m189/feadd.v b/src/Specific/montgomery32_2e256m189/feadd.v
deleted file mode 100644
index b27389b55..000000000
--- a/src/Specific/montgomery32_2e256m189/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m189/feaddDisplay.log b/src/Specific/montgomery32_2e256m189/feaddDisplay.log
deleted file mode 100644
index f20b63443..000000000
--- a/src/Specific/montgomery32_2e256m189/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffff43);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0xffffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m189/feaddDisplay.v b/src/Specific/montgomery32_2e256m189/feaddDisplay.v
deleted file mode 100644
index 76cb74158..000000000
--- a/src/Specific/montgomery32_2e256m189/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m189.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e256m189/femul.v b/src/Specific/montgomery32_2e256m189/femul.v
deleted file mode 100644
index 612e67dd4..000000000
--- a/src/Specific/montgomery32_2e256m189/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m189/femulDisplay.v b/src/Specific/montgomery32_2e256m189/femulDisplay.v
deleted file mode 100644
index 6df1ebb2e..000000000
--- a/src/Specific/montgomery32_2e256m189/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m189.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e256m189/fenz.c b/src/Specific/montgomery32_2e256m189/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e256m189/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m189/fenz.v b/src/Specific/montgomery32_2e256m189/fenz.v
deleted file mode 100644
index f85d3081d..000000000
--- a/src/Specific/montgomery32_2e256m189/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m189/fenzDisplay.log b/src/Specific/montgomery32_2e256m189/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e256m189/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e256m189/fenzDisplay.v b/src/Specific/montgomery32_2e256m189/fenzDisplay.v
deleted file mode 100644
index 40080b177..000000000
--- a/src/Specific/montgomery32_2e256m189/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m189.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m189/feopp.v b/src/Specific/montgomery32_2e256m189/feopp.v
deleted file mode 100644
index c483d3de0..000000000
--- a/src/Specific/montgomery32_2e256m189/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m189/feoppDisplay.v b/src/Specific/montgomery32_2e256m189/feoppDisplay.v
deleted file mode 100644
index cb9a7b160..000000000
--- a/src/Specific/montgomery32_2e256m189/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m189.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e256m189/fesquare.c b/src/Specific/montgomery32_2e256m189/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e256m189/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e256m189/fesub.v b/src/Specific/montgomery32_2e256m189/fesub.v
deleted file mode 100644
index 7d0b571d8..000000000
--- a/src/Specific/montgomery32_2e256m189/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m189/fesubDisplay.v b/src/Specific/montgomery32_2e256m189/fesubDisplay.v
deleted file mode 100644
index 28ed53cf4..000000000
--- a/src/Specific/montgomery32_2e256m189/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m189.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e256m189/CurveParameters.v b/src/Specific/montgomery32_2e256m189_8limbs/CurveParameters.v
index c673cf6d9..c673cf6d9 100644
--- a/src/Specific/montgomery32_2e256m189/CurveParameters.v
+++ b/src/Specific/montgomery32_2e256m189_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/Synthesis.v b/src/Specific/montgomery32_2e256m189_8limbs/Synthesis.v
new file mode 100644
index 000000000..cef5cd4ca
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m189/compiler.sh b/src/Specific/montgomery32_2e256m189_8limbs/compiler.sh
index ade8e4f31..ade8e4f31 100755
--- a/src/Specific/montgomery32_2e256m189/compiler.sh
+++ b/src/Specific/montgomery32_2e256m189_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e256m189/compilerxx.sh b/src/Specific/montgomery32_2e256m189_8limbs/compilerxx.sh
index cb901abf0..cb901abf0 100755
--- a/src/Specific/montgomery32_2e256m189/compilerxx.sh
+++ b/src/Specific/montgomery32_2e256m189_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/feadd.v b/src/Specific/montgomery32_2e256m189_8limbs/feadd.v
new file mode 100644
index 000000000..6398b5804
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e256m189_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..6ea724cdf
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/femul.v b/src/Specific/montgomery32_2e256m189_8limbs/femul.v
new file mode 100644
index 000000000..148807359
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e256m189_8limbs/femulDisplay.v
new file mode 100644
index 000000000..5924c8dfc
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/fenz.v b/src/Specific/montgomery32_2e256m189_8limbs/fenz.v
new file mode 100644
index 000000000..73da4791a
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e256m189_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..d3ce1b635
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/feopp.v b/src/Specific/montgomery32_2e256m189_8limbs/feopp.v
new file mode 100644
index 000000000..8703562ab
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e256m189_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..d8846ef32
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/fesub.v b/src/Specific/montgomery32_2e256m189_8limbs/fesub.v
new file mode 100644
index 000000000..8df01bf62
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m189_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e256m189_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..e84d95cf1
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m189_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m189_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e256m189/py_interpreter.sh b/src/Specific/montgomery32_2e256m189_8limbs/py_interpreter.sh
index fccf728a7..fccf728a7 100755
--- a/src/Specific/montgomery32_2e256m189/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e256m189_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v
deleted file mode 100644
index e7e6042c3..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.c b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.c
deleted file mode 100644
index 6dc8ca44c..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffff, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0x0, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0x0, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0x0, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0x1, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0xffffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v
deleted file mode 100644
index f0a6dd67a..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.log b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.log
deleted file mode 100644
index 6ce2399b9..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffff);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0x0);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0x0);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0x0);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0x1);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0xffffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v
deleted file mode 100644
index 74b049fbe..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v
deleted file mode 100644
index f7368588b..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v
deleted file mode 100644
index 6b8b9371a..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.c b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v
deleted file mode 100644
index ab51f7e74..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.log b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v
deleted file mode 100644
index 0c3fe3956..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v
deleted file mode 100644
index 85eed4deb..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.log b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.log
deleted file mode 100644
index 67043857f..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x4);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x6);
- uint32_t x25, uint8_t x26 = subborrow_u32(x23, 0x0, x8);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, 0x0, x10);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, 0x0, x12);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, 0x0, x14);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, 0x0, x13);
- uint32_t x39 = (uint32_t)cmovznz(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(0x0, x16, x40);
- uint32_t x44 = (x39 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x19, x44);
- uint32_t x48 = (x39 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x22, x48);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x25, 0x0);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x28, 0x0);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x31, 0x0);
- uint8_t x61 = ((uint8_t)x39 & 0x1);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x34, x61);
- uint32_t x65 = (x39 & 0xffffffff);
- uint32_t x67, uint8_t _ = addcarryx_u32(x64, x37, x65);
- (Return x67, Return x63, Return x59, Return x56, Return x53, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v
deleted file mode 100644
index e19e211ee..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesquare.c b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v
deleted file mode 100644
index 1eb8356d9..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.log b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.log
deleted file mode 100644
index e27ff6cda..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = subborrow_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = subborrow_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = subborrow_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = subborrow_u32(x52, x16, x30);
- uint32_t x56 = (uint32_t)cmovznz(x55, 0x0, 0xffffffff);
- uint32_t x57 = (x56 & 0xffffffff);
- uint32_t x59, uint8_t x60 = addcarryx_u32(0x0, x33, x57);
- uint32_t x61 = (x56 & 0xffffffff);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x36, x61);
- uint32_t x65 = (x56 & 0xffffffff);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x64, x39, x65);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x42, 0x0);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x45, 0x0);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x48, 0x0);
- uint8_t x78 = ((uint8_t)x56 & 0x1);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x77, x51, x78);
- uint32_t x82 = (x56 & 0xffffffff);
- uint32_t x84, uint8_t _ = addcarryx_u32(x81, x54, x82);
- (Return x84, Return x80, Return x76, Return x73, Return x70, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v
deleted file mode 100644
index b37b2d62d..000000000
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/CurveParameters.v
index f8b2b996d..f8b2b996d 100644
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/Synthesis.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..b733e4ce9
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compiler.sh
index 219a88070..219a88070 100755
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compiler.sh
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compilerxx.sh b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compilerxx.sh
index 6b7fa295f..6b7fa295f 100755
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feadd.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feadd.v
new file mode 100644
index 000000000..6df357075
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..05abfc4b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femul.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femul.v
new file mode 100644
index 000000000..284b2cc23
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..4ae2eaca0
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenz.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenz.v
new file mode 100644
index 000000000..5856d542c
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..3154b837d
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feopp.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feopp.v
new file mode 100644
index 000000000..853164824
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..541ff2626
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesub.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesub.v
new file mode 100644
index 000000000..0d8fb6076
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..134feb3ee
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e224p2e192p2e96m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/py_interpreter.sh b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/py_interpreter.sh
index 6e83fbf84..6e83fbf84 100755
--- a/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e256m2e224p2e192p2e96m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v b/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v
deleted file mode 100644
index 7bf74518b..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feadd.c b/src/Specific/montgomery32_2e256m2e32m977/feadd.c
deleted file mode 100644
index d63a79de9..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xfffffc2f, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xfffffffe, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0xffffffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feadd.v b/src/Specific/montgomery32_2e256m2e32m977/feadd.v
deleted file mode 100644
index ba8bb2c4a..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.log b/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.log
deleted file mode 100644
index ae0590e29..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xfffffc2f);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xfffffffe);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0xffffffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v
deleted file mode 100644
index 2be99ff23..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/femul.v b/src/Specific/montgomery32_2e256m2e32m977/femul.v
deleted file mode 100644
index 79506b2a9..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v
deleted file mode 100644
index 81ff4569e..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenz.c b/src/Specific/montgomery32_2e256m2e32m977/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenz.v b/src/Specific/montgomery32_2e256m2e32m977/fenz.v
deleted file mode 100644
index 8ff1fd074..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.log b/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v
deleted file mode 100644
index 6c6a85304..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feopp.v b/src/Specific/montgomery32_2e256m2e32m977/feopp.v
deleted file mode 100644
index e4f804560..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.log b/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.log
deleted file mode 100644
index ec9760d5a..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x4);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x6);
- uint32_t x25, uint8_t x26 = subborrow_u32(x23, 0x0, x8);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, 0x0, x10);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, 0x0, x12);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, 0x0, x14);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, 0x0, x13);
- uint32_t x39 = (uint32_t)cmovznz(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xfffffc2f);
- uint32_t x42, uint8_t x43 = addcarryx_u32(0x0, x16, x40);
- uint32_t x44 = (x39 & 0xfffffffe);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x19, x44);
- uint32_t x48 = (x39 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x22, x48);
- uint32_t x52 = (x39 & 0xffffffff);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x51, x25, x52);
- uint32_t x56 = (x39 & 0xffffffff);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x55, x28, x56);
- uint32_t x60 = (x39 & 0xffffffff);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x59, x31, x60);
- uint32_t x64 = (x39 & 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x63, x34, x64);
- uint32_t x68 = (x39 & 0xffffffff);
- uint32_t x70, uint8_t _ = addcarryx_u32(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v
deleted file mode 100644
index f1c874b72..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesquare.c b/src/Specific/montgomery32_2e256m2e32m977/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesub.v b/src/Specific/montgomery32_2e256m2e32m977/fesub.v
deleted file mode 100644
index 19c5fd432..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.log b/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.log
deleted file mode 100644
index f6741e9db..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = subborrow_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = subborrow_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = subborrow_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = subborrow_u32(x52, x16, x30);
- uint32_t x56 = (uint32_t)cmovznz(x55, 0x0, 0xffffffff);
- uint32_t x57 = (x56 & 0xfffffc2f);
- uint32_t x59, uint8_t x60 = addcarryx_u32(0x0, x33, x57);
- uint32_t x61 = (x56 & 0xfffffffe);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x36, x61);
- uint32_t x65 = (x56 & 0xffffffff);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x64, x39, x65);
- uint32_t x69 = (x56 & 0xffffffff);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x68, x42, x69);
- uint32_t x73 = (x56 & 0xffffffff);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x72, x45, x73);
- uint32_t x77 = (x56 & 0xffffffff);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x76, x48, x77);
- uint32_t x81 = (x56 & 0xffffffff);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x80, x51, x81);
- uint32_t x85 = (x56 & 0xffffffff);
- uint32_t x87, uint8_t _ = addcarryx_u32(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v
deleted file mode 100644
index 2db5b966e..000000000
--- a/src/Specific/montgomery32_2e256m2e32m977/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m2e32m977.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/CurveParameters.v
index 5badbfc52..5badbfc52 100644
--- a/src/Specific/montgomery32_2e256m2e32m977/CurveParameters.v
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/Synthesis.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/Synthesis.v
new file mode 100644
index 000000000..601de49c3
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/compiler.sh b/src/Specific/montgomery32_2e256m2e32m977_8limbs/compiler.sh
index 596ba4f68..596ba4f68 100755
--- a/src/Specific/montgomery32_2e256m2e32m977/compiler.sh
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e256m2e32m977/compilerxx.sh b/src/Specific/montgomery32_2e256m2e32m977_8limbs/compilerxx.sh
index 32c6eeae1..32c6eeae1 100755
--- a/src/Specific/montgomery32_2e256m2e32m977/compilerxx.sh
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/feadd.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feadd.v
new file mode 100644
index 000000000..32f747e8b
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..d5bddcc71
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/femul.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/femul.v
new file mode 100644
index 000000000..d25d53787
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/femulDisplay.v
new file mode 100644
index 000000000..a6b104151
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenz.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenz.v
new file mode 100644
index 000000000..50065ced7
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..49b6e603e
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/feopp.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feopp.v
new file mode 100644
index 000000000..5c59949a6
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..9456d0467
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesub.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesub.v
new file mode 100644
index 000000000..6b9977440
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..620d05b68
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m2e32m977_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e256m2e32m977/py_interpreter.sh b/src/Specific/montgomery32_2e256m2e32m977_8limbs/py_interpreter.sh
index ee01d5590..ee01d5590 100755
--- a/src/Specific/montgomery32_2e256m2e32m977/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e256m2e32m977_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/CurveParameters.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/CurveParameters.v
new file mode 100644
index 000000000..d158a02eb
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 4294968273
+Base: 32
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 32;
+ bitwidth := 32;
+ s := 2^256;
+ c := [(1, 4294968273)];
+ carry_chains := None;
+
+ a24 := None;
+ coef_div_modulus := None;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := true;
+ freeze := Some false;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/Synthesis.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/Synthesis.v
new file mode 100644
index 000000000..31478dac1
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/compiler.sh b/src/Specific/montgomery32_2e256m4294968273_8limbs/compiler.sh
new file mode 100755
index 000000000..1f14dafd6
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/compilerxx.sh b/src/Specific/montgomery32_2e256m4294968273_8limbs/compilerxx.sh
new file mode 100755
index 000000000..ef33dd542
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{32,32,32,32,32,32,32,32}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/feadd.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/feadd.v
new file mode 100644
index 000000000..fe1eb4112
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..7f422fa84
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/femul.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/femul.v
new file mode 100644
index 000000000..3d63b3470
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/femulDisplay.v
new file mode 100644
index 000000000..ecd88d96b
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/fenz.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/fenz.v
new file mode 100644
index 000000000..77416a9d7
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..99cb21d7a
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/feopp.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/feopp.v
new file mode 100644
index 000000000..9e9b04128
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..ecd4e21c5
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/fesub.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/fesub.v
new file mode 100644
index 000000000..83b25aa26
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e256m4294968273_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..cf2b9dd15
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m4294968273_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e256m4294968273_8limbs/py_interpreter.sh b/src/Specific/montgomery32_2e256m4294968273_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..4de64d06a
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m4294968273_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 4294968273' -Dmodulus_bytes='32' -Da24='121665'
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/Synthesis.v b/src/Specific/montgomery32_2e256m88x2e240m1/Synthesis.v
deleted file mode 100644
index 1c406cb34..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feadd.c b/src/Specific/montgomery32_2e256m88x2e240m1/feadd.c
deleted file mode 100644
index 056dbba53..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint32_t x33; uint8_t x34 = _addcarryx_u32(0x0, x5, x19, &x33);
- { uint32_t x36; uint8_t x37 = _addcarryx_u32(x34, x7, x21, &x36);
- { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x9, x23, &x39);
- { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x11, x25, &x42);
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x13, x27, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x15, x29, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x17, x31, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x16, x30, &x54);
- { uint32_t x57; uint8_t x58 = _subborrow_u32(0x0, x33, 0xffffffff, &x57);
- { uint32_t x60; uint8_t x61 = _subborrow_u32(x58, x36, 0xffffffff, &x60);
- { uint32_t x63; uint8_t x64 = _subborrow_u32(x61, x39, 0xffffffff, &x63);
- { uint32_t x66; uint8_t x67 = _subborrow_u32(x64, x42, 0xffffffff, &x66);
- { uint32_t x69; uint8_t x70 = _subborrow_u32(x67, x45, 0xffffffff, &x69);
- { uint32_t x72; uint8_t x73 = _subborrow_u32(x70, x48, 0xffffffff, &x72);
- { uint32_t x75; uint8_t x76 = _subborrow_u32(x73, x51, 0xffffffff, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(x76, x54, 0xffa7ffff, &x78);
- { uint32_t _; uint8_t x82 = _subborrow_u32(x79, x55, 0x0, &_);
- { uint32_t x83 = cmovznz32(x82, x78, x54);
- { uint32_t x84 = cmovznz32(x82, x75, x51);
- { uint32_t x85 = cmovznz32(x82, x72, x48);
- { uint32_t x86 = cmovznz32(x82, x69, x45);
- { uint32_t x87 = cmovznz32(x82, x66, x42);
- { uint32_t x88 = cmovznz32(x82, x63, x39);
- { uint32_t x89 = cmovznz32(x82, x60, x36);
- { uint32_t x90 = cmovznz32(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feadd.v b/src/Specific/montgomery32_2e256m88x2e240m1/feadd.v
deleted file mode 100644
index 0b58fa270..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.log b/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.log
deleted file mode 100644
index c4b54ef1d..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = addcarryx_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = addcarryx_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x16, x30);
- uint32_t x57, uint8_t x58 = subborrow_u32(0x0, x33, 0xffffffff);
- uint32_t x60, uint8_t x61 = subborrow_u32(x58, x36, 0xffffffff);
- uint32_t x63, uint8_t x64 = subborrow_u32(x61, x39, 0xffffffff);
- uint32_t x66, uint8_t x67 = subborrow_u32(x64, x42, 0xffffffff);
- uint32_t x69, uint8_t x70 = subborrow_u32(x67, x45, 0xffffffff);
- uint32_t x72, uint8_t x73 = subborrow_u32(x70, x48, 0xffffffff);
- uint32_t x75, uint8_t x76 = subborrow_u32(x73, x51, 0xffffffff);
- uint32_t x78, uint8_t x79 = subborrow_u32(x76, x54, 0xffa7ffff);
- uint32_t _, uint8_t x82 = subborrow_u32(x79, x55, 0x0);
- uint32_t x83 = cmovznz32(x82, x78, x54);
- uint32_t x84 = cmovznz32(x82, x75, x51);
- uint32_t x85 = cmovznz32(x82, x72, x48);
- uint32_t x86 = cmovznz32(x82, x69, x45);
- uint32_t x87 = cmovznz32(x82, x66, x42);
- uint32_t x88 = cmovznz32(x82, x63, x39);
- uint32_t x89 = cmovznz32(x82, x60, x36);
- uint32_t x90 = cmovznz32(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.v
deleted file mode 100644
index d78b78c7b..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/femul.v b/src/Specific/montgomery32_2e256m88x2e240m1/femul.v
deleted file mode 100644
index 0ac609744..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/femulDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1/femulDisplay.v
deleted file mode 100644
index 04216dd82..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fenz.c b/src/Specific/montgomery32_2e256m88x2e240m1/fenz.c
deleted file mode 100644
index 744f2aa5f..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x15 = (x14 | x13);
- { uint32_t x16 = (x12 | x15);
- { uint32_t x17 = (x10 | x16);
- { uint32_t x18 = (x8 | x17);
- { uint32_t x19 = (x6 | x18);
- { uint32_t x20 = (x4 | x19);
- { uint32_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fenz.v b/src/Specific/montgomery32_2e256m88x2e240m1/fenz.v
deleted file mode 100644
index b30307e39..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.log b/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.log
deleted file mode 100644
index c7c1c2df1..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x15 = (x14 | x13);
- uint32_t x16 = (x12 | x15);
- uint32_t x17 = (x10 | x16);
- uint32_t x18 = (x8 | x17);
- uint32_t x19 = (x6 | x18);
- uint32_t x20 = (x4 | x19);
- uint32_t x21 = (x2 | x20);
- return x21)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.v
deleted file mode 100644
index e1615f8cb..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feopp.v b/src/Specific/montgomery32_2e256m88x2e240m1/feopp.v
deleted file mode 100644
index 358cbf783..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.log b/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.log
deleted file mode 100644
index 72484a2b2..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = subborrow_u32(0x0, 0x0, x2);
- uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x4);
- uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x6);
- uint32_t x25, uint8_t x26 = subborrow_u32(x23, 0x0, x8);
- uint32_t x28, uint8_t x29 = subborrow_u32(x26, 0x0, x10);
- uint32_t x31, uint8_t x32 = subborrow_u32(x29, 0x0, x12);
- uint32_t x34, uint8_t x35 = subborrow_u32(x32, 0x0, x14);
- uint32_t x37, uint8_t x38 = subborrow_u32(x35, 0x0, x13);
- uint32_t x39 = (uint32_t)cmovznz(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xffffffff);
- uint32_t x42, uint8_t x43 = addcarryx_u32(0x0, x16, x40);
- uint32_t x44 = (x39 & 0xffffffff);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x19, x44);
- uint32_t x48 = (x39 & 0xffffffff);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x22, x48);
- uint32_t x52 = (x39 & 0xffffffff);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x51, x25, x52);
- uint32_t x56 = (x39 & 0xffffffff);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x55, x28, x56);
- uint32_t x60 = (x39 & 0xffffffff);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x59, x31, x60);
- uint32_t x64 = (x39 & 0xffffffff);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x63, x34, x64);
- uint32_t x68 = (x39 & 0xffa7ffff);
- uint32_t x70, uint8_t _ = addcarryx_u32(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.v
deleted file mode 100644
index 0829b99d2..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fesquare.c b/src/Specific/montgomery32_2e256m88x2e240m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fesub.v b/src/Specific/montgomery32_2e256m88x2e240m1/fesub.v
deleted file mode 100644
index 20ee713da..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.log b/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.log
deleted file mode 100644
index b1e955d4c..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint32_t x33, uint8_t x34 = subborrow_u32(0x0, x5, x19);
- uint32_t x36, uint8_t x37 = subborrow_u32(x34, x7, x21);
- uint32_t x39, uint8_t x40 = subborrow_u32(x37, x9, x23);
- uint32_t x42, uint8_t x43 = subborrow_u32(x40, x11, x25);
- uint32_t x45, uint8_t x46 = subborrow_u32(x43, x13, x27);
- uint32_t x48, uint8_t x49 = subborrow_u32(x46, x15, x29);
- uint32_t x51, uint8_t x52 = subborrow_u32(x49, x17, x31);
- uint32_t x54, uint8_t x55 = subborrow_u32(x52, x16, x30);
- uint32_t x56 = (uint32_t)cmovznz(x55, 0x0, 0xffffffff);
- uint32_t x57 = (x56 & 0xffffffff);
- uint32_t x59, uint8_t x60 = addcarryx_u32(0x0, x33, x57);
- uint32_t x61 = (x56 & 0xffffffff);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x60, x36, x61);
- uint32_t x65 = (x56 & 0xffffffff);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x64, x39, x65);
- uint32_t x69 = (x56 & 0xffffffff);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x68, x42, x69);
- uint32_t x73 = (x56 & 0xffffffff);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x72, x45, x73);
- uint32_t x77 = (x56 & 0xffffffff);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x76, x48, x77);
- uint32_t x81 = (x56 & 0xffffffff);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x80, x51, x81);
- uint32_t x85 = (x56 & 0xffa7ffff);
- uint32_t x87, uint8_t _ = addcarryx_u32(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.v
deleted file mode 100644
index 68fa56507..000000000
--- a/src/Specific/montgomery32_2e256m88x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/CurveParameters.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/CurveParameters.v
index 6045bed0c..6045bed0c 100644
--- a/src/Specific/montgomery32_2e256m88x2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/Synthesis.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..a4cf72e22
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/compiler.sh b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/compiler.sh
index e348f9e7d..e348f9e7d 100755
--- a/src/Specific/montgomery32_2e256m88x2e240m1/compiler.sh
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/compilerxx.sh b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/compilerxx.sh
index 0fffb539e..0fffb539e 100755
--- a/src/Specific/montgomery32_2e256m88x2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feadd.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feadd.v
new file mode 100644
index 000000000..7a6ee32c8
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feaddDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..b79f8f1dc
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femul.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femul.v
new file mode 100644
index 000000000..9e4fe9b9e
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femulDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..a7fb74bc4
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenz.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenz.v
new file mode 100644
index 000000000..f436e1855
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenzDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..6f6fd1490
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feopp.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feopp.v
new file mode 100644
index 000000000..cb0f5ce19
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feoppDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..d88c3ee9e
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesub.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesub.v
new file mode 100644
index 000000000..f84ee3c48
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesubDisplay.v b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..0d953d26e
--- /dev/null
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e256m88x2e240m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e256m88x2e240m1/py_interpreter.sh b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/py_interpreter.sh
index 09e3d56cf..09e3d56cf 100755
--- a/src/Specific/montgomery32_2e256m88x2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e256m88x2e240m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e266m3/Synthesis.v b/src/Specific/montgomery32_2e266m3/Synthesis.v
deleted file mode 100644
index 2c7bf6f1d..000000000
--- a/src/Specific/montgomery32_2e266m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e266m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e266m3/feadd.c b/src/Specific/montgomery32_2e266m3/feadd.c
deleted file mode 100644
index c59fa710c..000000000
--- a/src/Specific/montgomery32_2e266m3/feadd.c
+++ /dev/null
@@ -1,58 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(0x0, x5, x21, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x7, x23, &x40);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(x41, x9, x25, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x11, x27, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x13, x29, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x15, x31, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x17, x33, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x19, x35, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x18, x34, &x61);
- { uint32_t x64; uint8_t x65 = _subborrow_u32(0x0, x37, 0xfffffffd, &x64);
- { uint32_t x67; uint8_t x68 = _subborrow_u32(x65, x40, 0xffffffff, &x67);
- { uint32_t x70; uint8_t x71 = _subborrow_u32(x68, x43, 0xffffffff, &x70);
- { uint32_t x73; uint8_t x74 = _subborrow_u32(x71, x46, 0xffffffff, &x73);
- { uint32_t x76; uint8_t x77 = _subborrow_u32(x74, x49, 0xffffffff, &x76);
- { uint32_t x79; uint8_t x80 = _subborrow_u32(x77, x52, 0xffffffff, &x79);
- { uint32_t x82; uint8_t x83 = _subborrow_u32(x80, x55, 0xffffffff, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(x83, x58, 0xffffffff, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x61, 0x3ff, &x88);
- { uint32_t _; uint8_t x92 = _subborrow_u32(x89, x62, 0x0, &_);
- { uint32_t x93 = cmovznz32(x92, x88, x61);
- { uint32_t x94 = cmovznz32(x92, x85, x58);
- { uint32_t x95 = cmovznz32(x92, x82, x55);
- { uint32_t x96 = cmovznz32(x92, x79, x52);
- { uint32_t x97 = cmovznz32(x92, x76, x49);
- { uint32_t x98 = cmovznz32(x92, x73, x46);
- { uint32_t x99 = cmovznz32(x92, x70, x43);
- { uint32_t x100 = cmovznz32(x92, x67, x40);
- { uint32_t x101 = cmovznz32(x92, x64, x37);
- out[0] = x101;
- out[1] = x100;
- out[2] = x99;
- out[3] = x98;
- out[4] = x97;
- out[5] = x96;
- out[6] = x95;
- out[7] = x94;
- out[8] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e266m3/feadd.v b/src/Specific/montgomery32_2e266m3/feadd.v
deleted file mode 100644
index ec4bef004..000000000
--- a/src/Specific/montgomery32_2e266m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e266m3/feaddDisplay.log b/src/Specific/montgomery32_2e266m3/feaddDisplay.log
deleted file mode 100644
index de4f4c7bf..000000000
--- a/src/Specific/montgomery32_2e266m3/feaddDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x5, x21);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x7, x23);
- uint32_t x43, uint8_t x44 = addcarryx_u32(x41, x9, x25);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x11, x27);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x13, x29);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x15, x31);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x17, x33);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x19, x35);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x18, x34);
- uint32_t x64, uint8_t x65 = subborrow_u32(0x0, x37, 0xfffffffd);
- uint32_t x67, uint8_t x68 = subborrow_u32(x65, x40, 0xffffffff);
- uint32_t x70, uint8_t x71 = subborrow_u32(x68, x43, 0xffffffff);
- uint32_t x73, uint8_t x74 = subborrow_u32(x71, x46, 0xffffffff);
- uint32_t x76, uint8_t x77 = subborrow_u32(x74, x49, 0xffffffff);
- uint32_t x79, uint8_t x80 = subborrow_u32(x77, x52, 0xffffffff);
- uint32_t x82, uint8_t x83 = subborrow_u32(x80, x55, 0xffffffff);
- uint32_t x85, uint8_t x86 = subborrow_u32(x83, x58, 0xffffffff);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x61, 0x3ff);
- uint32_t _, uint8_t x92 = subborrow_u32(x89, x62, 0x0);
- uint32_t x93 = cmovznz32(x92, x88, x61);
- uint32_t x94 = cmovznz32(x92, x85, x58);
- uint32_t x95 = cmovznz32(x92, x82, x55);
- uint32_t x96 = cmovznz32(x92, x79, x52);
- uint32_t x97 = cmovznz32(x92, x76, x49);
- uint32_t x98 = cmovznz32(x92, x73, x46);
- uint32_t x99 = cmovznz32(x92, x70, x43);
- uint32_t x100 = cmovznz32(x92, x67, x40);
- uint32_t x101 = cmovznz32(x92, x64, x37);
- return (x93, x94, x95, x96, x97, x98, x99, x100, x101))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e266m3/feaddDisplay.v b/src/Specific/montgomery32_2e266m3/feaddDisplay.v
deleted file mode 100644
index 8dafbc9d4..000000000
--- a/src/Specific/montgomery32_2e266m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e266m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e266m3/femul.v b/src/Specific/montgomery32_2e266m3/femul.v
deleted file mode 100644
index 98ece7dd2..000000000
--- a/src/Specific/montgomery32_2e266m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e266m3/femulDisplay.v b/src/Specific/montgomery32_2e266m3/femulDisplay.v
deleted file mode 100644
index 47c4028dd..000000000
--- a/src/Specific/montgomery32_2e266m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e266m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e266m3/fenz.c b/src/Specific/montgomery32_2e266m3/fenz.c
deleted file mode 100644
index c10600790..000000000
--- a/src/Specific/montgomery32_2e266m3/fenz.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x17 = (x16 | x15);
- { uint32_t x18 = (x14 | x17);
- { uint32_t x19 = (x12 | x18);
- { uint32_t x20 = (x10 | x19);
- { uint32_t x21 = (x8 | x20);
- { uint32_t x22 = (x6 | x21);
- { uint32_t x23 = (x4 | x22);
- { uint32_t x24 = (x2 | x23);
- out[0] = x24;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e266m3/fenz.v b/src/Specific/montgomery32_2e266m3/fenz.v
deleted file mode 100644
index bc1557d70..000000000
--- a/src/Specific/montgomery32_2e266m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e266m3/fenzDisplay.log b/src/Specific/montgomery32_2e266m3/fenzDisplay.log
deleted file mode 100644
index d8d43b40b..000000000
--- a/src/Specific/montgomery32_2e266m3/fenzDisplay.log
+++ /dev/null
@@ -1,15 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x17 = (x16 | x15);
- uint32_t x18 = (x14 | x17);
- uint32_t x19 = (x12 | x18);
- uint32_t x20 = (x10 | x19);
- uint32_t x21 = (x8 | x20);
- uint32_t x22 = (x6 | x21);
- uint32_t x23 = (x4 | x22);
- uint32_t x24 = (x2 | x23);
- return x24)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e266m3/fenzDisplay.v b/src/Specific/montgomery32_2e266m3/fenzDisplay.v
deleted file mode 100644
index 30a53c833..000000000
--- a/src/Specific/montgomery32_2e266m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e266m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e266m3/feopp.v b/src/Specific/montgomery32_2e266m3/feopp.v
deleted file mode 100644
index 67da56808..000000000
--- a/src/Specific/montgomery32_2e266m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e266m3/feoppDisplay.v b/src/Specific/montgomery32_2e266m3/feoppDisplay.v
deleted file mode 100644
index a880db426..000000000
--- a/src/Specific/montgomery32_2e266m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e266m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e266m3/fesquare.c b/src/Specific/montgomery32_2e266m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e266m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e266m3/fesub.v b/src/Specific/montgomery32_2e266m3/fesub.v
deleted file mode 100644
index 14a21d4c9..000000000
--- a/src/Specific/montgomery32_2e266m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e266m3/fesubDisplay.v b/src/Specific/montgomery32_2e266m3/fesubDisplay.v
deleted file mode 100644
index 1faaa63fc..000000000
--- a/src/Specific/montgomery32_2e266m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e266m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e266m3/CurveParameters.v b/src/Specific/montgomery32_2e266m3_9limbs/CurveParameters.v
index 77b84da50..77b84da50 100644
--- a/src/Specific/montgomery32_2e266m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e266m3_9limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/Synthesis.v b/src/Specific/montgomery32_2e266m3_9limbs/Synthesis.v
new file mode 100644
index 000000000..bdeb64c63
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e266m3/compiler.sh b/src/Specific/montgomery32_2e266m3_9limbs/compiler.sh
index 2180f101a..2180f101a 100755
--- a/src/Specific/montgomery32_2e266m3/compiler.sh
+++ b/src/Specific/montgomery32_2e266m3_9limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e266m3/compilerxx.sh b/src/Specific/montgomery32_2e266m3_9limbs/compilerxx.sh
index 7f01fdbde..7f01fdbde 100755
--- a/src/Specific/montgomery32_2e266m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e266m3_9limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/feadd.v b/src/Specific/montgomery32_2e266m3_9limbs/feadd.v
new file mode 100644
index 000000000..76bf68719
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/feaddDisplay.v b/src/Specific/montgomery32_2e266m3_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..36b9525c2
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/femul.v b/src/Specific/montgomery32_2e266m3_9limbs/femul.v
new file mode 100644
index 000000000..35be13188
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/femulDisplay.v b/src/Specific/montgomery32_2e266m3_9limbs/femulDisplay.v
new file mode 100644
index 000000000..9129251a9
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/fenz.v b/src/Specific/montgomery32_2e266m3_9limbs/fenz.v
new file mode 100644
index 000000000..d2b5da571
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/fenzDisplay.v b/src/Specific/montgomery32_2e266m3_9limbs/fenzDisplay.v
new file mode 100644
index 000000000..9ef0db2f9
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/feopp.v b/src/Specific/montgomery32_2e266m3_9limbs/feopp.v
new file mode 100644
index 000000000..8aa749a6f
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/feoppDisplay.v b/src/Specific/montgomery32_2e266m3_9limbs/feoppDisplay.v
new file mode 100644
index 000000000..2efa883dc
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/fesub.v b/src/Specific/montgomery32_2e266m3_9limbs/fesub.v
new file mode 100644
index 000000000..3ffbea356
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e266m3_9limbs/fesubDisplay.v b/src/Specific/montgomery32_2e266m3_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..b912f0de4
--- /dev/null
+++ b/src/Specific/montgomery32_2e266m3_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e266m3_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e266m3/py_interpreter.sh b/src/Specific/montgomery32_2e266m3_9limbs/py_interpreter.sh
index cd8d8f0a4..cd8d8f0a4 100755
--- a/src/Specific/montgomery32_2e266m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e266m3_9limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e285m9/Synthesis.v b/src/Specific/montgomery32_2e285m9/Synthesis.v
deleted file mode 100644
index 1013beb49..000000000
--- a/src/Specific/montgomery32_2e285m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e285m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e285m9/feadd.c b/src/Specific/montgomery32_2e285m9/feadd.c
deleted file mode 100644
index 2d47c9464..000000000
--- a/src/Specific/montgomery32_2e285m9/feadd.c
+++ /dev/null
@@ -1,58 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint32_t x37; uint8_t x38 = _addcarryx_u32(0x0, x5, x21, &x37);
- { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x7, x23, &x40);
- { uint32_t x43; uint8_t x44 = _addcarryx_u32(x41, x9, x25, &x43);
- { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x11, x27, &x46);
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x13, x29, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x15, x31, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x17, x33, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x19, x35, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x18, x34, &x61);
- { uint32_t x64; uint8_t x65 = _subborrow_u32(0x0, x37, 0xfffffff7, &x64);
- { uint32_t x67; uint8_t x68 = _subborrow_u32(x65, x40, 0xffffffff, &x67);
- { uint32_t x70; uint8_t x71 = _subborrow_u32(x68, x43, 0xffffffff, &x70);
- { uint32_t x73; uint8_t x74 = _subborrow_u32(x71, x46, 0xffffffff, &x73);
- { uint32_t x76; uint8_t x77 = _subborrow_u32(x74, x49, 0xffffffff, &x76);
- { uint32_t x79; uint8_t x80 = _subborrow_u32(x77, x52, 0xffffffff, &x79);
- { uint32_t x82; uint8_t x83 = _subborrow_u32(x80, x55, 0xffffffff, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(x83, x58, 0xffffffff, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x61, 0x1fffffff, &x88);
- { uint32_t _; uint8_t x92 = _subborrow_u32(x89, x62, 0x0, &_);
- { uint32_t x93 = cmovznz32(x92, x88, x61);
- { uint32_t x94 = cmovznz32(x92, x85, x58);
- { uint32_t x95 = cmovznz32(x92, x82, x55);
- { uint32_t x96 = cmovznz32(x92, x79, x52);
- { uint32_t x97 = cmovznz32(x92, x76, x49);
- { uint32_t x98 = cmovznz32(x92, x73, x46);
- { uint32_t x99 = cmovznz32(x92, x70, x43);
- { uint32_t x100 = cmovznz32(x92, x67, x40);
- { uint32_t x101 = cmovznz32(x92, x64, x37);
- out[0] = x101;
- out[1] = x100;
- out[2] = x99;
- out[3] = x98;
- out[4] = x97;
- out[5] = x96;
- out[6] = x95;
- out[7] = x94;
- out[8] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e285m9/feadd.v b/src/Specific/montgomery32_2e285m9/feadd.v
deleted file mode 100644
index fad110e7a..000000000
--- a/src/Specific/montgomery32_2e285m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e285m9/feaddDisplay.log b/src/Specific/montgomery32_2e285m9/feaddDisplay.log
deleted file mode 100644
index 1dabeafdc..000000000
--- a/src/Specific/montgomery32_2e285m9/feaddDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint32_t x37, uint8_t x38 = addcarryx_u32(0x0, x5, x21);
- uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x7, x23);
- uint32_t x43, uint8_t x44 = addcarryx_u32(x41, x9, x25);
- uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x11, x27);
- uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x13, x29);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x15, x31);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x17, x33);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x19, x35);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x18, x34);
- uint32_t x64, uint8_t x65 = subborrow_u32(0x0, x37, 0xfffffff7);
- uint32_t x67, uint8_t x68 = subborrow_u32(x65, x40, 0xffffffff);
- uint32_t x70, uint8_t x71 = subborrow_u32(x68, x43, 0xffffffff);
- uint32_t x73, uint8_t x74 = subborrow_u32(x71, x46, 0xffffffff);
- uint32_t x76, uint8_t x77 = subborrow_u32(x74, x49, 0xffffffff);
- uint32_t x79, uint8_t x80 = subborrow_u32(x77, x52, 0xffffffff);
- uint32_t x82, uint8_t x83 = subborrow_u32(x80, x55, 0xffffffff);
- uint32_t x85, uint8_t x86 = subborrow_u32(x83, x58, 0xffffffff);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x61, 0x1fffffff);
- uint32_t _, uint8_t x92 = subborrow_u32(x89, x62, 0x0);
- uint32_t x93 = cmovznz32(x92, x88, x61);
- uint32_t x94 = cmovznz32(x92, x85, x58);
- uint32_t x95 = cmovznz32(x92, x82, x55);
- uint32_t x96 = cmovznz32(x92, x79, x52);
- uint32_t x97 = cmovznz32(x92, x76, x49);
- uint32_t x98 = cmovznz32(x92, x73, x46);
- uint32_t x99 = cmovznz32(x92, x70, x43);
- uint32_t x100 = cmovznz32(x92, x67, x40);
- uint32_t x101 = cmovznz32(x92, x64, x37);
- return (x93, x94, x95, x96, x97, x98, x99, x100, x101))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e285m9/feaddDisplay.v b/src/Specific/montgomery32_2e285m9/feaddDisplay.v
deleted file mode 100644
index 57ef37fe9..000000000
--- a/src/Specific/montgomery32_2e285m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e285m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e285m9/femul.v b/src/Specific/montgomery32_2e285m9/femul.v
deleted file mode 100644
index 5fb7307f5..000000000
--- a/src/Specific/montgomery32_2e285m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e285m9/femulDisplay.v b/src/Specific/montgomery32_2e285m9/femulDisplay.v
deleted file mode 100644
index b4c065c27..000000000
--- a/src/Specific/montgomery32_2e285m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e285m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e285m9/fenz.c b/src/Specific/montgomery32_2e285m9/fenz.c
deleted file mode 100644
index c10600790..000000000
--- a/src/Specific/montgomery32_2e285m9/fenz.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x17 = (x16 | x15);
- { uint32_t x18 = (x14 | x17);
- { uint32_t x19 = (x12 | x18);
- { uint32_t x20 = (x10 | x19);
- { uint32_t x21 = (x8 | x20);
- { uint32_t x22 = (x6 | x21);
- { uint32_t x23 = (x4 | x22);
- { uint32_t x24 = (x2 | x23);
- out[0] = x24;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e285m9/fenz.v b/src/Specific/montgomery32_2e285m9/fenz.v
deleted file mode 100644
index 040f0a6cf..000000000
--- a/src/Specific/montgomery32_2e285m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e285m9/fenzDisplay.log b/src/Specific/montgomery32_2e285m9/fenzDisplay.log
deleted file mode 100644
index d8d43b40b..000000000
--- a/src/Specific/montgomery32_2e285m9/fenzDisplay.log
+++ /dev/null
@@ -1,15 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x17 = (x16 | x15);
- uint32_t x18 = (x14 | x17);
- uint32_t x19 = (x12 | x18);
- uint32_t x20 = (x10 | x19);
- uint32_t x21 = (x8 | x20);
- uint32_t x22 = (x6 | x21);
- uint32_t x23 = (x4 | x22);
- uint32_t x24 = (x2 | x23);
- return x24)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e285m9/fenzDisplay.v b/src/Specific/montgomery32_2e285m9/fenzDisplay.v
deleted file mode 100644
index 38574680a..000000000
--- a/src/Specific/montgomery32_2e285m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e285m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e285m9/feopp.v b/src/Specific/montgomery32_2e285m9/feopp.v
deleted file mode 100644
index e05e6e6ca..000000000
--- a/src/Specific/montgomery32_2e285m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e285m9/feoppDisplay.v b/src/Specific/montgomery32_2e285m9/feoppDisplay.v
deleted file mode 100644
index 914cc653f..000000000
--- a/src/Specific/montgomery32_2e285m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e285m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e285m9/fesquare.c b/src/Specific/montgomery32_2e285m9/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e285m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e285m9/fesub.v b/src/Specific/montgomery32_2e285m9/fesub.v
deleted file mode 100644
index 0b4b66543..000000000
--- a/src/Specific/montgomery32_2e285m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e285m9/fesubDisplay.v b/src/Specific/montgomery32_2e285m9/fesubDisplay.v
deleted file mode 100644
index 6b5c989d5..000000000
--- a/src/Specific/montgomery32_2e285m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e285m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e285m9/CurveParameters.v b/src/Specific/montgomery32_2e285m9_9limbs/CurveParameters.v
index a17478355..a17478355 100644
--- a/src/Specific/montgomery32_2e285m9/CurveParameters.v
+++ b/src/Specific/montgomery32_2e285m9_9limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/Synthesis.v b/src/Specific/montgomery32_2e285m9_9limbs/Synthesis.v
new file mode 100644
index 000000000..de9d8e76e
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e285m9/compiler.sh b/src/Specific/montgomery32_2e285m9_9limbs/compiler.sh
index 8ff1eb476..8ff1eb476 100755
--- a/src/Specific/montgomery32_2e285m9/compiler.sh
+++ b/src/Specific/montgomery32_2e285m9_9limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e285m9/compilerxx.sh b/src/Specific/montgomery32_2e285m9_9limbs/compilerxx.sh
index 8578a800c..8578a800c 100755
--- a/src/Specific/montgomery32_2e285m9/compilerxx.sh
+++ b/src/Specific/montgomery32_2e285m9_9limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/feadd.v b/src/Specific/montgomery32_2e285m9_9limbs/feadd.v
new file mode 100644
index 000000000..548a2f636
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/feaddDisplay.v b/src/Specific/montgomery32_2e285m9_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..7d021f1e1
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/femul.v b/src/Specific/montgomery32_2e285m9_9limbs/femul.v
new file mode 100644
index 000000000..395794549
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/femulDisplay.v b/src/Specific/montgomery32_2e285m9_9limbs/femulDisplay.v
new file mode 100644
index 000000000..bde3785e9
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/fenz.v b/src/Specific/montgomery32_2e285m9_9limbs/fenz.v
new file mode 100644
index 000000000..5c5c5a2cc
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/fenzDisplay.v b/src/Specific/montgomery32_2e285m9_9limbs/fenzDisplay.v
new file mode 100644
index 000000000..79fbfa65e
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/feopp.v b/src/Specific/montgomery32_2e285m9_9limbs/feopp.v
new file mode 100644
index 000000000..944c20a63
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/feoppDisplay.v b/src/Specific/montgomery32_2e285m9_9limbs/feoppDisplay.v
new file mode 100644
index 000000000..4a157a6db
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/fesub.v b/src/Specific/montgomery32_2e285m9_9limbs/fesub.v
new file mode 100644
index 000000000..94dfd086c
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e285m9_9limbs/fesubDisplay.v b/src/Specific/montgomery32_2e285m9_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..6981915a3
--- /dev/null
+++ b/src/Specific/montgomery32_2e285m9_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e285m9_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e285m9/py_interpreter.sh b/src/Specific/montgomery32_2e285m9_9limbs/py_interpreter.sh
index c07e3f4a1..c07e3f4a1 100755
--- a/src/Specific/montgomery32_2e285m9/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e285m9_9limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e291m19/Synthesis.v b/src/Specific/montgomery32_2e291m19/Synthesis.v
deleted file mode 100644
index be8a30fac..000000000
--- a/src/Specific/montgomery32_2e291m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e291m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e291m19/feadd.c b/src/Specific/montgomery32_2e291m19/feadd.c
deleted file mode 100644
index 999094fe2..000000000
--- a/src/Specific/montgomery32_2e291m19/feadd.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint32_t x41; uint8_t x42 = _addcarryx_u32(0x0, x5, x23, &x41);
- { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x7, x25, &x44);
- { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x9, x27, &x47);
- { uint32_t x50; uint8_t x51 = _addcarryx_u32(x48, x11, x29, &x50);
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(x51, x13, x31, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x15, x33, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x17, x35, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x19, x37, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x21, x39, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x20, x38, &x68);
- { uint32_t x71; uint8_t x72 = _subborrow_u32(0x0, x41, 0xffffffed, &x71);
- { uint32_t x74; uint8_t x75 = _subborrow_u32(x72, x44, 0xffffffff, &x74);
- { uint32_t x77; uint8_t x78 = _subborrow_u32(x75, x47, 0xffffffff, &x77);
- { uint32_t x80; uint8_t x81 = _subborrow_u32(x78, x50, 0xffffffff, &x80);
- { uint32_t x83; uint8_t x84 = _subborrow_u32(x81, x53, 0xffffffff, &x83);
- { uint32_t x86; uint8_t x87 = _subborrow_u32(x84, x56, 0xffffffff, &x86);
- { uint32_t x89; uint8_t x90 = _subborrow_u32(x87, x59, 0xffffffff, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(x90, x62, 0xffffffff, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x65, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x68, 0x7, &x98);
- { uint32_t _; uint8_t x102 = _subborrow_u32(x99, x69, 0x0, &_);
- { uint32_t x103 = cmovznz32(x102, x98, x68);
- { uint32_t x104 = cmovznz32(x102, x95, x65);
- { uint32_t x105 = cmovznz32(x102, x92, x62);
- { uint32_t x106 = cmovznz32(x102, x89, x59);
- { uint32_t x107 = cmovznz32(x102, x86, x56);
- { uint32_t x108 = cmovznz32(x102, x83, x53);
- { uint32_t x109 = cmovznz32(x102, x80, x50);
- { uint32_t x110 = cmovznz32(x102, x77, x47);
- { uint32_t x111 = cmovznz32(x102, x74, x44);
- { uint32_t x112 = cmovznz32(x102, x71, x41);
- out[0] = x112;
- out[1] = x111;
- out[2] = x110;
- out[3] = x109;
- out[4] = x108;
- out[5] = x107;
- out[6] = x106;
- out[7] = x105;
- out[8] = x104;
- out[9] = x103;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e291m19/feadd.v b/src/Specific/montgomery32_2e291m19/feadd.v
deleted file mode 100644
index 75b7e73a2..000000000
--- a/src/Specific/montgomery32_2e291m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e291m19/feaddDisplay.log b/src/Specific/montgomery32_2e291m19/feaddDisplay.log
deleted file mode 100644
index 6b530ebf5..000000000
--- a/src/Specific/montgomery32_2e291m19/feaddDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint32_t x41, uint8_t x42 = addcarryx_u32(0x0, x5, x23);
- uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x7, x25);
- uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x9, x27);
- uint32_t x50, uint8_t x51 = addcarryx_u32(x48, x11, x29);
- uint32_t x53, uint8_t x54 = addcarryx_u32(x51, x13, x31);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x15, x33);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x17, x35);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x19, x37);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x21, x39);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x20, x38);
- uint32_t x71, uint8_t x72 = subborrow_u32(0x0, x41, 0xffffffed);
- uint32_t x74, uint8_t x75 = subborrow_u32(x72, x44, 0xffffffff);
- uint32_t x77, uint8_t x78 = subborrow_u32(x75, x47, 0xffffffff);
- uint32_t x80, uint8_t x81 = subborrow_u32(x78, x50, 0xffffffff);
- uint32_t x83, uint8_t x84 = subborrow_u32(x81, x53, 0xffffffff);
- uint32_t x86, uint8_t x87 = subborrow_u32(x84, x56, 0xffffffff);
- uint32_t x89, uint8_t x90 = subborrow_u32(x87, x59, 0xffffffff);
- uint32_t x92, uint8_t x93 = subborrow_u32(x90, x62, 0xffffffff);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x65, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x68, 0x7);
- uint32_t _, uint8_t x102 = subborrow_u32(x99, x69, 0x0);
- uint32_t x103 = cmovznz32(x102, x98, x68);
- uint32_t x104 = cmovznz32(x102, x95, x65);
- uint32_t x105 = cmovznz32(x102, x92, x62);
- uint32_t x106 = cmovznz32(x102, x89, x59);
- uint32_t x107 = cmovznz32(x102, x86, x56);
- uint32_t x108 = cmovznz32(x102, x83, x53);
- uint32_t x109 = cmovznz32(x102, x80, x50);
- uint32_t x110 = cmovznz32(x102, x77, x47);
- uint32_t x111 = cmovznz32(x102, x74, x44);
- uint32_t x112 = cmovznz32(x102, x71, x41);
- return (x103, x104, x105, x106, x107, x108, x109, x110, x111, x112))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e291m19/feaddDisplay.v b/src/Specific/montgomery32_2e291m19/feaddDisplay.v
deleted file mode 100644
index b6fe2c641..000000000
--- a/src/Specific/montgomery32_2e291m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e291m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e291m19/femul.v b/src/Specific/montgomery32_2e291m19/femul.v
deleted file mode 100644
index cbeca275e..000000000
--- a/src/Specific/montgomery32_2e291m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e291m19/femulDisplay.v b/src/Specific/montgomery32_2e291m19/femulDisplay.v
deleted file mode 100644
index 655fd9809..000000000
--- a/src/Specific/montgomery32_2e291m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e291m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e291m19/fenz.c b/src/Specific/montgomery32_2e291m19/fenz.c
deleted file mode 100644
index 4ad084ead..000000000
--- a/src/Specific/montgomery32_2e291m19/fenz.c
+++ /dev/null
@@ -1,23 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x19 = (x18 | x17);
- { uint32_t x20 = (x16 | x19);
- { uint32_t x21 = (x14 | x20);
- { uint32_t x22 = (x12 | x21);
- { uint32_t x23 = (x10 | x22);
- { uint32_t x24 = (x8 | x23);
- { uint32_t x25 = (x6 | x24);
- { uint32_t x26 = (x4 | x25);
- { uint32_t x27 = (x2 | x26);
- out[0] = x27;
- }}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e291m19/fenz.v b/src/Specific/montgomery32_2e291m19/fenz.v
deleted file mode 100644
index 783d6cbad..000000000
--- a/src/Specific/montgomery32_2e291m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e291m19/fenzDisplay.log b/src/Specific/montgomery32_2e291m19/fenzDisplay.log
deleted file mode 100644
index d57ef4050..000000000
--- a/src/Specific/montgomery32_2e291m19/fenzDisplay.log
+++ /dev/null
@@ -1,16 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x19 = (x18 | x17);
- uint32_t x20 = (x16 | x19);
- uint32_t x21 = (x14 | x20);
- uint32_t x22 = (x12 | x21);
- uint32_t x23 = (x10 | x22);
- uint32_t x24 = (x8 | x23);
- uint32_t x25 = (x6 | x24);
- uint32_t x26 = (x4 | x25);
- uint32_t x27 = (x2 | x26);
- return x27)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e291m19/fenzDisplay.v b/src/Specific/montgomery32_2e291m19/fenzDisplay.v
deleted file mode 100644
index 5ba9f5687..000000000
--- a/src/Specific/montgomery32_2e291m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e291m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e291m19/feopp.v b/src/Specific/montgomery32_2e291m19/feopp.v
deleted file mode 100644
index 57e4b6d8f..000000000
--- a/src/Specific/montgomery32_2e291m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e291m19/feoppDisplay.v b/src/Specific/montgomery32_2e291m19/feoppDisplay.v
deleted file mode 100644
index e1c7d61f8..000000000
--- a/src/Specific/montgomery32_2e291m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e291m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e291m19/fesquare.c b/src/Specific/montgomery32_2e291m19/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e291m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e291m19/fesub.v b/src/Specific/montgomery32_2e291m19/fesub.v
deleted file mode 100644
index 8087652b1..000000000
--- a/src/Specific/montgomery32_2e291m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e291m19/fesubDisplay.v b/src/Specific/montgomery32_2e291m19/fesubDisplay.v
deleted file mode 100644
index 76a938225..000000000
--- a/src/Specific/montgomery32_2e291m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e291m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e291m19/CurveParameters.v b/src/Specific/montgomery32_2e291m19_10limbs/CurveParameters.v
index 5d1b126a1..5d1b126a1 100644
--- a/src/Specific/montgomery32_2e291m19/CurveParameters.v
+++ b/src/Specific/montgomery32_2e291m19_10limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/Synthesis.v b/src/Specific/montgomery32_2e291m19_10limbs/Synthesis.v
new file mode 100644
index 000000000..101415039
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e291m19/compiler.sh b/src/Specific/montgomery32_2e291m19_10limbs/compiler.sh
index 1168e5363..1168e5363 100755
--- a/src/Specific/montgomery32_2e291m19/compiler.sh
+++ b/src/Specific/montgomery32_2e291m19_10limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e291m19/compilerxx.sh b/src/Specific/montgomery32_2e291m19_10limbs/compilerxx.sh
index 8b18fcd58..8b18fcd58 100755
--- a/src/Specific/montgomery32_2e291m19/compilerxx.sh
+++ b/src/Specific/montgomery32_2e291m19_10limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/feadd.v b/src/Specific/montgomery32_2e291m19_10limbs/feadd.v
new file mode 100644
index 000000000..cd3175a65
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/feaddDisplay.v b/src/Specific/montgomery32_2e291m19_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..4d1ccb5d3
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/femul.v b/src/Specific/montgomery32_2e291m19_10limbs/femul.v
new file mode 100644
index 000000000..9f88a1ac7
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/femulDisplay.v b/src/Specific/montgomery32_2e291m19_10limbs/femulDisplay.v
new file mode 100644
index 000000000..4615da62f
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/fenz.v b/src/Specific/montgomery32_2e291m19_10limbs/fenz.v
new file mode 100644
index 000000000..d2e54da64
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/fenzDisplay.v b/src/Specific/montgomery32_2e291m19_10limbs/fenzDisplay.v
new file mode 100644
index 000000000..42118c57d
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/feopp.v b/src/Specific/montgomery32_2e291m19_10limbs/feopp.v
new file mode 100644
index 000000000..b0d201e75
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/feoppDisplay.v b/src/Specific/montgomery32_2e291m19_10limbs/feoppDisplay.v
new file mode 100644
index 000000000..b392a1302
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/fesub.v b/src/Specific/montgomery32_2e291m19_10limbs/fesub.v
new file mode 100644
index 000000000..19fe13519
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e291m19_10limbs/fesubDisplay.v b/src/Specific/montgomery32_2e291m19_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..611321ffc
--- /dev/null
+++ b/src/Specific/montgomery32_2e291m19_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e291m19_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e291m19/py_interpreter.sh b/src/Specific/montgomery32_2e291m19_10limbs/py_interpreter.sh
index 7e6097a09..7e6097a09 100755
--- a/src/Specific/montgomery32_2e291m19/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e291m19_10limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e321m9/Synthesis.v b/src/Specific/montgomery32_2e321m9/Synthesis.v
deleted file mode 100644
index 7dcdf7dd7..000000000
--- a/src/Specific/montgomery32_2e321m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e321m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e321m9/feadd.c b/src/Specific/montgomery32_2e321m9/feadd.c
deleted file mode 100644
index c637bcba9..000000000
--- a/src/Specific/montgomery32_2e321m9/feadd.c
+++ /dev/null
@@ -1,70 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x5, x25, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x7, x27, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x9, x29, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x11, x31, &x54);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x55, x13, x33, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x15, x35, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x17, x37, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x19, x39, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x21, x41, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x23, x43, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x22, x42, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(0x0, x45, 0xfffffff7, &x78);
- { uint32_t x81; uint8_t x82 = _subborrow_u32(x79, x48, 0xffffffff, &x81);
- { uint32_t x84; uint8_t x85 = _subborrow_u32(x82, x51, 0xffffffff, &x84);
- { uint32_t x87; uint8_t x88 = _subborrow_u32(x85, x54, 0xffffffff, &x87);
- { uint32_t x90; uint8_t x91 = _subborrow_u32(x88, x57, 0xffffffff, &x90);
- { uint32_t x93; uint8_t x94 = _subborrow_u32(x91, x60, 0xffffffff, &x93);
- { uint32_t x96; uint8_t x97 = _subborrow_u32(x94, x63, 0xffffffff, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(x97, x66, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x69, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x72, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x75, 0x1, &x108);
- { uint32_t _; uint8_t x112 = _subborrow_u32(x109, x76, 0x0, &_);
- { uint32_t x113 = cmovznz32(x112, x108, x75);
- { uint32_t x114 = cmovznz32(x112, x105, x72);
- { uint32_t x115 = cmovznz32(x112, x102, x69);
- { uint32_t x116 = cmovznz32(x112, x99, x66);
- { uint32_t x117 = cmovznz32(x112, x96, x63);
- { uint32_t x118 = cmovznz32(x112, x93, x60);
- { uint32_t x119 = cmovznz32(x112, x90, x57);
- { uint32_t x120 = cmovznz32(x112, x87, x54);
- { uint32_t x121 = cmovznz32(x112, x84, x51);
- { uint32_t x122 = cmovznz32(x112, x81, x48);
- { uint32_t x123 = cmovznz32(x112, x78, x45);
- out[0] = x123;
- out[1] = x122;
- out[2] = x121;
- out[3] = x120;
- out[4] = x119;
- out[5] = x118;
- out[6] = x117;
- out[7] = x116;
- out[8] = x115;
- out[9] = x114;
- out[10] = x113;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e321m9/feadd.v b/src/Specific/montgomery32_2e321m9/feadd.v
deleted file mode 100644
index e1edfb929..000000000
--- a/src/Specific/montgomery32_2e321m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e321m9/feaddDisplay.log b/src/Specific/montgomery32_2e321m9/feaddDisplay.log
deleted file mode 100644
index 3f005e69e..000000000
--- a/src/Specific/montgomery32_2e321m9/feaddDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x5, x25);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x7, x27);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x9, x29);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x11, x31);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x55, x13, x33);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x15, x35);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x17, x37);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x19, x39);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x21, x41);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x23, x43);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x22, x42);
- uint32_t x78, uint8_t x79 = subborrow_u32(0x0, x45, 0xfffffff7);
- uint32_t x81, uint8_t x82 = subborrow_u32(x79, x48, 0xffffffff);
- uint32_t x84, uint8_t x85 = subborrow_u32(x82, x51, 0xffffffff);
- uint32_t x87, uint8_t x88 = subborrow_u32(x85, x54, 0xffffffff);
- uint32_t x90, uint8_t x91 = subborrow_u32(x88, x57, 0xffffffff);
- uint32_t x93, uint8_t x94 = subborrow_u32(x91, x60, 0xffffffff);
- uint32_t x96, uint8_t x97 = subborrow_u32(x94, x63, 0xffffffff);
- uint32_t x99, uint8_t x100 = subborrow_u32(x97, x66, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x69, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x72, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x75, 0x1);
- uint32_t _, uint8_t x112 = subborrow_u32(x109, x76, 0x0);
- uint32_t x113 = cmovznz32(x112, x108, x75);
- uint32_t x114 = cmovznz32(x112, x105, x72);
- uint32_t x115 = cmovznz32(x112, x102, x69);
- uint32_t x116 = cmovznz32(x112, x99, x66);
- uint32_t x117 = cmovznz32(x112, x96, x63);
- uint32_t x118 = cmovznz32(x112, x93, x60);
- uint32_t x119 = cmovznz32(x112, x90, x57);
- uint32_t x120 = cmovznz32(x112, x87, x54);
- uint32_t x121 = cmovznz32(x112, x84, x51);
- uint32_t x122 = cmovznz32(x112, x81, x48);
- uint32_t x123 = cmovznz32(x112, x78, x45);
- return (x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e321m9/feaddDisplay.v b/src/Specific/montgomery32_2e321m9/feaddDisplay.v
deleted file mode 100644
index 5142c79fd..000000000
--- a/src/Specific/montgomery32_2e321m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e321m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e321m9/femul.v b/src/Specific/montgomery32_2e321m9/femul.v
deleted file mode 100644
index 615f7b78a..000000000
--- a/src/Specific/montgomery32_2e321m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e321m9/femulDisplay.v b/src/Specific/montgomery32_2e321m9/femulDisplay.v
deleted file mode 100644
index 12ff0137b..000000000
--- a/src/Specific/montgomery32_2e321m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e321m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e321m9/fenz.c b/src/Specific/montgomery32_2e321m9/fenz.c
deleted file mode 100644
index d962eda51..000000000
--- a/src/Specific/montgomery32_2e321m9/fenz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x21 = (x20 | x19);
- { uint32_t x22 = (x18 | x21);
- { uint32_t x23 = (x16 | x22);
- { uint32_t x24 = (x14 | x23);
- { uint32_t x25 = (x12 | x24);
- { uint32_t x26 = (x10 | x25);
- { uint32_t x27 = (x8 | x26);
- { uint32_t x28 = (x6 | x27);
- { uint32_t x29 = (x4 | x28);
- { uint32_t x30 = (x2 | x29);
- out[0] = x30;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e321m9/fenz.v b/src/Specific/montgomery32_2e321m9/fenz.v
deleted file mode 100644
index 78df9ab90..000000000
--- a/src/Specific/montgomery32_2e321m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e321m9/fenzDisplay.log b/src/Specific/montgomery32_2e321m9/fenzDisplay.log
deleted file mode 100644
index 4c54f68e5..000000000
--- a/src/Specific/montgomery32_2e321m9/fenzDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x21 = (x20 | x19);
- uint32_t x22 = (x18 | x21);
- uint32_t x23 = (x16 | x22);
- uint32_t x24 = (x14 | x23);
- uint32_t x25 = (x12 | x24);
- uint32_t x26 = (x10 | x25);
- uint32_t x27 = (x8 | x26);
- uint32_t x28 = (x6 | x27);
- uint32_t x29 = (x4 | x28);
- uint32_t x30 = (x2 | x29);
- return x30)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e321m9/fenzDisplay.v b/src/Specific/montgomery32_2e321m9/fenzDisplay.v
deleted file mode 100644
index 7558bd9a8..000000000
--- a/src/Specific/montgomery32_2e321m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e321m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e321m9/feopp.v b/src/Specific/montgomery32_2e321m9/feopp.v
deleted file mode 100644
index 36800a52f..000000000
--- a/src/Specific/montgomery32_2e321m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e321m9/feoppDisplay.v b/src/Specific/montgomery32_2e321m9/feoppDisplay.v
deleted file mode 100644
index 878fa1e14..000000000
--- a/src/Specific/montgomery32_2e321m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e321m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e321m9/fesquare.c b/src/Specific/montgomery32_2e321m9/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e321m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e321m9/fesub.v b/src/Specific/montgomery32_2e321m9/fesub.v
deleted file mode 100644
index 41f482e91..000000000
--- a/src/Specific/montgomery32_2e321m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e321m9/fesubDisplay.v b/src/Specific/montgomery32_2e321m9/fesubDisplay.v
deleted file mode 100644
index 4b0d73efa..000000000
--- a/src/Specific/montgomery32_2e321m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e321m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e321m9/CurveParameters.v b/src/Specific/montgomery32_2e321m9_11limbs/CurveParameters.v
index 492ecac0f..492ecac0f 100644
--- a/src/Specific/montgomery32_2e321m9/CurveParameters.v
+++ b/src/Specific/montgomery32_2e321m9_11limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/Synthesis.v b/src/Specific/montgomery32_2e321m9_11limbs/Synthesis.v
new file mode 100644
index 000000000..86adf28bb
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e321m9/compiler.sh b/src/Specific/montgomery32_2e321m9_11limbs/compiler.sh
index 873b31201..873b31201 100755
--- a/src/Specific/montgomery32_2e321m9/compiler.sh
+++ b/src/Specific/montgomery32_2e321m9_11limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e321m9/compilerxx.sh b/src/Specific/montgomery32_2e321m9_11limbs/compilerxx.sh
index 022b5f940..022b5f940 100755
--- a/src/Specific/montgomery32_2e321m9/compilerxx.sh
+++ b/src/Specific/montgomery32_2e321m9_11limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/feadd.v b/src/Specific/montgomery32_2e321m9_11limbs/feadd.v
new file mode 100644
index 000000000..317871919
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/feaddDisplay.v b/src/Specific/montgomery32_2e321m9_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..9da09c2bf
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/femul.v b/src/Specific/montgomery32_2e321m9_11limbs/femul.v
new file mode 100644
index 000000000..69f51c5f5
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/femulDisplay.v b/src/Specific/montgomery32_2e321m9_11limbs/femulDisplay.v
new file mode 100644
index 000000000..d43feeadc
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/fenz.v b/src/Specific/montgomery32_2e321m9_11limbs/fenz.v
new file mode 100644
index 000000000..dc2102ca7
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/fenzDisplay.v b/src/Specific/montgomery32_2e321m9_11limbs/fenzDisplay.v
new file mode 100644
index 000000000..494df5722
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/feopp.v b/src/Specific/montgomery32_2e321m9_11limbs/feopp.v
new file mode 100644
index 000000000..31535c883
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/feoppDisplay.v b/src/Specific/montgomery32_2e321m9_11limbs/feoppDisplay.v
new file mode 100644
index 000000000..61088cb7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/fesub.v b/src/Specific/montgomery32_2e321m9_11limbs/fesub.v
new file mode 100644
index 000000000..85ab6e1f8
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e321m9_11limbs/fesubDisplay.v b/src/Specific/montgomery32_2e321m9_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..11373c473
--- /dev/null
+++ b/src/Specific/montgomery32_2e321m9_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e321m9_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e321m9/py_interpreter.sh b/src/Specific/montgomery32_2e321m9_11limbs/py_interpreter.sh
index 262a89c32..262a89c32 100755
--- a/src/Specific/montgomery32_2e321m9/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e321m9_11limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v b/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v
deleted file mode 100644
index fbf6f7ce2..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feadd.c b/src/Specific/montgomery32_2e322m2e161m1/feadd.c
deleted file mode 100644
index 60f7eb069..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feadd.c
+++ /dev/null
@@ -1,70 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x5, x25, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x7, x27, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x9, x29, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x11, x31, &x54);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x55, x13, x33, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x15, x35, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x17, x37, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x19, x39, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x21, x41, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x23, x43, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x22, x42, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(0x0, x45, 0xffffffff, &x78);
- { uint32_t x81; uint8_t x82 = _subborrow_u32(x79, x48, 0xffffffff, &x81);
- { uint32_t x84; uint8_t x85 = _subborrow_u32(x82, x51, 0xffffffff, &x84);
- { uint32_t x87; uint8_t x88 = _subborrow_u32(x85, x54, 0xffffffff, &x87);
- { uint32_t x90; uint8_t x91 = _subborrow_u32(x88, x57, 0xffffffff, &x90);
- { uint32_t x93; uint8_t x94 = _subborrow_u32(x91, x60, 0xfffffffd, &x93);
- { uint32_t x96; uint8_t x97 = _subborrow_u32(x94, x63, 0xffffffff, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(x97, x66, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x69, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x72, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x75, 0x3, &x108);
- { uint32_t _; uint8_t x112 = _subborrow_u32(x109, x76, 0x0, &_);
- { uint32_t x113 = cmovznz32(x112, x108, x75);
- { uint32_t x114 = cmovznz32(x112, x105, x72);
- { uint32_t x115 = cmovznz32(x112, x102, x69);
- { uint32_t x116 = cmovznz32(x112, x99, x66);
- { uint32_t x117 = cmovznz32(x112, x96, x63);
- { uint32_t x118 = cmovznz32(x112, x93, x60);
- { uint32_t x119 = cmovznz32(x112, x90, x57);
- { uint32_t x120 = cmovznz32(x112, x87, x54);
- { uint32_t x121 = cmovznz32(x112, x84, x51);
- { uint32_t x122 = cmovznz32(x112, x81, x48);
- { uint32_t x123 = cmovznz32(x112, x78, x45);
- out[0] = x123;
- out[1] = x122;
- out[2] = x121;
- out[3] = x120;
- out[4] = x119;
- out[5] = x118;
- out[6] = x117;
- out[7] = x116;
- out[8] = x115;
- out[9] = x114;
- out[10] = x113;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feadd.v b/src/Specific/montgomery32_2e322m2e161m1/feadd.v
deleted file mode 100644
index 7e41dc312..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.log b/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.log
deleted file mode 100644
index 4aa00c707..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x5, x25);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x7, x27);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x9, x29);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x11, x31);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x55, x13, x33);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x15, x35);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x17, x37);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x19, x39);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x21, x41);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x23, x43);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x22, x42);
- uint32_t x78, uint8_t x79 = subborrow_u32(0x0, x45, 0xffffffff);
- uint32_t x81, uint8_t x82 = subborrow_u32(x79, x48, 0xffffffff);
- uint32_t x84, uint8_t x85 = subborrow_u32(x82, x51, 0xffffffff);
- uint32_t x87, uint8_t x88 = subborrow_u32(x85, x54, 0xffffffff);
- uint32_t x90, uint8_t x91 = subborrow_u32(x88, x57, 0xffffffff);
- uint32_t x93, uint8_t x94 = subborrow_u32(x91, x60, 0xfffffffd);
- uint32_t x96, uint8_t x97 = subborrow_u32(x94, x63, 0xffffffff);
- uint32_t x99, uint8_t x100 = subborrow_u32(x97, x66, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x69, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x72, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x75, 0x3);
- uint32_t _, uint8_t x112 = subborrow_u32(x109, x76, 0x0);
- uint32_t x113 = cmovznz32(x112, x108, x75);
- uint32_t x114 = cmovznz32(x112, x105, x72);
- uint32_t x115 = cmovznz32(x112, x102, x69);
- uint32_t x116 = cmovznz32(x112, x99, x66);
- uint32_t x117 = cmovznz32(x112, x96, x63);
- uint32_t x118 = cmovznz32(x112, x93, x60);
- uint32_t x119 = cmovznz32(x112, x90, x57);
- uint32_t x120 = cmovznz32(x112, x87, x54);
- uint32_t x121 = cmovznz32(x112, x84, x51);
- uint32_t x122 = cmovznz32(x112, x81, x48);
- uint32_t x123 = cmovznz32(x112, x78, x45);
- return (x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v
deleted file mode 100644
index af81392ae..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/femul.v b/src/Specific/montgomery32_2e322m2e161m1/femul.v
deleted file mode 100644
index 407218f30..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v
deleted file mode 100644
index 3a77f1993..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenz.c b/src/Specific/montgomery32_2e322m2e161m1/fenz.c
deleted file mode 100644
index d962eda51..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fenz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x21 = (x20 | x19);
- { uint32_t x22 = (x18 | x21);
- { uint32_t x23 = (x16 | x22);
- { uint32_t x24 = (x14 | x23);
- { uint32_t x25 = (x12 | x24);
- { uint32_t x26 = (x10 | x25);
- { uint32_t x27 = (x8 | x26);
- { uint32_t x28 = (x6 | x27);
- { uint32_t x29 = (x4 | x28);
- { uint32_t x30 = (x2 | x29);
- out[0] = x30;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenz.v b/src/Specific/montgomery32_2e322m2e161m1/fenz.v
deleted file mode 100644
index 4c9aca085..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.log b/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.log
deleted file mode 100644
index 4c54f68e5..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x21 = (x20 | x19);
- uint32_t x22 = (x18 | x21);
- uint32_t x23 = (x16 | x22);
- uint32_t x24 = (x14 | x23);
- uint32_t x25 = (x12 | x24);
- uint32_t x26 = (x10 | x25);
- uint32_t x27 = (x8 | x26);
- uint32_t x28 = (x6 | x27);
- uint32_t x29 = (x4 | x28);
- uint32_t x30 = (x2 | x29);
- return x30)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v
deleted file mode 100644
index 9b17c60af..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feopp.v b/src/Specific/montgomery32_2e322m2e161m1/feopp.v
deleted file mode 100644
index 97ce630af..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v
deleted file mode 100644
index 34a18fb1e..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fesquare.c b/src/Specific/montgomery32_2e322m2e161m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fesub.v b/src/Specific/montgomery32_2e322m2e161m1/fesub.v
deleted file mode 100644
index 71ec4d309..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v b/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v
deleted file mode 100644
index 27c91b867..000000000
--- a/src/Specific/montgomery32_2e322m2e161m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e322m2e161m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/CurveParameters.v
index 7486ca425..7486ca425 100644
--- a/src/Specific/montgomery32_2e322m2e161m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/Synthesis.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/Synthesis.v
new file mode 100644
index 000000000..e18642dfb
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/compiler.sh b/src/Specific/montgomery32_2e322m2e161m1_11limbs/compiler.sh
index b5797c765..b5797c765 100755
--- a/src/Specific/montgomery32_2e322m2e161m1/compiler.sh
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e322m2e161m1/compilerxx.sh b/src/Specific/montgomery32_2e322m2e161m1_11limbs/compilerxx.sh
index 19bca952d..19bca952d 100755
--- a/src/Specific/montgomery32_2e322m2e161m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/feadd.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feadd.v
new file mode 100644
index 000000000..ab0bfda63
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/feaddDisplay.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..d1049262d
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/femul.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/femul.v
new file mode 100644
index 000000000..a9a4bbcc0
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/femulDisplay.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/femulDisplay.v
new file mode 100644
index 000000000..c7eae993b
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenz.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenz.v
new file mode 100644
index 000000000..e3d48ddae
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenzDisplay.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenzDisplay.v
new file mode 100644
index 000000000..1e1fae348
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/feopp.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feopp.v
new file mode 100644
index 000000000..1d1ede397
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/feoppDisplay.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feoppDisplay.v
new file mode 100644
index 000000000..a24681b48
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesub.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesub.v
new file mode 100644
index 000000000..e4b3d58f2
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesubDisplay.v b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..43e7bb784
--- /dev/null
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e322m2e161m1_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e322m2e161m1/py_interpreter.sh b/src/Specific/montgomery32_2e322m2e161m1_11limbs/py_interpreter.sh
index 4762f6ada..4762f6ada 100755
--- a/src/Specific/montgomery32_2e322m2e161m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e322m2e161m1_11limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e336m17/Synthesis.v b/src/Specific/montgomery32_2e336m17/Synthesis.v
deleted file mode 100644
index b1bf8cddb..000000000
--- a/src/Specific/montgomery32_2e336m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e336m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e336m17/feadd.c b/src/Specific/montgomery32_2e336m17/feadd.c
deleted file mode 100644
index c5dd7f807..000000000
--- a/src/Specific/montgomery32_2e336m17/feadd.c
+++ /dev/null
@@ -1,70 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x5, x25, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x7, x27, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x9, x29, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x11, x31, &x54);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x55, x13, x33, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x15, x35, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x17, x37, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x19, x39, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x21, x41, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x23, x43, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x22, x42, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(0x0, x45, 0xffffffef, &x78);
- { uint32_t x81; uint8_t x82 = _subborrow_u32(x79, x48, 0xffffffff, &x81);
- { uint32_t x84; uint8_t x85 = _subborrow_u32(x82, x51, 0xffffffff, &x84);
- { uint32_t x87; uint8_t x88 = _subborrow_u32(x85, x54, 0xffffffff, &x87);
- { uint32_t x90; uint8_t x91 = _subborrow_u32(x88, x57, 0xffffffff, &x90);
- { uint32_t x93; uint8_t x94 = _subborrow_u32(x91, x60, 0xffffffff, &x93);
- { uint32_t x96; uint8_t x97 = _subborrow_u32(x94, x63, 0xffffffff, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(x97, x66, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x69, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x72, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x75, 0xffff, &x108);
- { uint32_t _; uint8_t x112 = _subborrow_u32(x109, x76, 0x0, &_);
- { uint32_t x113 = cmovznz32(x112, x108, x75);
- { uint32_t x114 = cmovznz32(x112, x105, x72);
- { uint32_t x115 = cmovznz32(x112, x102, x69);
- { uint32_t x116 = cmovznz32(x112, x99, x66);
- { uint32_t x117 = cmovznz32(x112, x96, x63);
- { uint32_t x118 = cmovznz32(x112, x93, x60);
- { uint32_t x119 = cmovznz32(x112, x90, x57);
- { uint32_t x120 = cmovznz32(x112, x87, x54);
- { uint32_t x121 = cmovznz32(x112, x84, x51);
- { uint32_t x122 = cmovznz32(x112, x81, x48);
- { uint32_t x123 = cmovznz32(x112, x78, x45);
- out[0] = x123;
- out[1] = x122;
- out[2] = x121;
- out[3] = x120;
- out[4] = x119;
- out[5] = x118;
- out[6] = x117;
- out[7] = x116;
- out[8] = x115;
- out[9] = x114;
- out[10] = x113;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e336m17/feadd.v b/src/Specific/montgomery32_2e336m17/feadd.v
deleted file mode 100644
index 7fb35907c..000000000
--- a/src/Specific/montgomery32_2e336m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e336m17/feaddDisplay.log b/src/Specific/montgomery32_2e336m17/feaddDisplay.log
deleted file mode 100644
index 09fdf8d10..000000000
--- a/src/Specific/montgomery32_2e336m17/feaddDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x5, x25);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x7, x27);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x9, x29);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x11, x31);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x55, x13, x33);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x15, x35);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x17, x37);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x19, x39);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x21, x41);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x23, x43);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x22, x42);
- uint32_t x78, uint8_t x79 = subborrow_u32(0x0, x45, 0xffffffef);
- uint32_t x81, uint8_t x82 = subborrow_u32(x79, x48, 0xffffffff);
- uint32_t x84, uint8_t x85 = subborrow_u32(x82, x51, 0xffffffff);
- uint32_t x87, uint8_t x88 = subborrow_u32(x85, x54, 0xffffffff);
- uint32_t x90, uint8_t x91 = subborrow_u32(x88, x57, 0xffffffff);
- uint32_t x93, uint8_t x94 = subborrow_u32(x91, x60, 0xffffffff);
- uint32_t x96, uint8_t x97 = subborrow_u32(x94, x63, 0xffffffff);
- uint32_t x99, uint8_t x100 = subborrow_u32(x97, x66, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x69, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x72, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x75, 0xffff);
- uint32_t _, uint8_t x112 = subborrow_u32(x109, x76, 0x0);
- uint32_t x113 = cmovznz32(x112, x108, x75);
- uint32_t x114 = cmovznz32(x112, x105, x72);
- uint32_t x115 = cmovznz32(x112, x102, x69);
- uint32_t x116 = cmovznz32(x112, x99, x66);
- uint32_t x117 = cmovznz32(x112, x96, x63);
- uint32_t x118 = cmovznz32(x112, x93, x60);
- uint32_t x119 = cmovznz32(x112, x90, x57);
- uint32_t x120 = cmovznz32(x112, x87, x54);
- uint32_t x121 = cmovznz32(x112, x84, x51);
- uint32_t x122 = cmovznz32(x112, x81, x48);
- uint32_t x123 = cmovznz32(x112, x78, x45);
- return (x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e336m17/feaddDisplay.v b/src/Specific/montgomery32_2e336m17/feaddDisplay.v
deleted file mode 100644
index 7744b5416..000000000
--- a/src/Specific/montgomery32_2e336m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e336m17/femul.v b/src/Specific/montgomery32_2e336m17/femul.v
deleted file mode 100644
index 3d209b0b8..000000000
--- a/src/Specific/montgomery32_2e336m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e336m17/femulDisplay.v b/src/Specific/montgomery32_2e336m17/femulDisplay.v
deleted file mode 100644
index 5b535e213..000000000
--- a/src/Specific/montgomery32_2e336m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e336m17/fenz.c b/src/Specific/montgomery32_2e336m17/fenz.c
deleted file mode 100644
index d962eda51..000000000
--- a/src/Specific/montgomery32_2e336m17/fenz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x21 = (x20 | x19);
- { uint32_t x22 = (x18 | x21);
- { uint32_t x23 = (x16 | x22);
- { uint32_t x24 = (x14 | x23);
- { uint32_t x25 = (x12 | x24);
- { uint32_t x26 = (x10 | x25);
- { uint32_t x27 = (x8 | x26);
- { uint32_t x28 = (x6 | x27);
- { uint32_t x29 = (x4 | x28);
- { uint32_t x30 = (x2 | x29);
- out[0] = x30;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e336m17/fenz.v b/src/Specific/montgomery32_2e336m17/fenz.v
deleted file mode 100644
index 1b657a65c..000000000
--- a/src/Specific/montgomery32_2e336m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e336m17/fenzDisplay.log b/src/Specific/montgomery32_2e336m17/fenzDisplay.log
deleted file mode 100644
index 4c54f68e5..000000000
--- a/src/Specific/montgomery32_2e336m17/fenzDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x21 = (x20 | x19);
- uint32_t x22 = (x18 | x21);
- uint32_t x23 = (x16 | x22);
- uint32_t x24 = (x14 | x23);
- uint32_t x25 = (x12 | x24);
- uint32_t x26 = (x10 | x25);
- uint32_t x27 = (x8 | x26);
- uint32_t x28 = (x6 | x27);
- uint32_t x29 = (x4 | x28);
- uint32_t x30 = (x2 | x29);
- return x30)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e336m17/fenzDisplay.v b/src/Specific/montgomery32_2e336m17/fenzDisplay.v
deleted file mode 100644
index d877eb5cd..000000000
--- a/src/Specific/montgomery32_2e336m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e336m17/feopp.v b/src/Specific/montgomery32_2e336m17/feopp.v
deleted file mode 100644
index 0ed9ae7cc..000000000
--- a/src/Specific/montgomery32_2e336m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e336m17/feoppDisplay.v b/src/Specific/montgomery32_2e336m17/feoppDisplay.v
deleted file mode 100644
index b3ab401be..000000000
--- a/src/Specific/montgomery32_2e336m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e336m17/fesquare.c b/src/Specific/montgomery32_2e336m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e336m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e336m17/fesub.v b/src/Specific/montgomery32_2e336m17/fesub.v
deleted file mode 100644
index 2b8a65897..000000000
--- a/src/Specific/montgomery32_2e336m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e336m17/fesubDisplay.v b/src/Specific/montgomery32_2e336m17/fesubDisplay.v
deleted file mode 100644
index cc84b5c17..000000000
--- a/src/Specific/montgomery32_2e336m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e336m17/CurveParameters.v b/src/Specific/montgomery32_2e336m17_11limbs/CurveParameters.v
index 231b9ddf7..231b9ddf7 100644
--- a/src/Specific/montgomery32_2e336m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e336m17_11limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/Synthesis.v b/src/Specific/montgomery32_2e336m17_11limbs/Synthesis.v
new file mode 100644
index 000000000..4741fdc9c
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e336m17/compiler.sh b/src/Specific/montgomery32_2e336m17_11limbs/compiler.sh
index cac1f217a..cac1f217a 100755
--- a/src/Specific/montgomery32_2e336m17/compiler.sh
+++ b/src/Specific/montgomery32_2e336m17_11limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e336m17/compilerxx.sh b/src/Specific/montgomery32_2e336m17_11limbs/compilerxx.sh
index 6165dea5a..6165dea5a 100755
--- a/src/Specific/montgomery32_2e336m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e336m17_11limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/feadd.v b/src/Specific/montgomery32_2e336m17_11limbs/feadd.v
new file mode 100644
index 000000000..369db708e
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/feaddDisplay.v b/src/Specific/montgomery32_2e336m17_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..01821896b
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/femul.v b/src/Specific/montgomery32_2e336m17_11limbs/femul.v
new file mode 100644
index 000000000..1e84c1849
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/femulDisplay.v b/src/Specific/montgomery32_2e336m17_11limbs/femulDisplay.v
new file mode 100644
index 000000000..a1ee7be3c
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/fenz.v b/src/Specific/montgomery32_2e336m17_11limbs/fenz.v
new file mode 100644
index 000000000..9390ef439
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/fenzDisplay.v b/src/Specific/montgomery32_2e336m17_11limbs/fenzDisplay.v
new file mode 100644
index 000000000..1336481cb
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/feopp.v b/src/Specific/montgomery32_2e336m17_11limbs/feopp.v
new file mode 100644
index 000000000..ca9d40d78
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/feoppDisplay.v b/src/Specific/montgomery32_2e336m17_11limbs/feoppDisplay.v
new file mode 100644
index 000000000..ff0077782
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/fesub.v b/src/Specific/montgomery32_2e336m17_11limbs/fesub.v
new file mode 100644
index 000000000..7f100b1c3
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e336m17_11limbs/fesubDisplay.v b/src/Specific/montgomery32_2e336m17_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..e0a2ee2da
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m17_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m17_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e336m17/py_interpreter.sh b/src/Specific/montgomery32_2e336m17_11limbs/py_interpreter.sh
index 53b5fec49..53b5fec49 100755
--- a/src/Specific/montgomery32_2e336m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e336m17_11limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e336m3/Synthesis.v b/src/Specific/montgomery32_2e336m3/Synthesis.v
deleted file mode 100644
index b3abf409c..000000000
--- a/src/Specific/montgomery32_2e336m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e336m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e336m3/feadd.c b/src/Specific/montgomery32_2e336m3/feadd.c
deleted file mode 100644
index d78f51b80..000000000
--- a/src/Specific/montgomery32_2e336m3/feadd.c
+++ /dev/null
@@ -1,70 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x5, x25, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x7, x27, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x9, x29, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x11, x31, &x54);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x55, x13, x33, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x15, x35, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x17, x37, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x19, x39, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x21, x41, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x23, x43, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x22, x42, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(0x0, x45, 0xfffffffd, &x78);
- { uint32_t x81; uint8_t x82 = _subborrow_u32(x79, x48, 0xffffffff, &x81);
- { uint32_t x84; uint8_t x85 = _subborrow_u32(x82, x51, 0xffffffff, &x84);
- { uint32_t x87; uint8_t x88 = _subborrow_u32(x85, x54, 0xffffffff, &x87);
- { uint32_t x90; uint8_t x91 = _subborrow_u32(x88, x57, 0xffffffff, &x90);
- { uint32_t x93; uint8_t x94 = _subborrow_u32(x91, x60, 0xffffffff, &x93);
- { uint32_t x96; uint8_t x97 = _subborrow_u32(x94, x63, 0xffffffff, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(x97, x66, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x69, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x72, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x75, 0xffff, &x108);
- { uint32_t _; uint8_t x112 = _subborrow_u32(x109, x76, 0x0, &_);
- { uint32_t x113 = cmovznz32(x112, x108, x75);
- { uint32_t x114 = cmovznz32(x112, x105, x72);
- { uint32_t x115 = cmovznz32(x112, x102, x69);
- { uint32_t x116 = cmovznz32(x112, x99, x66);
- { uint32_t x117 = cmovznz32(x112, x96, x63);
- { uint32_t x118 = cmovznz32(x112, x93, x60);
- { uint32_t x119 = cmovznz32(x112, x90, x57);
- { uint32_t x120 = cmovznz32(x112, x87, x54);
- { uint32_t x121 = cmovznz32(x112, x84, x51);
- { uint32_t x122 = cmovznz32(x112, x81, x48);
- { uint32_t x123 = cmovznz32(x112, x78, x45);
- out[0] = x123;
- out[1] = x122;
- out[2] = x121;
- out[3] = x120;
- out[4] = x119;
- out[5] = x118;
- out[6] = x117;
- out[7] = x116;
- out[8] = x115;
- out[9] = x114;
- out[10] = x113;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e336m3/feadd.v b/src/Specific/montgomery32_2e336m3/feadd.v
deleted file mode 100644
index 6959c27e3..000000000
--- a/src/Specific/montgomery32_2e336m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e336m3/feaddDisplay.log b/src/Specific/montgomery32_2e336m3/feaddDisplay.log
deleted file mode 100644
index fffeb4702..000000000
--- a/src/Specific/montgomery32_2e336m3/feaddDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x5, x25);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x7, x27);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x9, x29);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x11, x31);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x55, x13, x33);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x15, x35);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x17, x37);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x19, x39);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x21, x41);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x23, x43);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x22, x42);
- uint32_t x78, uint8_t x79 = subborrow_u32(0x0, x45, 0xfffffffd);
- uint32_t x81, uint8_t x82 = subborrow_u32(x79, x48, 0xffffffff);
- uint32_t x84, uint8_t x85 = subborrow_u32(x82, x51, 0xffffffff);
- uint32_t x87, uint8_t x88 = subborrow_u32(x85, x54, 0xffffffff);
- uint32_t x90, uint8_t x91 = subborrow_u32(x88, x57, 0xffffffff);
- uint32_t x93, uint8_t x94 = subborrow_u32(x91, x60, 0xffffffff);
- uint32_t x96, uint8_t x97 = subborrow_u32(x94, x63, 0xffffffff);
- uint32_t x99, uint8_t x100 = subborrow_u32(x97, x66, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x69, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x72, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x75, 0xffff);
- uint32_t _, uint8_t x112 = subborrow_u32(x109, x76, 0x0);
- uint32_t x113 = cmovznz32(x112, x108, x75);
- uint32_t x114 = cmovznz32(x112, x105, x72);
- uint32_t x115 = cmovznz32(x112, x102, x69);
- uint32_t x116 = cmovznz32(x112, x99, x66);
- uint32_t x117 = cmovznz32(x112, x96, x63);
- uint32_t x118 = cmovznz32(x112, x93, x60);
- uint32_t x119 = cmovznz32(x112, x90, x57);
- uint32_t x120 = cmovznz32(x112, x87, x54);
- uint32_t x121 = cmovznz32(x112, x84, x51);
- uint32_t x122 = cmovznz32(x112, x81, x48);
- uint32_t x123 = cmovznz32(x112, x78, x45);
- return (x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e336m3/feaddDisplay.v b/src/Specific/montgomery32_2e336m3/feaddDisplay.v
deleted file mode 100644
index 9323ec879..000000000
--- a/src/Specific/montgomery32_2e336m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e336m3/femul.v b/src/Specific/montgomery32_2e336m3/femul.v
deleted file mode 100644
index 6277e6358..000000000
--- a/src/Specific/montgomery32_2e336m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e336m3/femulDisplay.v b/src/Specific/montgomery32_2e336m3/femulDisplay.v
deleted file mode 100644
index ad5e2a8ed..000000000
--- a/src/Specific/montgomery32_2e336m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e336m3/fenz.c b/src/Specific/montgomery32_2e336m3/fenz.c
deleted file mode 100644
index d962eda51..000000000
--- a/src/Specific/montgomery32_2e336m3/fenz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x21 = (x20 | x19);
- { uint32_t x22 = (x18 | x21);
- { uint32_t x23 = (x16 | x22);
- { uint32_t x24 = (x14 | x23);
- { uint32_t x25 = (x12 | x24);
- { uint32_t x26 = (x10 | x25);
- { uint32_t x27 = (x8 | x26);
- { uint32_t x28 = (x6 | x27);
- { uint32_t x29 = (x4 | x28);
- { uint32_t x30 = (x2 | x29);
- out[0] = x30;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e336m3/fenz.v b/src/Specific/montgomery32_2e336m3/fenz.v
deleted file mode 100644
index 49ead5d86..000000000
--- a/src/Specific/montgomery32_2e336m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e336m3/fenzDisplay.log b/src/Specific/montgomery32_2e336m3/fenzDisplay.log
deleted file mode 100644
index 4c54f68e5..000000000
--- a/src/Specific/montgomery32_2e336m3/fenzDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x21 = (x20 | x19);
- uint32_t x22 = (x18 | x21);
- uint32_t x23 = (x16 | x22);
- uint32_t x24 = (x14 | x23);
- uint32_t x25 = (x12 | x24);
- uint32_t x26 = (x10 | x25);
- uint32_t x27 = (x8 | x26);
- uint32_t x28 = (x6 | x27);
- uint32_t x29 = (x4 | x28);
- uint32_t x30 = (x2 | x29);
- return x30)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e336m3/fenzDisplay.v b/src/Specific/montgomery32_2e336m3/fenzDisplay.v
deleted file mode 100644
index 1554ecae2..000000000
--- a/src/Specific/montgomery32_2e336m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e336m3/feopp.v b/src/Specific/montgomery32_2e336m3/feopp.v
deleted file mode 100644
index e26b34e6f..000000000
--- a/src/Specific/montgomery32_2e336m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e336m3/feoppDisplay.v b/src/Specific/montgomery32_2e336m3/feoppDisplay.v
deleted file mode 100644
index a02d6cba5..000000000
--- a/src/Specific/montgomery32_2e336m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e336m3/fesquare.c b/src/Specific/montgomery32_2e336m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e336m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e336m3/fesub.v b/src/Specific/montgomery32_2e336m3/fesub.v
deleted file mode 100644
index 7c050fa5d..000000000
--- a/src/Specific/montgomery32_2e336m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e336m3/fesubDisplay.v b/src/Specific/montgomery32_2e336m3/fesubDisplay.v
deleted file mode 100644
index 93fb59b3b..000000000
--- a/src/Specific/montgomery32_2e336m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e336m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e336m3/CurveParameters.v b/src/Specific/montgomery32_2e336m3_11limbs/CurveParameters.v
index a03d11c28..a03d11c28 100644
--- a/src/Specific/montgomery32_2e336m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e336m3_11limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/Synthesis.v b/src/Specific/montgomery32_2e336m3_11limbs/Synthesis.v
new file mode 100644
index 000000000..21dd2d917
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e336m3/compiler.sh b/src/Specific/montgomery32_2e336m3_11limbs/compiler.sh
index 2c81abd11..2c81abd11 100755
--- a/src/Specific/montgomery32_2e336m3/compiler.sh
+++ b/src/Specific/montgomery32_2e336m3_11limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e336m3/compilerxx.sh b/src/Specific/montgomery32_2e336m3_11limbs/compilerxx.sh
index 9f4c884bd..9f4c884bd 100755
--- a/src/Specific/montgomery32_2e336m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e336m3_11limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/feadd.v b/src/Specific/montgomery32_2e336m3_11limbs/feadd.v
new file mode 100644
index 000000000..3c374f5a4
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/feaddDisplay.v b/src/Specific/montgomery32_2e336m3_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..212abe903
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/femul.v b/src/Specific/montgomery32_2e336m3_11limbs/femul.v
new file mode 100644
index 000000000..a6f82db7a
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/femulDisplay.v b/src/Specific/montgomery32_2e336m3_11limbs/femulDisplay.v
new file mode 100644
index 000000000..535c664ae
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/fenz.v b/src/Specific/montgomery32_2e336m3_11limbs/fenz.v
new file mode 100644
index 000000000..4b2aeb976
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/fenzDisplay.v b/src/Specific/montgomery32_2e336m3_11limbs/fenzDisplay.v
new file mode 100644
index 000000000..b09ceff76
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/feopp.v b/src/Specific/montgomery32_2e336m3_11limbs/feopp.v
new file mode 100644
index 000000000..b26c2ecc0
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/feoppDisplay.v b/src/Specific/montgomery32_2e336m3_11limbs/feoppDisplay.v
new file mode 100644
index 000000000..54c141533
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/fesub.v b/src/Specific/montgomery32_2e336m3_11limbs/fesub.v
new file mode 100644
index 000000000..834a4fcbf
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e336m3_11limbs/fesubDisplay.v b/src/Specific/montgomery32_2e336m3_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..e0d814d02
--- /dev/null
+++ b/src/Specific/montgomery32_2e336m3_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e336m3_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e336m3/py_interpreter.sh b/src/Specific/montgomery32_2e336m3_11limbs/py_interpreter.sh
index 6ab4b54d5..6ab4b54d5 100755
--- a/src/Specific/montgomery32_2e336m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e336m3_11limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e338m15/Synthesis.v b/src/Specific/montgomery32_2e338m15/Synthesis.v
deleted file mode 100644
index e673be2c7..000000000
--- a/src/Specific/montgomery32_2e338m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e338m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e338m15/feadd.c b/src/Specific/montgomery32_2e338m15/feadd.c
deleted file mode 100644
index 7883f5102..000000000
--- a/src/Specific/montgomery32_2e338m15/feadd.c
+++ /dev/null
@@ -1,70 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x5, x25, &x45);
- { uint32_t x48; uint8_t x49 = _addcarryx_u32(x46, x7, x27, &x48);
- { uint32_t x51; uint8_t x52 = _addcarryx_u32(x49, x9, x29, &x51);
- { uint32_t x54; uint8_t x55 = _addcarryx_u32(x52, x11, x31, &x54);
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(x55, x13, x33, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x15, x35, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x17, x37, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x19, x39, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x21, x41, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x23, x43, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x22, x42, &x75);
- { uint32_t x78; uint8_t x79 = _subborrow_u32(0x0, x45, 0xfffffff1, &x78);
- { uint32_t x81; uint8_t x82 = _subborrow_u32(x79, x48, 0xffffffff, &x81);
- { uint32_t x84; uint8_t x85 = _subborrow_u32(x82, x51, 0xffffffff, &x84);
- { uint32_t x87; uint8_t x88 = _subborrow_u32(x85, x54, 0xffffffff, &x87);
- { uint32_t x90; uint8_t x91 = _subborrow_u32(x88, x57, 0xffffffff, &x90);
- { uint32_t x93; uint8_t x94 = _subborrow_u32(x91, x60, 0xffffffff, &x93);
- { uint32_t x96; uint8_t x97 = _subborrow_u32(x94, x63, 0xffffffff, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(x97, x66, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x69, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x72, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x75, 0x3ffff, &x108);
- { uint32_t _; uint8_t x112 = _subborrow_u32(x109, x76, 0x0, &_);
- { uint32_t x113 = cmovznz32(x112, x108, x75);
- { uint32_t x114 = cmovznz32(x112, x105, x72);
- { uint32_t x115 = cmovznz32(x112, x102, x69);
- { uint32_t x116 = cmovznz32(x112, x99, x66);
- { uint32_t x117 = cmovznz32(x112, x96, x63);
- { uint32_t x118 = cmovznz32(x112, x93, x60);
- { uint32_t x119 = cmovznz32(x112, x90, x57);
- { uint32_t x120 = cmovznz32(x112, x87, x54);
- { uint32_t x121 = cmovznz32(x112, x84, x51);
- { uint32_t x122 = cmovznz32(x112, x81, x48);
- { uint32_t x123 = cmovznz32(x112, x78, x45);
- out[0] = x123;
- out[1] = x122;
- out[2] = x121;
- out[3] = x120;
- out[4] = x119;
- out[5] = x118;
- out[6] = x117;
- out[7] = x116;
- out[8] = x115;
- out[9] = x114;
- out[10] = x113;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e338m15/feadd.v b/src/Specific/montgomery32_2e338m15/feadd.v
deleted file mode 100644
index 3ce8fc588..000000000
--- a/src/Specific/montgomery32_2e338m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e338m15/feaddDisplay.log b/src/Specific/montgomery32_2e338m15/feaddDisplay.log
deleted file mode 100644
index 0c5d2c998..000000000
--- a/src/Specific/montgomery32_2e338m15/feaddDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x5, x25);
- uint32_t x48, uint8_t x49 = addcarryx_u32(x46, x7, x27);
- uint32_t x51, uint8_t x52 = addcarryx_u32(x49, x9, x29);
- uint32_t x54, uint8_t x55 = addcarryx_u32(x52, x11, x31);
- uint32_t x57, uint8_t x58 = addcarryx_u32(x55, x13, x33);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x15, x35);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x17, x37);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x19, x39);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x21, x41);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x23, x43);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x22, x42);
- uint32_t x78, uint8_t x79 = subborrow_u32(0x0, x45, 0xfffffff1);
- uint32_t x81, uint8_t x82 = subborrow_u32(x79, x48, 0xffffffff);
- uint32_t x84, uint8_t x85 = subborrow_u32(x82, x51, 0xffffffff);
- uint32_t x87, uint8_t x88 = subborrow_u32(x85, x54, 0xffffffff);
- uint32_t x90, uint8_t x91 = subborrow_u32(x88, x57, 0xffffffff);
- uint32_t x93, uint8_t x94 = subborrow_u32(x91, x60, 0xffffffff);
- uint32_t x96, uint8_t x97 = subborrow_u32(x94, x63, 0xffffffff);
- uint32_t x99, uint8_t x100 = subborrow_u32(x97, x66, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x69, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x72, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x75, 0x3ffff);
- uint32_t _, uint8_t x112 = subborrow_u32(x109, x76, 0x0);
- uint32_t x113 = cmovznz32(x112, x108, x75);
- uint32_t x114 = cmovznz32(x112, x105, x72);
- uint32_t x115 = cmovznz32(x112, x102, x69);
- uint32_t x116 = cmovznz32(x112, x99, x66);
- uint32_t x117 = cmovznz32(x112, x96, x63);
- uint32_t x118 = cmovznz32(x112, x93, x60);
- uint32_t x119 = cmovznz32(x112, x90, x57);
- uint32_t x120 = cmovznz32(x112, x87, x54);
- uint32_t x121 = cmovznz32(x112, x84, x51);
- uint32_t x122 = cmovznz32(x112, x81, x48);
- uint32_t x123 = cmovznz32(x112, x78, x45);
- return (x113, x114, x115, x116, x117, x118, x119, x120, x121, x122, x123))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e338m15/feaddDisplay.v b/src/Specific/montgomery32_2e338m15/feaddDisplay.v
deleted file mode 100644
index 2e1fd0ad3..000000000
--- a/src/Specific/montgomery32_2e338m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e338m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e338m15/femul.v b/src/Specific/montgomery32_2e338m15/femul.v
deleted file mode 100644
index 554a19d03..000000000
--- a/src/Specific/montgomery32_2e338m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e338m15/femulDisplay.v b/src/Specific/montgomery32_2e338m15/femulDisplay.v
deleted file mode 100644
index 75c868014..000000000
--- a/src/Specific/montgomery32_2e338m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e338m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e338m15/fenz.c b/src/Specific/montgomery32_2e338m15/fenz.c
deleted file mode 100644
index d962eda51..000000000
--- a/src/Specific/montgomery32_2e338m15/fenz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x21 = (x20 | x19);
- { uint32_t x22 = (x18 | x21);
- { uint32_t x23 = (x16 | x22);
- { uint32_t x24 = (x14 | x23);
- { uint32_t x25 = (x12 | x24);
- { uint32_t x26 = (x10 | x25);
- { uint32_t x27 = (x8 | x26);
- { uint32_t x28 = (x6 | x27);
- { uint32_t x29 = (x4 | x28);
- { uint32_t x30 = (x2 | x29);
- out[0] = x30;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e338m15/fenz.v b/src/Specific/montgomery32_2e338m15/fenz.v
deleted file mode 100644
index 9e6703cd3..000000000
--- a/src/Specific/montgomery32_2e338m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e338m15/fenzDisplay.log b/src/Specific/montgomery32_2e338m15/fenzDisplay.log
deleted file mode 100644
index 4c54f68e5..000000000
--- a/src/Specific/montgomery32_2e338m15/fenzDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x21 = (x20 | x19);
- uint32_t x22 = (x18 | x21);
- uint32_t x23 = (x16 | x22);
- uint32_t x24 = (x14 | x23);
- uint32_t x25 = (x12 | x24);
- uint32_t x26 = (x10 | x25);
- uint32_t x27 = (x8 | x26);
- uint32_t x28 = (x6 | x27);
- uint32_t x29 = (x4 | x28);
- uint32_t x30 = (x2 | x29);
- return x30)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e338m15/fenzDisplay.v b/src/Specific/montgomery32_2e338m15/fenzDisplay.v
deleted file mode 100644
index 20f32db85..000000000
--- a/src/Specific/montgomery32_2e338m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e338m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e338m15/feopp.v b/src/Specific/montgomery32_2e338m15/feopp.v
deleted file mode 100644
index fdc40fa36..000000000
--- a/src/Specific/montgomery32_2e338m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e338m15/feoppDisplay.v b/src/Specific/montgomery32_2e338m15/feoppDisplay.v
deleted file mode 100644
index 6c28b4f9a..000000000
--- a/src/Specific/montgomery32_2e338m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e338m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e338m15/fesquare.c b/src/Specific/montgomery32_2e338m15/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e338m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e338m15/fesub.v b/src/Specific/montgomery32_2e338m15/fesub.v
deleted file mode 100644
index bcd63f737..000000000
--- a/src/Specific/montgomery32_2e338m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e338m15/fesubDisplay.v b/src/Specific/montgomery32_2e338m15/fesubDisplay.v
deleted file mode 100644
index 37e783527..000000000
--- a/src/Specific/montgomery32_2e338m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e338m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e338m15/CurveParameters.v b/src/Specific/montgomery32_2e338m15_11limbs/CurveParameters.v
index acab46614..acab46614 100644
--- a/src/Specific/montgomery32_2e338m15/CurveParameters.v
+++ b/src/Specific/montgomery32_2e338m15_11limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/Synthesis.v b/src/Specific/montgomery32_2e338m15_11limbs/Synthesis.v
new file mode 100644
index 000000000..c94a68c6a
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e338m15/compiler.sh b/src/Specific/montgomery32_2e338m15_11limbs/compiler.sh
index 0e5325752..0e5325752 100755
--- a/src/Specific/montgomery32_2e338m15/compiler.sh
+++ b/src/Specific/montgomery32_2e338m15_11limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e338m15/compilerxx.sh b/src/Specific/montgomery32_2e338m15_11limbs/compilerxx.sh
index 856fb6c26..856fb6c26 100755
--- a/src/Specific/montgomery32_2e338m15/compilerxx.sh
+++ b/src/Specific/montgomery32_2e338m15_11limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/feadd.v b/src/Specific/montgomery32_2e338m15_11limbs/feadd.v
new file mode 100644
index 000000000..f2e3a7a1e
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/feaddDisplay.v b/src/Specific/montgomery32_2e338m15_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..8525953eb
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/femul.v b/src/Specific/montgomery32_2e338m15_11limbs/femul.v
new file mode 100644
index 000000000..e2631f9f4
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/femulDisplay.v b/src/Specific/montgomery32_2e338m15_11limbs/femulDisplay.v
new file mode 100644
index 000000000..0b1d27781
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/fenz.v b/src/Specific/montgomery32_2e338m15_11limbs/fenz.v
new file mode 100644
index 000000000..b1e974202
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/fenzDisplay.v b/src/Specific/montgomery32_2e338m15_11limbs/fenzDisplay.v
new file mode 100644
index 000000000..b4fbe0c5f
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/feopp.v b/src/Specific/montgomery32_2e338m15_11limbs/feopp.v
new file mode 100644
index 000000000..12a89a350
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/feoppDisplay.v b/src/Specific/montgomery32_2e338m15_11limbs/feoppDisplay.v
new file mode 100644
index 000000000..b483ec2b6
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/fesub.v b/src/Specific/montgomery32_2e338m15_11limbs/fesub.v
new file mode 100644
index 000000000..0a71a37fa
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e338m15_11limbs/fesubDisplay.v b/src/Specific/montgomery32_2e338m15_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..4b5cb5552
--- /dev/null
+++ b/src/Specific/montgomery32_2e338m15_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e338m15_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e338m15/py_interpreter.sh b/src/Specific/montgomery32_2e338m15_11limbs/py_interpreter.sh
index 892e73f13..892e73f13 100755
--- a/src/Specific/montgomery32_2e338m15/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e338m15_11limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e369m25/Synthesis.v b/src/Specific/montgomery32_2e369m25/Synthesis.v
deleted file mode 100644
index 7a679c31c..000000000
--- a/src/Specific/montgomery32_2e369m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e369m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e369m25/feadd.c b/src/Specific/montgomery32_2e369m25/feadd.c
deleted file mode 100644
index 36dd32b7d..000000000
--- a/src/Specific/montgomery32_2e369m25/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffe7, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x1ffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e369m25/feadd.v b/src/Specific/montgomery32_2e369m25/feadd.v
deleted file mode 100644
index db2e0c7fa..000000000
--- a/src/Specific/montgomery32_2e369m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e369m25/feaddDisplay.log b/src/Specific/montgomery32_2e369m25/feaddDisplay.log
deleted file mode 100644
index 16fda009a..000000000
--- a/src/Specific/montgomery32_2e369m25/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffe7);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x1ffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e369m25/feaddDisplay.v b/src/Specific/montgomery32_2e369m25/feaddDisplay.v
deleted file mode 100644
index 1d16ed2d0..000000000
--- a/src/Specific/montgomery32_2e369m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e369m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e369m25/femul.v b/src/Specific/montgomery32_2e369m25/femul.v
deleted file mode 100644
index 98a160ac6..000000000
--- a/src/Specific/montgomery32_2e369m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e369m25/femulDisplay.v b/src/Specific/montgomery32_2e369m25/femulDisplay.v
deleted file mode 100644
index 9967b3866..000000000
--- a/src/Specific/montgomery32_2e369m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e369m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e369m25/fenz.c b/src/Specific/montgomery32_2e369m25/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e369m25/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e369m25/fenz.v b/src/Specific/montgomery32_2e369m25/fenz.v
deleted file mode 100644
index 43dadd465..000000000
--- a/src/Specific/montgomery32_2e369m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e369m25/fenzDisplay.log b/src/Specific/montgomery32_2e369m25/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e369m25/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e369m25/fenzDisplay.v b/src/Specific/montgomery32_2e369m25/fenzDisplay.v
deleted file mode 100644
index 97d4fe6a2..000000000
--- a/src/Specific/montgomery32_2e369m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e369m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e369m25/feopp.v b/src/Specific/montgomery32_2e369m25/feopp.v
deleted file mode 100644
index 8eca48455..000000000
--- a/src/Specific/montgomery32_2e369m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e369m25/feoppDisplay.v b/src/Specific/montgomery32_2e369m25/feoppDisplay.v
deleted file mode 100644
index c956b81ec..000000000
--- a/src/Specific/montgomery32_2e369m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e369m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e369m25/fesquare.c b/src/Specific/montgomery32_2e369m25/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e369m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e369m25/fesub.v b/src/Specific/montgomery32_2e369m25/fesub.v
deleted file mode 100644
index bcd0fcbf1..000000000
--- a/src/Specific/montgomery32_2e369m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e369m25/fesubDisplay.v b/src/Specific/montgomery32_2e369m25/fesubDisplay.v
deleted file mode 100644
index 73d3a8209..000000000
--- a/src/Specific/montgomery32_2e369m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e369m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e369m25/CurveParameters.v b/src/Specific/montgomery32_2e369m25_12limbs/CurveParameters.v
index 0ebd0e29c..0ebd0e29c 100644
--- a/src/Specific/montgomery32_2e369m25/CurveParameters.v
+++ b/src/Specific/montgomery32_2e369m25_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/Synthesis.v b/src/Specific/montgomery32_2e369m25_12limbs/Synthesis.v
new file mode 100644
index 000000000..30638ff55
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e369m25/compiler.sh b/src/Specific/montgomery32_2e369m25_12limbs/compiler.sh
index 79ca3c588..79ca3c588 100755
--- a/src/Specific/montgomery32_2e369m25/compiler.sh
+++ b/src/Specific/montgomery32_2e369m25_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e369m25/compilerxx.sh b/src/Specific/montgomery32_2e369m25_12limbs/compilerxx.sh
index 896468015..896468015 100755
--- a/src/Specific/montgomery32_2e369m25/compilerxx.sh
+++ b/src/Specific/montgomery32_2e369m25_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/feadd.v b/src/Specific/montgomery32_2e369m25_12limbs/feadd.v
new file mode 100644
index 000000000..1542a1e7c
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e369m25_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..4edb5aa93
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/femul.v b/src/Specific/montgomery32_2e369m25_12limbs/femul.v
new file mode 100644
index 000000000..0c931961c
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e369m25_12limbs/femulDisplay.v
new file mode 100644
index 000000000..1207a3651
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/fenz.v b/src/Specific/montgomery32_2e369m25_12limbs/fenz.v
new file mode 100644
index 000000000..a5fb2770d
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e369m25_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..88ef4fabf
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/feopp.v b/src/Specific/montgomery32_2e369m25_12limbs/feopp.v
new file mode 100644
index 000000000..6d74fccb0
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e369m25_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..2b4c73ab5
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/fesub.v b/src/Specific/montgomery32_2e369m25_12limbs/fesub.v
new file mode 100644
index 000000000..371ba4eb4
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e369m25_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e369m25_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..072bc7fcb
--- /dev/null
+++ b/src/Specific/montgomery32_2e369m25_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e369m25_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e369m25/py_interpreter.sh b/src/Specific/montgomery32_2e369m25_12limbs/py_interpreter.sh
index 3096f3a18..3096f3a18 100755
--- a/src/Specific/montgomery32_2e369m25/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e369m25_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e379m19/Synthesis.v b/src/Specific/montgomery32_2e379m19/Synthesis.v
deleted file mode 100644
index ff4c0ab0d..000000000
--- a/src/Specific/montgomery32_2e379m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e379m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e379m19/feadd.c b/src/Specific/montgomery32_2e379m19/feadd.c
deleted file mode 100644
index 2add72b03..000000000
--- a/src/Specific/montgomery32_2e379m19/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffed, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x7ffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e379m19/feadd.v b/src/Specific/montgomery32_2e379m19/feadd.v
deleted file mode 100644
index fce07e881..000000000
--- a/src/Specific/montgomery32_2e379m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e379m19/feaddDisplay.log b/src/Specific/montgomery32_2e379m19/feaddDisplay.log
deleted file mode 100644
index 48ec006e0..000000000
--- a/src/Specific/montgomery32_2e379m19/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffed);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x7ffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e379m19/feaddDisplay.v b/src/Specific/montgomery32_2e379m19/feaddDisplay.v
deleted file mode 100644
index f155bbd3b..000000000
--- a/src/Specific/montgomery32_2e379m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e379m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e379m19/femul.v b/src/Specific/montgomery32_2e379m19/femul.v
deleted file mode 100644
index 5250070b4..000000000
--- a/src/Specific/montgomery32_2e379m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e379m19/femulDisplay.v b/src/Specific/montgomery32_2e379m19/femulDisplay.v
deleted file mode 100644
index 7dd66d529..000000000
--- a/src/Specific/montgomery32_2e379m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e379m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e379m19/fenz.c b/src/Specific/montgomery32_2e379m19/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e379m19/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e379m19/fenz.v b/src/Specific/montgomery32_2e379m19/fenz.v
deleted file mode 100644
index b1c7de788..000000000
--- a/src/Specific/montgomery32_2e379m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e379m19/fenzDisplay.log b/src/Specific/montgomery32_2e379m19/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e379m19/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e379m19/fenzDisplay.v b/src/Specific/montgomery32_2e379m19/fenzDisplay.v
deleted file mode 100644
index 9f617fb9a..000000000
--- a/src/Specific/montgomery32_2e379m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e379m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e379m19/feopp.v b/src/Specific/montgomery32_2e379m19/feopp.v
deleted file mode 100644
index 7eaaf6e31..000000000
--- a/src/Specific/montgomery32_2e379m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e379m19/feoppDisplay.v b/src/Specific/montgomery32_2e379m19/feoppDisplay.v
deleted file mode 100644
index dc2becb42..000000000
--- a/src/Specific/montgomery32_2e379m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e379m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e379m19/fesquare.c b/src/Specific/montgomery32_2e379m19/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e379m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e379m19/fesub.v b/src/Specific/montgomery32_2e379m19/fesub.v
deleted file mode 100644
index a303354e4..000000000
--- a/src/Specific/montgomery32_2e379m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e379m19/fesubDisplay.v b/src/Specific/montgomery32_2e379m19/fesubDisplay.v
deleted file mode 100644
index 895c4ab34..000000000
--- a/src/Specific/montgomery32_2e379m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e379m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e379m19/CurveParameters.v b/src/Specific/montgomery32_2e379m19_12limbs/CurveParameters.v
index ffaec84e8..ffaec84e8 100644
--- a/src/Specific/montgomery32_2e379m19/CurveParameters.v
+++ b/src/Specific/montgomery32_2e379m19_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/Synthesis.v b/src/Specific/montgomery32_2e379m19_12limbs/Synthesis.v
new file mode 100644
index 000000000..eafb9f05a
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e379m19/compiler.sh b/src/Specific/montgomery32_2e379m19_12limbs/compiler.sh
index d0976cbba..d0976cbba 100755
--- a/src/Specific/montgomery32_2e379m19/compiler.sh
+++ b/src/Specific/montgomery32_2e379m19_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e379m19/compilerxx.sh b/src/Specific/montgomery32_2e379m19_12limbs/compilerxx.sh
index aa153faaa..aa153faaa 100755
--- a/src/Specific/montgomery32_2e379m19/compilerxx.sh
+++ b/src/Specific/montgomery32_2e379m19_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/feadd.v b/src/Specific/montgomery32_2e379m19_12limbs/feadd.v
new file mode 100644
index 000000000..f4a3f4d54
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e379m19_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..6aebaac3e
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/femul.v b/src/Specific/montgomery32_2e379m19_12limbs/femul.v
new file mode 100644
index 000000000..4917b67b6
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e379m19_12limbs/femulDisplay.v
new file mode 100644
index 000000000..1383fdb70
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/fenz.v b/src/Specific/montgomery32_2e379m19_12limbs/fenz.v
new file mode 100644
index 000000000..3752cdc76
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e379m19_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..90f2f4505
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/feopp.v b/src/Specific/montgomery32_2e379m19_12limbs/feopp.v
new file mode 100644
index 000000000..61f31b516
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e379m19_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..e12b173db
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/fesub.v b/src/Specific/montgomery32_2e379m19_12limbs/fesub.v
new file mode 100644
index 000000000..ab1c67f45
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e379m19_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e379m19_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..9257c5d13
--- /dev/null
+++ b/src/Specific/montgomery32_2e379m19_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e379m19_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e379m19/py_interpreter.sh b/src/Specific/montgomery32_2e379m19_12limbs/py_interpreter.sh
index c7fa9ec6d..c7fa9ec6d 100755
--- a/src/Specific/montgomery32_2e379m19/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e379m19_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e382m105/Synthesis.v b/src/Specific/montgomery32_2e382m105/Synthesis.v
deleted file mode 100644
index 02d359b31..000000000
--- a/src/Specific/montgomery32_2e382m105/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e382m105.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e382m105/feadd.c b/src/Specific/montgomery32_2e382m105/feadd.c
deleted file mode 100644
index 91d56558c..000000000
--- a/src/Specific/montgomery32_2e382m105/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffff97, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x3fffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e382m105/feadd.v b/src/Specific/montgomery32_2e382m105/feadd.v
deleted file mode 100644
index 7a1150097..000000000
--- a/src/Specific/montgomery32_2e382m105/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e382m105/feaddDisplay.log b/src/Specific/montgomery32_2e382m105/feaddDisplay.log
deleted file mode 100644
index 1d5b08b0e..000000000
--- a/src/Specific/montgomery32_2e382m105/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffff97);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x3fffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e382m105/feaddDisplay.v b/src/Specific/montgomery32_2e382m105/feaddDisplay.v
deleted file mode 100644
index a9ed636f9..000000000
--- a/src/Specific/montgomery32_2e382m105/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e382m105.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e382m105/femul.v b/src/Specific/montgomery32_2e382m105/femul.v
deleted file mode 100644
index 9cf1abf5c..000000000
--- a/src/Specific/montgomery32_2e382m105/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e382m105/femulDisplay.v b/src/Specific/montgomery32_2e382m105/femulDisplay.v
deleted file mode 100644
index 05b454c13..000000000
--- a/src/Specific/montgomery32_2e382m105/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e382m105.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e382m105/fenz.c b/src/Specific/montgomery32_2e382m105/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e382m105/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e382m105/fenz.v b/src/Specific/montgomery32_2e382m105/fenz.v
deleted file mode 100644
index 361b3677c..000000000
--- a/src/Specific/montgomery32_2e382m105/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e382m105/fenzDisplay.log b/src/Specific/montgomery32_2e382m105/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e382m105/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e382m105/fenzDisplay.v b/src/Specific/montgomery32_2e382m105/fenzDisplay.v
deleted file mode 100644
index 75c2dc7fc..000000000
--- a/src/Specific/montgomery32_2e382m105/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e382m105.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e382m105/feopp.v b/src/Specific/montgomery32_2e382m105/feopp.v
deleted file mode 100644
index 918e19792..000000000
--- a/src/Specific/montgomery32_2e382m105/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e382m105/feoppDisplay.v b/src/Specific/montgomery32_2e382m105/feoppDisplay.v
deleted file mode 100644
index e507430bf..000000000
--- a/src/Specific/montgomery32_2e382m105/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e382m105.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e382m105/fesquare.c b/src/Specific/montgomery32_2e382m105/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e382m105/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e382m105/fesub.v b/src/Specific/montgomery32_2e382m105/fesub.v
deleted file mode 100644
index 44cc23e2b..000000000
--- a/src/Specific/montgomery32_2e382m105/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e382m105/fesubDisplay.v b/src/Specific/montgomery32_2e382m105/fesubDisplay.v
deleted file mode 100644
index 9d7a3131a..000000000
--- a/src/Specific/montgomery32_2e382m105/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e382m105.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e382m105/CurveParameters.v b/src/Specific/montgomery32_2e382m105_12limbs/CurveParameters.v
index fde7808fe..fde7808fe 100644
--- a/src/Specific/montgomery32_2e382m105/CurveParameters.v
+++ b/src/Specific/montgomery32_2e382m105_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/Synthesis.v b/src/Specific/montgomery32_2e382m105_12limbs/Synthesis.v
new file mode 100644
index 000000000..db595ddc7
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e382m105/compiler.sh b/src/Specific/montgomery32_2e382m105_12limbs/compiler.sh
index 62c395585..62c395585 100755
--- a/src/Specific/montgomery32_2e382m105/compiler.sh
+++ b/src/Specific/montgomery32_2e382m105_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e382m105/compilerxx.sh b/src/Specific/montgomery32_2e382m105_12limbs/compilerxx.sh
index d1649aac2..d1649aac2 100755
--- a/src/Specific/montgomery32_2e382m105/compilerxx.sh
+++ b/src/Specific/montgomery32_2e382m105_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/feadd.v b/src/Specific/montgomery32_2e382m105_12limbs/feadd.v
new file mode 100644
index 000000000..6679873a8
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e382m105_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..fe5174d65
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/femul.v b/src/Specific/montgomery32_2e382m105_12limbs/femul.v
new file mode 100644
index 000000000..a1b034703
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e382m105_12limbs/femulDisplay.v
new file mode 100644
index 000000000..064e3f2b9
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/fenz.v b/src/Specific/montgomery32_2e382m105_12limbs/fenz.v
new file mode 100644
index 000000000..6c0bdfb51
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e382m105_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..cd6302cd4
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/feopp.v b/src/Specific/montgomery32_2e382m105_12limbs/feopp.v
new file mode 100644
index 000000000..5b4628a81
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e382m105_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..31ead9e59
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/fesub.v b/src/Specific/montgomery32_2e382m105_12limbs/fesub.v
new file mode 100644
index 000000000..f145f1342
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e382m105_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e382m105_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..5e304427a
--- /dev/null
+++ b/src/Specific/montgomery32_2e382m105_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e382m105_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e382m105/py_interpreter.sh b/src/Specific/montgomery32_2e382m105_12limbs/py_interpreter.sh
index ddbb835fd..ddbb835fd 100755
--- a/src/Specific/montgomery32_2e382m105/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e382m105_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e383m187/Synthesis.v b/src/Specific/montgomery32_2e383m187/Synthesis.v
deleted file mode 100644
index 1344e458f..000000000
--- a/src/Specific/montgomery32_2e383m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e383m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m187/feadd.c b/src/Specific/montgomery32_2e383m187/feadd.c
deleted file mode 100644
index 8bd80a3bf..000000000
--- a/src/Specific/montgomery32_2e383m187/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffff45, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x7fffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m187/feadd.v b/src/Specific/montgomery32_2e383m187/feadd.v
deleted file mode 100644
index 1ac70c727..000000000
--- a/src/Specific/montgomery32_2e383m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m187/feaddDisplay.log b/src/Specific/montgomery32_2e383m187/feaddDisplay.log
deleted file mode 100644
index b2077f6d1..000000000
--- a/src/Specific/montgomery32_2e383m187/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffff45);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x7fffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e383m187/feaddDisplay.v b/src/Specific/montgomery32_2e383m187/feaddDisplay.v
deleted file mode 100644
index 350dd3300..000000000
--- a/src/Specific/montgomery32_2e383m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e383m187/femul.v b/src/Specific/montgomery32_2e383m187/femul.v
deleted file mode 100644
index 986edf365..000000000
--- a/src/Specific/montgomery32_2e383m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m187/femulDisplay.v b/src/Specific/montgomery32_2e383m187/femulDisplay.v
deleted file mode 100644
index 98744b4d6..000000000
--- a/src/Specific/montgomery32_2e383m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e383m187/fenz.c b/src/Specific/montgomery32_2e383m187/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e383m187/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m187/fenz.v b/src/Specific/montgomery32_2e383m187/fenz.v
deleted file mode 100644
index a54bc7b5d..000000000
--- a/src/Specific/montgomery32_2e383m187/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m187/fenzDisplay.log b/src/Specific/montgomery32_2e383m187/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e383m187/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e383m187/fenzDisplay.v b/src/Specific/montgomery32_2e383m187/fenzDisplay.v
deleted file mode 100644
index 7c5fb6dcb..000000000
--- a/src/Specific/montgomery32_2e383m187/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m187.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m187/feopp.v b/src/Specific/montgomery32_2e383m187/feopp.v
deleted file mode 100644
index 461225d44..000000000
--- a/src/Specific/montgomery32_2e383m187/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m187/feoppDisplay.v b/src/Specific/montgomery32_2e383m187/feoppDisplay.v
deleted file mode 100644
index 981f5c0e2..000000000
--- a/src/Specific/montgomery32_2e383m187/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m187.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e383m187/fesquare.c b/src/Specific/montgomery32_2e383m187/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e383m187/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e383m187/fesub.v b/src/Specific/montgomery32_2e383m187/fesub.v
deleted file mode 100644
index 619b76884..000000000
--- a/src/Specific/montgomery32_2e383m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m187/fesubDisplay.v b/src/Specific/montgomery32_2e383m187/fesubDisplay.v
deleted file mode 100644
index 9ab191020..000000000
--- a/src/Specific/montgomery32_2e383m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e383m187/CurveParameters.v b/src/Specific/montgomery32_2e383m187_12limbs/CurveParameters.v
index df9b2f250..df9b2f250 100644
--- a/src/Specific/montgomery32_2e383m187/CurveParameters.v
+++ b/src/Specific/montgomery32_2e383m187_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/Synthesis.v b/src/Specific/montgomery32_2e383m187_12limbs/Synthesis.v
new file mode 100644
index 000000000..9495174e5
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m187/compiler.sh b/src/Specific/montgomery32_2e383m187_12limbs/compiler.sh
index d06400c33..d06400c33 100755
--- a/src/Specific/montgomery32_2e383m187/compiler.sh
+++ b/src/Specific/montgomery32_2e383m187_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e383m187/compilerxx.sh b/src/Specific/montgomery32_2e383m187_12limbs/compilerxx.sh
index 1a5a3b8ab..1a5a3b8ab 100755
--- a/src/Specific/montgomery32_2e383m187/compilerxx.sh
+++ b/src/Specific/montgomery32_2e383m187_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/feadd.v b/src/Specific/montgomery32_2e383m187_12limbs/feadd.v
new file mode 100644
index 000000000..fb655bd91
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e383m187_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..4449f5c76
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/femul.v b/src/Specific/montgomery32_2e383m187_12limbs/femul.v
new file mode 100644
index 000000000..6e60ee01c
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e383m187_12limbs/femulDisplay.v
new file mode 100644
index 000000000..7be3ad994
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/fenz.v b/src/Specific/montgomery32_2e383m187_12limbs/fenz.v
new file mode 100644
index 000000000..8a0a63dd4
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e383m187_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..de94c6079
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/feopp.v b/src/Specific/montgomery32_2e383m187_12limbs/feopp.v
new file mode 100644
index 000000000..3be118ee0
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e383m187_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..e27081165
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/fesub.v b/src/Specific/montgomery32_2e383m187_12limbs/fesub.v
new file mode 100644
index 000000000..f2a7eebe3
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m187_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e383m187_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..c8b469047
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m187_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m187_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e383m187/py_interpreter.sh b/src/Specific/montgomery32_2e383m187_12limbs/py_interpreter.sh
index 17568bd0f..17568bd0f 100755
--- a/src/Specific/montgomery32_2e383m187/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e383m187_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e383m31/Synthesis.v b/src/Specific/montgomery32_2e383m31/Synthesis.v
deleted file mode 100644
index fbc56b476..000000000
--- a/src/Specific/montgomery32_2e383m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e383m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m31/feadd.c b/src/Specific/montgomery32_2e383m31/feadd.c
deleted file mode 100644
index 9a542cca1..000000000
--- a/src/Specific/montgomery32_2e383m31/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffe1, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x7fffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m31/feadd.v b/src/Specific/montgomery32_2e383m31/feadd.v
deleted file mode 100644
index d88df79e8..000000000
--- a/src/Specific/montgomery32_2e383m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m31/feaddDisplay.log b/src/Specific/montgomery32_2e383m31/feaddDisplay.log
deleted file mode 100644
index d8d6ae3d8..000000000
--- a/src/Specific/montgomery32_2e383m31/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffe1);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x7fffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e383m31/feaddDisplay.v b/src/Specific/montgomery32_2e383m31/feaddDisplay.v
deleted file mode 100644
index a69d724db..000000000
--- a/src/Specific/montgomery32_2e383m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e383m31/femul.v b/src/Specific/montgomery32_2e383m31/femul.v
deleted file mode 100644
index 0004daf95..000000000
--- a/src/Specific/montgomery32_2e383m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m31/femulDisplay.v b/src/Specific/montgomery32_2e383m31/femulDisplay.v
deleted file mode 100644
index 9a2c4f826..000000000
--- a/src/Specific/montgomery32_2e383m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e383m31/fenz.c b/src/Specific/montgomery32_2e383m31/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e383m31/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m31/fenz.v b/src/Specific/montgomery32_2e383m31/fenz.v
deleted file mode 100644
index e9ee3c35d..000000000
--- a/src/Specific/montgomery32_2e383m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m31/fenzDisplay.log b/src/Specific/montgomery32_2e383m31/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e383m31/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e383m31/fenzDisplay.v b/src/Specific/montgomery32_2e383m31/fenzDisplay.v
deleted file mode 100644
index 9823ad3b3..000000000
--- a/src/Specific/montgomery32_2e383m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m31/feopp.v b/src/Specific/montgomery32_2e383m31/feopp.v
deleted file mode 100644
index 5aca6fbf8..000000000
--- a/src/Specific/montgomery32_2e383m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m31/feoppDisplay.v b/src/Specific/montgomery32_2e383m31/feoppDisplay.v
deleted file mode 100644
index 3137e3384..000000000
--- a/src/Specific/montgomery32_2e383m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e383m31/fesquare.c b/src/Specific/montgomery32_2e383m31/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e383m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e383m31/fesub.v b/src/Specific/montgomery32_2e383m31/fesub.v
deleted file mode 100644
index df021ab85..000000000
--- a/src/Specific/montgomery32_2e383m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m31/fesubDisplay.v b/src/Specific/montgomery32_2e383m31/fesubDisplay.v
deleted file mode 100644
index 5ddd0118d..000000000
--- a/src/Specific/montgomery32_2e383m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e383m31/CurveParameters.v b/src/Specific/montgomery32_2e383m31_12limbs/CurveParameters.v
index 12f10af41..12f10af41 100644
--- a/src/Specific/montgomery32_2e383m31/CurveParameters.v
+++ b/src/Specific/montgomery32_2e383m31_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/Synthesis.v b/src/Specific/montgomery32_2e383m31_12limbs/Synthesis.v
new file mode 100644
index 000000000..1d066fcdc
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m31/compiler.sh b/src/Specific/montgomery32_2e383m31_12limbs/compiler.sh
index baf3ff988..baf3ff988 100755
--- a/src/Specific/montgomery32_2e383m31/compiler.sh
+++ b/src/Specific/montgomery32_2e383m31_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e383m31/compilerxx.sh b/src/Specific/montgomery32_2e383m31_12limbs/compilerxx.sh
index 9c9fa07c5..9c9fa07c5 100755
--- a/src/Specific/montgomery32_2e383m31/compilerxx.sh
+++ b/src/Specific/montgomery32_2e383m31_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/feadd.v b/src/Specific/montgomery32_2e383m31_12limbs/feadd.v
new file mode 100644
index 000000000..4a27dd7e3
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e383m31_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..1b2842c25
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/femul.v b/src/Specific/montgomery32_2e383m31_12limbs/femul.v
new file mode 100644
index 000000000..976acc54e
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e383m31_12limbs/femulDisplay.v
new file mode 100644
index 000000000..494b604b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/fenz.v b/src/Specific/montgomery32_2e383m31_12limbs/fenz.v
new file mode 100644
index 000000000..b54203d72
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e383m31_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..df02764cd
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/feopp.v b/src/Specific/montgomery32_2e383m31_12limbs/feopp.v
new file mode 100644
index 000000000..ef7bb51e5
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e383m31_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..d0a4ae70b
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/fesub.v b/src/Specific/montgomery32_2e383m31_12limbs/fesub.v
new file mode 100644
index 000000000..fd4669bb4
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m31_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e383m31_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..84ced36a4
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m31_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m31_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e383m31/py_interpreter.sh b/src/Specific/montgomery32_2e383m31_12limbs/py_interpreter.sh
index 09472c92c..09472c92c 100755
--- a/src/Specific/montgomery32_2e383m31/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e383m31_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e383m421/Synthesis.v b/src/Specific/montgomery32_2e383m421/Synthesis.v
deleted file mode 100644
index 4e9bddf95..000000000
--- a/src/Specific/montgomery32_2e383m421/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e383m421.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m421/feadd.c b/src/Specific/montgomery32_2e383m421/feadd.c
deleted file mode 100644
index 20a590121..000000000
--- a/src/Specific/montgomery32_2e383m421/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xfffffe5b, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0x7fffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m421/feadd.v b/src/Specific/montgomery32_2e383m421/feadd.v
deleted file mode 100644
index 7b1ca69f8..000000000
--- a/src/Specific/montgomery32_2e383m421/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m421/feaddDisplay.log b/src/Specific/montgomery32_2e383m421/feaddDisplay.log
deleted file mode 100644
index 21c18fb82..000000000
--- a/src/Specific/montgomery32_2e383m421/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xfffffe5b);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0x7fffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e383m421/feaddDisplay.v b/src/Specific/montgomery32_2e383m421/feaddDisplay.v
deleted file mode 100644
index 0bea7ed00..000000000
--- a/src/Specific/montgomery32_2e383m421/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m421.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e383m421/femul.v b/src/Specific/montgomery32_2e383m421/femul.v
deleted file mode 100644
index 9c76e7eb1..000000000
--- a/src/Specific/montgomery32_2e383m421/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m421/femulDisplay.v b/src/Specific/montgomery32_2e383m421/femulDisplay.v
deleted file mode 100644
index c57f4a0de..000000000
--- a/src/Specific/montgomery32_2e383m421/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m421.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e383m421/fenz.c b/src/Specific/montgomery32_2e383m421/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e383m421/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e383m421/fenz.v b/src/Specific/montgomery32_2e383m421/fenz.v
deleted file mode 100644
index 412998565..000000000
--- a/src/Specific/montgomery32_2e383m421/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m421/fenzDisplay.log b/src/Specific/montgomery32_2e383m421/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e383m421/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e383m421/fenzDisplay.v b/src/Specific/montgomery32_2e383m421/fenzDisplay.v
deleted file mode 100644
index aba620917..000000000
--- a/src/Specific/montgomery32_2e383m421/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m421.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m421/feopp.v b/src/Specific/montgomery32_2e383m421/feopp.v
deleted file mode 100644
index bd6feaa3d..000000000
--- a/src/Specific/montgomery32_2e383m421/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m421/feoppDisplay.v b/src/Specific/montgomery32_2e383m421/feoppDisplay.v
deleted file mode 100644
index 828128718..000000000
--- a/src/Specific/montgomery32_2e383m421/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m421.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e383m421/fesquare.c b/src/Specific/montgomery32_2e383m421/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e383m421/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e383m421/fesub.v b/src/Specific/montgomery32_2e383m421/fesub.v
deleted file mode 100644
index 919a1365b..000000000
--- a/src/Specific/montgomery32_2e383m421/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m421/fesubDisplay.v b/src/Specific/montgomery32_2e383m421/fesubDisplay.v
deleted file mode 100644
index 01b541900..000000000
--- a/src/Specific/montgomery32_2e383m421/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e383m421.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e383m421/CurveParameters.v b/src/Specific/montgomery32_2e383m421_12limbs/CurveParameters.v
index 678e5243e..678e5243e 100644
--- a/src/Specific/montgomery32_2e383m421/CurveParameters.v
+++ b/src/Specific/montgomery32_2e383m421_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/Synthesis.v b/src/Specific/montgomery32_2e383m421_12limbs/Synthesis.v
new file mode 100644
index 000000000..abd38cea2
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e383m421/compiler.sh b/src/Specific/montgomery32_2e383m421_12limbs/compiler.sh
index 4eff40073..4eff40073 100755
--- a/src/Specific/montgomery32_2e383m421/compiler.sh
+++ b/src/Specific/montgomery32_2e383m421_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e383m421/compilerxx.sh b/src/Specific/montgomery32_2e383m421_12limbs/compilerxx.sh
index 06b93dbd6..06b93dbd6 100755
--- a/src/Specific/montgomery32_2e383m421/compilerxx.sh
+++ b/src/Specific/montgomery32_2e383m421_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/feadd.v b/src/Specific/montgomery32_2e383m421_12limbs/feadd.v
new file mode 100644
index 000000000..49b4229fe
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e383m421_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..4809b20d4
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/femul.v b/src/Specific/montgomery32_2e383m421_12limbs/femul.v
new file mode 100644
index 000000000..53925029e
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e383m421_12limbs/femulDisplay.v
new file mode 100644
index 000000000..03a5dc750
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/fenz.v b/src/Specific/montgomery32_2e383m421_12limbs/fenz.v
new file mode 100644
index 000000000..d6efed41c
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e383m421_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..bfafc4735
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/feopp.v b/src/Specific/montgomery32_2e383m421_12limbs/feopp.v
new file mode 100644
index 000000000..c4556ef13
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e383m421_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..4c7f0dd17
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/fesub.v b/src/Specific/montgomery32_2e383m421_12limbs/fesub.v
new file mode 100644
index 000000000..94887fc76
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e383m421_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e383m421_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..9749ba751
--- /dev/null
+++ b/src/Specific/montgomery32_2e383m421_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e383m421_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e383m421/py_interpreter.sh b/src/Specific/montgomery32_2e383m421_12limbs/py_interpreter.sh
index 6860efa7b..6860efa7b 100755
--- a/src/Specific/montgomery32_2e383m421/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e383m421_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v
deleted file mode 100644
index ec5e6e490..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.c b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.c
deleted file mode 100644
index 54f5cc05d..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffff, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0x0, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0x0, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xfffffffe, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0xffffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v
deleted file mode 100644
index 4256764fe..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.log b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.log
deleted file mode 100644
index 3cef03129..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffff);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0x0);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0x0);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xfffffffe);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0xffffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v
deleted file mode 100644
index 169685831..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v
deleted file mode 100644
index f2b43cf99..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v
deleted file mode 100644
index 573141754..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.c b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v
deleted file mode 100644
index d2d187a9b..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.log b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v
deleted file mode 100644
index 207e7ff04..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v
deleted file mode 100644
index 243efefec..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v
deleted file mode 100644
index 9878f453e..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesquare.c b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v
deleted file mode 100644
index e4c92a279..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v
deleted file mode 100644
index 40fb09f3a..000000000
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/CurveParameters.v
index e1d8d7f74..e1d8d7f74 100644
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/Synthesis.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/Synthesis.v
new file mode 100644
index 000000000..775c7acc4
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compiler.sh
index ba269ccff..ba269ccff 100755
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compiler.sh
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compilerxx.sh b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compilerxx.sh
index ddd74ff42..ddd74ff42 100755
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feadd.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feadd.v
new file mode 100644
index 000000000..4e2a14fd2
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..39f370377
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femul.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femul.v
new file mode 100644
index 000000000..54499e4d3
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femulDisplay.v
new file mode 100644
index 000000000..709afb701
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenz.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenz.v
new file mode 100644
index 000000000..8e71146fe
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..458bb4d07
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feopp.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feopp.v
new file mode 100644
index 000000000..b7d181e0b
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..c96a0ef50
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesub.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesub.v
new file mode 100644
index 000000000..8405ab290
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..79dc1cb8d
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m2e128m2e96p2e32m1_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/py_interpreter.sh b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/py_interpreter.sh
index 60bc2eb7c..60bc2eb7c 100755
--- a/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e384m2e128m2e96p2e32m1_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e384m317/Synthesis.v b/src/Specific/montgomery32_2e384m317/Synthesis.v
deleted file mode 100644
index 61812a5e7..000000000
--- a/src/Specific/montgomery32_2e384m317/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e384m317.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m317/feadd.c b/src/Specific/montgomery32_2e384m317/feadd.c
deleted file mode 100644
index ac3bf445a..000000000
--- a/src/Specific/montgomery32_2e384m317/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xfffffec3, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0xffffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m317/feadd.v b/src/Specific/montgomery32_2e384m317/feadd.v
deleted file mode 100644
index 2a624b3d2..000000000
--- a/src/Specific/montgomery32_2e384m317/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m317/feaddDisplay.log b/src/Specific/montgomery32_2e384m317/feaddDisplay.log
deleted file mode 100644
index d6ec1994f..000000000
--- a/src/Specific/montgomery32_2e384m317/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xfffffec3);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0xffffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e384m317/feaddDisplay.v b/src/Specific/montgomery32_2e384m317/feaddDisplay.v
deleted file mode 100644
index bb3f937d2..000000000
--- a/src/Specific/montgomery32_2e384m317/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m317.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e384m317/femul.v b/src/Specific/montgomery32_2e384m317/femul.v
deleted file mode 100644
index 77b41c364..000000000
--- a/src/Specific/montgomery32_2e384m317/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m317/femulDisplay.v b/src/Specific/montgomery32_2e384m317/femulDisplay.v
deleted file mode 100644
index ad26cebcc..000000000
--- a/src/Specific/montgomery32_2e384m317/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m317.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e384m317/fenz.c b/src/Specific/montgomery32_2e384m317/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e384m317/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m317/fenz.v b/src/Specific/montgomery32_2e384m317/fenz.v
deleted file mode 100644
index 65be70832..000000000
--- a/src/Specific/montgomery32_2e384m317/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m317/fenzDisplay.log b/src/Specific/montgomery32_2e384m317/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e384m317/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e384m317/fenzDisplay.v b/src/Specific/montgomery32_2e384m317/fenzDisplay.v
deleted file mode 100644
index 9520d7ad6..000000000
--- a/src/Specific/montgomery32_2e384m317/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m317.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m317/feopp.v b/src/Specific/montgomery32_2e384m317/feopp.v
deleted file mode 100644
index 2681c862d..000000000
--- a/src/Specific/montgomery32_2e384m317/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m317/feoppDisplay.v b/src/Specific/montgomery32_2e384m317/feoppDisplay.v
deleted file mode 100644
index 8fe903a93..000000000
--- a/src/Specific/montgomery32_2e384m317/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m317.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e384m317/fesquare.c b/src/Specific/montgomery32_2e384m317/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e384m317/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e384m317/fesub.v b/src/Specific/montgomery32_2e384m317/fesub.v
deleted file mode 100644
index 59ef9e5c7..000000000
--- a/src/Specific/montgomery32_2e384m317/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m317/fesubDisplay.v b/src/Specific/montgomery32_2e384m317/fesubDisplay.v
deleted file mode 100644
index 049ff5bb3..000000000
--- a/src/Specific/montgomery32_2e384m317/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m317.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e384m317/CurveParameters.v b/src/Specific/montgomery32_2e384m317_12limbs/CurveParameters.v
index 01b7f54d7..01b7f54d7 100644
--- a/src/Specific/montgomery32_2e384m317/CurveParameters.v
+++ b/src/Specific/montgomery32_2e384m317_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/Synthesis.v b/src/Specific/montgomery32_2e384m317_12limbs/Synthesis.v
new file mode 100644
index 000000000..ebb5958b4
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m317/compiler.sh b/src/Specific/montgomery32_2e384m317_12limbs/compiler.sh
index d79be1589..d79be1589 100755
--- a/src/Specific/montgomery32_2e384m317/compiler.sh
+++ b/src/Specific/montgomery32_2e384m317_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e384m317/compilerxx.sh b/src/Specific/montgomery32_2e384m317_12limbs/compilerxx.sh
index 6188d5809..6188d5809 100755
--- a/src/Specific/montgomery32_2e384m317/compilerxx.sh
+++ b/src/Specific/montgomery32_2e384m317_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/feadd.v b/src/Specific/montgomery32_2e384m317_12limbs/feadd.v
new file mode 100644
index 000000000..7602cde88
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e384m317_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..daddd7cec
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/femul.v b/src/Specific/montgomery32_2e384m317_12limbs/femul.v
new file mode 100644
index 000000000..3d6513a58
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e384m317_12limbs/femulDisplay.v
new file mode 100644
index 000000000..6b7d8ee14
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/fenz.v b/src/Specific/montgomery32_2e384m317_12limbs/fenz.v
new file mode 100644
index 000000000..345fdbfa7
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e384m317_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..ffc3961cc
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/feopp.v b/src/Specific/montgomery32_2e384m317_12limbs/feopp.v
new file mode 100644
index 000000000..69b4ed2c6
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e384m317_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..f3832cecd
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/fesub.v b/src/Specific/montgomery32_2e384m317_12limbs/fesub.v
new file mode 100644
index 000000000..f8ed56795
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m317_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e384m317_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..aedbd21c6
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m317_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m317_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e384m317/py_interpreter.sh b/src/Specific/montgomery32_2e384m317_12limbs/py_interpreter.sh
index c7630a3c6..c7630a3c6 100755
--- a/src/Specific/montgomery32_2e384m317/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e384m317_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/Synthesis.v b/src/Specific/montgomery32_2e384m5x2e368m1/Synthesis.v
deleted file mode 100644
index dede29556..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feadd.c b/src/Specific/montgomery32_2e384m5x2e368m1/feadd.c
deleted file mode 100644
index 66bd374ad..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffff, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0xfffaffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feadd.v b/src/Specific/montgomery32_2e384m5x2e368m1/feadd.v
deleted file mode 100644
index e7a20f7a5..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.log b/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.log
deleted file mode 100644
index d13f97195..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffff);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0xfffaffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.v
deleted file mode 100644
index 7719b0841..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/femul.v b/src/Specific/montgomery32_2e384m5x2e368m1/femul.v
deleted file mode 100644
index cbaf2badf..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/femulDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1/femulDisplay.v
deleted file mode 100644
index 1d94e70f9..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fenz.c b/src/Specific/montgomery32_2e384m5x2e368m1/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fenz.v b/src/Specific/montgomery32_2e384m5x2e368m1/fenz.v
deleted file mode 100644
index 3ba70df87..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.log b/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.v
deleted file mode 100644
index 3fc994228..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feopp.v b/src/Specific/montgomery32_2e384m5x2e368m1/feopp.v
deleted file mode 100644
index abef621b8..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/feoppDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1/feoppDisplay.v
deleted file mode 100644
index c58f46f7d..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fesquare.c b/src/Specific/montgomery32_2e384m5x2e368m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fesub.v b/src/Specific/montgomery32_2e384m5x2e368m1/fesub.v
deleted file mode 100644
index e91ae2ac2..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/fesubDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1/fesubDisplay.v
deleted file mode 100644
index 768f257ec..000000000
--- a/src/Specific/montgomery32_2e384m5x2e368m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/CurveParameters.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/CurveParameters.v
index f220253fa..f220253fa 100644
--- a/src/Specific/montgomery32_2e384m5x2e368m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/Synthesis.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/Synthesis.v
new file mode 100644
index 000000000..1625054ae
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/compiler.sh b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/compiler.sh
index 1e4a4636a..1e4a4636a 100755
--- a/src/Specific/montgomery32_2e384m5x2e368m1/compiler.sh
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/compilerxx.sh b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/compilerxx.sh
index 3896c3744..3896c3744 100755
--- a/src/Specific/montgomery32_2e384m5x2e368m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feadd.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feadd.v
new file mode 100644
index 000000000..01955529a
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..88c987120
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femul.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femul.v
new file mode 100644
index 000000000..587763a3b
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femulDisplay.v
new file mode 100644
index 000000000..020621142
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenz.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenz.v
new file mode 100644
index 000000000..4124189cf
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..27a9bfdce
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feopp.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feopp.v
new file mode 100644
index 000000000..002e6a702
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..6292d6d62
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesub.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesub.v
new file mode 100644
index 000000000..44a04938c
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..e34e5cedb
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m5x2e368m1_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e384m5x2e368m1/py_interpreter.sh b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/py_interpreter.sh
index 579f5db77..579f5db77 100755
--- a/src/Specific/montgomery32_2e384m5x2e368m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e384m5x2e368m1_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/Synthesis.v b/src/Specific/montgomery32_2e384m79x2e376m1/Synthesis.v
deleted file mode 100644
index d2b4caae3..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feadd.c b/src/Specific/montgomery32_2e384m79x2e376m1/feadd.c
deleted file mode 100644
index 52b84f7c0..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feadd.c
+++ /dev/null
@@ -1,76 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint32_t x49; uint8_t x50 = _addcarryx_u32(0x0, x5, x27, &x49);
- { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x7, x29, &x52);
- { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x9, x31, &x55);
- { uint32_t x58; uint8_t x59 = _addcarryx_u32(x56, x11, x33, &x58);
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(x59, x13, x35, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x15, x37, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x17, x39, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x19, x41, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x21, x43, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x23, x45, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x25, x47, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x24, x46, &x82);
- { uint32_t x85; uint8_t x86 = _subborrow_u32(0x0, x49, 0xffffffff, &x85);
- { uint32_t x88; uint8_t x89 = _subborrow_u32(x86, x52, 0xffffffff, &x88);
- { uint32_t x91; uint8_t x92 = _subborrow_u32(x89, x55, 0xffffffff, &x91);
- { uint32_t x94; uint8_t x95 = _subborrow_u32(x92, x58, 0xffffffff, &x94);
- { uint32_t x97; uint8_t x98 = _subborrow_u32(x95, x61, 0xffffffff, &x97);
- { uint32_t x100; uint8_t x101 = _subborrow_u32(x98, x64, 0xffffffff, &x100);
- { uint32_t x103; uint8_t x104 = _subborrow_u32(x101, x67, 0xffffffff, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(x104, x70, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x73, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x76, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x79, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x82, 0xb0ffffff, &x118);
- { uint32_t _; uint8_t x122 = _subborrow_u32(x119, x83, 0x0, &_);
- { uint32_t x123 = cmovznz32(x122, x118, x82);
- { uint32_t x124 = cmovznz32(x122, x115, x79);
- { uint32_t x125 = cmovznz32(x122, x112, x76);
- { uint32_t x126 = cmovznz32(x122, x109, x73);
- { uint32_t x127 = cmovznz32(x122, x106, x70);
- { uint32_t x128 = cmovznz32(x122, x103, x67);
- { uint32_t x129 = cmovznz32(x122, x100, x64);
- { uint32_t x130 = cmovznz32(x122, x97, x61);
- { uint32_t x131 = cmovznz32(x122, x94, x58);
- { uint32_t x132 = cmovznz32(x122, x91, x55);
- { uint32_t x133 = cmovznz32(x122, x88, x52);
- { uint32_t x134 = cmovznz32(x122, x85, x49);
- out[0] = x134;
- out[1] = x133;
- out[2] = x132;
- out[3] = x131;
- out[4] = x130;
- out[5] = x129;
- out[6] = x128;
- out[7] = x127;
- out[8] = x126;
- out[9] = x125;
- out[10] = x124;
- out[11] = x123;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feadd.v b/src/Specific/montgomery32_2e384m79x2e376m1/feadd.v
deleted file mode 100644
index 45c9b6c77..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.log b/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.log
deleted file mode 100644
index a0a196ff2..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint32_t x49, uint8_t x50 = addcarryx_u32(0x0, x5, x27);
- uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x7, x29);
- uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x9, x31);
- uint32_t x58, uint8_t x59 = addcarryx_u32(x56, x11, x33);
- uint32_t x61, uint8_t x62 = addcarryx_u32(x59, x13, x35);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x15, x37);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x17, x39);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x19, x41);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x21, x43);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x23, x45);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x25, x47);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x24, x46);
- uint32_t x85, uint8_t x86 = subborrow_u32(0x0, x49, 0xffffffff);
- uint32_t x88, uint8_t x89 = subborrow_u32(x86, x52, 0xffffffff);
- uint32_t x91, uint8_t x92 = subborrow_u32(x89, x55, 0xffffffff);
- uint32_t x94, uint8_t x95 = subborrow_u32(x92, x58, 0xffffffff);
- uint32_t x97, uint8_t x98 = subborrow_u32(x95, x61, 0xffffffff);
- uint32_t x100, uint8_t x101 = subborrow_u32(x98, x64, 0xffffffff);
- uint32_t x103, uint8_t x104 = subborrow_u32(x101, x67, 0xffffffff);
- uint32_t x106, uint8_t x107 = subborrow_u32(x104, x70, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x73, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x76, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x79, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x82, 0xb0ffffff);
- uint32_t _, uint8_t x122 = subborrow_u32(x119, x83, 0x0);
- uint32_t x123 = cmovznz32(x122, x118, x82);
- uint32_t x124 = cmovznz32(x122, x115, x79);
- uint32_t x125 = cmovznz32(x122, x112, x76);
- uint32_t x126 = cmovznz32(x122, x109, x73);
- uint32_t x127 = cmovznz32(x122, x106, x70);
- uint32_t x128 = cmovznz32(x122, x103, x67);
- uint32_t x129 = cmovznz32(x122, x100, x64);
- uint32_t x130 = cmovznz32(x122, x97, x61);
- uint32_t x131 = cmovznz32(x122, x94, x58);
- uint32_t x132 = cmovznz32(x122, x91, x55);
- uint32_t x133 = cmovznz32(x122, x88, x52);
- uint32_t x134 = cmovznz32(x122, x85, x49);
- return (x123, x124, x125, x126, x127, x128, x129, x130, x131, x132, x133, x134))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.v
deleted file mode 100644
index c07999d5d..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/femul.v b/src/Specific/montgomery32_2e384m79x2e376m1/femul.v
deleted file mode 100644
index af5ef7399..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/femulDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1/femulDisplay.v
deleted file mode 100644
index 26b3b9e59..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fenz.c b/src/Specific/montgomery32_2e384m79x2e376m1/fenz.c
deleted file mode 100644
index 61ca36c29..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fenz.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x23 = (x22 | x21);
- { uint32_t x24 = (x20 | x23);
- { uint32_t x25 = (x18 | x24);
- { uint32_t x26 = (x16 | x25);
- { uint32_t x27 = (x14 | x26);
- { uint32_t x28 = (x12 | x27);
- { uint32_t x29 = (x10 | x28);
- { uint32_t x30 = (x8 | x29);
- { uint32_t x31 = (x6 | x30);
- { uint32_t x32 = (x4 | x31);
- { uint32_t x33 = (x2 | x32);
- out[0] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fenz.v b/src/Specific/montgomery32_2e384m79x2e376m1/fenz.v
deleted file mode 100644
index b16b05c16..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.log b/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.log
deleted file mode 100644
index 7a5f016e0..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.log
+++ /dev/null
@@ -1,18 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x23 = (x22 | x21);
- uint32_t x24 = (x20 | x23);
- uint32_t x25 = (x18 | x24);
- uint32_t x26 = (x16 | x25);
- uint32_t x27 = (x14 | x26);
- uint32_t x28 = (x12 | x27);
- uint32_t x29 = (x10 | x28);
- uint32_t x30 = (x8 | x29);
- uint32_t x31 = (x6 | x30);
- uint32_t x32 = (x4 | x31);
- uint32_t x33 = (x2 | x32);
- return x33)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.v
deleted file mode 100644
index 0a9cce4e9..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feopp.v b/src/Specific/montgomery32_2e384m79x2e376m1/feopp.v
deleted file mode 100644
index a0fbc526c..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/feoppDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1/feoppDisplay.v
deleted file mode 100644
index 0e037953b..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fesquare.c b/src/Specific/montgomery32_2e384m79x2e376m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fesub.v b/src/Specific/montgomery32_2e384m79x2e376m1/fesub.v
deleted file mode 100644
index fa7e16232..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/fesubDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1/fesubDisplay.v
deleted file mode 100644
index cf18b0d71..000000000
--- a/src/Specific/montgomery32_2e384m79x2e376m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/CurveParameters.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/CurveParameters.v
index cf5e93859..cf5e93859 100644
--- a/src/Specific/montgomery32_2e384m79x2e376m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/Synthesis.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/Synthesis.v
new file mode 100644
index 000000000..a0385c10e
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/compiler.sh b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/compiler.sh
index ea597d959..ea597d959 100755
--- a/src/Specific/montgomery32_2e384m79x2e376m1/compiler.sh
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/compilerxx.sh b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/compilerxx.sh
index e04e4b8a5..e04e4b8a5 100755
--- a/src/Specific/montgomery32_2e384m79x2e376m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feadd.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feadd.v
new file mode 100644
index 000000000..8ac7fe991
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feaddDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..888048fb5
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femul.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femul.v
new file mode 100644
index 000000000..958b30e2e
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femulDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femulDisplay.v
new file mode 100644
index 000000000..f04b5deb3
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenz.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenz.v
new file mode 100644
index 000000000..9a7f96595
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenzDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenzDisplay.v
new file mode 100644
index 000000000..f887d88c5
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feopp.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feopp.v
new file mode 100644
index 000000000..1460ae91f
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feoppDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feoppDisplay.v
new file mode 100644
index 000000000..c704cd960
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesub.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesub.v
new file mode 100644
index 000000000..e8f033244
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesubDisplay.v b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..5404cd0d1
--- /dev/null
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e384m79x2e376m1_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e384m79x2e376m1/py_interpreter.sh b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/py_interpreter.sh
index 31ec19158..31ec19158 100755
--- a/src/Specific/montgomery32_2e384m79x2e376m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e384m79x2e376m1_12limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e389m21/Synthesis.v b/src/Specific/montgomery32_2e389m21/Synthesis.v
deleted file mode 100644
index 41d942c9b..000000000
--- a/src/Specific/montgomery32_2e389m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e389m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e389m21/feadd.c b/src/Specific/montgomery32_2e389m21/feadd.c
deleted file mode 100644
index ac55d2332..000000000
--- a/src/Specific/montgomery32_2e389m21/feadd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x5, x29, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x7, x31, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x9, x33, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x11, x35, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x13, x37, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x15, x39, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x17, x41, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x19, x43, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x21, x45, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x23, x47, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x25, x49, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x27, x51, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x26, x50, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(0x0, x53, 0xffffffeb, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x56, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x59, 0xffffffff, &x98);
- { uint32_t x101; uint8_t x102 = _subborrow_u32(x99, x62, 0xffffffff, &x101);
- { uint32_t x104; uint8_t x105 = _subborrow_u32(x102, x65, 0xffffffff, &x104);
- { uint32_t x107; uint8_t x108 = _subborrow_u32(x105, x68, 0xffffffff, &x107);
- { uint32_t x110; uint8_t x111 = _subborrow_u32(x108, x71, 0xffffffff, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(x111, x74, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x77, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x80, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x83, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x86, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x89, 0x1f, &x128);
- { uint32_t _; uint8_t x132 = _subborrow_u32(x129, x90, 0x0, &_);
- { uint32_t x133 = cmovznz32(x132, x128, x89);
- { uint32_t x134 = cmovznz32(x132, x125, x86);
- { uint32_t x135 = cmovznz32(x132, x122, x83);
- { uint32_t x136 = cmovznz32(x132, x119, x80);
- { uint32_t x137 = cmovznz32(x132, x116, x77);
- { uint32_t x138 = cmovznz32(x132, x113, x74);
- { uint32_t x139 = cmovznz32(x132, x110, x71);
- { uint32_t x140 = cmovznz32(x132, x107, x68);
- { uint32_t x141 = cmovznz32(x132, x104, x65);
- { uint32_t x142 = cmovznz32(x132, x101, x62);
- { uint32_t x143 = cmovznz32(x132, x98, x59);
- { uint32_t x144 = cmovznz32(x132, x95, x56);
- { uint32_t x145 = cmovznz32(x132, x92, x53);
- out[0] = x145;
- out[1] = x144;
- out[2] = x143;
- out[3] = x142;
- out[4] = x141;
- out[5] = x140;
- out[6] = x139;
- out[7] = x138;
- out[8] = x137;
- out[9] = x136;
- out[10] = x135;
- out[11] = x134;
- out[12] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e389m21/feadd.v b/src/Specific/montgomery32_2e389m21/feadd.v
deleted file mode 100644
index c1511e634..000000000
--- a/src/Specific/montgomery32_2e389m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e389m21/feaddDisplay.log b/src/Specific/montgomery32_2e389m21/feaddDisplay.log
deleted file mode 100644
index c4db24a28..000000000
--- a/src/Specific/montgomery32_2e389m21/feaddDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x5, x29);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x7, x31);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x9, x33);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x11, x35);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x13, x37);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x15, x39);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x17, x41);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x19, x43);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x21, x45);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x23, x47);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x25, x49);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x27, x51);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x26, x50);
- uint32_t x92, uint8_t x93 = subborrow_u32(0x0, x53, 0xffffffeb);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x56, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x59, 0xffffffff);
- uint32_t x101, uint8_t x102 = subborrow_u32(x99, x62, 0xffffffff);
- uint32_t x104, uint8_t x105 = subborrow_u32(x102, x65, 0xffffffff);
- uint32_t x107, uint8_t x108 = subborrow_u32(x105, x68, 0xffffffff);
- uint32_t x110, uint8_t x111 = subborrow_u32(x108, x71, 0xffffffff);
- uint32_t x113, uint8_t x114 = subborrow_u32(x111, x74, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x77, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x80, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x83, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x86, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x89, 0x1f);
- uint32_t _, uint8_t x132 = subborrow_u32(x129, x90, 0x0);
- uint32_t x133 = cmovznz32(x132, x128, x89);
- uint32_t x134 = cmovznz32(x132, x125, x86);
- uint32_t x135 = cmovznz32(x132, x122, x83);
- uint32_t x136 = cmovznz32(x132, x119, x80);
- uint32_t x137 = cmovznz32(x132, x116, x77);
- uint32_t x138 = cmovznz32(x132, x113, x74);
- uint32_t x139 = cmovznz32(x132, x110, x71);
- uint32_t x140 = cmovznz32(x132, x107, x68);
- uint32_t x141 = cmovznz32(x132, x104, x65);
- uint32_t x142 = cmovznz32(x132, x101, x62);
- uint32_t x143 = cmovznz32(x132, x98, x59);
- uint32_t x144 = cmovznz32(x132, x95, x56);
- uint32_t x145 = cmovznz32(x132, x92, x53);
- return (x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, x144, x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e389m21/feaddDisplay.v b/src/Specific/montgomery32_2e389m21/feaddDisplay.v
deleted file mode 100644
index f8aa2ae75..000000000
--- a/src/Specific/montgomery32_2e389m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e389m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e389m21/femul.v b/src/Specific/montgomery32_2e389m21/femul.v
deleted file mode 100644
index dab7929a8..000000000
--- a/src/Specific/montgomery32_2e389m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e389m21/femulDisplay.v b/src/Specific/montgomery32_2e389m21/femulDisplay.v
deleted file mode 100644
index aaaf9a879..000000000
--- a/src/Specific/montgomery32_2e389m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e389m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e389m21/fenz.c b/src/Specific/montgomery32_2e389m21/fenz.c
deleted file mode 100644
index c34513bef..000000000
--- a/src/Specific/montgomery32_2e389m21/fenz.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x25 = (x24 | x23);
- { uint32_t x26 = (x22 | x25);
- { uint32_t x27 = (x20 | x26);
- { uint32_t x28 = (x18 | x27);
- { uint32_t x29 = (x16 | x28);
- { uint32_t x30 = (x14 | x29);
- { uint32_t x31 = (x12 | x30);
- { uint32_t x32 = (x10 | x31);
- { uint32_t x33 = (x8 | x32);
- { uint32_t x34 = (x6 | x33);
- { uint32_t x35 = (x4 | x34);
- { uint32_t x36 = (x2 | x35);
- out[0] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e389m21/fenz.v b/src/Specific/montgomery32_2e389m21/fenz.v
deleted file mode 100644
index 551fe3e6e..000000000
--- a/src/Specific/montgomery32_2e389m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e389m21/fenzDisplay.log b/src/Specific/montgomery32_2e389m21/fenzDisplay.log
deleted file mode 100644
index be61ce3d7..000000000
--- a/src/Specific/montgomery32_2e389m21/fenzDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x25 = (x24 | x23);
- uint32_t x26 = (x22 | x25);
- uint32_t x27 = (x20 | x26);
- uint32_t x28 = (x18 | x27);
- uint32_t x29 = (x16 | x28);
- uint32_t x30 = (x14 | x29);
- uint32_t x31 = (x12 | x30);
- uint32_t x32 = (x10 | x31);
- uint32_t x33 = (x8 | x32);
- uint32_t x34 = (x6 | x33);
- uint32_t x35 = (x4 | x34);
- uint32_t x36 = (x2 | x35);
- return x36)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e389m21/fenzDisplay.v b/src/Specific/montgomery32_2e389m21/fenzDisplay.v
deleted file mode 100644
index cbe31386c..000000000
--- a/src/Specific/montgomery32_2e389m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e389m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e389m21/feopp.v b/src/Specific/montgomery32_2e389m21/feopp.v
deleted file mode 100644
index d0d8a7651..000000000
--- a/src/Specific/montgomery32_2e389m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e389m21/feoppDisplay.v b/src/Specific/montgomery32_2e389m21/feoppDisplay.v
deleted file mode 100644
index 05d0dc041..000000000
--- a/src/Specific/montgomery32_2e389m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e389m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e389m21/fesquare.c b/src/Specific/montgomery32_2e389m21/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e389m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e389m21/fesub.v b/src/Specific/montgomery32_2e389m21/fesub.v
deleted file mode 100644
index 72df79d04..000000000
--- a/src/Specific/montgomery32_2e389m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e389m21/fesubDisplay.v b/src/Specific/montgomery32_2e389m21/fesubDisplay.v
deleted file mode 100644
index f3772ce6e..000000000
--- a/src/Specific/montgomery32_2e389m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e389m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e389m21/CurveParameters.v b/src/Specific/montgomery32_2e389m21_13limbs/CurveParameters.v
index 53d697165..53d697165 100644
--- a/src/Specific/montgomery32_2e389m21/CurveParameters.v
+++ b/src/Specific/montgomery32_2e389m21_13limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/Synthesis.v b/src/Specific/montgomery32_2e389m21_13limbs/Synthesis.v
new file mode 100644
index 000000000..0068407b6
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e389m21/compiler.sh b/src/Specific/montgomery32_2e389m21_13limbs/compiler.sh
index ae587297a..ae587297a 100755
--- a/src/Specific/montgomery32_2e389m21/compiler.sh
+++ b/src/Specific/montgomery32_2e389m21_13limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e389m21/compilerxx.sh b/src/Specific/montgomery32_2e389m21_13limbs/compilerxx.sh
index 611ca4a7e..611ca4a7e 100755
--- a/src/Specific/montgomery32_2e389m21/compilerxx.sh
+++ b/src/Specific/montgomery32_2e389m21_13limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/feadd.v b/src/Specific/montgomery32_2e389m21_13limbs/feadd.v
new file mode 100644
index 000000000..d9479740e
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/feaddDisplay.v b/src/Specific/montgomery32_2e389m21_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..aa598995e
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/femul.v b/src/Specific/montgomery32_2e389m21_13limbs/femul.v
new file mode 100644
index 000000000..887554302
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/femulDisplay.v b/src/Specific/montgomery32_2e389m21_13limbs/femulDisplay.v
new file mode 100644
index 000000000..16026fa0c
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/fenz.v b/src/Specific/montgomery32_2e389m21_13limbs/fenz.v
new file mode 100644
index 000000000..0166bee91
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/fenzDisplay.v b/src/Specific/montgomery32_2e389m21_13limbs/fenzDisplay.v
new file mode 100644
index 000000000..e8e99f72b
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/feopp.v b/src/Specific/montgomery32_2e389m21_13limbs/feopp.v
new file mode 100644
index 000000000..fa4c4c021
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/feoppDisplay.v b/src/Specific/montgomery32_2e389m21_13limbs/feoppDisplay.v
new file mode 100644
index 000000000..243156a0d
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/fesub.v b/src/Specific/montgomery32_2e389m21_13limbs/fesub.v
new file mode 100644
index 000000000..a8b402e4f
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e389m21_13limbs/fesubDisplay.v b/src/Specific/montgomery32_2e389m21_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..5d4461558
--- /dev/null
+++ b/src/Specific/montgomery32_2e389m21_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e389m21_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e389m21/py_interpreter.sh b/src/Specific/montgomery32_2e389m21_13limbs/py_interpreter.sh
index 43b54b0d6..43b54b0d6 100755
--- a/src/Specific/montgomery32_2e389m21/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e389m21_13limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e401m31/Synthesis.v b/src/Specific/montgomery32_2e401m31/Synthesis.v
deleted file mode 100644
index 7d86eee4e..000000000
--- a/src/Specific/montgomery32_2e401m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e401m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e401m31/feadd.c b/src/Specific/montgomery32_2e401m31/feadd.c
deleted file mode 100644
index 2a35ceda2..000000000
--- a/src/Specific/montgomery32_2e401m31/feadd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x5, x29, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x7, x31, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x9, x33, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x11, x35, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x13, x37, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x15, x39, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x17, x41, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x19, x43, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x21, x45, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x23, x47, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x25, x49, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x27, x51, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x26, x50, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(0x0, x53, 0xffffffe1, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x56, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x59, 0xffffffff, &x98);
- { uint32_t x101; uint8_t x102 = _subborrow_u32(x99, x62, 0xffffffff, &x101);
- { uint32_t x104; uint8_t x105 = _subborrow_u32(x102, x65, 0xffffffff, &x104);
- { uint32_t x107; uint8_t x108 = _subborrow_u32(x105, x68, 0xffffffff, &x107);
- { uint32_t x110; uint8_t x111 = _subborrow_u32(x108, x71, 0xffffffff, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(x111, x74, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x77, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x80, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x83, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x86, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x89, 0x1ffff, &x128);
- { uint32_t _; uint8_t x132 = _subborrow_u32(x129, x90, 0x0, &_);
- { uint32_t x133 = cmovznz32(x132, x128, x89);
- { uint32_t x134 = cmovznz32(x132, x125, x86);
- { uint32_t x135 = cmovznz32(x132, x122, x83);
- { uint32_t x136 = cmovznz32(x132, x119, x80);
- { uint32_t x137 = cmovznz32(x132, x116, x77);
- { uint32_t x138 = cmovznz32(x132, x113, x74);
- { uint32_t x139 = cmovznz32(x132, x110, x71);
- { uint32_t x140 = cmovznz32(x132, x107, x68);
- { uint32_t x141 = cmovznz32(x132, x104, x65);
- { uint32_t x142 = cmovznz32(x132, x101, x62);
- { uint32_t x143 = cmovznz32(x132, x98, x59);
- { uint32_t x144 = cmovznz32(x132, x95, x56);
- { uint32_t x145 = cmovznz32(x132, x92, x53);
- out[0] = x145;
- out[1] = x144;
- out[2] = x143;
- out[3] = x142;
- out[4] = x141;
- out[5] = x140;
- out[6] = x139;
- out[7] = x138;
- out[8] = x137;
- out[9] = x136;
- out[10] = x135;
- out[11] = x134;
- out[12] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e401m31/feadd.v b/src/Specific/montgomery32_2e401m31/feadd.v
deleted file mode 100644
index feb250ee0..000000000
--- a/src/Specific/montgomery32_2e401m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e401m31/feaddDisplay.log b/src/Specific/montgomery32_2e401m31/feaddDisplay.log
deleted file mode 100644
index 24b1f0bba..000000000
--- a/src/Specific/montgomery32_2e401m31/feaddDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x5, x29);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x7, x31);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x9, x33);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x11, x35);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x13, x37);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x15, x39);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x17, x41);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x19, x43);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x21, x45);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x23, x47);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x25, x49);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x27, x51);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x26, x50);
- uint32_t x92, uint8_t x93 = subborrow_u32(0x0, x53, 0xffffffe1);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x56, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x59, 0xffffffff);
- uint32_t x101, uint8_t x102 = subborrow_u32(x99, x62, 0xffffffff);
- uint32_t x104, uint8_t x105 = subborrow_u32(x102, x65, 0xffffffff);
- uint32_t x107, uint8_t x108 = subborrow_u32(x105, x68, 0xffffffff);
- uint32_t x110, uint8_t x111 = subborrow_u32(x108, x71, 0xffffffff);
- uint32_t x113, uint8_t x114 = subborrow_u32(x111, x74, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x77, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x80, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x83, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x86, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x89, 0x1ffff);
- uint32_t _, uint8_t x132 = subborrow_u32(x129, x90, 0x0);
- uint32_t x133 = cmovznz32(x132, x128, x89);
- uint32_t x134 = cmovznz32(x132, x125, x86);
- uint32_t x135 = cmovznz32(x132, x122, x83);
- uint32_t x136 = cmovznz32(x132, x119, x80);
- uint32_t x137 = cmovznz32(x132, x116, x77);
- uint32_t x138 = cmovznz32(x132, x113, x74);
- uint32_t x139 = cmovznz32(x132, x110, x71);
- uint32_t x140 = cmovznz32(x132, x107, x68);
- uint32_t x141 = cmovznz32(x132, x104, x65);
- uint32_t x142 = cmovznz32(x132, x101, x62);
- uint32_t x143 = cmovznz32(x132, x98, x59);
- uint32_t x144 = cmovznz32(x132, x95, x56);
- uint32_t x145 = cmovznz32(x132, x92, x53);
- return (x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, x144, x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e401m31/feaddDisplay.v b/src/Specific/montgomery32_2e401m31/feaddDisplay.v
deleted file mode 100644
index 07bf23fdf..000000000
--- a/src/Specific/montgomery32_2e401m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e401m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e401m31/femul.v b/src/Specific/montgomery32_2e401m31/femul.v
deleted file mode 100644
index 08a0eb673..000000000
--- a/src/Specific/montgomery32_2e401m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e401m31/femulDisplay.v b/src/Specific/montgomery32_2e401m31/femulDisplay.v
deleted file mode 100644
index 02c9719be..000000000
--- a/src/Specific/montgomery32_2e401m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e401m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e401m31/fenz.c b/src/Specific/montgomery32_2e401m31/fenz.c
deleted file mode 100644
index c34513bef..000000000
--- a/src/Specific/montgomery32_2e401m31/fenz.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x25 = (x24 | x23);
- { uint32_t x26 = (x22 | x25);
- { uint32_t x27 = (x20 | x26);
- { uint32_t x28 = (x18 | x27);
- { uint32_t x29 = (x16 | x28);
- { uint32_t x30 = (x14 | x29);
- { uint32_t x31 = (x12 | x30);
- { uint32_t x32 = (x10 | x31);
- { uint32_t x33 = (x8 | x32);
- { uint32_t x34 = (x6 | x33);
- { uint32_t x35 = (x4 | x34);
- { uint32_t x36 = (x2 | x35);
- out[0] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e401m31/fenz.v b/src/Specific/montgomery32_2e401m31/fenz.v
deleted file mode 100644
index b62a84cad..000000000
--- a/src/Specific/montgomery32_2e401m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e401m31/fenzDisplay.log b/src/Specific/montgomery32_2e401m31/fenzDisplay.log
deleted file mode 100644
index be61ce3d7..000000000
--- a/src/Specific/montgomery32_2e401m31/fenzDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x25 = (x24 | x23);
- uint32_t x26 = (x22 | x25);
- uint32_t x27 = (x20 | x26);
- uint32_t x28 = (x18 | x27);
- uint32_t x29 = (x16 | x28);
- uint32_t x30 = (x14 | x29);
- uint32_t x31 = (x12 | x30);
- uint32_t x32 = (x10 | x31);
- uint32_t x33 = (x8 | x32);
- uint32_t x34 = (x6 | x33);
- uint32_t x35 = (x4 | x34);
- uint32_t x36 = (x2 | x35);
- return x36)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e401m31/fenzDisplay.v b/src/Specific/montgomery32_2e401m31/fenzDisplay.v
deleted file mode 100644
index 3a28a365e..000000000
--- a/src/Specific/montgomery32_2e401m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e401m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e401m31/feopp.v b/src/Specific/montgomery32_2e401m31/feopp.v
deleted file mode 100644
index ec6399383..000000000
--- a/src/Specific/montgomery32_2e401m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e401m31/feoppDisplay.v b/src/Specific/montgomery32_2e401m31/feoppDisplay.v
deleted file mode 100644
index d4d5a87ec..000000000
--- a/src/Specific/montgomery32_2e401m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e401m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e401m31/fesquare.c b/src/Specific/montgomery32_2e401m31/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e401m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e401m31/fesub.v b/src/Specific/montgomery32_2e401m31/fesub.v
deleted file mode 100644
index 14e04bfe7..000000000
--- a/src/Specific/montgomery32_2e401m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e401m31/fesubDisplay.v b/src/Specific/montgomery32_2e401m31/fesubDisplay.v
deleted file mode 100644
index 4ef34ac4f..000000000
--- a/src/Specific/montgomery32_2e401m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e401m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e401m31/CurveParameters.v b/src/Specific/montgomery32_2e401m31_13limbs/CurveParameters.v
index 131704a25..131704a25 100644
--- a/src/Specific/montgomery32_2e401m31/CurveParameters.v
+++ b/src/Specific/montgomery32_2e401m31_13limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/Synthesis.v b/src/Specific/montgomery32_2e401m31_13limbs/Synthesis.v
new file mode 100644
index 000000000..16804ee29
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e401m31/compiler.sh b/src/Specific/montgomery32_2e401m31_13limbs/compiler.sh
index f7b25eae4..f7b25eae4 100755
--- a/src/Specific/montgomery32_2e401m31/compiler.sh
+++ b/src/Specific/montgomery32_2e401m31_13limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e401m31/compilerxx.sh b/src/Specific/montgomery32_2e401m31_13limbs/compilerxx.sh
index b83ab6fac..b83ab6fac 100755
--- a/src/Specific/montgomery32_2e401m31/compilerxx.sh
+++ b/src/Specific/montgomery32_2e401m31_13limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/feadd.v b/src/Specific/montgomery32_2e401m31_13limbs/feadd.v
new file mode 100644
index 000000000..4db0e9e9a
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/feaddDisplay.v b/src/Specific/montgomery32_2e401m31_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..50d57b25e
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/femul.v b/src/Specific/montgomery32_2e401m31_13limbs/femul.v
new file mode 100644
index 000000000..fc17e0188
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/femulDisplay.v b/src/Specific/montgomery32_2e401m31_13limbs/femulDisplay.v
new file mode 100644
index 000000000..d5ae278e3
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/fenz.v b/src/Specific/montgomery32_2e401m31_13limbs/fenz.v
new file mode 100644
index 000000000..80bac23a9
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/fenzDisplay.v b/src/Specific/montgomery32_2e401m31_13limbs/fenzDisplay.v
new file mode 100644
index 000000000..b7e92c310
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/feopp.v b/src/Specific/montgomery32_2e401m31_13limbs/feopp.v
new file mode 100644
index 000000000..3ac1535d0
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/feoppDisplay.v b/src/Specific/montgomery32_2e401m31_13limbs/feoppDisplay.v
new file mode 100644
index 000000000..fe1ecf79a
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/fesub.v b/src/Specific/montgomery32_2e401m31_13limbs/fesub.v
new file mode 100644
index 000000000..7d2b473b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e401m31_13limbs/fesubDisplay.v b/src/Specific/montgomery32_2e401m31_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..f76d6eb11
--- /dev/null
+++ b/src/Specific/montgomery32_2e401m31_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e401m31_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e401m31/py_interpreter.sh b/src/Specific/montgomery32_2e401m31_13limbs/py_interpreter.sh
index 364b0f1e4..364b0f1e4 100755
--- a/src/Specific/montgomery32_2e401m31/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e401m31_13limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e413m21/Synthesis.v b/src/Specific/montgomery32_2e413m21/Synthesis.v
deleted file mode 100644
index fdf19b999..000000000
--- a/src/Specific/montgomery32_2e413m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e413m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e413m21/feadd.c b/src/Specific/montgomery32_2e413m21/feadd.c
deleted file mode 100644
index 23d76ab4d..000000000
--- a/src/Specific/montgomery32_2e413m21/feadd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x5, x29, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x7, x31, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x9, x33, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x11, x35, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x13, x37, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x15, x39, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x17, x41, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x19, x43, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x21, x45, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x23, x47, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x25, x49, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x27, x51, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x26, x50, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(0x0, x53, 0xffffffeb, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x56, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x59, 0xffffffff, &x98);
- { uint32_t x101; uint8_t x102 = _subborrow_u32(x99, x62, 0xffffffff, &x101);
- { uint32_t x104; uint8_t x105 = _subborrow_u32(x102, x65, 0xffffffff, &x104);
- { uint32_t x107; uint8_t x108 = _subborrow_u32(x105, x68, 0xffffffff, &x107);
- { uint32_t x110; uint8_t x111 = _subborrow_u32(x108, x71, 0xffffffff, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(x111, x74, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x77, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x80, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x83, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x86, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x89, 0x1fffffff, &x128);
- { uint32_t _; uint8_t x132 = _subborrow_u32(x129, x90, 0x0, &_);
- { uint32_t x133 = cmovznz32(x132, x128, x89);
- { uint32_t x134 = cmovznz32(x132, x125, x86);
- { uint32_t x135 = cmovznz32(x132, x122, x83);
- { uint32_t x136 = cmovznz32(x132, x119, x80);
- { uint32_t x137 = cmovznz32(x132, x116, x77);
- { uint32_t x138 = cmovznz32(x132, x113, x74);
- { uint32_t x139 = cmovznz32(x132, x110, x71);
- { uint32_t x140 = cmovznz32(x132, x107, x68);
- { uint32_t x141 = cmovznz32(x132, x104, x65);
- { uint32_t x142 = cmovznz32(x132, x101, x62);
- { uint32_t x143 = cmovznz32(x132, x98, x59);
- { uint32_t x144 = cmovznz32(x132, x95, x56);
- { uint32_t x145 = cmovznz32(x132, x92, x53);
- out[0] = x145;
- out[1] = x144;
- out[2] = x143;
- out[3] = x142;
- out[4] = x141;
- out[5] = x140;
- out[6] = x139;
- out[7] = x138;
- out[8] = x137;
- out[9] = x136;
- out[10] = x135;
- out[11] = x134;
- out[12] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e413m21/feadd.v b/src/Specific/montgomery32_2e413m21/feadd.v
deleted file mode 100644
index 6b7433663..000000000
--- a/src/Specific/montgomery32_2e413m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e413m21/feaddDisplay.log b/src/Specific/montgomery32_2e413m21/feaddDisplay.log
deleted file mode 100644
index 05c4f5ed1..000000000
--- a/src/Specific/montgomery32_2e413m21/feaddDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x5, x29);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x7, x31);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x9, x33);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x11, x35);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x13, x37);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x15, x39);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x17, x41);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x19, x43);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x21, x45);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x23, x47);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x25, x49);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x27, x51);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x26, x50);
- uint32_t x92, uint8_t x93 = subborrow_u32(0x0, x53, 0xffffffeb);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x56, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x59, 0xffffffff);
- uint32_t x101, uint8_t x102 = subborrow_u32(x99, x62, 0xffffffff);
- uint32_t x104, uint8_t x105 = subborrow_u32(x102, x65, 0xffffffff);
- uint32_t x107, uint8_t x108 = subborrow_u32(x105, x68, 0xffffffff);
- uint32_t x110, uint8_t x111 = subborrow_u32(x108, x71, 0xffffffff);
- uint32_t x113, uint8_t x114 = subborrow_u32(x111, x74, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x77, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x80, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x83, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x86, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x89, 0x1fffffff);
- uint32_t _, uint8_t x132 = subborrow_u32(x129, x90, 0x0);
- uint32_t x133 = cmovznz32(x132, x128, x89);
- uint32_t x134 = cmovznz32(x132, x125, x86);
- uint32_t x135 = cmovznz32(x132, x122, x83);
- uint32_t x136 = cmovznz32(x132, x119, x80);
- uint32_t x137 = cmovznz32(x132, x116, x77);
- uint32_t x138 = cmovznz32(x132, x113, x74);
- uint32_t x139 = cmovznz32(x132, x110, x71);
- uint32_t x140 = cmovznz32(x132, x107, x68);
- uint32_t x141 = cmovznz32(x132, x104, x65);
- uint32_t x142 = cmovznz32(x132, x101, x62);
- uint32_t x143 = cmovznz32(x132, x98, x59);
- uint32_t x144 = cmovznz32(x132, x95, x56);
- uint32_t x145 = cmovznz32(x132, x92, x53);
- return (x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, x144, x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e413m21/feaddDisplay.v b/src/Specific/montgomery32_2e413m21/feaddDisplay.v
deleted file mode 100644
index 21c075609..000000000
--- a/src/Specific/montgomery32_2e413m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e413m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e413m21/femul.v b/src/Specific/montgomery32_2e413m21/femul.v
deleted file mode 100644
index de87c3583..000000000
--- a/src/Specific/montgomery32_2e413m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e413m21/femulDisplay.v b/src/Specific/montgomery32_2e413m21/femulDisplay.v
deleted file mode 100644
index e040e4be5..000000000
--- a/src/Specific/montgomery32_2e413m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e413m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e413m21/fenz.c b/src/Specific/montgomery32_2e413m21/fenz.c
deleted file mode 100644
index c34513bef..000000000
--- a/src/Specific/montgomery32_2e413m21/fenz.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x25 = (x24 | x23);
- { uint32_t x26 = (x22 | x25);
- { uint32_t x27 = (x20 | x26);
- { uint32_t x28 = (x18 | x27);
- { uint32_t x29 = (x16 | x28);
- { uint32_t x30 = (x14 | x29);
- { uint32_t x31 = (x12 | x30);
- { uint32_t x32 = (x10 | x31);
- { uint32_t x33 = (x8 | x32);
- { uint32_t x34 = (x6 | x33);
- { uint32_t x35 = (x4 | x34);
- { uint32_t x36 = (x2 | x35);
- out[0] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e413m21/fenz.v b/src/Specific/montgomery32_2e413m21/fenz.v
deleted file mode 100644
index a1bf6615d..000000000
--- a/src/Specific/montgomery32_2e413m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e413m21/fenzDisplay.log b/src/Specific/montgomery32_2e413m21/fenzDisplay.log
deleted file mode 100644
index be61ce3d7..000000000
--- a/src/Specific/montgomery32_2e413m21/fenzDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x25 = (x24 | x23);
- uint32_t x26 = (x22 | x25);
- uint32_t x27 = (x20 | x26);
- uint32_t x28 = (x18 | x27);
- uint32_t x29 = (x16 | x28);
- uint32_t x30 = (x14 | x29);
- uint32_t x31 = (x12 | x30);
- uint32_t x32 = (x10 | x31);
- uint32_t x33 = (x8 | x32);
- uint32_t x34 = (x6 | x33);
- uint32_t x35 = (x4 | x34);
- uint32_t x36 = (x2 | x35);
- return x36)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e413m21/fenzDisplay.v b/src/Specific/montgomery32_2e413m21/fenzDisplay.v
deleted file mode 100644
index d248b55c3..000000000
--- a/src/Specific/montgomery32_2e413m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e413m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e413m21/feopp.v b/src/Specific/montgomery32_2e413m21/feopp.v
deleted file mode 100644
index 38ff66898..000000000
--- a/src/Specific/montgomery32_2e413m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e413m21/feoppDisplay.v b/src/Specific/montgomery32_2e413m21/feoppDisplay.v
deleted file mode 100644
index b931dcfb1..000000000
--- a/src/Specific/montgomery32_2e413m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e413m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e413m21/fesquare.c b/src/Specific/montgomery32_2e413m21/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e413m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e413m21/fesub.v b/src/Specific/montgomery32_2e413m21/fesub.v
deleted file mode 100644
index 8069f4ec0..000000000
--- a/src/Specific/montgomery32_2e413m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e413m21/fesubDisplay.v b/src/Specific/montgomery32_2e413m21/fesubDisplay.v
deleted file mode 100644
index 587ef1c26..000000000
--- a/src/Specific/montgomery32_2e413m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e413m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e413m21/CurveParameters.v b/src/Specific/montgomery32_2e413m21_13limbs/CurveParameters.v
index dade6d2e9..dade6d2e9 100644
--- a/src/Specific/montgomery32_2e413m21/CurveParameters.v
+++ b/src/Specific/montgomery32_2e413m21_13limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/Synthesis.v b/src/Specific/montgomery32_2e413m21_13limbs/Synthesis.v
new file mode 100644
index 000000000..c1673e6d4
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e413m21/compiler.sh b/src/Specific/montgomery32_2e413m21_13limbs/compiler.sh
index a81752a0a..a81752a0a 100755
--- a/src/Specific/montgomery32_2e413m21/compiler.sh
+++ b/src/Specific/montgomery32_2e413m21_13limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e413m21/compilerxx.sh b/src/Specific/montgomery32_2e413m21_13limbs/compilerxx.sh
index 000364d1f..000364d1f 100755
--- a/src/Specific/montgomery32_2e413m21/compilerxx.sh
+++ b/src/Specific/montgomery32_2e413m21_13limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/feadd.v b/src/Specific/montgomery32_2e413m21_13limbs/feadd.v
new file mode 100644
index 000000000..125acbfbc
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/feaddDisplay.v b/src/Specific/montgomery32_2e413m21_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..f162dfb47
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/femul.v b/src/Specific/montgomery32_2e413m21_13limbs/femul.v
new file mode 100644
index 000000000..41c224f99
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/femulDisplay.v b/src/Specific/montgomery32_2e413m21_13limbs/femulDisplay.v
new file mode 100644
index 000000000..2fa59e5b2
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/fenz.v b/src/Specific/montgomery32_2e413m21_13limbs/fenz.v
new file mode 100644
index 000000000..d80e3b304
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/fenzDisplay.v b/src/Specific/montgomery32_2e413m21_13limbs/fenzDisplay.v
new file mode 100644
index 000000000..06cbfbc85
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/feopp.v b/src/Specific/montgomery32_2e413m21_13limbs/feopp.v
new file mode 100644
index 000000000..7238c94fb
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/feoppDisplay.v b/src/Specific/montgomery32_2e413m21_13limbs/feoppDisplay.v
new file mode 100644
index 000000000..5206bd23b
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/fesub.v b/src/Specific/montgomery32_2e413m21_13limbs/fesub.v
new file mode 100644
index 000000000..9e0c888dd
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e413m21_13limbs/fesubDisplay.v b/src/Specific/montgomery32_2e413m21_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..71aad29c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e413m21_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e413m21_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e413m21/py_interpreter.sh b/src/Specific/montgomery32_2e413m21_13limbs/py_interpreter.sh
index bf658bf19..bf658bf19 100755
--- a/src/Specific/montgomery32_2e413m21/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e413m21_13limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e414m17/Synthesis.v b/src/Specific/montgomery32_2e414m17/Synthesis.v
deleted file mode 100644
index afb5128b1..000000000
--- a/src/Specific/montgomery32_2e414m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e414m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e414m17/feadd.c b/src/Specific/montgomery32_2e414m17/feadd.c
deleted file mode 100644
index 4ea3fef54..000000000
--- a/src/Specific/montgomery32_2e414m17/feadd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x5, x29, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x7, x31, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x9, x33, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x11, x35, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x13, x37, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x15, x39, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x17, x41, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x19, x43, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x21, x45, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x23, x47, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x25, x49, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x27, x51, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x26, x50, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(0x0, x53, 0xffffffef, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x56, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x59, 0xffffffff, &x98);
- { uint32_t x101; uint8_t x102 = _subborrow_u32(x99, x62, 0xffffffff, &x101);
- { uint32_t x104; uint8_t x105 = _subborrow_u32(x102, x65, 0xffffffff, &x104);
- { uint32_t x107; uint8_t x108 = _subborrow_u32(x105, x68, 0xffffffff, &x107);
- { uint32_t x110; uint8_t x111 = _subborrow_u32(x108, x71, 0xffffffff, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(x111, x74, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x77, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x80, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x83, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x86, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x89, 0x3fffffff, &x128);
- { uint32_t _; uint8_t x132 = _subborrow_u32(x129, x90, 0x0, &_);
- { uint32_t x133 = cmovznz32(x132, x128, x89);
- { uint32_t x134 = cmovznz32(x132, x125, x86);
- { uint32_t x135 = cmovznz32(x132, x122, x83);
- { uint32_t x136 = cmovznz32(x132, x119, x80);
- { uint32_t x137 = cmovznz32(x132, x116, x77);
- { uint32_t x138 = cmovznz32(x132, x113, x74);
- { uint32_t x139 = cmovznz32(x132, x110, x71);
- { uint32_t x140 = cmovznz32(x132, x107, x68);
- { uint32_t x141 = cmovznz32(x132, x104, x65);
- { uint32_t x142 = cmovznz32(x132, x101, x62);
- { uint32_t x143 = cmovznz32(x132, x98, x59);
- { uint32_t x144 = cmovznz32(x132, x95, x56);
- { uint32_t x145 = cmovznz32(x132, x92, x53);
- out[0] = x145;
- out[1] = x144;
- out[2] = x143;
- out[3] = x142;
- out[4] = x141;
- out[5] = x140;
- out[6] = x139;
- out[7] = x138;
- out[8] = x137;
- out[9] = x136;
- out[10] = x135;
- out[11] = x134;
- out[12] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e414m17/feadd.v b/src/Specific/montgomery32_2e414m17/feadd.v
deleted file mode 100644
index 285674e48..000000000
--- a/src/Specific/montgomery32_2e414m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e414m17/feaddDisplay.log b/src/Specific/montgomery32_2e414m17/feaddDisplay.log
deleted file mode 100644
index 0e9b0c7f7..000000000
--- a/src/Specific/montgomery32_2e414m17/feaddDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x5, x29);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x7, x31);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x9, x33);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x11, x35);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x13, x37);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x15, x39);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x17, x41);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x19, x43);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x21, x45);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x23, x47);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x25, x49);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x27, x51);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x26, x50);
- uint32_t x92, uint8_t x93 = subborrow_u32(0x0, x53, 0xffffffef);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x56, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x59, 0xffffffff);
- uint32_t x101, uint8_t x102 = subborrow_u32(x99, x62, 0xffffffff);
- uint32_t x104, uint8_t x105 = subborrow_u32(x102, x65, 0xffffffff);
- uint32_t x107, uint8_t x108 = subborrow_u32(x105, x68, 0xffffffff);
- uint32_t x110, uint8_t x111 = subborrow_u32(x108, x71, 0xffffffff);
- uint32_t x113, uint8_t x114 = subborrow_u32(x111, x74, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x77, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x80, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x83, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x86, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x89, 0x3fffffff);
- uint32_t _, uint8_t x132 = subborrow_u32(x129, x90, 0x0);
- uint32_t x133 = cmovznz32(x132, x128, x89);
- uint32_t x134 = cmovznz32(x132, x125, x86);
- uint32_t x135 = cmovznz32(x132, x122, x83);
- uint32_t x136 = cmovznz32(x132, x119, x80);
- uint32_t x137 = cmovznz32(x132, x116, x77);
- uint32_t x138 = cmovznz32(x132, x113, x74);
- uint32_t x139 = cmovznz32(x132, x110, x71);
- uint32_t x140 = cmovznz32(x132, x107, x68);
- uint32_t x141 = cmovznz32(x132, x104, x65);
- uint32_t x142 = cmovznz32(x132, x101, x62);
- uint32_t x143 = cmovznz32(x132, x98, x59);
- uint32_t x144 = cmovznz32(x132, x95, x56);
- uint32_t x145 = cmovznz32(x132, x92, x53);
- return (x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, x144, x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e414m17/feaddDisplay.v b/src/Specific/montgomery32_2e414m17/feaddDisplay.v
deleted file mode 100644
index cfe7bf9e0..000000000
--- a/src/Specific/montgomery32_2e414m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e414m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e414m17/femul.v b/src/Specific/montgomery32_2e414m17/femul.v
deleted file mode 100644
index a39473c7e..000000000
--- a/src/Specific/montgomery32_2e414m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e414m17/femulDisplay.v b/src/Specific/montgomery32_2e414m17/femulDisplay.v
deleted file mode 100644
index df736e616..000000000
--- a/src/Specific/montgomery32_2e414m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e414m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e414m17/fenz.c b/src/Specific/montgomery32_2e414m17/fenz.c
deleted file mode 100644
index c34513bef..000000000
--- a/src/Specific/montgomery32_2e414m17/fenz.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x25 = (x24 | x23);
- { uint32_t x26 = (x22 | x25);
- { uint32_t x27 = (x20 | x26);
- { uint32_t x28 = (x18 | x27);
- { uint32_t x29 = (x16 | x28);
- { uint32_t x30 = (x14 | x29);
- { uint32_t x31 = (x12 | x30);
- { uint32_t x32 = (x10 | x31);
- { uint32_t x33 = (x8 | x32);
- { uint32_t x34 = (x6 | x33);
- { uint32_t x35 = (x4 | x34);
- { uint32_t x36 = (x2 | x35);
- out[0] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e414m17/fenz.v b/src/Specific/montgomery32_2e414m17/fenz.v
deleted file mode 100644
index 3188e2d46..000000000
--- a/src/Specific/montgomery32_2e414m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e414m17/fenzDisplay.log b/src/Specific/montgomery32_2e414m17/fenzDisplay.log
deleted file mode 100644
index be61ce3d7..000000000
--- a/src/Specific/montgomery32_2e414m17/fenzDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x25 = (x24 | x23);
- uint32_t x26 = (x22 | x25);
- uint32_t x27 = (x20 | x26);
- uint32_t x28 = (x18 | x27);
- uint32_t x29 = (x16 | x28);
- uint32_t x30 = (x14 | x29);
- uint32_t x31 = (x12 | x30);
- uint32_t x32 = (x10 | x31);
- uint32_t x33 = (x8 | x32);
- uint32_t x34 = (x6 | x33);
- uint32_t x35 = (x4 | x34);
- uint32_t x36 = (x2 | x35);
- return x36)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e414m17/fenzDisplay.v b/src/Specific/montgomery32_2e414m17/fenzDisplay.v
deleted file mode 100644
index 6ba0cf03b..000000000
--- a/src/Specific/montgomery32_2e414m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e414m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e414m17/feopp.v b/src/Specific/montgomery32_2e414m17/feopp.v
deleted file mode 100644
index aa036d4e5..000000000
--- a/src/Specific/montgomery32_2e414m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e414m17/feoppDisplay.v b/src/Specific/montgomery32_2e414m17/feoppDisplay.v
deleted file mode 100644
index 8a8ae6ad0..000000000
--- a/src/Specific/montgomery32_2e414m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e414m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e414m17/fesquare.c b/src/Specific/montgomery32_2e414m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e414m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e414m17/fesub.v b/src/Specific/montgomery32_2e414m17/fesub.v
deleted file mode 100644
index 142786f7e..000000000
--- a/src/Specific/montgomery32_2e414m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e414m17/fesubDisplay.v b/src/Specific/montgomery32_2e414m17/fesubDisplay.v
deleted file mode 100644
index 07381b1e8..000000000
--- a/src/Specific/montgomery32_2e414m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e414m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e414m17/CurveParameters.v b/src/Specific/montgomery32_2e414m17_13limbs/CurveParameters.v
index cbe200a23..cbe200a23 100644
--- a/src/Specific/montgomery32_2e414m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e414m17_13limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/Synthesis.v b/src/Specific/montgomery32_2e414m17_13limbs/Synthesis.v
new file mode 100644
index 000000000..afecde11b
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e414m17/compiler.sh b/src/Specific/montgomery32_2e414m17_13limbs/compiler.sh
index 6d0f43739..6d0f43739 100755
--- a/src/Specific/montgomery32_2e414m17/compiler.sh
+++ b/src/Specific/montgomery32_2e414m17_13limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e414m17/compilerxx.sh b/src/Specific/montgomery32_2e414m17_13limbs/compilerxx.sh
index 8ffc228dd..8ffc228dd 100755
--- a/src/Specific/montgomery32_2e414m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e414m17_13limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/feadd.v b/src/Specific/montgomery32_2e414m17_13limbs/feadd.v
new file mode 100644
index 000000000..278785798
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/feaddDisplay.v b/src/Specific/montgomery32_2e414m17_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..1f124bcc6
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/femul.v b/src/Specific/montgomery32_2e414m17_13limbs/femul.v
new file mode 100644
index 000000000..e40320788
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/femulDisplay.v b/src/Specific/montgomery32_2e414m17_13limbs/femulDisplay.v
new file mode 100644
index 000000000..d9d182558
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/fenz.v b/src/Specific/montgomery32_2e414m17_13limbs/fenz.v
new file mode 100644
index 000000000..4a23baf4e
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/fenzDisplay.v b/src/Specific/montgomery32_2e414m17_13limbs/fenzDisplay.v
new file mode 100644
index 000000000..bb96b9b27
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/feopp.v b/src/Specific/montgomery32_2e414m17_13limbs/feopp.v
new file mode 100644
index 000000000..3a522b003
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/feoppDisplay.v b/src/Specific/montgomery32_2e414m17_13limbs/feoppDisplay.v
new file mode 100644
index 000000000..93300836c
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/fesub.v b/src/Specific/montgomery32_2e414m17_13limbs/fesub.v
new file mode 100644
index 000000000..017459a22
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e414m17_13limbs/fesubDisplay.v b/src/Specific/montgomery32_2e414m17_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..e0881e2f1
--- /dev/null
+++ b/src/Specific/montgomery32_2e414m17_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e414m17_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e414m17/py_interpreter.sh b/src/Specific/montgomery32_2e414m17_13limbs/py_interpreter.sh
index 1d0fb48f6..1d0fb48f6 100755
--- a/src/Specific/montgomery32_2e414m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e414m17_13limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v b/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v
deleted file mode 100644
index aca1d48a2..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feadd.c b/src/Specific/montgomery32_2e416m2e208m1/feadd.c
deleted file mode 100644
index 400048e0d..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feadd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint32_t x53; uint8_t x54 = _addcarryx_u32(0x0, x5, x29, &x53);
- { uint32_t x56; uint8_t x57 = _addcarryx_u32(x54, x7, x31, &x56);
- { uint32_t x59; uint8_t x60 = _addcarryx_u32(x57, x9, x33, &x59);
- { uint32_t x62; uint8_t x63 = _addcarryx_u32(x60, x11, x35, &x62);
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(x63, x13, x37, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x15, x39, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x17, x41, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x19, x43, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x21, x45, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x23, x47, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x25, x49, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x27, x51, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x26, x50, &x89);
- { uint32_t x92; uint8_t x93 = _subborrow_u32(0x0, x53, 0xffffffff, &x92);
- { uint32_t x95; uint8_t x96 = _subborrow_u32(x93, x56, 0xffffffff, &x95);
- { uint32_t x98; uint8_t x99 = _subborrow_u32(x96, x59, 0xffffffff, &x98);
- { uint32_t x101; uint8_t x102 = _subborrow_u32(x99, x62, 0xffffffff, &x101);
- { uint32_t x104; uint8_t x105 = _subborrow_u32(x102, x65, 0xffffffff, &x104);
- { uint32_t x107; uint8_t x108 = _subborrow_u32(x105, x68, 0xffffffff, &x107);
- { uint32_t x110; uint8_t x111 = _subborrow_u32(x108, x71, 0xfffeffff, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(x111, x74, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x77, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x80, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x83, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x86, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x89, 0xffffffff, &x128);
- { uint32_t _; uint8_t x132 = _subborrow_u32(x129, x90, 0x0, &_);
- { uint32_t x133 = cmovznz32(x132, x128, x89);
- { uint32_t x134 = cmovznz32(x132, x125, x86);
- { uint32_t x135 = cmovznz32(x132, x122, x83);
- { uint32_t x136 = cmovznz32(x132, x119, x80);
- { uint32_t x137 = cmovznz32(x132, x116, x77);
- { uint32_t x138 = cmovznz32(x132, x113, x74);
- { uint32_t x139 = cmovznz32(x132, x110, x71);
- { uint32_t x140 = cmovznz32(x132, x107, x68);
- { uint32_t x141 = cmovznz32(x132, x104, x65);
- { uint32_t x142 = cmovznz32(x132, x101, x62);
- { uint32_t x143 = cmovznz32(x132, x98, x59);
- { uint32_t x144 = cmovznz32(x132, x95, x56);
- { uint32_t x145 = cmovznz32(x132, x92, x53);
- out[0] = x145;
- out[1] = x144;
- out[2] = x143;
- out[3] = x142;
- out[4] = x141;
- out[5] = x140;
- out[6] = x139;
- out[7] = x138;
- out[8] = x137;
- out[9] = x136;
- out[10] = x135;
- out[11] = x134;
- out[12] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feadd.v b/src/Specific/montgomery32_2e416m2e208m1/feadd.v
deleted file mode 100644
index 021f66ac8..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.log b/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.log
deleted file mode 100644
index de529b044..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint32_t x53, uint8_t x54 = addcarryx_u32(0x0, x5, x29);
- uint32_t x56, uint8_t x57 = addcarryx_u32(x54, x7, x31);
- uint32_t x59, uint8_t x60 = addcarryx_u32(x57, x9, x33);
- uint32_t x62, uint8_t x63 = addcarryx_u32(x60, x11, x35);
- uint32_t x65, uint8_t x66 = addcarryx_u32(x63, x13, x37);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x15, x39);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x17, x41);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x19, x43);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x21, x45);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x23, x47);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x25, x49);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x27, x51);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x26, x50);
- uint32_t x92, uint8_t x93 = subborrow_u32(0x0, x53, 0xffffffff);
- uint32_t x95, uint8_t x96 = subborrow_u32(x93, x56, 0xffffffff);
- uint32_t x98, uint8_t x99 = subborrow_u32(x96, x59, 0xffffffff);
- uint32_t x101, uint8_t x102 = subborrow_u32(x99, x62, 0xffffffff);
- uint32_t x104, uint8_t x105 = subborrow_u32(x102, x65, 0xffffffff);
- uint32_t x107, uint8_t x108 = subborrow_u32(x105, x68, 0xffffffff);
- uint32_t x110, uint8_t x111 = subborrow_u32(x108, x71, 0xfffeffff);
- uint32_t x113, uint8_t x114 = subborrow_u32(x111, x74, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x77, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x80, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x83, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x86, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x89, 0xffffffff);
- uint32_t _, uint8_t x132 = subborrow_u32(x129, x90, 0x0);
- uint32_t x133 = cmovznz32(x132, x128, x89);
- uint32_t x134 = cmovznz32(x132, x125, x86);
- uint32_t x135 = cmovznz32(x132, x122, x83);
- uint32_t x136 = cmovznz32(x132, x119, x80);
- uint32_t x137 = cmovznz32(x132, x116, x77);
- uint32_t x138 = cmovznz32(x132, x113, x74);
- uint32_t x139 = cmovznz32(x132, x110, x71);
- uint32_t x140 = cmovznz32(x132, x107, x68);
- uint32_t x141 = cmovznz32(x132, x104, x65);
- uint32_t x142 = cmovznz32(x132, x101, x62);
- uint32_t x143 = cmovznz32(x132, x98, x59);
- uint32_t x144 = cmovznz32(x132, x95, x56);
- uint32_t x145 = cmovznz32(x132, x92, x53);
- return (x133, x134, x135, x136, x137, x138, x139, x140, x141, x142, x143, x144, x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v
deleted file mode 100644
index 5afbaf9b4..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/femul.v b/src/Specific/montgomery32_2e416m2e208m1/femul.v
deleted file mode 100644
index db4e771f3..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v
deleted file mode 100644
index 2ccd8d416..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenz.c b/src/Specific/montgomery32_2e416m2e208m1/fenz.c
deleted file mode 100644
index c34513bef..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fenz.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x25 = (x24 | x23);
- { uint32_t x26 = (x22 | x25);
- { uint32_t x27 = (x20 | x26);
- { uint32_t x28 = (x18 | x27);
- { uint32_t x29 = (x16 | x28);
- { uint32_t x30 = (x14 | x29);
- { uint32_t x31 = (x12 | x30);
- { uint32_t x32 = (x10 | x31);
- { uint32_t x33 = (x8 | x32);
- { uint32_t x34 = (x6 | x33);
- { uint32_t x35 = (x4 | x34);
- { uint32_t x36 = (x2 | x35);
- out[0] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenz.v b/src/Specific/montgomery32_2e416m2e208m1/fenz.v
deleted file mode 100644
index 11ecf2d41..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.log b/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.log
deleted file mode 100644
index be61ce3d7..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x25 = (x24 | x23);
- uint32_t x26 = (x22 | x25);
- uint32_t x27 = (x20 | x26);
- uint32_t x28 = (x18 | x27);
- uint32_t x29 = (x16 | x28);
- uint32_t x30 = (x14 | x29);
- uint32_t x31 = (x12 | x30);
- uint32_t x32 = (x10 | x31);
- uint32_t x33 = (x8 | x32);
- uint32_t x34 = (x6 | x33);
- uint32_t x35 = (x4 | x34);
- uint32_t x36 = (x2 | x35);
- return x36)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v
deleted file mode 100644
index 2c914e765..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feopp.v b/src/Specific/montgomery32_2e416m2e208m1/feopp.v
deleted file mode 100644
index e432b0249..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v
deleted file mode 100644
index 5206bd13b..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fesquare.c b/src/Specific/montgomery32_2e416m2e208m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fesub.v b/src/Specific/montgomery32_2e416m2e208m1/fesub.v
deleted file mode 100644
index 159e87eb3..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v b/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v
deleted file mode 100644
index c85bd15f8..000000000
--- a/src/Specific/montgomery32_2e416m2e208m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e416m2e208m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/CurveParameters.v
index 199f2b1c8..199f2b1c8 100644
--- a/src/Specific/montgomery32_2e416m2e208m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/Synthesis.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/Synthesis.v
new file mode 100644
index 000000000..32d191a87
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/compiler.sh b/src/Specific/montgomery32_2e416m2e208m1_13limbs/compiler.sh
index ad5040cad..ad5040cad 100755
--- a/src/Specific/montgomery32_2e416m2e208m1/compiler.sh
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e416m2e208m1/compilerxx.sh b/src/Specific/montgomery32_2e416m2e208m1_13limbs/compilerxx.sh
index b78060fc6..b78060fc6 100755
--- a/src/Specific/montgomery32_2e416m2e208m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/feadd.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feadd.v
new file mode 100644
index 000000000..6caf323a4
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/feaddDisplay.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..00ad389f7
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/femul.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/femul.v
new file mode 100644
index 000000000..9bbf3530e
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/femulDisplay.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/femulDisplay.v
new file mode 100644
index 000000000..442fcec84
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenz.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenz.v
new file mode 100644
index 000000000..2f2efea07
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenzDisplay.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenzDisplay.v
new file mode 100644
index 000000000..771394499
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/feopp.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feopp.v
new file mode 100644
index 000000000..4b0b1d12d
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/feoppDisplay.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feoppDisplay.v
new file mode 100644
index 000000000..aeda3cb17
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesub.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesub.v
new file mode 100644
index 000000000..6e7e7768d
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesubDisplay.v b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..91083932e
--- /dev/null
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e416m2e208m1_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e416m2e208m1/py_interpreter.sh b/src/Specific/montgomery32_2e416m2e208m1_13limbs/py_interpreter.sh
index d760d16d7..d760d16d7 100755
--- a/src/Specific/montgomery32_2e416m2e208m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e416m2e208m1_13limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e444m17/Synthesis.v b/src/Specific/montgomery32_2e444m17/Synthesis.v
deleted file mode 100644
index d846b3939..000000000
--- a/src/Specific/montgomery32_2e444m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e444m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e444m17/feadd.c b/src/Specific/montgomery32_2e444m17/feadd.c
deleted file mode 100644
index 27173d59a..000000000
--- a/src/Specific/montgomery32_2e444m17/feadd.c
+++ /dev/null
@@ -1,88 +0,0 @@
-static void feadd(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(0x0, x5, x31, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x7, x33, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x9, x35, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x11, x37, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x13, x39, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x15, x41, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x17, x43, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x19, x45, &x78);
- { uint32_t x81; uint8_t x82 = _addcarryx_u32(x79, x21, x47, &x81);
- { uint32_t x84; uint8_t x85 = _addcarryx_u32(x82, x23, x49, &x84);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x25, x51, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x27, x53, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x29, x55, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x28, x54, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(0x0, x57, 0xffffffef, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x60, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x63, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x66, 0xffffffff, &x108);
- { uint32_t x111; uint8_t x112 = _subborrow_u32(x109, x69, 0xffffffff, &x111);
- { uint32_t x114; uint8_t x115 = _subborrow_u32(x112, x72, 0xffffffff, &x114);
- { uint32_t x117; uint8_t x118 = _subborrow_u32(x115, x75, 0xffffffff, &x117);
- { uint32_t x120; uint8_t x121 = _subborrow_u32(x118, x78, 0xffffffff, &x120);
- { uint32_t x123; uint8_t x124 = _subborrow_u32(x121, x81, 0xffffffff, &x123);
- { uint32_t x126; uint8_t x127 = _subborrow_u32(x124, x84, 0xffffffff, &x126);
- { uint32_t x129; uint8_t x130 = _subborrow_u32(x127, x87, 0xffffffff, &x129);
- { uint32_t x132; uint8_t x133 = _subborrow_u32(x130, x90, 0xffffffff, &x132);
- { uint32_t x135; uint8_t x136 = _subborrow_u32(x133, x93, 0xffffffff, &x135);
- { uint32_t x138; uint8_t x139 = _subborrow_u32(x136, x96, 0xfffffff, &x138);
- { uint32_t _; uint8_t x142 = _subborrow_u32(x139, x97, 0x0, &_);
- { uint32_t x143 = cmovznz32(x142, x138, x96);
- { uint32_t x144 = cmovznz32(x142, x135, x93);
- { uint32_t x145 = cmovznz32(x142, x132, x90);
- { uint32_t x146 = cmovznz32(x142, x129, x87);
- { uint32_t x147 = cmovznz32(x142, x126, x84);
- { uint32_t x148 = cmovznz32(x142, x123, x81);
- { uint32_t x149 = cmovznz32(x142, x120, x78);
- { uint32_t x150 = cmovznz32(x142, x117, x75);
- { uint32_t x151 = cmovznz32(x142, x114, x72);
- { uint32_t x152 = cmovznz32(x142, x111, x69);
- { uint32_t x153 = cmovznz32(x142, x108, x66);
- { uint32_t x154 = cmovznz32(x142, x105, x63);
- { uint32_t x155 = cmovznz32(x142, x102, x60);
- { uint32_t x156 = cmovznz32(x142, x99, x57);
- out[0] = x156;
- out[1] = x155;
- out[2] = x154;
- out[3] = x153;
- out[4] = x152;
- out[5] = x151;
- out[6] = x150;
- out[7] = x149;
- out[8] = x148;
- out[9] = x147;
- out[10] = x146;
- out[11] = x145;
- out[12] = x144;
- out[13] = x143;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e444m17/feadd.v b/src/Specific/montgomery32_2e444m17/feadd.v
deleted file mode 100644
index 047a2a8dd..000000000
--- a/src/Specific/montgomery32_2e444m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e444m17/feaddDisplay.log b/src/Specific/montgomery32_2e444m17/feaddDisplay.log
deleted file mode 100644
index 07d9c8b95..000000000
--- a/src/Specific/montgomery32_2e444m17/feaddDisplay.log
+++ /dev/null
@@ -1,50 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- uint32_t x57, uint8_t x58 = addcarryx_u32(0x0, x5, x31);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x7, x33);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x9, x35);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x11, x37);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x13, x39);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x15, x41);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x17, x43);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x19, x45);
- uint32_t x81, uint8_t x82 = addcarryx_u32(x79, x21, x47);
- uint32_t x84, uint8_t x85 = addcarryx_u32(x82, x23, x49);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x25, x51);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x27, x53);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x29, x55);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x28, x54);
- uint32_t x99, uint8_t x100 = subborrow_u32(0x0, x57, 0xffffffef);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x60, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x63, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x66, 0xffffffff);
- uint32_t x111, uint8_t x112 = subborrow_u32(x109, x69, 0xffffffff);
- uint32_t x114, uint8_t x115 = subborrow_u32(x112, x72, 0xffffffff);
- uint32_t x117, uint8_t x118 = subborrow_u32(x115, x75, 0xffffffff);
- uint32_t x120, uint8_t x121 = subborrow_u32(x118, x78, 0xffffffff);
- uint32_t x123, uint8_t x124 = subborrow_u32(x121, x81, 0xffffffff);
- uint32_t x126, uint8_t x127 = subborrow_u32(x124, x84, 0xffffffff);
- uint32_t x129, uint8_t x130 = subborrow_u32(x127, x87, 0xffffffff);
- uint32_t x132, uint8_t x133 = subborrow_u32(x130, x90, 0xffffffff);
- uint32_t x135, uint8_t x136 = subborrow_u32(x133, x93, 0xffffffff);
- uint32_t x138, uint8_t x139 = subborrow_u32(x136, x96, 0xfffffff);
- uint32_t _, uint8_t x142 = subborrow_u32(x139, x97, 0x0);
- uint32_t x143 = cmovznz32(x142, x138, x96);
- uint32_t x144 = cmovznz32(x142, x135, x93);
- uint32_t x145 = cmovznz32(x142, x132, x90);
- uint32_t x146 = cmovznz32(x142, x129, x87);
- uint32_t x147 = cmovznz32(x142, x126, x84);
- uint32_t x148 = cmovznz32(x142, x123, x81);
- uint32_t x149 = cmovznz32(x142, x120, x78);
- uint32_t x150 = cmovznz32(x142, x117, x75);
- uint32_t x151 = cmovznz32(x142, x114, x72);
- uint32_t x152 = cmovznz32(x142, x111, x69);
- uint32_t x153 = cmovznz32(x142, x108, x66);
- uint32_t x154 = cmovznz32(x142, x105, x63);
- uint32_t x155 = cmovznz32(x142, x102, x60);
- uint32_t x156 = cmovznz32(x142, x99, x57);
- return (x143, x144, x145, x146, x147, x148, x149, x150, x151, x152, x153, x154, x155, x156))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e444m17/feaddDisplay.v b/src/Specific/montgomery32_2e444m17/feaddDisplay.v
deleted file mode 100644
index ff644e874..000000000
--- a/src/Specific/montgomery32_2e444m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e444m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e444m17/femul.v b/src/Specific/montgomery32_2e444m17/femul.v
deleted file mode 100644
index 7d4771573..000000000
--- a/src/Specific/montgomery32_2e444m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e444m17/femulDisplay.v b/src/Specific/montgomery32_2e444m17/femulDisplay.v
deleted file mode 100644
index 89197fc94..000000000
--- a/src/Specific/montgomery32_2e444m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e444m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e444m17/fenz.c b/src/Specific/montgomery32_2e444m17/fenz.c
deleted file mode 100644
index 42fc27af3..000000000
--- a/src/Specific/montgomery32_2e444m17/fenz.c
+++ /dev/null
@@ -1,31 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x27 = (x26 | x25);
- { uint32_t x28 = (x24 | x27);
- { uint32_t x29 = (x22 | x28);
- { uint32_t x30 = (x20 | x29);
- { uint32_t x31 = (x18 | x30);
- { uint32_t x32 = (x16 | x31);
- { uint32_t x33 = (x14 | x32);
- { uint32_t x34 = (x12 | x33);
- { uint32_t x35 = (x10 | x34);
- { uint32_t x36 = (x8 | x35);
- { uint32_t x37 = (x6 | x36);
- { uint32_t x38 = (x4 | x37);
- { uint32_t x39 = (x2 | x38);
- out[0] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e444m17/fenz.v b/src/Specific/montgomery32_2e444m17/fenz.v
deleted file mode 100644
index 17ec2c7ff..000000000
--- a/src/Specific/montgomery32_2e444m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e444m17/fenzDisplay.log b/src/Specific/montgomery32_2e444m17/fenzDisplay.log
deleted file mode 100644
index 265fc8b8c..000000000
--- a/src/Specific/montgomery32_2e444m17/fenzDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x27 = (x26 | x25);
- uint32_t x28 = (x24 | x27);
- uint32_t x29 = (x22 | x28);
- uint32_t x30 = (x20 | x29);
- uint32_t x31 = (x18 | x30);
- uint32_t x32 = (x16 | x31);
- uint32_t x33 = (x14 | x32);
- uint32_t x34 = (x12 | x33);
- uint32_t x35 = (x10 | x34);
- uint32_t x36 = (x8 | x35);
- uint32_t x37 = (x6 | x36);
- uint32_t x38 = (x4 | x37);
- uint32_t x39 = (x2 | x38);
- return x39)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e444m17/fenzDisplay.v b/src/Specific/montgomery32_2e444m17/fenzDisplay.v
deleted file mode 100644
index 1c9012b1f..000000000
--- a/src/Specific/montgomery32_2e444m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e444m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e444m17/feopp.v b/src/Specific/montgomery32_2e444m17/feopp.v
deleted file mode 100644
index ab509d4e5..000000000
--- a/src/Specific/montgomery32_2e444m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e444m17/feoppDisplay.v b/src/Specific/montgomery32_2e444m17/feoppDisplay.v
deleted file mode 100644
index 51aa8e4fa..000000000
--- a/src/Specific/montgomery32_2e444m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e444m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e444m17/fesquare.c b/src/Specific/montgomery32_2e444m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e444m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e444m17/fesub.v b/src/Specific/montgomery32_2e444m17/fesub.v
deleted file mode 100644
index 46af0c83f..000000000
--- a/src/Specific/montgomery32_2e444m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e444m17/fesubDisplay.v b/src/Specific/montgomery32_2e444m17/fesubDisplay.v
deleted file mode 100644
index eb810ebe4..000000000
--- a/src/Specific/montgomery32_2e444m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e444m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e444m17/CurveParameters.v b/src/Specific/montgomery32_2e444m17_14limbs/CurveParameters.v
index 9911b3666..9911b3666 100644
--- a/src/Specific/montgomery32_2e444m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e444m17_14limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/Synthesis.v b/src/Specific/montgomery32_2e444m17_14limbs/Synthesis.v
new file mode 100644
index 000000000..2e898efa0
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e444m17/compiler.sh b/src/Specific/montgomery32_2e444m17_14limbs/compiler.sh
index 31c640b9a..31c640b9a 100755
--- a/src/Specific/montgomery32_2e444m17/compiler.sh
+++ b/src/Specific/montgomery32_2e444m17_14limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e444m17/compilerxx.sh b/src/Specific/montgomery32_2e444m17_14limbs/compilerxx.sh
index 6aad44b03..6aad44b03 100755
--- a/src/Specific/montgomery32_2e444m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e444m17_14limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/feadd.v b/src/Specific/montgomery32_2e444m17_14limbs/feadd.v
new file mode 100644
index 000000000..c617e1dcd
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/feaddDisplay.v b/src/Specific/montgomery32_2e444m17_14limbs/feaddDisplay.v
new file mode 100644
index 000000000..c5ce0532e
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/femul.v b/src/Specific/montgomery32_2e444m17_14limbs/femul.v
new file mode 100644
index 000000000..43f6e3801
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/femulDisplay.v b/src/Specific/montgomery32_2e444m17_14limbs/femulDisplay.v
new file mode 100644
index 000000000..e721f0531
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/fenz.v b/src/Specific/montgomery32_2e444m17_14limbs/fenz.v
new file mode 100644
index 000000000..014d61f96
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/fenzDisplay.v b/src/Specific/montgomery32_2e444m17_14limbs/fenzDisplay.v
new file mode 100644
index 000000000..55b547264
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/feopp.v b/src/Specific/montgomery32_2e444m17_14limbs/feopp.v
new file mode 100644
index 000000000..85511f3c5
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/feoppDisplay.v b/src/Specific/montgomery32_2e444m17_14limbs/feoppDisplay.v
new file mode 100644
index 000000000..1012b495b
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/fesub.v b/src/Specific/montgomery32_2e444m17_14limbs/fesub.v
new file mode 100644
index 000000000..fd382b473
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e444m17_14limbs/fesubDisplay.v b/src/Specific/montgomery32_2e444m17_14limbs/fesubDisplay.v
new file mode 100644
index 000000000..77fd2fa6b
--- /dev/null
+++ b/src/Specific/montgomery32_2e444m17_14limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e444m17_14limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e444m17/py_interpreter.sh b/src/Specific/montgomery32_2e444m17_14limbs/py_interpreter.sh
index ac55d629a..ac55d629a 100755
--- a/src/Specific/montgomery32_2e444m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e444m17_14limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v b/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v
deleted file mode 100644
index 252880836..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feadd.c b/src/Specific/montgomery32_2e448m2e224m1/feadd.c
deleted file mode 100644
index be0570114..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feadd.c
+++ /dev/null
@@ -1,88 +0,0 @@
-static void feadd(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- { uint32_t x57; uint8_t x58 = _addcarryx_u32(0x0, x5, x31, &x57);
- { uint32_t x60; uint8_t x61 = _addcarryx_u32(x58, x7, x33, &x60);
- { uint32_t x63; uint8_t x64 = _addcarryx_u32(x61, x9, x35, &x63);
- { uint32_t x66; uint8_t x67 = _addcarryx_u32(x64, x11, x37, &x66);
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(x67, x13, x39, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x15, x41, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x17, x43, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x19, x45, &x78);
- { uint32_t x81; uint8_t x82 = _addcarryx_u32(x79, x21, x47, &x81);
- { uint32_t x84; uint8_t x85 = _addcarryx_u32(x82, x23, x49, &x84);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x25, x51, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x27, x53, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x29, x55, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x28, x54, &x96);
- { uint32_t x99; uint8_t x100 = _subborrow_u32(0x0, x57, 0xffffffff, &x99);
- { uint32_t x102; uint8_t x103 = _subborrow_u32(x100, x60, 0xffffffff, &x102);
- { uint32_t x105; uint8_t x106 = _subborrow_u32(x103, x63, 0xffffffff, &x105);
- { uint32_t x108; uint8_t x109 = _subborrow_u32(x106, x66, 0xffffffff, &x108);
- { uint32_t x111; uint8_t x112 = _subborrow_u32(x109, x69, 0xffffffff, &x111);
- { uint32_t x114; uint8_t x115 = _subborrow_u32(x112, x72, 0xffffffff, &x114);
- { uint32_t x117; uint8_t x118 = _subborrow_u32(x115, x75, 0xffffffff, &x117);
- { uint32_t x120; uint8_t x121 = _subborrow_u32(x118, x78, 0xfffffffe, &x120);
- { uint32_t x123; uint8_t x124 = _subborrow_u32(x121, x81, 0xffffffff, &x123);
- { uint32_t x126; uint8_t x127 = _subborrow_u32(x124, x84, 0xffffffff, &x126);
- { uint32_t x129; uint8_t x130 = _subborrow_u32(x127, x87, 0xffffffff, &x129);
- { uint32_t x132; uint8_t x133 = _subborrow_u32(x130, x90, 0xffffffff, &x132);
- { uint32_t x135; uint8_t x136 = _subborrow_u32(x133, x93, 0xffffffff, &x135);
- { uint32_t x138; uint8_t x139 = _subborrow_u32(x136, x96, 0xffffffff, &x138);
- { uint32_t _; uint8_t x142 = _subborrow_u32(x139, x97, 0x0, &_);
- { uint32_t x143 = cmovznz32(x142, x138, x96);
- { uint32_t x144 = cmovznz32(x142, x135, x93);
- { uint32_t x145 = cmovznz32(x142, x132, x90);
- { uint32_t x146 = cmovznz32(x142, x129, x87);
- { uint32_t x147 = cmovznz32(x142, x126, x84);
- { uint32_t x148 = cmovznz32(x142, x123, x81);
- { uint32_t x149 = cmovznz32(x142, x120, x78);
- { uint32_t x150 = cmovznz32(x142, x117, x75);
- { uint32_t x151 = cmovznz32(x142, x114, x72);
- { uint32_t x152 = cmovznz32(x142, x111, x69);
- { uint32_t x153 = cmovznz32(x142, x108, x66);
- { uint32_t x154 = cmovznz32(x142, x105, x63);
- { uint32_t x155 = cmovznz32(x142, x102, x60);
- { uint32_t x156 = cmovznz32(x142, x99, x57);
- out[0] = x156;
- out[1] = x155;
- out[2] = x154;
- out[3] = x153;
- out[4] = x152;
- out[5] = x151;
- out[6] = x150;
- out[7] = x149;
- out[8] = x148;
- out[9] = x147;
- out[10] = x146;
- out[11] = x145;
- out[12] = x144;
- out[13] = x143;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feadd.v b/src/Specific/montgomery32_2e448m2e224m1/feadd.v
deleted file mode 100644
index 6d652b861..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.log b/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.log
deleted file mode 100644
index 71a9485c1..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.log
+++ /dev/null
@@ -1,50 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- uint32_t x57, uint8_t x58 = addcarryx_u32(0x0, x5, x31);
- uint32_t x60, uint8_t x61 = addcarryx_u32(x58, x7, x33);
- uint32_t x63, uint8_t x64 = addcarryx_u32(x61, x9, x35);
- uint32_t x66, uint8_t x67 = addcarryx_u32(x64, x11, x37);
- uint32_t x69, uint8_t x70 = addcarryx_u32(x67, x13, x39);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x15, x41);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x17, x43);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x19, x45);
- uint32_t x81, uint8_t x82 = addcarryx_u32(x79, x21, x47);
- uint32_t x84, uint8_t x85 = addcarryx_u32(x82, x23, x49);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x25, x51);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x27, x53);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x29, x55);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x28, x54);
- uint32_t x99, uint8_t x100 = subborrow_u32(0x0, x57, 0xffffffff);
- uint32_t x102, uint8_t x103 = subborrow_u32(x100, x60, 0xffffffff);
- uint32_t x105, uint8_t x106 = subborrow_u32(x103, x63, 0xffffffff);
- uint32_t x108, uint8_t x109 = subborrow_u32(x106, x66, 0xffffffff);
- uint32_t x111, uint8_t x112 = subborrow_u32(x109, x69, 0xffffffff);
- uint32_t x114, uint8_t x115 = subborrow_u32(x112, x72, 0xffffffff);
- uint32_t x117, uint8_t x118 = subborrow_u32(x115, x75, 0xffffffff);
- uint32_t x120, uint8_t x121 = subborrow_u32(x118, x78, 0xfffffffe);
- uint32_t x123, uint8_t x124 = subborrow_u32(x121, x81, 0xffffffff);
- uint32_t x126, uint8_t x127 = subborrow_u32(x124, x84, 0xffffffff);
- uint32_t x129, uint8_t x130 = subborrow_u32(x127, x87, 0xffffffff);
- uint32_t x132, uint8_t x133 = subborrow_u32(x130, x90, 0xffffffff);
- uint32_t x135, uint8_t x136 = subborrow_u32(x133, x93, 0xffffffff);
- uint32_t x138, uint8_t x139 = subborrow_u32(x136, x96, 0xffffffff);
- uint32_t _, uint8_t x142 = subborrow_u32(x139, x97, 0x0);
- uint32_t x143 = cmovznz32(x142, x138, x96);
- uint32_t x144 = cmovznz32(x142, x135, x93);
- uint32_t x145 = cmovznz32(x142, x132, x90);
- uint32_t x146 = cmovznz32(x142, x129, x87);
- uint32_t x147 = cmovznz32(x142, x126, x84);
- uint32_t x148 = cmovznz32(x142, x123, x81);
- uint32_t x149 = cmovznz32(x142, x120, x78);
- uint32_t x150 = cmovznz32(x142, x117, x75);
- uint32_t x151 = cmovznz32(x142, x114, x72);
- uint32_t x152 = cmovznz32(x142, x111, x69);
- uint32_t x153 = cmovznz32(x142, x108, x66);
- uint32_t x154 = cmovznz32(x142, x105, x63);
- uint32_t x155 = cmovznz32(x142, x102, x60);
- uint32_t x156 = cmovznz32(x142, x99, x57);
- return (x143, x144, x145, x146, x147, x148, x149, x150, x151, x152, x153, x154, x155, x156))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v
deleted file mode 100644
index 0269a95df..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/femul.v b/src/Specific/montgomery32_2e448m2e224m1/femul.v
deleted file mode 100644
index c778c4a69..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v
deleted file mode 100644
index 2320978bd..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenz.c b/src/Specific/montgomery32_2e448m2e224m1/fenz.c
deleted file mode 100644
index 42fc27af3..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fenz.c
+++ /dev/null
@@ -1,31 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x27 = (x26 | x25);
- { uint32_t x28 = (x24 | x27);
- { uint32_t x29 = (x22 | x28);
- { uint32_t x30 = (x20 | x29);
- { uint32_t x31 = (x18 | x30);
- { uint32_t x32 = (x16 | x31);
- { uint32_t x33 = (x14 | x32);
- { uint32_t x34 = (x12 | x33);
- { uint32_t x35 = (x10 | x34);
- { uint32_t x36 = (x8 | x35);
- { uint32_t x37 = (x6 | x36);
- { uint32_t x38 = (x4 | x37);
- { uint32_t x39 = (x2 | x38);
- out[0] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenz.v b/src/Specific/montgomery32_2e448m2e224m1/fenz.v
deleted file mode 100644
index 9752fba73..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.log b/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.log
deleted file mode 100644
index 265fc8b8c..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x27 = (x26 | x25);
- uint32_t x28 = (x24 | x27);
- uint32_t x29 = (x22 | x28);
- uint32_t x30 = (x20 | x29);
- uint32_t x31 = (x18 | x30);
- uint32_t x32 = (x16 | x31);
- uint32_t x33 = (x14 | x32);
- uint32_t x34 = (x12 | x33);
- uint32_t x35 = (x10 | x34);
- uint32_t x36 = (x8 | x35);
- uint32_t x37 = (x6 | x36);
- uint32_t x38 = (x4 | x37);
- uint32_t x39 = (x2 | x38);
- return x39)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v
deleted file mode 100644
index 1042b4537..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feopp.v b/src/Specific/montgomery32_2e448m2e224m1/feopp.v
deleted file mode 100644
index 8d50b78a3..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v
deleted file mode 100644
index 11d4f739c..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fesquare.c b/src/Specific/montgomery32_2e448m2e224m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fesub.v b/src/Specific/montgomery32_2e448m2e224m1/fesub.v
deleted file mode 100644
index df871a121..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v b/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v
deleted file mode 100644
index 1925f15f3..000000000
--- a/src/Specific/montgomery32_2e448m2e224m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e448m2e224m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/CurveParameters.v
index 87cb9da35..87cb9da35 100644
--- a/src/Specific/montgomery32_2e448m2e224m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/Synthesis.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/Synthesis.v
new file mode 100644
index 000000000..eb803fa67
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/compiler.sh b/src/Specific/montgomery32_2e448m2e224m1_14limbs/compiler.sh
index 60af71a8c..60af71a8c 100755
--- a/src/Specific/montgomery32_2e448m2e224m1/compiler.sh
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e448m2e224m1/compilerxx.sh b/src/Specific/montgomery32_2e448m2e224m1_14limbs/compilerxx.sh
index 9dca74728..9dca74728 100755
--- a/src/Specific/montgomery32_2e448m2e224m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/feadd.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feadd.v
new file mode 100644
index 000000000..c1e308867
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/feaddDisplay.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feaddDisplay.v
new file mode 100644
index 000000000..070d26dba
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/femul.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/femul.v
new file mode 100644
index 000000000..054557c78
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/femulDisplay.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/femulDisplay.v
new file mode 100644
index 000000000..45a9db438
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenz.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenz.v
new file mode 100644
index 000000000..2815d6e08
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenzDisplay.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenzDisplay.v
new file mode 100644
index 000000000..05b3cabdf
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/feopp.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feopp.v
new file mode 100644
index 000000000..ea57ad51d
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/feoppDisplay.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feoppDisplay.v
new file mode 100644
index 000000000..37adbbacc
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesub.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesub.v
new file mode 100644
index 000000000..dd3a13647
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesubDisplay.v b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesubDisplay.v
new file mode 100644
index 000000000..eb0b7a879
--- /dev/null
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e448m2e224m1_14limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e448m2e224m1/py_interpreter.sh b/src/Specific/montgomery32_2e448m2e224m1_14limbs/py_interpreter.sh
index 7485cb514..7485cb514 100755
--- a/src/Specific/montgomery32_2e448m2e224m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e448m2e224m1_14limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v b/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v
deleted file mode 100644
index 1bf26730a..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feadd.c b/src/Specific/montgomery32_2e450m2e225m1/feadd.c
deleted file mode 100644
index 3fad66efb..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feadd.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(0x0, x5, x33, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x7, x35, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x9, x37, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x11, x39, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x13, x41, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x15, x43, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x17, x45, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x19, x47, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x21, x49, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x23, x51, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x25, x53, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x27, x55, &x94);
- { uint32_t x97; uint8_t x98 = _addcarryx_u32(x95, x29, x57, &x97);
- { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x31, x59, &x100);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x30, x58, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(0x0, x61, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x64, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x67, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x70, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x73, 0xffffffff, &x118);
- { uint32_t x121; uint8_t x122 = _subborrow_u32(x119, x76, 0xffffffff, &x121);
- { uint32_t x124; uint8_t x125 = _subborrow_u32(x122, x79, 0xffffffff, &x124);
- { uint32_t x127; uint8_t x128 = _subborrow_u32(x125, x82, 0xfffffffd, &x127);
- { uint32_t x130; uint8_t x131 = _subborrow_u32(x128, x85, 0xffffffff, &x130);
- { uint32_t x133; uint8_t x134 = _subborrow_u32(x131, x88, 0xffffffff, &x133);
- { uint32_t x136; uint8_t x137 = _subborrow_u32(x134, x91, 0xffffffff, &x136);
- { uint32_t x139; uint8_t x140 = _subborrow_u32(x137, x94, 0xffffffff, &x139);
- { uint32_t x142; uint8_t x143 = _subborrow_u32(x140, x97, 0xffffffff, &x142);
- { uint32_t x145; uint8_t x146 = _subborrow_u32(x143, x100, 0xffffffff, &x145);
- { uint32_t x148; uint8_t x149 = _subborrow_u32(x146, x103, 0x3, &x148);
- { uint32_t _; uint8_t x152 = _subborrow_u32(x149, x104, 0x0, &_);
- { uint32_t x153 = cmovznz32(x152, x148, x103);
- { uint32_t x154 = cmovznz32(x152, x145, x100);
- { uint32_t x155 = cmovznz32(x152, x142, x97);
- { uint32_t x156 = cmovznz32(x152, x139, x94);
- { uint32_t x157 = cmovznz32(x152, x136, x91);
- { uint32_t x158 = cmovznz32(x152, x133, x88);
- { uint32_t x159 = cmovznz32(x152, x130, x85);
- { uint32_t x160 = cmovznz32(x152, x127, x82);
- { uint32_t x161 = cmovznz32(x152, x124, x79);
- { uint32_t x162 = cmovznz32(x152, x121, x76);
- { uint32_t x163 = cmovznz32(x152, x118, x73);
- { uint32_t x164 = cmovznz32(x152, x115, x70);
- { uint32_t x165 = cmovznz32(x152, x112, x67);
- { uint32_t x166 = cmovznz32(x152, x109, x64);
- { uint32_t x167 = cmovznz32(x152, x106, x61);
- out[0] = x167;
- out[1] = x166;
- out[2] = x165;
- out[3] = x164;
- out[4] = x163;
- out[5] = x162;
- out[6] = x161;
- out[7] = x160;
- out[8] = x159;
- out[9] = x158;
- out[10] = x157;
- out[11] = x156;
- out[12] = x155;
- out[13] = x154;
- out[14] = x153;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feadd.v b/src/Specific/montgomery32_2e450m2e225m1/feadd.v
deleted file mode 100644
index 50e823537..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.log b/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.log
deleted file mode 100644
index 5315b7fe3..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint32_t x61, uint8_t x62 = addcarryx_u32(0x0, x5, x33);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x7, x35);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x9, x37);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x11, x39);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x13, x41);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x15, x43);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x17, x45);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x19, x47);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x21, x49);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x23, x51);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x25, x53);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x27, x55);
- uint32_t x97, uint8_t x98 = addcarryx_u32(x95, x29, x57);
- uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x31, x59);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x30, x58);
- uint32_t x106, uint8_t x107 = subborrow_u32(0x0, x61, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x64, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x67, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x70, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x73, 0xffffffff);
- uint32_t x121, uint8_t x122 = subborrow_u32(x119, x76, 0xffffffff);
- uint32_t x124, uint8_t x125 = subborrow_u32(x122, x79, 0xffffffff);
- uint32_t x127, uint8_t x128 = subborrow_u32(x125, x82, 0xfffffffd);
- uint32_t x130, uint8_t x131 = subborrow_u32(x128, x85, 0xffffffff);
- uint32_t x133, uint8_t x134 = subborrow_u32(x131, x88, 0xffffffff);
- uint32_t x136, uint8_t x137 = subborrow_u32(x134, x91, 0xffffffff);
- uint32_t x139, uint8_t x140 = subborrow_u32(x137, x94, 0xffffffff);
- uint32_t x142, uint8_t x143 = subborrow_u32(x140, x97, 0xffffffff);
- uint32_t x145, uint8_t x146 = subborrow_u32(x143, x100, 0xffffffff);
- uint32_t x148, uint8_t x149 = subborrow_u32(x146, x103, 0x3);
- uint32_t _, uint8_t x152 = subborrow_u32(x149, x104, 0x0);
- uint32_t x153 = cmovznz32(x152, x148, x103);
- uint32_t x154 = cmovznz32(x152, x145, x100);
- uint32_t x155 = cmovznz32(x152, x142, x97);
- uint32_t x156 = cmovznz32(x152, x139, x94);
- uint32_t x157 = cmovznz32(x152, x136, x91);
- uint32_t x158 = cmovznz32(x152, x133, x88);
- uint32_t x159 = cmovznz32(x152, x130, x85);
- uint32_t x160 = cmovznz32(x152, x127, x82);
- uint32_t x161 = cmovznz32(x152, x124, x79);
- uint32_t x162 = cmovznz32(x152, x121, x76);
- uint32_t x163 = cmovznz32(x152, x118, x73);
- uint32_t x164 = cmovznz32(x152, x115, x70);
- uint32_t x165 = cmovznz32(x152, x112, x67);
- uint32_t x166 = cmovznz32(x152, x109, x64);
- uint32_t x167 = cmovznz32(x152, x106, x61);
- return (x153, x154, x155, x156, x157, x158, x159, x160, x161, x162, x163, x164, x165, x166, x167))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v
deleted file mode 100644
index 77b855cb9..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/femul.v b/src/Specific/montgomery32_2e450m2e225m1/femul.v
deleted file mode 100644
index e9f718053..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v
deleted file mode 100644
index 8a758cc76..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenz.c b/src/Specific/montgomery32_2e450m2e225m1/fenz.c
deleted file mode 100644
index d66853caf..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fenz.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x29 = (x28 | x27);
- { uint32_t x30 = (x26 | x29);
- { uint32_t x31 = (x24 | x30);
- { uint32_t x32 = (x22 | x31);
- { uint32_t x33 = (x20 | x32);
- { uint32_t x34 = (x18 | x33);
- { uint32_t x35 = (x16 | x34);
- { uint32_t x36 = (x14 | x35);
- { uint32_t x37 = (x12 | x36);
- { uint32_t x38 = (x10 | x37);
- { uint32_t x39 = (x8 | x38);
- { uint32_t x40 = (x6 | x39);
- { uint32_t x41 = (x4 | x40);
- { uint32_t x42 = (x2 | x41);
- out[0] = x42;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenz.v b/src/Specific/montgomery32_2e450m2e225m1/fenz.v
deleted file mode 100644
index b0a559e31..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.log b/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.log
deleted file mode 100644
index 8907c292b..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.log
+++ /dev/null
@@ -1,21 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x29 = (x28 | x27);
- uint32_t x30 = (x26 | x29);
- uint32_t x31 = (x24 | x30);
- uint32_t x32 = (x22 | x31);
- uint32_t x33 = (x20 | x32);
- uint32_t x34 = (x18 | x33);
- uint32_t x35 = (x16 | x34);
- uint32_t x36 = (x14 | x35);
- uint32_t x37 = (x12 | x36);
- uint32_t x38 = (x10 | x37);
- uint32_t x39 = (x8 | x38);
- uint32_t x40 = (x6 | x39);
- uint32_t x41 = (x4 | x40);
- uint32_t x42 = (x2 | x41);
- return x42)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v
deleted file mode 100644
index f62f6283f..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feopp.v b/src/Specific/montgomery32_2e450m2e225m1/feopp.v
deleted file mode 100644
index 454ce89fe..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v
deleted file mode 100644
index 1abe48357..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fesquare.c b/src/Specific/montgomery32_2e450m2e225m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fesub.v b/src/Specific/montgomery32_2e450m2e225m1/fesub.v
deleted file mode 100644
index 6fa99a4fe..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v b/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v
deleted file mode 100644
index d782d2629..000000000
--- a/src/Specific/montgomery32_2e450m2e225m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e450m2e225m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/CurveParameters.v
index ad40479c6..ad40479c6 100644
--- a/src/Specific/montgomery32_2e450m2e225m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/Synthesis.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/Synthesis.v
new file mode 100644
index 000000000..b93b0e892
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/compiler.sh b/src/Specific/montgomery32_2e450m2e225m1_15limbs/compiler.sh
index 8fa7c7044..8fa7c7044 100755
--- a/src/Specific/montgomery32_2e450m2e225m1/compiler.sh
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e450m2e225m1/compilerxx.sh b/src/Specific/montgomery32_2e450m2e225m1_15limbs/compilerxx.sh
index 225209b1d..225209b1d 100755
--- a/src/Specific/montgomery32_2e450m2e225m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/feadd.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feadd.v
new file mode 100644
index 000000000..0b1f83d64
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/feaddDisplay.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..80bbee60f
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/femul.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/femul.v
new file mode 100644
index 000000000..49be40cc9
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/femulDisplay.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/femulDisplay.v
new file mode 100644
index 000000000..4057056b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenz.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenz.v
new file mode 100644
index 000000000..5d4164569
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenzDisplay.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenzDisplay.v
new file mode 100644
index 000000000..02aba4332
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/feopp.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feopp.v
new file mode 100644
index 000000000..50cc53453
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/feoppDisplay.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feoppDisplay.v
new file mode 100644
index 000000000..8adcfae5e
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesub.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesub.v
new file mode 100644
index 000000000..fe0611b08
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesubDisplay.v b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..862043852
--- /dev/null
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e450m2e225m1_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e450m2e225m1/py_interpreter.sh b/src/Specific/montgomery32_2e450m2e225m1_15limbs/py_interpreter.sh
index 7129814fc..7129814fc 100755
--- a/src/Specific/montgomery32_2e450m2e225m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e450m2e225m1_15limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e452m3/Synthesis.v b/src/Specific/montgomery32_2e452m3/Synthesis.v
deleted file mode 100644
index ae776a81f..000000000
--- a/src/Specific/montgomery32_2e452m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e452m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e452m3/feadd.c b/src/Specific/montgomery32_2e452m3/feadd.c
deleted file mode 100644
index d9de15f48..000000000
--- a/src/Specific/montgomery32_2e452m3/feadd.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(0x0, x5, x33, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x7, x35, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x9, x37, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x11, x39, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x13, x41, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x15, x43, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x17, x45, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x19, x47, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x21, x49, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x23, x51, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x25, x53, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x27, x55, &x94);
- { uint32_t x97; uint8_t x98 = _addcarryx_u32(x95, x29, x57, &x97);
- { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x31, x59, &x100);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x30, x58, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(0x0, x61, 0xfffffffd, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x64, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x67, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x70, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x73, 0xffffffff, &x118);
- { uint32_t x121; uint8_t x122 = _subborrow_u32(x119, x76, 0xffffffff, &x121);
- { uint32_t x124; uint8_t x125 = _subborrow_u32(x122, x79, 0xffffffff, &x124);
- { uint32_t x127; uint8_t x128 = _subborrow_u32(x125, x82, 0xffffffff, &x127);
- { uint32_t x130; uint8_t x131 = _subborrow_u32(x128, x85, 0xffffffff, &x130);
- { uint32_t x133; uint8_t x134 = _subborrow_u32(x131, x88, 0xffffffff, &x133);
- { uint32_t x136; uint8_t x137 = _subborrow_u32(x134, x91, 0xffffffff, &x136);
- { uint32_t x139; uint8_t x140 = _subborrow_u32(x137, x94, 0xffffffff, &x139);
- { uint32_t x142; uint8_t x143 = _subborrow_u32(x140, x97, 0xffffffff, &x142);
- { uint32_t x145; uint8_t x146 = _subborrow_u32(x143, x100, 0xffffffff, &x145);
- { uint32_t x148; uint8_t x149 = _subborrow_u32(x146, x103, 0xf, &x148);
- { uint32_t _; uint8_t x152 = _subborrow_u32(x149, x104, 0x0, &_);
- { uint32_t x153 = cmovznz32(x152, x148, x103);
- { uint32_t x154 = cmovznz32(x152, x145, x100);
- { uint32_t x155 = cmovznz32(x152, x142, x97);
- { uint32_t x156 = cmovznz32(x152, x139, x94);
- { uint32_t x157 = cmovznz32(x152, x136, x91);
- { uint32_t x158 = cmovznz32(x152, x133, x88);
- { uint32_t x159 = cmovznz32(x152, x130, x85);
- { uint32_t x160 = cmovznz32(x152, x127, x82);
- { uint32_t x161 = cmovznz32(x152, x124, x79);
- { uint32_t x162 = cmovznz32(x152, x121, x76);
- { uint32_t x163 = cmovznz32(x152, x118, x73);
- { uint32_t x164 = cmovznz32(x152, x115, x70);
- { uint32_t x165 = cmovznz32(x152, x112, x67);
- { uint32_t x166 = cmovznz32(x152, x109, x64);
- { uint32_t x167 = cmovznz32(x152, x106, x61);
- out[0] = x167;
- out[1] = x166;
- out[2] = x165;
- out[3] = x164;
- out[4] = x163;
- out[5] = x162;
- out[6] = x161;
- out[7] = x160;
- out[8] = x159;
- out[9] = x158;
- out[10] = x157;
- out[11] = x156;
- out[12] = x155;
- out[13] = x154;
- out[14] = x153;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e452m3/feadd.v b/src/Specific/montgomery32_2e452m3/feadd.v
deleted file mode 100644
index 99541e07d..000000000
--- a/src/Specific/montgomery32_2e452m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e452m3/feaddDisplay.log b/src/Specific/montgomery32_2e452m3/feaddDisplay.log
deleted file mode 100644
index 853ad2718..000000000
--- a/src/Specific/montgomery32_2e452m3/feaddDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint32_t x61, uint8_t x62 = addcarryx_u32(0x0, x5, x33);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x7, x35);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x9, x37);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x11, x39);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x13, x41);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x15, x43);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x17, x45);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x19, x47);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x21, x49);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x23, x51);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x25, x53);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x27, x55);
- uint32_t x97, uint8_t x98 = addcarryx_u32(x95, x29, x57);
- uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x31, x59);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x30, x58);
- uint32_t x106, uint8_t x107 = subborrow_u32(0x0, x61, 0xfffffffd);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x64, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x67, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x70, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x73, 0xffffffff);
- uint32_t x121, uint8_t x122 = subborrow_u32(x119, x76, 0xffffffff);
- uint32_t x124, uint8_t x125 = subborrow_u32(x122, x79, 0xffffffff);
- uint32_t x127, uint8_t x128 = subborrow_u32(x125, x82, 0xffffffff);
- uint32_t x130, uint8_t x131 = subborrow_u32(x128, x85, 0xffffffff);
- uint32_t x133, uint8_t x134 = subborrow_u32(x131, x88, 0xffffffff);
- uint32_t x136, uint8_t x137 = subborrow_u32(x134, x91, 0xffffffff);
- uint32_t x139, uint8_t x140 = subborrow_u32(x137, x94, 0xffffffff);
- uint32_t x142, uint8_t x143 = subborrow_u32(x140, x97, 0xffffffff);
- uint32_t x145, uint8_t x146 = subborrow_u32(x143, x100, 0xffffffff);
- uint32_t x148, uint8_t x149 = subborrow_u32(x146, x103, 0xf);
- uint32_t _, uint8_t x152 = subborrow_u32(x149, x104, 0x0);
- uint32_t x153 = cmovznz32(x152, x148, x103);
- uint32_t x154 = cmovznz32(x152, x145, x100);
- uint32_t x155 = cmovznz32(x152, x142, x97);
- uint32_t x156 = cmovznz32(x152, x139, x94);
- uint32_t x157 = cmovznz32(x152, x136, x91);
- uint32_t x158 = cmovznz32(x152, x133, x88);
- uint32_t x159 = cmovznz32(x152, x130, x85);
- uint32_t x160 = cmovznz32(x152, x127, x82);
- uint32_t x161 = cmovznz32(x152, x124, x79);
- uint32_t x162 = cmovznz32(x152, x121, x76);
- uint32_t x163 = cmovznz32(x152, x118, x73);
- uint32_t x164 = cmovznz32(x152, x115, x70);
- uint32_t x165 = cmovznz32(x152, x112, x67);
- uint32_t x166 = cmovznz32(x152, x109, x64);
- uint32_t x167 = cmovznz32(x152, x106, x61);
- return (x153, x154, x155, x156, x157, x158, x159, x160, x161, x162, x163, x164, x165, x166, x167))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e452m3/feaddDisplay.v b/src/Specific/montgomery32_2e452m3/feaddDisplay.v
deleted file mode 100644
index 4bd30850e..000000000
--- a/src/Specific/montgomery32_2e452m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e452m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e452m3/femul.v b/src/Specific/montgomery32_2e452m3/femul.v
deleted file mode 100644
index 141598227..000000000
--- a/src/Specific/montgomery32_2e452m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e452m3/femulDisplay.v b/src/Specific/montgomery32_2e452m3/femulDisplay.v
deleted file mode 100644
index cd8e6e76d..000000000
--- a/src/Specific/montgomery32_2e452m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e452m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e452m3/fenz.c b/src/Specific/montgomery32_2e452m3/fenz.c
deleted file mode 100644
index d66853caf..000000000
--- a/src/Specific/montgomery32_2e452m3/fenz.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x29 = (x28 | x27);
- { uint32_t x30 = (x26 | x29);
- { uint32_t x31 = (x24 | x30);
- { uint32_t x32 = (x22 | x31);
- { uint32_t x33 = (x20 | x32);
- { uint32_t x34 = (x18 | x33);
- { uint32_t x35 = (x16 | x34);
- { uint32_t x36 = (x14 | x35);
- { uint32_t x37 = (x12 | x36);
- { uint32_t x38 = (x10 | x37);
- { uint32_t x39 = (x8 | x38);
- { uint32_t x40 = (x6 | x39);
- { uint32_t x41 = (x4 | x40);
- { uint32_t x42 = (x2 | x41);
- out[0] = x42;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e452m3/fenz.v b/src/Specific/montgomery32_2e452m3/fenz.v
deleted file mode 100644
index 25266bfb0..000000000
--- a/src/Specific/montgomery32_2e452m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e452m3/fenzDisplay.log b/src/Specific/montgomery32_2e452m3/fenzDisplay.log
deleted file mode 100644
index 8907c292b..000000000
--- a/src/Specific/montgomery32_2e452m3/fenzDisplay.log
+++ /dev/null
@@ -1,21 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x29 = (x28 | x27);
- uint32_t x30 = (x26 | x29);
- uint32_t x31 = (x24 | x30);
- uint32_t x32 = (x22 | x31);
- uint32_t x33 = (x20 | x32);
- uint32_t x34 = (x18 | x33);
- uint32_t x35 = (x16 | x34);
- uint32_t x36 = (x14 | x35);
- uint32_t x37 = (x12 | x36);
- uint32_t x38 = (x10 | x37);
- uint32_t x39 = (x8 | x38);
- uint32_t x40 = (x6 | x39);
- uint32_t x41 = (x4 | x40);
- uint32_t x42 = (x2 | x41);
- return x42)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e452m3/fenzDisplay.v b/src/Specific/montgomery32_2e452m3/fenzDisplay.v
deleted file mode 100644
index 8c76b4b54..000000000
--- a/src/Specific/montgomery32_2e452m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e452m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e452m3/feopp.v b/src/Specific/montgomery32_2e452m3/feopp.v
deleted file mode 100644
index b2d2acb15..000000000
--- a/src/Specific/montgomery32_2e452m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e452m3/feoppDisplay.v b/src/Specific/montgomery32_2e452m3/feoppDisplay.v
deleted file mode 100644
index 5976f7170..000000000
--- a/src/Specific/montgomery32_2e452m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e452m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e452m3/fesquare.c b/src/Specific/montgomery32_2e452m3/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e452m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e452m3/fesub.v b/src/Specific/montgomery32_2e452m3/fesub.v
deleted file mode 100644
index 0a6405286..000000000
--- a/src/Specific/montgomery32_2e452m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e452m3/fesubDisplay.v b/src/Specific/montgomery32_2e452m3/fesubDisplay.v
deleted file mode 100644
index deab5054b..000000000
--- a/src/Specific/montgomery32_2e452m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e452m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e452m3/CurveParameters.v b/src/Specific/montgomery32_2e452m3_15limbs/CurveParameters.v
index bc18572bd..bc18572bd 100644
--- a/src/Specific/montgomery32_2e452m3/CurveParameters.v
+++ b/src/Specific/montgomery32_2e452m3_15limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/Synthesis.v b/src/Specific/montgomery32_2e452m3_15limbs/Synthesis.v
new file mode 100644
index 000000000..bddb2fd2a
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e452m3/compiler.sh b/src/Specific/montgomery32_2e452m3_15limbs/compiler.sh
index c7be8aaff..c7be8aaff 100755
--- a/src/Specific/montgomery32_2e452m3/compiler.sh
+++ b/src/Specific/montgomery32_2e452m3_15limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e452m3/compilerxx.sh b/src/Specific/montgomery32_2e452m3_15limbs/compilerxx.sh
index 0d8349d71..0d8349d71 100755
--- a/src/Specific/montgomery32_2e452m3/compilerxx.sh
+++ b/src/Specific/montgomery32_2e452m3_15limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/feadd.v b/src/Specific/montgomery32_2e452m3_15limbs/feadd.v
new file mode 100644
index 000000000..1db485153
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/feaddDisplay.v b/src/Specific/montgomery32_2e452m3_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..2772e6928
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/femul.v b/src/Specific/montgomery32_2e452m3_15limbs/femul.v
new file mode 100644
index 000000000..abaf9cb73
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/femulDisplay.v b/src/Specific/montgomery32_2e452m3_15limbs/femulDisplay.v
new file mode 100644
index 000000000..ed9d3a85e
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/fenz.v b/src/Specific/montgomery32_2e452m3_15limbs/fenz.v
new file mode 100644
index 000000000..20d17e800
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/fenzDisplay.v b/src/Specific/montgomery32_2e452m3_15limbs/fenzDisplay.v
new file mode 100644
index 000000000..39797abc9
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/feopp.v b/src/Specific/montgomery32_2e452m3_15limbs/feopp.v
new file mode 100644
index 000000000..ee247668c
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/feoppDisplay.v b/src/Specific/montgomery32_2e452m3_15limbs/feoppDisplay.v
new file mode 100644
index 000000000..f4f483596
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/fesub.v b/src/Specific/montgomery32_2e452m3_15limbs/fesub.v
new file mode 100644
index 000000000..a710bfde7
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e452m3_15limbs/fesubDisplay.v b/src/Specific/montgomery32_2e452m3_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..e9406db01
--- /dev/null
+++ b/src/Specific/montgomery32_2e452m3_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e452m3_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e452m3/py_interpreter.sh b/src/Specific/montgomery32_2e452m3_15limbs/py_interpreter.sh
index 4c5c4c1f8..4c5c4c1f8 100755
--- a/src/Specific/montgomery32_2e452m3/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e452m3_15limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e468m17/Synthesis.v b/src/Specific/montgomery32_2e468m17/Synthesis.v
deleted file mode 100644
index 9f7912188..000000000
--- a/src/Specific/montgomery32_2e468m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e468m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e468m17/feadd.c b/src/Specific/montgomery32_2e468m17/feadd.c
deleted file mode 100644
index 0ca8876bd..000000000
--- a/src/Specific/montgomery32_2e468m17/feadd.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(0x0, x5, x33, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x7, x35, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x9, x37, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x11, x39, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x13, x41, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x15, x43, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x17, x45, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x19, x47, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x21, x49, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x23, x51, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x25, x53, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x27, x55, &x94);
- { uint32_t x97; uint8_t x98 = _addcarryx_u32(x95, x29, x57, &x97);
- { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x31, x59, &x100);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x30, x58, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(0x0, x61, 0xffffffef, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x64, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x67, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x70, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x73, 0xffffffff, &x118);
- { uint32_t x121; uint8_t x122 = _subborrow_u32(x119, x76, 0xffffffff, &x121);
- { uint32_t x124; uint8_t x125 = _subborrow_u32(x122, x79, 0xffffffff, &x124);
- { uint32_t x127; uint8_t x128 = _subborrow_u32(x125, x82, 0xffffffff, &x127);
- { uint32_t x130; uint8_t x131 = _subborrow_u32(x128, x85, 0xffffffff, &x130);
- { uint32_t x133; uint8_t x134 = _subborrow_u32(x131, x88, 0xffffffff, &x133);
- { uint32_t x136; uint8_t x137 = _subborrow_u32(x134, x91, 0xffffffff, &x136);
- { uint32_t x139; uint8_t x140 = _subborrow_u32(x137, x94, 0xffffffff, &x139);
- { uint32_t x142; uint8_t x143 = _subborrow_u32(x140, x97, 0xffffffff, &x142);
- { uint32_t x145; uint8_t x146 = _subborrow_u32(x143, x100, 0xffffffff, &x145);
- { uint32_t x148; uint8_t x149 = _subborrow_u32(x146, x103, 0xfffff, &x148);
- { uint32_t _; uint8_t x152 = _subborrow_u32(x149, x104, 0x0, &_);
- { uint32_t x153 = cmovznz32(x152, x148, x103);
- { uint32_t x154 = cmovznz32(x152, x145, x100);
- { uint32_t x155 = cmovznz32(x152, x142, x97);
- { uint32_t x156 = cmovznz32(x152, x139, x94);
- { uint32_t x157 = cmovznz32(x152, x136, x91);
- { uint32_t x158 = cmovznz32(x152, x133, x88);
- { uint32_t x159 = cmovznz32(x152, x130, x85);
- { uint32_t x160 = cmovznz32(x152, x127, x82);
- { uint32_t x161 = cmovznz32(x152, x124, x79);
- { uint32_t x162 = cmovznz32(x152, x121, x76);
- { uint32_t x163 = cmovznz32(x152, x118, x73);
- { uint32_t x164 = cmovznz32(x152, x115, x70);
- { uint32_t x165 = cmovznz32(x152, x112, x67);
- { uint32_t x166 = cmovznz32(x152, x109, x64);
- { uint32_t x167 = cmovznz32(x152, x106, x61);
- out[0] = x167;
- out[1] = x166;
- out[2] = x165;
- out[3] = x164;
- out[4] = x163;
- out[5] = x162;
- out[6] = x161;
- out[7] = x160;
- out[8] = x159;
- out[9] = x158;
- out[10] = x157;
- out[11] = x156;
- out[12] = x155;
- out[13] = x154;
- out[14] = x153;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e468m17/feadd.v b/src/Specific/montgomery32_2e468m17/feadd.v
deleted file mode 100644
index 01398183e..000000000
--- a/src/Specific/montgomery32_2e468m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e468m17/feaddDisplay.log b/src/Specific/montgomery32_2e468m17/feaddDisplay.log
deleted file mode 100644
index 49636caac..000000000
--- a/src/Specific/montgomery32_2e468m17/feaddDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint32_t x61, uint8_t x62 = addcarryx_u32(0x0, x5, x33);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x7, x35);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x9, x37);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x11, x39);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x13, x41);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x15, x43);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x17, x45);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x19, x47);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x21, x49);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x23, x51);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x25, x53);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x27, x55);
- uint32_t x97, uint8_t x98 = addcarryx_u32(x95, x29, x57);
- uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x31, x59);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x30, x58);
- uint32_t x106, uint8_t x107 = subborrow_u32(0x0, x61, 0xffffffef);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x64, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x67, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x70, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x73, 0xffffffff);
- uint32_t x121, uint8_t x122 = subborrow_u32(x119, x76, 0xffffffff);
- uint32_t x124, uint8_t x125 = subborrow_u32(x122, x79, 0xffffffff);
- uint32_t x127, uint8_t x128 = subborrow_u32(x125, x82, 0xffffffff);
- uint32_t x130, uint8_t x131 = subborrow_u32(x128, x85, 0xffffffff);
- uint32_t x133, uint8_t x134 = subborrow_u32(x131, x88, 0xffffffff);
- uint32_t x136, uint8_t x137 = subborrow_u32(x134, x91, 0xffffffff);
- uint32_t x139, uint8_t x140 = subborrow_u32(x137, x94, 0xffffffff);
- uint32_t x142, uint8_t x143 = subborrow_u32(x140, x97, 0xffffffff);
- uint32_t x145, uint8_t x146 = subborrow_u32(x143, x100, 0xffffffff);
- uint32_t x148, uint8_t x149 = subborrow_u32(x146, x103, 0xfffff);
- uint32_t _, uint8_t x152 = subborrow_u32(x149, x104, 0x0);
- uint32_t x153 = cmovznz32(x152, x148, x103);
- uint32_t x154 = cmovznz32(x152, x145, x100);
- uint32_t x155 = cmovznz32(x152, x142, x97);
- uint32_t x156 = cmovznz32(x152, x139, x94);
- uint32_t x157 = cmovznz32(x152, x136, x91);
- uint32_t x158 = cmovznz32(x152, x133, x88);
- uint32_t x159 = cmovznz32(x152, x130, x85);
- uint32_t x160 = cmovznz32(x152, x127, x82);
- uint32_t x161 = cmovznz32(x152, x124, x79);
- uint32_t x162 = cmovznz32(x152, x121, x76);
- uint32_t x163 = cmovznz32(x152, x118, x73);
- uint32_t x164 = cmovznz32(x152, x115, x70);
- uint32_t x165 = cmovznz32(x152, x112, x67);
- uint32_t x166 = cmovznz32(x152, x109, x64);
- uint32_t x167 = cmovznz32(x152, x106, x61);
- return (x153, x154, x155, x156, x157, x158, x159, x160, x161, x162, x163, x164, x165, x166, x167))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e468m17/feaddDisplay.v b/src/Specific/montgomery32_2e468m17/feaddDisplay.v
deleted file mode 100644
index 077fb11fd..000000000
--- a/src/Specific/montgomery32_2e468m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e468m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e468m17/femul.v b/src/Specific/montgomery32_2e468m17/femul.v
deleted file mode 100644
index 8ac55be3d..000000000
--- a/src/Specific/montgomery32_2e468m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e468m17/femulDisplay.v b/src/Specific/montgomery32_2e468m17/femulDisplay.v
deleted file mode 100644
index 8d901984e..000000000
--- a/src/Specific/montgomery32_2e468m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e468m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e468m17/fenz.c b/src/Specific/montgomery32_2e468m17/fenz.c
deleted file mode 100644
index d66853caf..000000000
--- a/src/Specific/montgomery32_2e468m17/fenz.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x29 = (x28 | x27);
- { uint32_t x30 = (x26 | x29);
- { uint32_t x31 = (x24 | x30);
- { uint32_t x32 = (x22 | x31);
- { uint32_t x33 = (x20 | x32);
- { uint32_t x34 = (x18 | x33);
- { uint32_t x35 = (x16 | x34);
- { uint32_t x36 = (x14 | x35);
- { uint32_t x37 = (x12 | x36);
- { uint32_t x38 = (x10 | x37);
- { uint32_t x39 = (x8 | x38);
- { uint32_t x40 = (x6 | x39);
- { uint32_t x41 = (x4 | x40);
- { uint32_t x42 = (x2 | x41);
- out[0] = x42;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e468m17/fenz.v b/src/Specific/montgomery32_2e468m17/fenz.v
deleted file mode 100644
index 1e4646eb4..000000000
--- a/src/Specific/montgomery32_2e468m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e468m17/fenzDisplay.log b/src/Specific/montgomery32_2e468m17/fenzDisplay.log
deleted file mode 100644
index 8907c292b..000000000
--- a/src/Specific/montgomery32_2e468m17/fenzDisplay.log
+++ /dev/null
@@ -1,21 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x29 = (x28 | x27);
- uint32_t x30 = (x26 | x29);
- uint32_t x31 = (x24 | x30);
- uint32_t x32 = (x22 | x31);
- uint32_t x33 = (x20 | x32);
- uint32_t x34 = (x18 | x33);
- uint32_t x35 = (x16 | x34);
- uint32_t x36 = (x14 | x35);
- uint32_t x37 = (x12 | x36);
- uint32_t x38 = (x10 | x37);
- uint32_t x39 = (x8 | x38);
- uint32_t x40 = (x6 | x39);
- uint32_t x41 = (x4 | x40);
- uint32_t x42 = (x2 | x41);
- return x42)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e468m17/fenzDisplay.v b/src/Specific/montgomery32_2e468m17/fenzDisplay.v
deleted file mode 100644
index 50b68b2fa..000000000
--- a/src/Specific/montgomery32_2e468m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e468m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e468m17/feopp.v b/src/Specific/montgomery32_2e468m17/feopp.v
deleted file mode 100644
index 4a98eaa7d..000000000
--- a/src/Specific/montgomery32_2e468m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e468m17/feoppDisplay.v b/src/Specific/montgomery32_2e468m17/feoppDisplay.v
deleted file mode 100644
index d33c3fff1..000000000
--- a/src/Specific/montgomery32_2e468m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e468m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e468m17/fesquare.c b/src/Specific/montgomery32_2e468m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e468m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e468m17/fesub.v b/src/Specific/montgomery32_2e468m17/fesub.v
deleted file mode 100644
index de9340180..000000000
--- a/src/Specific/montgomery32_2e468m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e468m17/fesubDisplay.v b/src/Specific/montgomery32_2e468m17/fesubDisplay.v
deleted file mode 100644
index cc38561fd..000000000
--- a/src/Specific/montgomery32_2e468m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e468m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e468m17/CurveParameters.v b/src/Specific/montgomery32_2e468m17_15limbs/CurveParameters.v
index 3f2a2d057..3f2a2d057 100644
--- a/src/Specific/montgomery32_2e468m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e468m17_15limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/Synthesis.v b/src/Specific/montgomery32_2e468m17_15limbs/Synthesis.v
new file mode 100644
index 000000000..28df8e038
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e468m17/compiler.sh b/src/Specific/montgomery32_2e468m17_15limbs/compiler.sh
index 3e363c20b..3e363c20b 100755
--- a/src/Specific/montgomery32_2e468m17/compiler.sh
+++ b/src/Specific/montgomery32_2e468m17_15limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e468m17/compilerxx.sh b/src/Specific/montgomery32_2e468m17_15limbs/compilerxx.sh
index 242f1131f..242f1131f 100755
--- a/src/Specific/montgomery32_2e468m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e468m17_15limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/feadd.v b/src/Specific/montgomery32_2e468m17_15limbs/feadd.v
new file mode 100644
index 000000000..91f007d4e
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/feaddDisplay.v b/src/Specific/montgomery32_2e468m17_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..e67ffcf1f
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/femul.v b/src/Specific/montgomery32_2e468m17_15limbs/femul.v
new file mode 100644
index 000000000..71f5be9b8
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/femulDisplay.v b/src/Specific/montgomery32_2e468m17_15limbs/femulDisplay.v
new file mode 100644
index 000000000..e4a2e53c3
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/fenz.v b/src/Specific/montgomery32_2e468m17_15limbs/fenz.v
new file mode 100644
index 000000000..85427c9a0
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/fenzDisplay.v b/src/Specific/montgomery32_2e468m17_15limbs/fenzDisplay.v
new file mode 100644
index 000000000..e242c5f5d
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/feopp.v b/src/Specific/montgomery32_2e468m17_15limbs/feopp.v
new file mode 100644
index 000000000..40484e87f
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/feoppDisplay.v b/src/Specific/montgomery32_2e468m17_15limbs/feoppDisplay.v
new file mode 100644
index 000000000..91a273b7d
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/fesub.v b/src/Specific/montgomery32_2e468m17_15limbs/fesub.v
new file mode 100644
index 000000000..69d6b56f6
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e468m17_15limbs/fesubDisplay.v b/src/Specific/montgomery32_2e468m17_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..2276c4fbc
--- /dev/null
+++ b/src/Specific/montgomery32_2e468m17_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e468m17_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e468m17/py_interpreter.sh b/src/Specific/montgomery32_2e468m17_15limbs/py_interpreter.sh
index 7bdf454ae..7bdf454ae 100755
--- a/src/Specific/montgomery32_2e468m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e468m17_15limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v b/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v
deleted file mode 100644
index 2a8ca0dc1..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feadd.c b/src/Specific/montgomery32_2e480m2e240m1/feadd.c
deleted file mode 100644
index d56ddb00f..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feadd.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint32_t x61; uint8_t x62 = _addcarryx_u32(0x0, x5, x33, &x61);
- { uint32_t x64; uint8_t x65 = _addcarryx_u32(x62, x7, x35, &x64);
- { uint32_t x67; uint8_t x68 = _addcarryx_u32(x65, x9, x37, &x67);
- { uint32_t x70; uint8_t x71 = _addcarryx_u32(x68, x11, x39, &x70);
- { uint32_t x73; uint8_t x74 = _addcarryx_u32(x71, x13, x41, &x73);
- { uint32_t x76; uint8_t x77 = _addcarryx_u32(x74, x15, x43, &x76);
- { uint32_t x79; uint8_t x80 = _addcarryx_u32(x77, x17, x45, &x79);
- { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x19, x47, &x82);
- { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x21, x49, &x85);
- { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x23, x51, &x88);
- { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x25, x53, &x91);
- { uint32_t x94; uint8_t x95 = _addcarryx_u32(x92, x27, x55, &x94);
- { uint32_t x97; uint8_t x98 = _addcarryx_u32(x95, x29, x57, &x97);
- { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x31, x59, &x100);
- { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x30, x58, &x103);
- { uint32_t x106; uint8_t x107 = _subborrow_u32(0x0, x61, 0xffffffff, &x106);
- { uint32_t x109; uint8_t x110 = _subborrow_u32(x107, x64, 0xffffffff, &x109);
- { uint32_t x112; uint8_t x113 = _subborrow_u32(x110, x67, 0xffffffff, &x112);
- { uint32_t x115; uint8_t x116 = _subborrow_u32(x113, x70, 0xffffffff, &x115);
- { uint32_t x118; uint8_t x119 = _subborrow_u32(x116, x73, 0xffffffff, &x118);
- { uint32_t x121; uint8_t x122 = _subborrow_u32(x119, x76, 0xffffffff, &x121);
- { uint32_t x124; uint8_t x125 = _subborrow_u32(x122, x79, 0xffffffff, &x124);
- { uint32_t x127; uint8_t x128 = _subborrow_u32(x125, x82, 0xfffeffff, &x127);
- { uint32_t x130; uint8_t x131 = _subborrow_u32(x128, x85, 0xffffffff, &x130);
- { uint32_t x133; uint8_t x134 = _subborrow_u32(x131, x88, 0xffffffff, &x133);
- { uint32_t x136; uint8_t x137 = _subborrow_u32(x134, x91, 0xffffffff, &x136);
- { uint32_t x139; uint8_t x140 = _subborrow_u32(x137, x94, 0xffffffff, &x139);
- { uint32_t x142; uint8_t x143 = _subborrow_u32(x140, x97, 0xffffffff, &x142);
- { uint32_t x145; uint8_t x146 = _subborrow_u32(x143, x100, 0xffffffff, &x145);
- { uint32_t x148; uint8_t x149 = _subborrow_u32(x146, x103, 0xffffffff, &x148);
- { uint32_t _; uint8_t x152 = _subborrow_u32(x149, x104, 0x0, &_);
- { uint32_t x153 = cmovznz32(x152, x148, x103);
- { uint32_t x154 = cmovznz32(x152, x145, x100);
- { uint32_t x155 = cmovznz32(x152, x142, x97);
- { uint32_t x156 = cmovznz32(x152, x139, x94);
- { uint32_t x157 = cmovznz32(x152, x136, x91);
- { uint32_t x158 = cmovznz32(x152, x133, x88);
- { uint32_t x159 = cmovznz32(x152, x130, x85);
- { uint32_t x160 = cmovznz32(x152, x127, x82);
- { uint32_t x161 = cmovznz32(x152, x124, x79);
- { uint32_t x162 = cmovznz32(x152, x121, x76);
- { uint32_t x163 = cmovznz32(x152, x118, x73);
- { uint32_t x164 = cmovznz32(x152, x115, x70);
- { uint32_t x165 = cmovznz32(x152, x112, x67);
- { uint32_t x166 = cmovznz32(x152, x109, x64);
- { uint32_t x167 = cmovznz32(x152, x106, x61);
- out[0] = x167;
- out[1] = x166;
- out[2] = x165;
- out[3] = x164;
- out[4] = x163;
- out[5] = x162;
- out[6] = x161;
- out[7] = x160;
- out[8] = x159;
- out[9] = x158;
- out[10] = x157;
- out[11] = x156;
- out[12] = x155;
- out[13] = x154;
- out[14] = x153;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feadd.v b/src/Specific/montgomery32_2e480m2e240m1/feadd.v
deleted file mode 100644
index b73a0301b..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.log b/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.log
deleted file mode 100644
index 89d8ec5de..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint32_t x61, uint8_t x62 = addcarryx_u32(0x0, x5, x33);
- uint32_t x64, uint8_t x65 = addcarryx_u32(x62, x7, x35);
- uint32_t x67, uint8_t x68 = addcarryx_u32(x65, x9, x37);
- uint32_t x70, uint8_t x71 = addcarryx_u32(x68, x11, x39);
- uint32_t x73, uint8_t x74 = addcarryx_u32(x71, x13, x41);
- uint32_t x76, uint8_t x77 = addcarryx_u32(x74, x15, x43);
- uint32_t x79, uint8_t x80 = addcarryx_u32(x77, x17, x45);
- uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x19, x47);
- uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x21, x49);
- uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x23, x51);
- uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x25, x53);
- uint32_t x94, uint8_t x95 = addcarryx_u32(x92, x27, x55);
- uint32_t x97, uint8_t x98 = addcarryx_u32(x95, x29, x57);
- uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x31, x59);
- uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x30, x58);
- uint32_t x106, uint8_t x107 = subborrow_u32(0x0, x61, 0xffffffff);
- uint32_t x109, uint8_t x110 = subborrow_u32(x107, x64, 0xffffffff);
- uint32_t x112, uint8_t x113 = subborrow_u32(x110, x67, 0xffffffff);
- uint32_t x115, uint8_t x116 = subborrow_u32(x113, x70, 0xffffffff);
- uint32_t x118, uint8_t x119 = subborrow_u32(x116, x73, 0xffffffff);
- uint32_t x121, uint8_t x122 = subborrow_u32(x119, x76, 0xffffffff);
- uint32_t x124, uint8_t x125 = subborrow_u32(x122, x79, 0xffffffff);
- uint32_t x127, uint8_t x128 = subborrow_u32(x125, x82, 0xfffeffff);
- uint32_t x130, uint8_t x131 = subborrow_u32(x128, x85, 0xffffffff);
- uint32_t x133, uint8_t x134 = subborrow_u32(x131, x88, 0xffffffff);
- uint32_t x136, uint8_t x137 = subborrow_u32(x134, x91, 0xffffffff);
- uint32_t x139, uint8_t x140 = subborrow_u32(x137, x94, 0xffffffff);
- uint32_t x142, uint8_t x143 = subborrow_u32(x140, x97, 0xffffffff);
- uint32_t x145, uint8_t x146 = subborrow_u32(x143, x100, 0xffffffff);
- uint32_t x148, uint8_t x149 = subborrow_u32(x146, x103, 0xffffffff);
- uint32_t _, uint8_t x152 = subborrow_u32(x149, x104, 0x0);
- uint32_t x153 = cmovznz32(x152, x148, x103);
- uint32_t x154 = cmovznz32(x152, x145, x100);
- uint32_t x155 = cmovznz32(x152, x142, x97);
- uint32_t x156 = cmovznz32(x152, x139, x94);
- uint32_t x157 = cmovznz32(x152, x136, x91);
- uint32_t x158 = cmovznz32(x152, x133, x88);
- uint32_t x159 = cmovznz32(x152, x130, x85);
- uint32_t x160 = cmovznz32(x152, x127, x82);
- uint32_t x161 = cmovznz32(x152, x124, x79);
- uint32_t x162 = cmovznz32(x152, x121, x76);
- uint32_t x163 = cmovznz32(x152, x118, x73);
- uint32_t x164 = cmovznz32(x152, x115, x70);
- uint32_t x165 = cmovznz32(x152, x112, x67);
- uint32_t x166 = cmovznz32(x152, x109, x64);
- uint32_t x167 = cmovznz32(x152, x106, x61);
- return (x153, x154, x155, x156, x157, x158, x159, x160, x161, x162, x163, x164, x165, x166, x167))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v
deleted file mode 100644
index ca377a31d..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/femul.v b/src/Specific/montgomery32_2e480m2e240m1/femul.v
deleted file mode 100644
index 62716a3e2..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v
deleted file mode 100644
index 8472705b9..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenz.c b/src/Specific/montgomery32_2e480m2e240m1/fenz.c
deleted file mode 100644
index d66853caf..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fenz.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x29 = (x28 | x27);
- { uint32_t x30 = (x26 | x29);
- { uint32_t x31 = (x24 | x30);
- { uint32_t x32 = (x22 | x31);
- { uint32_t x33 = (x20 | x32);
- { uint32_t x34 = (x18 | x33);
- { uint32_t x35 = (x16 | x34);
- { uint32_t x36 = (x14 | x35);
- { uint32_t x37 = (x12 | x36);
- { uint32_t x38 = (x10 | x37);
- { uint32_t x39 = (x8 | x38);
- { uint32_t x40 = (x6 | x39);
- { uint32_t x41 = (x4 | x40);
- { uint32_t x42 = (x2 | x41);
- out[0] = x42;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenz.v b/src/Specific/montgomery32_2e480m2e240m1/fenz.v
deleted file mode 100644
index 541727df2..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.log b/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.log
deleted file mode 100644
index 8907c292b..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,21 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x29 = (x28 | x27);
- uint32_t x30 = (x26 | x29);
- uint32_t x31 = (x24 | x30);
- uint32_t x32 = (x22 | x31);
- uint32_t x33 = (x20 | x32);
- uint32_t x34 = (x18 | x33);
- uint32_t x35 = (x16 | x34);
- uint32_t x36 = (x14 | x35);
- uint32_t x37 = (x12 | x36);
- uint32_t x38 = (x10 | x37);
- uint32_t x39 = (x8 | x38);
- uint32_t x40 = (x6 | x39);
- uint32_t x41 = (x4 | x40);
- uint32_t x42 = (x2 | x41);
- return x42)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v
deleted file mode 100644
index 857f199f8..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feopp.v b/src/Specific/montgomery32_2e480m2e240m1/feopp.v
deleted file mode 100644
index 400e8c5bb..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v
deleted file mode 100644
index 13d895d15..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fesquare.c b/src/Specific/montgomery32_2e480m2e240m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fesub.v b/src/Specific/montgomery32_2e480m2e240m1/fesub.v
deleted file mode 100644
index eb810aceb..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v b/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v
deleted file mode 100644
index b8d3b31cc..000000000
--- a/src/Specific/montgomery32_2e480m2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e480m2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/CurveParameters.v
index df2d34dd7..df2d34dd7 100644
--- a/src/Specific/montgomery32_2e480m2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/Synthesis.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/Synthesis.v
new file mode 100644
index 000000000..6a6551985
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/compiler.sh b/src/Specific/montgomery32_2e480m2e240m1_15limbs/compiler.sh
index 4b5a11d2d..4b5a11d2d 100755
--- a/src/Specific/montgomery32_2e480m2e240m1/compiler.sh
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e480m2e240m1/compilerxx.sh b/src/Specific/montgomery32_2e480m2e240m1_15limbs/compilerxx.sh
index 8b9797f5a..8b9797f5a 100755
--- a/src/Specific/montgomery32_2e480m2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/feadd.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feadd.v
new file mode 100644
index 000000000..05b22310a
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/feaddDisplay.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..8674277be
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/femul.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/femul.v
new file mode 100644
index 000000000..49cc90f7f
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/femulDisplay.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/femulDisplay.v
new file mode 100644
index 000000000..4651a41f2
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenz.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenz.v
new file mode 100644
index 000000000..17142f7f7
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenzDisplay.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenzDisplay.v
new file mode 100644
index 000000000..c7ab1be50
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/feopp.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feopp.v
new file mode 100644
index 000000000..50799f314
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/feoppDisplay.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feoppDisplay.v
new file mode 100644
index 000000000..f87a885cc
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesub.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesub.v
new file mode 100644
index 000000000..8a7d5d843
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesubDisplay.v b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..9e365c337
--- /dev/null
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e480m2e240m1_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e480m2e240m1/py_interpreter.sh b/src/Specific/montgomery32_2e480m2e240m1_15limbs/py_interpreter.sh
index a30165598..a30165598 100755
--- a/src/Specific/montgomery32_2e480m2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e480m2e240m1_15limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e488m17/Synthesis.v b/src/Specific/montgomery32_2e488m17/Synthesis.v
deleted file mode 100644
index aeee987b9..000000000
--- a/src/Specific/montgomery32_2e488m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e488m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e488m17/feadd.c b/src/Specific/montgomery32_2e488m17/feadd.c
deleted file mode 100644
index 302b84c35..000000000
--- a/src/Specific/montgomery32_2e488m17/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffffef, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0xff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e488m17/feadd.v b/src/Specific/montgomery32_2e488m17/feadd.v
deleted file mode 100644
index 47e9ad243..000000000
--- a/src/Specific/montgomery32_2e488m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e488m17/feaddDisplay.log b/src/Specific/montgomery32_2e488m17/feaddDisplay.log
deleted file mode 100644
index d29341a8b..000000000
--- a/src/Specific/montgomery32_2e488m17/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffffef);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0xff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e488m17/feaddDisplay.v b/src/Specific/montgomery32_2e488m17/feaddDisplay.v
deleted file mode 100644
index d35c3fb2c..000000000
--- a/src/Specific/montgomery32_2e488m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e488m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e488m17/femul.v b/src/Specific/montgomery32_2e488m17/femul.v
deleted file mode 100644
index 6c5cebfbc..000000000
--- a/src/Specific/montgomery32_2e488m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e488m17/femulDisplay.v b/src/Specific/montgomery32_2e488m17/femulDisplay.v
deleted file mode 100644
index 679152151..000000000
--- a/src/Specific/montgomery32_2e488m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e488m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e488m17/fenz.c b/src/Specific/montgomery32_2e488m17/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e488m17/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e488m17/fenz.v b/src/Specific/montgomery32_2e488m17/fenz.v
deleted file mode 100644
index 346c25fdb..000000000
--- a/src/Specific/montgomery32_2e488m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e488m17/fenzDisplay.log b/src/Specific/montgomery32_2e488m17/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e488m17/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e488m17/fenzDisplay.v b/src/Specific/montgomery32_2e488m17/fenzDisplay.v
deleted file mode 100644
index 00ffdd058..000000000
--- a/src/Specific/montgomery32_2e488m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e488m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e488m17/feopp.v b/src/Specific/montgomery32_2e488m17/feopp.v
deleted file mode 100644
index 01ce9155f..000000000
--- a/src/Specific/montgomery32_2e488m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e488m17/feoppDisplay.v b/src/Specific/montgomery32_2e488m17/feoppDisplay.v
deleted file mode 100644
index 31d02340c..000000000
--- a/src/Specific/montgomery32_2e488m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e488m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e488m17/fesquare.c b/src/Specific/montgomery32_2e488m17/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e488m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e488m17/fesub.v b/src/Specific/montgomery32_2e488m17/fesub.v
deleted file mode 100644
index dee39c3df..000000000
--- a/src/Specific/montgomery32_2e488m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e488m17/fesubDisplay.v b/src/Specific/montgomery32_2e488m17/fesubDisplay.v
deleted file mode 100644
index b2c350eec..000000000
--- a/src/Specific/montgomery32_2e488m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e488m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e488m17/CurveParameters.v b/src/Specific/montgomery32_2e488m17_16limbs/CurveParameters.v
index 7e8ed034f..7e8ed034f 100644
--- a/src/Specific/montgomery32_2e488m17/CurveParameters.v
+++ b/src/Specific/montgomery32_2e488m17_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/Synthesis.v b/src/Specific/montgomery32_2e488m17_16limbs/Synthesis.v
new file mode 100644
index 000000000..d41934183
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e488m17/compiler.sh b/src/Specific/montgomery32_2e488m17_16limbs/compiler.sh
index 9b43e9552..9b43e9552 100755
--- a/src/Specific/montgomery32_2e488m17/compiler.sh
+++ b/src/Specific/montgomery32_2e488m17_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e488m17/compilerxx.sh b/src/Specific/montgomery32_2e488m17_16limbs/compilerxx.sh
index ecf259c72..ecf259c72 100755
--- a/src/Specific/montgomery32_2e488m17/compilerxx.sh
+++ b/src/Specific/montgomery32_2e488m17_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/feadd.v b/src/Specific/montgomery32_2e488m17_16limbs/feadd.v
new file mode 100644
index 000000000..efc60b647
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e488m17_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..a30c1ca31
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/femul.v b/src/Specific/montgomery32_2e488m17_16limbs/femul.v
new file mode 100644
index 000000000..58f8f9ee5
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e488m17_16limbs/femulDisplay.v
new file mode 100644
index 000000000..6e225c283
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/fenz.v b/src/Specific/montgomery32_2e488m17_16limbs/fenz.v
new file mode 100644
index 000000000..7b4278763
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e488m17_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..b9f64a0e6
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/feopp.v b/src/Specific/montgomery32_2e488m17_16limbs/feopp.v
new file mode 100644
index 000000000..b62c2bec7
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e488m17_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..3abae5741
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/fesub.v b/src/Specific/montgomery32_2e488m17_16limbs/fesub.v
new file mode 100644
index 000000000..04166afa0
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e488m17_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e488m17_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..ac40869e1
--- /dev/null
+++ b/src/Specific/montgomery32_2e488m17_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e488m17_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e488m17/py_interpreter.sh b/src/Specific/montgomery32_2e488m17_16limbs/py_interpreter.sh
index 218293b7d..218293b7d 100755
--- a/src/Specific/montgomery32_2e488m17/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e488m17_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e489m21/Synthesis.v b/src/Specific/montgomery32_2e489m21/Synthesis.v
deleted file mode 100644
index 34180a9dc..000000000
--- a/src/Specific/montgomery32_2e489m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e489m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e489m21/feadd.c b/src/Specific/montgomery32_2e489m21/feadd.c
deleted file mode 100644
index 007a47660..000000000
--- a/src/Specific/montgomery32_2e489m21/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffffeb, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0x1ff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e489m21/feadd.v b/src/Specific/montgomery32_2e489m21/feadd.v
deleted file mode 100644
index e32769081..000000000
--- a/src/Specific/montgomery32_2e489m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e489m21/feaddDisplay.log b/src/Specific/montgomery32_2e489m21/feaddDisplay.log
deleted file mode 100644
index bb1861938..000000000
--- a/src/Specific/montgomery32_2e489m21/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffffeb);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0x1ff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e489m21/feaddDisplay.v b/src/Specific/montgomery32_2e489m21/feaddDisplay.v
deleted file mode 100644
index 5f2d94a18..000000000
--- a/src/Specific/montgomery32_2e489m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e489m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e489m21/femul.v b/src/Specific/montgomery32_2e489m21/femul.v
deleted file mode 100644
index e133994e6..000000000
--- a/src/Specific/montgomery32_2e489m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e489m21/femulDisplay.v b/src/Specific/montgomery32_2e489m21/femulDisplay.v
deleted file mode 100644
index 840c83d47..000000000
--- a/src/Specific/montgomery32_2e489m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e489m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e489m21/fenz.c b/src/Specific/montgomery32_2e489m21/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e489m21/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e489m21/fenz.v b/src/Specific/montgomery32_2e489m21/fenz.v
deleted file mode 100644
index 156d03ffb..000000000
--- a/src/Specific/montgomery32_2e489m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e489m21/fenzDisplay.log b/src/Specific/montgomery32_2e489m21/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e489m21/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e489m21/fenzDisplay.v b/src/Specific/montgomery32_2e489m21/fenzDisplay.v
deleted file mode 100644
index cf2ca3854..000000000
--- a/src/Specific/montgomery32_2e489m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e489m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e489m21/feopp.v b/src/Specific/montgomery32_2e489m21/feopp.v
deleted file mode 100644
index 749c5c3e7..000000000
--- a/src/Specific/montgomery32_2e489m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e489m21/feoppDisplay.v b/src/Specific/montgomery32_2e489m21/feoppDisplay.v
deleted file mode 100644
index bd00abbd8..000000000
--- a/src/Specific/montgomery32_2e489m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e489m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e489m21/fesquare.c b/src/Specific/montgomery32_2e489m21/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e489m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e489m21/fesub.v b/src/Specific/montgomery32_2e489m21/fesub.v
deleted file mode 100644
index 066c54c32..000000000
--- a/src/Specific/montgomery32_2e489m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e489m21/fesubDisplay.v b/src/Specific/montgomery32_2e489m21/fesubDisplay.v
deleted file mode 100644
index bd621f39d..000000000
--- a/src/Specific/montgomery32_2e489m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e489m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e489m21/CurveParameters.v b/src/Specific/montgomery32_2e489m21_16limbs/CurveParameters.v
index f73876229..f73876229 100644
--- a/src/Specific/montgomery32_2e489m21/CurveParameters.v
+++ b/src/Specific/montgomery32_2e489m21_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/Synthesis.v b/src/Specific/montgomery32_2e489m21_16limbs/Synthesis.v
new file mode 100644
index 000000000..7aeaecd07
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e489m21/compiler.sh b/src/Specific/montgomery32_2e489m21_16limbs/compiler.sh
index c2e4fe9c9..c2e4fe9c9 100755
--- a/src/Specific/montgomery32_2e489m21/compiler.sh
+++ b/src/Specific/montgomery32_2e489m21_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e489m21/compilerxx.sh b/src/Specific/montgomery32_2e489m21_16limbs/compilerxx.sh
index 47f103312..47f103312 100755
--- a/src/Specific/montgomery32_2e489m21/compilerxx.sh
+++ b/src/Specific/montgomery32_2e489m21_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/feadd.v b/src/Specific/montgomery32_2e489m21_16limbs/feadd.v
new file mode 100644
index 000000000..7056a3afe
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e489m21_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..2a7f7fdec
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/femul.v b/src/Specific/montgomery32_2e489m21_16limbs/femul.v
new file mode 100644
index 000000000..909983b32
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e489m21_16limbs/femulDisplay.v
new file mode 100644
index 000000000..2a90529ef
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/fenz.v b/src/Specific/montgomery32_2e489m21_16limbs/fenz.v
new file mode 100644
index 000000000..cc8c5f473
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e489m21_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..cff6060a4
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/feopp.v b/src/Specific/montgomery32_2e489m21_16limbs/feopp.v
new file mode 100644
index 000000000..215633a3f
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e489m21_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..ed9b75c77
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/fesub.v b/src/Specific/montgomery32_2e489m21_16limbs/fesub.v
new file mode 100644
index 000000000..4ffe05566
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e489m21_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e489m21_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..a856c078f
--- /dev/null
+++ b/src/Specific/montgomery32_2e489m21_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e489m21_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e489m21/py_interpreter.sh b/src/Specific/montgomery32_2e489m21_16limbs/py_interpreter.sh
index d0d1ab9cf..d0d1ab9cf 100755
--- a/src/Specific/montgomery32_2e489m21/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e489m21_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e495m31/Synthesis.v b/src/Specific/montgomery32_2e495m31/Synthesis.v
deleted file mode 100644
index 17bd0f90b..000000000
--- a/src/Specific/montgomery32_2e495m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e495m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e495m31/feadd.c b/src/Specific/montgomery32_2e495m31/feadd.c
deleted file mode 100644
index 98ff25687..000000000
--- a/src/Specific/montgomery32_2e495m31/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffffe1, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0x7fff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e495m31/feadd.v b/src/Specific/montgomery32_2e495m31/feadd.v
deleted file mode 100644
index 984d531e9..000000000
--- a/src/Specific/montgomery32_2e495m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e495m31/feaddDisplay.log b/src/Specific/montgomery32_2e495m31/feaddDisplay.log
deleted file mode 100644
index 7dc2014d6..000000000
--- a/src/Specific/montgomery32_2e495m31/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffffe1);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0x7fff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e495m31/feaddDisplay.v b/src/Specific/montgomery32_2e495m31/feaddDisplay.v
deleted file mode 100644
index 57d826fd6..000000000
--- a/src/Specific/montgomery32_2e495m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e495m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e495m31/femul.v b/src/Specific/montgomery32_2e495m31/femul.v
deleted file mode 100644
index 8d44e2d3f..000000000
--- a/src/Specific/montgomery32_2e495m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e495m31/femulDisplay.v b/src/Specific/montgomery32_2e495m31/femulDisplay.v
deleted file mode 100644
index b8955bb92..000000000
--- a/src/Specific/montgomery32_2e495m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e495m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e495m31/fenz.c b/src/Specific/montgomery32_2e495m31/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e495m31/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e495m31/fenz.v b/src/Specific/montgomery32_2e495m31/fenz.v
deleted file mode 100644
index 454608881..000000000
--- a/src/Specific/montgomery32_2e495m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e495m31/fenzDisplay.log b/src/Specific/montgomery32_2e495m31/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e495m31/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e495m31/fenzDisplay.v b/src/Specific/montgomery32_2e495m31/fenzDisplay.v
deleted file mode 100644
index 476ac1626..000000000
--- a/src/Specific/montgomery32_2e495m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e495m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e495m31/feopp.v b/src/Specific/montgomery32_2e495m31/feopp.v
deleted file mode 100644
index 8a7dc34fd..000000000
--- a/src/Specific/montgomery32_2e495m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e495m31/feoppDisplay.v b/src/Specific/montgomery32_2e495m31/feoppDisplay.v
deleted file mode 100644
index a87d38765..000000000
--- a/src/Specific/montgomery32_2e495m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e495m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e495m31/fesquare.c b/src/Specific/montgomery32_2e495m31/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e495m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e495m31/fesub.v b/src/Specific/montgomery32_2e495m31/fesub.v
deleted file mode 100644
index 0d808ba95..000000000
--- a/src/Specific/montgomery32_2e495m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e495m31/fesubDisplay.v b/src/Specific/montgomery32_2e495m31/fesubDisplay.v
deleted file mode 100644
index 9c8f0d90b..000000000
--- a/src/Specific/montgomery32_2e495m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e495m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e495m31/CurveParameters.v b/src/Specific/montgomery32_2e495m31_16limbs/CurveParameters.v
index bcaa3e33b..bcaa3e33b 100644
--- a/src/Specific/montgomery32_2e495m31/CurveParameters.v
+++ b/src/Specific/montgomery32_2e495m31_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/Synthesis.v b/src/Specific/montgomery32_2e495m31_16limbs/Synthesis.v
new file mode 100644
index 000000000..c177c1721
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e495m31/compiler.sh b/src/Specific/montgomery32_2e495m31_16limbs/compiler.sh
index 65ff6d0b7..65ff6d0b7 100755
--- a/src/Specific/montgomery32_2e495m31/compiler.sh
+++ b/src/Specific/montgomery32_2e495m31_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e495m31/compilerxx.sh b/src/Specific/montgomery32_2e495m31_16limbs/compilerxx.sh
index 845e87c37..845e87c37 100755
--- a/src/Specific/montgomery32_2e495m31/compilerxx.sh
+++ b/src/Specific/montgomery32_2e495m31_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/feadd.v b/src/Specific/montgomery32_2e495m31_16limbs/feadd.v
new file mode 100644
index 000000000..5319c4f28
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e495m31_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..efa93a926
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/femul.v b/src/Specific/montgomery32_2e495m31_16limbs/femul.v
new file mode 100644
index 000000000..f73f7fd73
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e495m31_16limbs/femulDisplay.v
new file mode 100644
index 000000000..b41f7a64c
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/fenz.v b/src/Specific/montgomery32_2e495m31_16limbs/fenz.v
new file mode 100644
index 000000000..82cce2442
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e495m31_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..9641e8ba6
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/feopp.v b/src/Specific/montgomery32_2e495m31_16limbs/feopp.v
new file mode 100644
index 000000000..704610e8e
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e495m31_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..cdffe1b57
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/fesub.v b/src/Specific/montgomery32_2e495m31_16limbs/fesub.v
new file mode 100644
index 000000000..a77795c9b
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e495m31_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e495m31_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..6add7acf4
--- /dev/null
+++ b/src/Specific/montgomery32_2e495m31_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e495m31_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e495m31/py_interpreter.sh b/src/Specific/montgomery32_2e495m31_16limbs/py_interpreter.sh
index 1b69eb239..1b69eb239 100755
--- a/src/Specific/montgomery32_2e495m31/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e495m31_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/Synthesis.v b/src/Specific/montgomery32_2e510m290x2e496m1/Synthesis.v
deleted file mode 100644
index 115f65f85..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feadd.c b/src/Specific/montgomery32_2e510m290x2e496m1/feadd.c
deleted file mode 100644
index 9ad623033..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0x3eddffff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feadd.v b/src/Specific/montgomery32_2e510m290x2e496m1/feadd.v
deleted file mode 100644
index b50364d80..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.log b/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.log
deleted file mode 100644
index 36c81d199..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0x3eddffff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.v
deleted file mode 100644
index 42fab026b..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/femul.v b/src/Specific/montgomery32_2e510m290x2e496m1/femul.v
deleted file mode 100644
index ea131cf07..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/femulDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1/femulDisplay.v
deleted file mode 100644
index d5eb0eb90..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fenz.c b/src/Specific/montgomery32_2e510m290x2e496m1/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fenz.v b/src/Specific/montgomery32_2e510m290x2e496m1/fenz.v
deleted file mode 100644
index c903453fb..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.log b/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.v
deleted file mode 100644
index f4af5a52e..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feopp.v b/src/Specific/montgomery32_2e510m290x2e496m1/feopp.v
deleted file mode 100644
index 9986b1840..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/feoppDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1/feoppDisplay.v
deleted file mode 100644
index 6d256d884..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fesquare.c b/src/Specific/montgomery32_2e510m290x2e496m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fesub.v b/src/Specific/montgomery32_2e510m290x2e496m1/fesub.v
deleted file mode 100644
index d211bb244..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/fesubDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1/fesubDisplay.v
deleted file mode 100644
index 1cf2015f3..000000000
--- a/src/Specific/montgomery32_2e510m290x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/CurveParameters.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/CurveParameters.v
index 8dd31f795..8dd31f795 100644
--- a/src/Specific/montgomery32_2e510m290x2e496m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/Synthesis.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/Synthesis.v
new file mode 100644
index 000000000..a51058007
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/compiler.sh b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/compiler.sh
index ea8e13bdf..ea8e13bdf 100755
--- a/src/Specific/montgomery32_2e510m290x2e496m1/compiler.sh
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/compilerxx.sh b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/compilerxx.sh
index 6edffc74c..6edffc74c 100755
--- a/src/Specific/montgomery32_2e510m290x2e496m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feadd.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feadd.v
new file mode 100644
index 000000000..e66a17d0a
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..f5411c7b9
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femul.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femul.v
new file mode 100644
index 000000000..2d0530515
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femulDisplay.v
new file mode 100644
index 000000000..6908019e6
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenz.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenz.v
new file mode 100644
index 000000000..f28b6235b
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..beb477c79
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feopp.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feopp.v
new file mode 100644
index 000000000..ad725872f
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..6ee281365
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesub.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesub.v
new file mode 100644
index 000000000..dffd1a5e9
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..5819c30a6
--- /dev/null
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e510m290x2e496m1_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e510m290x2e496m1/py_interpreter.sh b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/py_interpreter.sh
index c7e51b970..c7e51b970 100755
--- a/src/Specific/montgomery32_2e510m290x2e496m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e510m290x2e496m1_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e511m187/Synthesis.v b/src/Specific/montgomery32_2e511m187/Synthesis.v
deleted file mode 100644
index 0bcc9a7e6..000000000
--- a/src/Specific/montgomery32_2e511m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e511m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e511m187/feadd.c b/src/Specific/montgomery32_2e511m187/feadd.c
deleted file mode 100644
index ccbd5e348..000000000
--- a/src/Specific/montgomery32_2e511m187/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffff45, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0x7fffffff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e511m187/feadd.v b/src/Specific/montgomery32_2e511m187/feadd.v
deleted file mode 100644
index 1d73655ca..000000000
--- a/src/Specific/montgomery32_2e511m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e511m187/feaddDisplay.log b/src/Specific/montgomery32_2e511m187/feaddDisplay.log
deleted file mode 100644
index 59330b3bf..000000000
--- a/src/Specific/montgomery32_2e511m187/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffff45);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0x7fffffff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e511m187/feaddDisplay.v b/src/Specific/montgomery32_2e511m187/feaddDisplay.v
deleted file mode 100644
index 7c51bba97..000000000
--- a/src/Specific/montgomery32_2e511m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e511m187/femul.v b/src/Specific/montgomery32_2e511m187/femul.v
deleted file mode 100644
index 5f1a4222a..000000000
--- a/src/Specific/montgomery32_2e511m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e511m187/femulDisplay.v b/src/Specific/montgomery32_2e511m187/femulDisplay.v
deleted file mode 100644
index 8fc5b60ed..000000000
--- a/src/Specific/montgomery32_2e511m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e511m187/fenz.c b/src/Specific/montgomery32_2e511m187/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e511m187/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e511m187/fenz.v b/src/Specific/montgomery32_2e511m187/fenz.v
deleted file mode 100644
index ebaabd8bd..000000000
--- a/src/Specific/montgomery32_2e511m187/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e511m187/fenzDisplay.log b/src/Specific/montgomery32_2e511m187/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e511m187/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e511m187/fenzDisplay.v b/src/Specific/montgomery32_2e511m187/fenzDisplay.v
deleted file mode 100644
index c0c7c9fc8..000000000
--- a/src/Specific/montgomery32_2e511m187/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m187.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e511m187/feopp.v b/src/Specific/montgomery32_2e511m187/feopp.v
deleted file mode 100644
index a14f433dc..000000000
--- a/src/Specific/montgomery32_2e511m187/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e511m187/feoppDisplay.v b/src/Specific/montgomery32_2e511m187/feoppDisplay.v
deleted file mode 100644
index f6571ae91..000000000
--- a/src/Specific/montgomery32_2e511m187/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m187.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e511m187/fesquare.c b/src/Specific/montgomery32_2e511m187/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e511m187/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e511m187/fesub.v b/src/Specific/montgomery32_2e511m187/fesub.v
deleted file mode 100644
index 7b6ae97a2..000000000
--- a/src/Specific/montgomery32_2e511m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e511m187/fesubDisplay.v b/src/Specific/montgomery32_2e511m187/fesubDisplay.v
deleted file mode 100644
index 098943474..000000000
--- a/src/Specific/montgomery32_2e511m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e511m187/CurveParameters.v b/src/Specific/montgomery32_2e511m187_16limbs/CurveParameters.v
index 466621f72..466621f72 100644
--- a/src/Specific/montgomery32_2e511m187/CurveParameters.v
+++ b/src/Specific/montgomery32_2e511m187_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/Synthesis.v b/src/Specific/montgomery32_2e511m187_16limbs/Synthesis.v
new file mode 100644
index 000000000..9f3d257c0
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e511m187/compiler.sh b/src/Specific/montgomery32_2e511m187_16limbs/compiler.sh
index 45395d2e7..45395d2e7 100755
--- a/src/Specific/montgomery32_2e511m187/compiler.sh
+++ b/src/Specific/montgomery32_2e511m187_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e511m187/compilerxx.sh b/src/Specific/montgomery32_2e511m187_16limbs/compilerxx.sh
index db9dee925..db9dee925 100755
--- a/src/Specific/montgomery32_2e511m187/compilerxx.sh
+++ b/src/Specific/montgomery32_2e511m187_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/feadd.v b/src/Specific/montgomery32_2e511m187_16limbs/feadd.v
new file mode 100644
index 000000000..68f2c4961
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e511m187_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..e0a27ff81
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/femul.v b/src/Specific/montgomery32_2e511m187_16limbs/femul.v
new file mode 100644
index 000000000..df868580c
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e511m187_16limbs/femulDisplay.v
new file mode 100644
index 000000000..c5ce90c96
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/fenz.v b/src/Specific/montgomery32_2e511m187_16limbs/fenz.v
new file mode 100644
index 000000000..d81ba93b0
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e511m187_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..0f8de2f53
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/feopp.v b/src/Specific/montgomery32_2e511m187_16limbs/feopp.v
new file mode 100644
index 000000000..2457e068b
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e511m187_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..798bcd7af
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/fesub.v b/src/Specific/montgomery32_2e511m187_16limbs/fesub.v
new file mode 100644
index 000000000..99a4118e7
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e511m187_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e511m187_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..bd817251a
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m187_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m187_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e511m187/py_interpreter.sh b/src/Specific/montgomery32_2e511m187_16limbs/py_interpreter.sh
index a906c0086..a906c0086 100755
--- a/src/Specific/montgomery32_2e511m187/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e511m187_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e511m481/Synthesis.v b/src/Specific/montgomery32_2e511m481/Synthesis.v
deleted file mode 100644
index ca7145687..000000000
--- a/src/Specific/montgomery32_2e511m481/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e511m481.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e511m481/feadd.c b/src/Specific/montgomery32_2e511m481/feadd.c
deleted file mode 100644
index 17497e041..000000000
--- a/src/Specific/montgomery32_2e511m481/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xfffffe1f, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0x7fffffff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e511m481/feadd.v b/src/Specific/montgomery32_2e511m481/feadd.v
deleted file mode 100644
index bf4b7ba95..000000000
--- a/src/Specific/montgomery32_2e511m481/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e511m481/feaddDisplay.log b/src/Specific/montgomery32_2e511m481/feaddDisplay.log
deleted file mode 100644
index 08f7c6c17..000000000
--- a/src/Specific/montgomery32_2e511m481/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xfffffe1f);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0x7fffffff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e511m481/feaddDisplay.v b/src/Specific/montgomery32_2e511m481/feaddDisplay.v
deleted file mode 100644
index 828a208c3..000000000
--- a/src/Specific/montgomery32_2e511m481/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m481.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e511m481/femul.v b/src/Specific/montgomery32_2e511m481/femul.v
deleted file mode 100644
index 4542f9b09..000000000
--- a/src/Specific/montgomery32_2e511m481/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e511m481/femulDisplay.v b/src/Specific/montgomery32_2e511m481/femulDisplay.v
deleted file mode 100644
index c62a584d8..000000000
--- a/src/Specific/montgomery32_2e511m481/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m481.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e511m481/fenz.c b/src/Specific/montgomery32_2e511m481/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e511m481/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e511m481/fenz.v b/src/Specific/montgomery32_2e511m481/fenz.v
deleted file mode 100644
index 593cbf1e2..000000000
--- a/src/Specific/montgomery32_2e511m481/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e511m481/fenzDisplay.log b/src/Specific/montgomery32_2e511m481/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e511m481/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e511m481/fenzDisplay.v b/src/Specific/montgomery32_2e511m481/fenzDisplay.v
deleted file mode 100644
index 1e073b2b7..000000000
--- a/src/Specific/montgomery32_2e511m481/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m481.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e511m481/feopp.v b/src/Specific/montgomery32_2e511m481/feopp.v
deleted file mode 100644
index 77dc601ee..000000000
--- a/src/Specific/montgomery32_2e511m481/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e511m481/feoppDisplay.v b/src/Specific/montgomery32_2e511m481/feoppDisplay.v
deleted file mode 100644
index c3496716b..000000000
--- a/src/Specific/montgomery32_2e511m481/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m481.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e511m481/fesquare.c b/src/Specific/montgomery32_2e511m481/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e511m481/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e511m481/fesub.v b/src/Specific/montgomery32_2e511m481/fesub.v
deleted file mode 100644
index 1cabe1448..000000000
--- a/src/Specific/montgomery32_2e511m481/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e511m481/fesubDisplay.v b/src/Specific/montgomery32_2e511m481/fesubDisplay.v
deleted file mode 100644
index 24a3b4c50..000000000
--- a/src/Specific/montgomery32_2e511m481/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e511m481.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e511m481/CurveParameters.v b/src/Specific/montgomery32_2e511m481_16limbs/CurveParameters.v
index 549de6e98..549de6e98 100644
--- a/src/Specific/montgomery32_2e511m481/CurveParameters.v
+++ b/src/Specific/montgomery32_2e511m481_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/Synthesis.v b/src/Specific/montgomery32_2e511m481_16limbs/Synthesis.v
new file mode 100644
index 000000000..00f30f376
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e511m481/compiler.sh b/src/Specific/montgomery32_2e511m481_16limbs/compiler.sh
index 5f9052a2a..5f9052a2a 100755
--- a/src/Specific/montgomery32_2e511m481/compiler.sh
+++ b/src/Specific/montgomery32_2e511m481_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e511m481/compilerxx.sh b/src/Specific/montgomery32_2e511m481_16limbs/compilerxx.sh
index 84e30821f..84e30821f 100755
--- a/src/Specific/montgomery32_2e511m481/compilerxx.sh
+++ b/src/Specific/montgomery32_2e511m481_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/feadd.v b/src/Specific/montgomery32_2e511m481_16limbs/feadd.v
new file mode 100644
index 000000000..a9e7ce2a6
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e511m481_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..5e5d2032e
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/femul.v b/src/Specific/montgomery32_2e511m481_16limbs/femul.v
new file mode 100644
index 000000000..fd00ae1bf
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e511m481_16limbs/femulDisplay.v
new file mode 100644
index 000000000..8d62e3686
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/fenz.v b/src/Specific/montgomery32_2e511m481_16limbs/fenz.v
new file mode 100644
index 000000000..ae3c406dd
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e511m481_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..c79a45a35
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/feopp.v b/src/Specific/montgomery32_2e511m481_16limbs/feopp.v
new file mode 100644
index 000000000..5d5bd5e9d
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e511m481_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..fe6ac1921
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/fesub.v b/src/Specific/montgomery32_2e511m481_16limbs/fesub.v
new file mode 100644
index 000000000..8ce4861c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e511m481_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e511m481_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..609d3c784
--- /dev/null
+++ b/src/Specific/montgomery32_2e511m481_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e511m481_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e511m481/py_interpreter.sh b/src/Specific/montgomery32_2e511m481_16limbs/py_interpreter.sh
index 7d2b63d36..7d2b63d36 100755
--- a/src/Specific/montgomery32_2e511m481/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e511m481_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/Synthesis.v b/src/Specific/montgomery32_2e512m491x2e496m1/Synthesis.v
deleted file mode 100644
index 51b8f9154..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feadd.c b/src/Specific/montgomery32_2e512m491x2e496m1/feadd.c
deleted file mode 100644
index b107d1c5e..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xffffffff, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0xfe14ffff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feadd.v b/src/Specific/montgomery32_2e512m491x2e496m1/feadd.v
deleted file mode 100644
index 1d430bd46..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.log b/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.log
deleted file mode 100644
index e0fa0330d..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xffffffff);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0xfe14ffff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.v
deleted file mode 100644
index 460690c74..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/femul.v b/src/Specific/montgomery32_2e512m491x2e496m1/femul.v
deleted file mode 100644
index 5868f1b36..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/femulDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1/femulDisplay.v
deleted file mode 100644
index 2c6358662..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fenz.c b/src/Specific/montgomery32_2e512m491x2e496m1/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fenz.v b/src/Specific/montgomery32_2e512m491x2e496m1/fenz.v
deleted file mode 100644
index 3281825dd..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.log b/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.v
deleted file mode 100644
index 3c83807fd..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feopp.v b/src/Specific/montgomery32_2e512m491x2e496m1/feopp.v
deleted file mode 100644
index eae422448..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/feoppDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1/feoppDisplay.v
deleted file mode 100644
index bd08d0f97..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fesquare.c b/src/Specific/montgomery32_2e512m491x2e496m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fesub.v b/src/Specific/montgomery32_2e512m491x2e496m1/fesub.v
deleted file mode 100644
index 60949983b..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/fesubDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1/fesubDisplay.v
deleted file mode 100644
index b6c2cf4e4..000000000
--- a/src/Specific/montgomery32_2e512m491x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/CurveParameters.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/CurveParameters.v
index 1ae4f17f9..1ae4f17f9 100644
--- a/src/Specific/montgomery32_2e512m491x2e496m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/Synthesis.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/Synthesis.v
new file mode 100644
index 000000000..ed19bc17d
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/compiler.sh b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/compiler.sh
index 62496c60c..62496c60c 100755
--- a/src/Specific/montgomery32_2e512m491x2e496m1/compiler.sh
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/compilerxx.sh b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/compilerxx.sh
index 8b8be97ee..8b8be97ee 100755
--- a/src/Specific/montgomery32_2e512m491x2e496m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feadd.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feadd.v
new file mode 100644
index 000000000..9cb1f7c88
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..5a905fe77
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femul.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femul.v
new file mode 100644
index 000000000..c40c520c3
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femulDisplay.v
new file mode 100644
index 000000000..715f87c08
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenz.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenz.v
new file mode 100644
index 000000000..d7c39fd66
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..767ac9a1e
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feopp.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feopp.v
new file mode 100644
index 000000000..b944d8730
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..94aebc1b3
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesub.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesub.v
new file mode 100644
index 000000000..b05314489
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..a7f04270e
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m491x2e496m1_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e512m491x2e496m1/py_interpreter.sh b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/py_interpreter.sh
index aa94ccb26..aa94ccb26 100755
--- a/src/Specific/montgomery32_2e512m491x2e496m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e512m491x2e496m1_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e512m569/Synthesis.v b/src/Specific/montgomery32_2e512m569/Synthesis.v
deleted file mode 100644
index 50e41dd18..000000000
--- a/src/Specific/montgomery32_2e512m569/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e512m569.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e512m569/feadd.c b/src/Specific/montgomery32_2e512m569/feadd.c
deleted file mode 100644
index 60bca6599..000000000
--- a/src/Specific/montgomery32_2e512m569/feadd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint32_t x65; uint8_t x66 = _addcarryx_u32(0x0, x5, x35, &x65);
- { uint32_t x68; uint8_t x69 = _addcarryx_u32(x66, x7, x37, &x68);
- { uint32_t x71; uint8_t x72 = _addcarryx_u32(x69, x9, x39, &x71);
- { uint32_t x74; uint8_t x75 = _addcarryx_u32(x72, x11, x41, &x74);
- { uint32_t x77; uint8_t x78 = _addcarryx_u32(x75, x13, x43, &x77);
- { uint32_t x80; uint8_t x81 = _addcarryx_u32(x78, x15, x45, &x80);
- { uint32_t x83; uint8_t x84 = _addcarryx_u32(x81, x17, x47, &x83);
- { uint32_t x86; uint8_t x87 = _addcarryx_u32(x84, x19, x49, &x86);
- { uint32_t x89; uint8_t x90 = _addcarryx_u32(x87, x21, x51, &x89);
- { uint32_t x92; uint8_t x93 = _addcarryx_u32(x90, x23, x53, &x92);
- { uint32_t x95; uint8_t x96 = _addcarryx_u32(x93, x25, x55, &x95);
- { uint32_t x98; uint8_t x99 = _addcarryx_u32(x96, x27, x57, &x98);
- { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x29, x59, &x101);
- { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x31, x61, &x104);
- { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x33, x63, &x107);
- { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x32, x62, &x110);
- { uint32_t x113; uint8_t x114 = _subborrow_u32(0x0, x65, 0xfffffdc7, &x113);
- { uint32_t x116; uint8_t x117 = _subborrow_u32(x114, x68, 0xffffffff, &x116);
- { uint32_t x119; uint8_t x120 = _subborrow_u32(x117, x71, 0xffffffff, &x119);
- { uint32_t x122; uint8_t x123 = _subborrow_u32(x120, x74, 0xffffffff, &x122);
- { uint32_t x125; uint8_t x126 = _subborrow_u32(x123, x77, 0xffffffff, &x125);
- { uint32_t x128; uint8_t x129 = _subborrow_u32(x126, x80, 0xffffffff, &x128);
- { uint32_t x131; uint8_t x132 = _subborrow_u32(x129, x83, 0xffffffff, &x131);
- { uint32_t x134; uint8_t x135 = _subborrow_u32(x132, x86, 0xffffffff, &x134);
- { uint32_t x137; uint8_t x138 = _subborrow_u32(x135, x89, 0xffffffff, &x137);
- { uint32_t x140; uint8_t x141 = _subborrow_u32(x138, x92, 0xffffffff, &x140);
- { uint32_t x143; uint8_t x144 = _subborrow_u32(x141, x95, 0xffffffff, &x143);
- { uint32_t x146; uint8_t x147 = _subborrow_u32(x144, x98, 0xffffffff, &x146);
- { uint32_t x149; uint8_t x150 = _subborrow_u32(x147, x101, 0xffffffff, &x149);
- { uint32_t x152; uint8_t x153 = _subborrow_u32(x150, x104, 0xffffffff, &x152);
- { uint32_t x155; uint8_t x156 = _subborrow_u32(x153, x107, 0xffffffff, &x155);
- { uint32_t x158; uint8_t x159 = _subborrow_u32(x156, x110, 0xffffffff, &x158);
- { uint32_t _; uint8_t x162 = _subborrow_u32(x159, x111, 0x0, &_);
- { uint32_t x163 = cmovznz32(x162, x158, x110);
- { uint32_t x164 = cmovznz32(x162, x155, x107);
- { uint32_t x165 = cmovznz32(x162, x152, x104);
- { uint32_t x166 = cmovznz32(x162, x149, x101);
- { uint32_t x167 = cmovznz32(x162, x146, x98);
- { uint32_t x168 = cmovznz32(x162, x143, x95);
- { uint32_t x169 = cmovznz32(x162, x140, x92);
- { uint32_t x170 = cmovznz32(x162, x137, x89);
- { uint32_t x171 = cmovznz32(x162, x134, x86);
- { uint32_t x172 = cmovznz32(x162, x131, x83);
- { uint32_t x173 = cmovznz32(x162, x128, x80);
- { uint32_t x174 = cmovznz32(x162, x125, x77);
- { uint32_t x175 = cmovznz32(x162, x122, x74);
- { uint32_t x176 = cmovznz32(x162, x119, x71);
- { uint32_t x177 = cmovznz32(x162, x116, x68);
- { uint32_t x178 = cmovznz32(x162, x113, x65);
- out[0] = x178;
- out[1] = x177;
- out[2] = x176;
- out[3] = x175;
- out[4] = x174;
- out[5] = x173;
- out[6] = x172;
- out[7] = x171;
- out[8] = x170;
- out[9] = x169;
- out[10] = x168;
- out[11] = x167;
- out[12] = x166;
- out[13] = x165;
- out[14] = x164;
- out[15] = x163;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e512m569/feadd.v b/src/Specific/montgomery32_2e512m569/feadd.v
deleted file mode 100644
index 3ca719726..000000000
--- a/src/Specific/montgomery32_2e512m569/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e512m569/feaddDisplay.log b/src/Specific/montgomery32_2e512m569/feaddDisplay.log
deleted file mode 100644
index 7b83b4a4f..000000000
--- a/src/Specific/montgomery32_2e512m569/feaddDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint32_t x65, uint8_t x66 = addcarryx_u32(0x0, x5, x35);
- uint32_t x68, uint8_t x69 = addcarryx_u32(x66, x7, x37);
- uint32_t x71, uint8_t x72 = addcarryx_u32(x69, x9, x39);
- uint32_t x74, uint8_t x75 = addcarryx_u32(x72, x11, x41);
- uint32_t x77, uint8_t x78 = addcarryx_u32(x75, x13, x43);
- uint32_t x80, uint8_t x81 = addcarryx_u32(x78, x15, x45);
- uint32_t x83, uint8_t x84 = addcarryx_u32(x81, x17, x47);
- uint32_t x86, uint8_t x87 = addcarryx_u32(x84, x19, x49);
- uint32_t x89, uint8_t x90 = addcarryx_u32(x87, x21, x51);
- uint32_t x92, uint8_t x93 = addcarryx_u32(x90, x23, x53);
- uint32_t x95, uint8_t x96 = addcarryx_u32(x93, x25, x55);
- uint32_t x98, uint8_t x99 = addcarryx_u32(x96, x27, x57);
- uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x29, x59);
- uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x31, x61);
- uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x33, x63);
- uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x32, x62);
- uint32_t x113, uint8_t x114 = subborrow_u32(0x0, x65, 0xfffffdc7);
- uint32_t x116, uint8_t x117 = subborrow_u32(x114, x68, 0xffffffff);
- uint32_t x119, uint8_t x120 = subborrow_u32(x117, x71, 0xffffffff);
- uint32_t x122, uint8_t x123 = subborrow_u32(x120, x74, 0xffffffff);
- uint32_t x125, uint8_t x126 = subborrow_u32(x123, x77, 0xffffffff);
- uint32_t x128, uint8_t x129 = subborrow_u32(x126, x80, 0xffffffff);
- uint32_t x131, uint8_t x132 = subborrow_u32(x129, x83, 0xffffffff);
- uint32_t x134, uint8_t x135 = subborrow_u32(x132, x86, 0xffffffff);
- uint32_t x137, uint8_t x138 = subborrow_u32(x135, x89, 0xffffffff);
- uint32_t x140, uint8_t x141 = subborrow_u32(x138, x92, 0xffffffff);
- uint32_t x143, uint8_t x144 = subborrow_u32(x141, x95, 0xffffffff);
- uint32_t x146, uint8_t x147 = subborrow_u32(x144, x98, 0xffffffff);
- uint32_t x149, uint8_t x150 = subborrow_u32(x147, x101, 0xffffffff);
- uint32_t x152, uint8_t x153 = subborrow_u32(x150, x104, 0xffffffff);
- uint32_t x155, uint8_t x156 = subborrow_u32(x153, x107, 0xffffffff);
- uint32_t x158, uint8_t x159 = subborrow_u32(x156, x110, 0xffffffff);
- uint32_t _, uint8_t x162 = subborrow_u32(x159, x111, 0x0);
- uint32_t x163 = cmovznz32(x162, x158, x110);
- uint32_t x164 = cmovznz32(x162, x155, x107);
- uint32_t x165 = cmovznz32(x162, x152, x104);
- uint32_t x166 = cmovznz32(x162, x149, x101);
- uint32_t x167 = cmovznz32(x162, x146, x98);
- uint32_t x168 = cmovznz32(x162, x143, x95);
- uint32_t x169 = cmovznz32(x162, x140, x92);
- uint32_t x170 = cmovznz32(x162, x137, x89);
- uint32_t x171 = cmovznz32(x162, x134, x86);
- uint32_t x172 = cmovznz32(x162, x131, x83);
- uint32_t x173 = cmovznz32(x162, x128, x80);
- uint32_t x174 = cmovznz32(x162, x125, x77);
- uint32_t x175 = cmovznz32(x162, x122, x74);
- uint32_t x176 = cmovznz32(x162, x119, x71);
- uint32_t x177 = cmovznz32(x162, x116, x68);
- uint32_t x178 = cmovznz32(x162, x113, x65);
- return (x163, x164, x165, x166, x167, x168, x169, x170, x171, x172, x173, x174, x175, x176, x177, x178))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e512m569/feaddDisplay.v b/src/Specific/montgomery32_2e512m569/feaddDisplay.v
deleted file mode 100644
index 8f526d153..000000000
--- a/src/Specific/montgomery32_2e512m569/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m569.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e512m569/femul.v b/src/Specific/montgomery32_2e512m569/femul.v
deleted file mode 100644
index 15dcd0aba..000000000
--- a/src/Specific/montgomery32_2e512m569/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e512m569/femulDisplay.v b/src/Specific/montgomery32_2e512m569/femulDisplay.v
deleted file mode 100644
index 4bf78dd7d..000000000
--- a/src/Specific/montgomery32_2e512m569/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m569.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e512m569/fenz.c b/src/Specific/montgomery32_2e512m569/fenz.c
deleted file mode 100644
index 5c5d21b0e..000000000
--- a/src/Specific/montgomery32_2e512m569/fenz.c
+++ /dev/null
@@ -1,35 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x31 = (x30 | x29);
- { uint32_t x32 = (x28 | x31);
- { uint32_t x33 = (x26 | x32);
- { uint32_t x34 = (x24 | x33);
- { uint32_t x35 = (x22 | x34);
- { uint32_t x36 = (x20 | x35);
- { uint32_t x37 = (x18 | x36);
- { uint32_t x38 = (x16 | x37);
- { uint32_t x39 = (x14 | x38);
- { uint32_t x40 = (x12 | x39);
- { uint32_t x41 = (x10 | x40);
- { uint32_t x42 = (x8 | x41);
- { uint32_t x43 = (x6 | x42);
- { uint32_t x44 = (x4 | x43);
- { uint32_t x45 = (x2 | x44);
- out[0] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e512m569/fenz.v b/src/Specific/montgomery32_2e512m569/fenz.v
deleted file mode 100644
index 3729a8422..000000000
--- a/src/Specific/montgomery32_2e512m569/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e512m569/fenzDisplay.log b/src/Specific/montgomery32_2e512m569/fenzDisplay.log
deleted file mode 100644
index eb0b6ea33..000000000
--- a/src/Specific/montgomery32_2e512m569/fenzDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x31 = (x30 | x29);
- uint32_t x32 = (x28 | x31);
- uint32_t x33 = (x26 | x32);
- uint32_t x34 = (x24 | x33);
- uint32_t x35 = (x22 | x34);
- uint32_t x36 = (x20 | x35);
- uint32_t x37 = (x18 | x36);
- uint32_t x38 = (x16 | x37);
- uint32_t x39 = (x14 | x38);
- uint32_t x40 = (x12 | x39);
- uint32_t x41 = (x10 | x40);
- uint32_t x42 = (x8 | x41);
- uint32_t x43 = (x6 | x42);
- uint32_t x44 = (x4 | x43);
- uint32_t x45 = (x2 | x44);
- return x45)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e512m569/fenzDisplay.v b/src/Specific/montgomery32_2e512m569/fenzDisplay.v
deleted file mode 100644
index 63ac1673f..000000000
--- a/src/Specific/montgomery32_2e512m569/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m569.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e512m569/feopp.v b/src/Specific/montgomery32_2e512m569/feopp.v
deleted file mode 100644
index 89e5d72a7..000000000
--- a/src/Specific/montgomery32_2e512m569/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e512m569/feoppDisplay.v b/src/Specific/montgomery32_2e512m569/feoppDisplay.v
deleted file mode 100644
index cdf786e6b..000000000
--- a/src/Specific/montgomery32_2e512m569/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m569.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e512m569/fesquare.c b/src/Specific/montgomery32_2e512m569/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e512m569/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e512m569/fesub.v b/src/Specific/montgomery32_2e512m569/fesub.v
deleted file mode 100644
index c8093c6a5..000000000
--- a/src/Specific/montgomery32_2e512m569/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e512m569/fesubDisplay.v b/src/Specific/montgomery32_2e512m569/fesubDisplay.v
deleted file mode 100644
index 52dab80c0..000000000
--- a/src/Specific/montgomery32_2e512m569/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e512m569.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e512m569/CurveParameters.v b/src/Specific/montgomery32_2e512m569_16limbs/CurveParameters.v
index cb83eba64..cb83eba64 100644
--- a/src/Specific/montgomery32_2e512m569/CurveParameters.v
+++ b/src/Specific/montgomery32_2e512m569_16limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/Synthesis.v b/src/Specific/montgomery32_2e512m569_16limbs/Synthesis.v
new file mode 100644
index 000000000..b2f247ba2
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e512m569/compiler.sh b/src/Specific/montgomery32_2e512m569_16limbs/compiler.sh
index cf43a1f48..cf43a1f48 100755
--- a/src/Specific/montgomery32_2e512m569/compiler.sh
+++ b/src/Specific/montgomery32_2e512m569_16limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e512m569/compilerxx.sh b/src/Specific/montgomery32_2e512m569_16limbs/compilerxx.sh
index 4949df427..4949df427 100755
--- a/src/Specific/montgomery32_2e512m569/compilerxx.sh
+++ b/src/Specific/montgomery32_2e512m569_16limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/feadd.v b/src/Specific/montgomery32_2e512m569_16limbs/feadd.v
new file mode 100644
index 000000000..2a2324723
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/feaddDisplay.v b/src/Specific/montgomery32_2e512m569_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..f45a8aaa1
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/femul.v b/src/Specific/montgomery32_2e512m569_16limbs/femul.v
new file mode 100644
index 000000000..a756f22c4
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/femulDisplay.v b/src/Specific/montgomery32_2e512m569_16limbs/femulDisplay.v
new file mode 100644
index 000000000..3185e3de3
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/fenz.v b/src/Specific/montgomery32_2e512m569_16limbs/fenz.v
new file mode 100644
index 000000000..d7ddd39e1
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/fenzDisplay.v b/src/Specific/montgomery32_2e512m569_16limbs/fenzDisplay.v
new file mode 100644
index 000000000..89fc31408
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/feopp.v b/src/Specific/montgomery32_2e512m569_16limbs/feopp.v
new file mode 100644
index 000000000..4ec4faa75
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/feoppDisplay.v b/src/Specific/montgomery32_2e512m569_16limbs/feoppDisplay.v
new file mode 100644
index 000000000..6b4cc0449
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/fesub.v b/src/Specific/montgomery32_2e512m569_16limbs/fesub.v
new file mode 100644
index 000000000..ba7b9b198
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e512m569_16limbs/fesubDisplay.v b/src/Specific/montgomery32_2e512m569_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..b46b960ce
--- /dev/null
+++ b/src/Specific/montgomery32_2e512m569_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e512m569_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e512m569/py_interpreter.sh b/src/Specific/montgomery32_2e512m569_16limbs/py_interpreter.sh
index 3277ef6fc..3277ef6fc 100755
--- a/src/Specific/montgomery32_2e512m569/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e512m569_16limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery32_2e521m1/Synthesis.v b/src/Specific/montgomery32_2e521m1/Synthesis.v
deleted file mode 100644
index b939ed2a9..000000000
--- a/src/Specific/montgomery32_2e521m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery32_2e521m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e521m1/feadd.c b/src/Specific/montgomery32_2e521m1/feadd.c
deleted file mode 100644
index 7019270b1..000000000
--- a/src/Specific/montgomery32_2e521m1/feadd.c
+++ /dev/null
@@ -1,106 +0,0 @@
-static void feadd(uint32_t out[17], const uint32_t in1[17], const uint32_t in2[17]) {
- { const uint32_t x34 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x66 = in2[16];
- { const uint32_t x67 = in2[15];
- { const uint32_t x65 = in2[14];
- { const uint32_t x63 = in2[13];
- { const uint32_t x61 = in2[12];
- { const uint32_t x59 = in2[11];
- { const uint32_t x57 = in2[10];
- { const uint32_t x55 = in2[9];
- { const uint32_t x53 = in2[8];
- { const uint32_t x51 = in2[7];
- { const uint32_t x49 = in2[6];
- { const uint32_t x47 = in2[5];
- { const uint32_t x45 = in2[4];
- { const uint32_t x43 = in2[3];
- { const uint32_t x41 = in2[2];
- { const uint32_t x39 = in2[1];
- { const uint32_t x37 = in2[0];
- { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x5, x37, &x69);
- { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x7, x39, &x72);
- { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x9, x41, &x75);
- { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x11, x43, &x78);
- { uint32_t x81; uint8_t x82 = _addcarryx_u32(x79, x13, x45, &x81);
- { uint32_t x84; uint8_t x85 = _addcarryx_u32(x82, x15, x47, &x84);
- { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x17, x49, &x87);
- { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x19, x51, &x90);
- { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x21, x53, &x93);
- { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x23, x55, &x96);
- { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x25, x57, &x99);
- { uint32_t x102; uint8_t x103 = _addcarryx_u32(x100, x27, x59, &x102);
- { uint32_t x105; uint8_t x106 = _addcarryx_u32(x103, x29, x61, &x105);
- { uint32_t x108; uint8_t x109 = _addcarryx_u32(x106, x31, x63, &x108);
- { uint32_t x111; uint8_t x112 = _addcarryx_u32(x109, x33, x65, &x111);
- { uint32_t x114; uint8_t x115 = _addcarryx_u32(x112, x35, x67, &x114);
- { uint32_t x117; uint8_t x118 = _addcarryx_u32(x115, x34, x66, &x117);
- { uint32_t x120; uint8_t x121 = _subborrow_u32(0x0, x69, 0xffffffff, &x120);
- { uint32_t x123; uint8_t x124 = _subborrow_u32(x121, x72, 0xffffffff, &x123);
- { uint32_t x126; uint8_t x127 = _subborrow_u32(x124, x75, 0xffffffff, &x126);
- { uint32_t x129; uint8_t x130 = _subborrow_u32(x127, x78, 0xffffffff, &x129);
- { uint32_t x132; uint8_t x133 = _subborrow_u32(x130, x81, 0xffffffff, &x132);
- { uint32_t x135; uint8_t x136 = _subborrow_u32(x133, x84, 0xffffffff, &x135);
- { uint32_t x138; uint8_t x139 = _subborrow_u32(x136, x87, 0xffffffff, &x138);
- { uint32_t x141; uint8_t x142 = _subborrow_u32(x139, x90, 0xffffffff, &x141);
- { uint32_t x144; uint8_t x145 = _subborrow_u32(x142, x93, 0xffffffff, &x144);
- { uint32_t x147; uint8_t x148 = _subborrow_u32(x145, x96, 0xffffffff, &x147);
- { uint32_t x150; uint8_t x151 = _subborrow_u32(x148, x99, 0xffffffff, &x150);
- { uint32_t x153; uint8_t x154 = _subborrow_u32(x151, x102, 0xffffffff, &x153);
- { uint32_t x156; uint8_t x157 = _subborrow_u32(x154, x105, 0xffffffff, &x156);
- { uint32_t x159; uint8_t x160 = _subborrow_u32(x157, x108, 0xffffffff, &x159);
- { uint32_t x162; uint8_t x163 = _subborrow_u32(x160, x111, 0xffffffff, &x162);
- { uint32_t x165; uint8_t x166 = _subborrow_u32(x163, x114, 0xffffffff, &x165);
- { uint32_t x168; uint8_t x169 = _subborrow_u32(x166, x117, 0x1ff, &x168);
- { uint32_t _; uint8_t x172 = _subborrow_u32(x169, x118, 0x0, &_);
- { uint32_t x173 = cmovznz32(x172, x168, x117);
- { uint32_t x174 = cmovznz32(x172, x165, x114);
- { uint32_t x175 = cmovznz32(x172, x162, x111);
- { uint32_t x176 = cmovznz32(x172, x159, x108);
- { uint32_t x177 = cmovznz32(x172, x156, x105);
- { uint32_t x178 = cmovznz32(x172, x153, x102);
- { uint32_t x179 = cmovznz32(x172, x150, x99);
- { uint32_t x180 = cmovznz32(x172, x147, x96);
- { uint32_t x181 = cmovznz32(x172, x144, x93);
- { uint32_t x182 = cmovznz32(x172, x141, x90);
- { uint32_t x183 = cmovznz32(x172, x138, x87);
- { uint32_t x184 = cmovznz32(x172, x135, x84);
- { uint32_t x185 = cmovznz32(x172, x132, x81);
- { uint32_t x186 = cmovznz32(x172, x129, x78);
- { uint32_t x187 = cmovznz32(x172, x126, x75);
- { uint32_t x188 = cmovznz32(x172, x123, x72);
- { uint32_t x189 = cmovznz32(x172, x120, x69);
- out[0] = x189;
- out[1] = x188;
- out[2] = x187;
- out[3] = x186;
- out[4] = x185;
- out[5] = x184;
- out[6] = x183;
- out[7] = x182;
- out[8] = x181;
- out[9] = x180;
- out[10] = x179;
- out[11] = x178;
- out[12] = x177;
- out[13] = x176;
- out[14] = x175;
- out[15] = x174;
- out[16] = x173;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e521m1/feadd.v b/src/Specific/montgomery32_2e521m1/feadd.v
deleted file mode 100644
index 6b3a090a1..000000000
--- a/src/Specific/montgomery32_2e521m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e521m1/feaddDisplay.log b/src/Specific/montgomery32_2e521m1/feaddDisplay.log
deleted file mode 100644
index 0dbd5526d..000000000
--- a/src/Specific/montgomery32_2e521m1/feaddDisplay.log
+++ /dev/null
@@ -1,59 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x34, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x66, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37))%core,
- uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x5, x37);
- uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x7, x39);
- uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x9, x41);
- uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x11, x43);
- uint32_t x81, uint8_t x82 = addcarryx_u32(x79, x13, x45);
- uint32_t x84, uint8_t x85 = addcarryx_u32(x82, x15, x47);
- uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x17, x49);
- uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x19, x51);
- uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x21, x53);
- uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x23, x55);
- uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x25, x57);
- uint32_t x102, uint8_t x103 = addcarryx_u32(x100, x27, x59);
- uint32_t x105, uint8_t x106 = addcarryx_u32(x103, x29, x61);
- uint32_t x108, uint8_t x109 = addcarryx_u32(x106, x31, x63);
- uint32_t x111, uint8_t x112 = addcarryx_u32(x109, x33, x65);
- uint32_t x114, uint8_t x115 = addcarryx_u32(x112, x35, x67);
- uint32_t x117, uint8_t x118 = addcarryx_u32(x115, x34, x66);
- uint32_t x120, uint8_t x121 = subborrow_u32(0x0, x69, 0xffffffff);
- uint32_t x123, uint8_t x124 = subborrow_u32(x121, x72, 0xffffffff);
- uint32_t x126, uint8_t x127 = subborrow_u32(x124, x75, 0xffffffff);
- uint32_t x129, uint8_t x130 = subborrow_u32(x127, x78, 0xffffffff);
- uint32_t x132, uint8_t x133 = subborrow_u32(x130, x81, 0xffffffff);
- uint32_t x135, uint8_t x136 = subborrow_u32(x133, x84, 0xffffffff);
- uint32_t x138, uint8_t x139 = subborrow_u32(x136, x87, 0xffffffff);
- uint32_t x141, uint8_t x142 = subborrow_u32(x139, x90, 0xffffffff);
- uint32_t x144, uint8_t x145 = subborrow_u32(x142, x93, 0xffffffff);
- uint32_t x147, uint8_t x148 = subborrow_u32(x145, x96, 0xffffffff);
- uint32_t x150, uint8_t x151 = subborrow_u32(x148, x99, 0xffffffff);
- uint32_t x153, uint8_t x154 = subborrow_u32(x151, x102, 0xffffffff);
- uint32_t x156, uint8_t x157 = subborrow_u32(x154, x105, 0xffffffff);
- uint32_t x159, uint8_t x160 = subborrow_u32(x157, x108, 0xffffffff);
- uint32_t x162, uint8_t x163 = subborrow_u32(x160, x111, 0xffffffff);
- uint32_t x165, uint8_t x166 = subborrow_u32(x163, x114, 0xffffffff);
- uint32_t x168, uint8_t x169 = subborrow_u32(x166, x117, 0x1ff);
- uint32_t _, uint8_t x172 = subborrow_u32(x169, x118, 0x0);
- uint32_t x173 = cmovznz32(x172, x168, x117);
- uint32_t x174 = cmovznz32(x172, x165, x114);
- uint32_t x175 = cmovznz32(x172, x162, x111);
- uint32_t x176 = cmovznz32(x172, x159, x108);
- uint32_t x177 = cmovznz32(x172, x156, x105);
- uint32_t x178 = cmovznz32(x172, x153, x102);
- uint32_t x179 = cmovznz32(x172, x150, x99);
- uint32_t x180 = cmovznz32(x172, x147, x96);
- uint32_t x181 = cmovznz32(x172, x144, x93);
- uint32_t x182 = cmovznz32(x172, x141, x90);
- uint32_t x183 = cmovznz32(x172, x138, x87);
- uint32_t x184 = cmovznz32(x172, x135, x84);
- uint32_t x185 = cmovznz32(x172, x132, x81);
- uint32_t x186 = cmovznz32(x172, x129, x78);
- uint32_t x187 = cmovznz32(x172, x126, x75);
- uint32_t x188 = cmovznz32(x172, x123, x72);
- uint32_t x189 = cmovznz32(x172, x120, x69);
- return (x173, x174, x175, x176, x177, x178, x179, x180, x181, x182, x183, x184, x185, x186, x187, x188, x189))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e521m1/feaddDisplay.v b/src/Specific/montgomery32_2e521m1/feaddDisplay.v
deleted file mode 100644
index d09e417ef..000000000
--- a/src/Specific/montgomery32_2e521m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e521m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery32_2e521m1/femul.v b/src/Specific/montgomery32_2e521m1/femul.v
deleted file mode 100644
index 055322ece..000000000
--- a/src/Specific/montgomery32_2e521m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e521m1/femulDisplay.v b/src/Specific/montgomery32_2e521m1/femulDisplay.v
deleted file mode 100644
index 1b2465ed5..000000000
--- a/src/Specific/montgomery32_2e521m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e521m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery32_2e521m1/fenz.c b/src/Specific/montgomery32_2e521m1/fenz.c
deleted file mode 100644
index fdbe458c3..000000000
--- a/src/Specific/montgomery32_2e521m1/fenz.c
+++ /dev/null
@@ -1,37 +0,0 @@
-static void fenz(ReturnType uint32_t out[1], const uint32_t in1[17]) {
- { const uint32_t x31 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x33 = (x32 | x31);
- { uint32_t x34 = (x30 | x33);
- { uint32_t x35 = (x28 | x34);
- { uint32_t x36 = (x26 | x35);
- { uint32_t x37 = (x24 | x36);
- { uint32_t x38 = (x22 | x37);
- { uint32_t x39 = (x20 | x38);
- { uint32_t x40 = (x18 | x39);
- { uint32_t x41 = (x16 | x40);
- { uint32_t x42 = (x14 | x41);
- { uint32_t x43 = (x12 | x42);
- { uint32_t x44 = (x10 | x43);
- { uint32_t x45 = (x8 | x44);
- { uint32_t x46 = (x6 | x45);
- { uint32_t x47 = (x4 | x46);
- { uint32_t x48 = (x2 | x47);
- out[0] = x48;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery32_2e521m1/fenz.v b/src/Specific/montgomery32_2e521m1/fenz.v
deleted file mode 100644
index 4207e6e9b..000000000
--- a/src/Specific/montgomery32_2e521m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e521m1/fenzDisplay.log b/src/Specific/montgomery32_2e521m1/fenzDisplay.log
deleted file mode 100644
index 47cc8d6b2..000000000
--- a/src/Specific/montgomery32_2e521m1/fenzDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x31, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x33 = (x32 | x31);
- uint32_t x34 = (x30 | x33);
- uint32_t x35 = (x28 | x34);
- uint32_t x36 = (x26 | x35);
- uint32_t x37 = (x24 | x36);
- uint32_t x38 = (x22 | x37);
- uint32_t x39 = (x20 | x38);
- uint32_t x40 = (x18 | x39);
- uint32_t x41 = (x16 | x40);
- uint32_t x42 = (x14 | x41);
- uint32_t x43 = (x12 | x42);
- uint32_t x44 = (x10 | x43);
- uint32_t x45 = (x8 | x44);
- uint32_t x46 = (x6 | x45);
- uint32_t x47 = (x4 | x46);
- uint32_t x48 = (x2 | x47);
- return x48)
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e521m1/fenzDisplay.v b/src/Specific/montgomery32_2e521m1/fenzDisplay.v
deleted file mode 100644
index 6342d51b8..000000000
--- a/src/Specific/montgomery32_2e521m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e521m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery32_2e521m1/feopp.v b/src/Specific/montgomery32_2e521m1/feopp.v
deleted file mode 100644
index 411f75090..000000000
--- a/src/Specific/montgomery32_2e521m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e521m1/feoppDisplay.v b/src/Specific/montgomery32_2e521m1/feoppDisplay.v
deleted file mode 100644
index 901e5025a..000000000
--- a/src/Specific/montgomery32_2e521m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e521m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery32_2e521m1/fesquare.c b/src/Specific/montgomery32_2e521m1/fesquare.c
deleted file mode 100644
index e3345edfe..000000000
--- a/src/Specific/montgomery32_2e521m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery32/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint32_t *out, const uint32_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery32_2e521m1/fesub.v b/src/Specific/montgomery32_2e521m1/fesub.v
deleted file mode 100644
index 3740e3aaa..000000000
--- a/src/Specific/montgomery32_2e521m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e521m1/fesubDisplay.v b/src/Specific/montgomery32_2e521m1/fesubDisplay.v
deleted file mode 100644
index f47e1c492..000000000
--- a/src/Specific/montgomery32_2e521m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery32_2e521m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery32_2e521m1/CurveParameters.v b/src/Specific/montgomery32_2e521m1_17limbs/CurveParameters.v
index 92329b455..92329b455 100644
--- a/src/Specific/montgomery32_2e521m1/CurveParameters.v
+++ b/src/Specific/montgomery32_2e521m1_17limbs/CurveParameters.v
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/Synthesis.v b/src/Specific/montgomery32_2e521m1_17limbs/Synthesis.v
new file mode 100644
index 000000000..10de9b3e6
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery32_2e521m1/compiler.sh b/src/Specific/montgomery32_2e521m1_17limbs/compiler.sh
index da7852731..da7852731 100755
--- a/src/Specific/montgomery32_2e521m1/compiler.sh
+++ b/src/Specific/montgomery32_2e521m1_17limbs/compiler.sh
diff --git a/src/Specific/montgomery32_2e521m1/compilerxx.sh b/src/Specific/montgomery32_2e521m1_17limbs/compilerxx.sh
index 7e5be195a..7e5be195a 100755
--- a/src/Specific/montgomery32_2e521m1/compilerxx.sh
+++ b/src/Specific/montgomery32_2e521m1_17limbs/compilerxx.sh
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/feadd.v b/src/Specific/montgomery32_2e521m1_17limbs/feadd.v
new file mode 100644
index 000000000..c0a0264cd
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/feaddDisplay.v b/src/Specific/montgomery32_2e521m1_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..d7ae8cdd8
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/femul.v b/src/Specific/montgomery32_2e521m1_17limbs/femul.v
new file mode 100644
index 000000000..856bef63d
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/femulDisplay.v b/src/Specific/montgomery32_2e521m1_17limbs/femulDisplay.v
new file mode 100644
index 000000000..f41ba2d0f
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/fenz.v b/src/Specific/montgomery32_2e521m1_17limbs/fenz.v
new file mode 100644
index 000000000..826fe316f
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/fenzDisplay.v b/src/Specific/montgomery32_2e521m1_17limbs/fenzDisplay.v
new file mode 100644
index 000000000..093ea6bcc
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/feopp.v b/src/Specific/montgomery32_2e521m1_17limbs/feopp.v
new file mode 100644
index 000000000..61b0cfa03
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/feoppDisplay.v b/src/Specific/montgomery32_2e521m1_17limbs/feoppDisplay.v
new file mode 100644
index 000000000..a38aac29d
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/fesub.v b/src/Specific/montgomery32_2e521m1_17limbs/fesub.v
new file mode 100644
index 000000000..0d3390e19
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery32_2e521m1_17limbs/fesubDisplay.v b/src/Specific/montgomery32_2e521m1_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..950af96c1
--- /dev/null
+++ b/src/Specific/montgomery32_2e521m1_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery32_2e521m1_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery32_2e521m1/py_interpreter.sh b/src/Specific/montgomery32_2e521m1_17limbs/py_interpreter.sh
index f8030cf9e..f8030cf9e 100755
--- a/src/Specific/montgomery32_2e521m1/py_interpreter.sh
+++ b/src/Specific/montgomery32_2e521m1_17limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e127m1/Synthesis.v b/src/Specific/montgomery64_2e127m1/Synthesis.v
deleted file mode 100644
index 19135e306..000000000
--- a/src/Specific/montgomery64_2e127m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e127m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e127m1/feadd.c b/src/Specific/montgomery64_2e127m1/feadd.c
deleted file mode 100644
index 91fa60600..000000000
--- a/src/Specific/montgomery64_2e127m1/feadd.c
+++ /dev/null
@@ -1,16 +0,0 @@
-static void feadd(uint64_t out[2], const uint64_t in1[2], const uint64_t in2[2]) {
- { const uint64_t x4 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x6 = in2[1];
- { const uint64_t x7 = in2[0];
- { uint64_t x9; uint8_t x10 = _addcarryx_u64(0x0, x5, x7, &x9);
- { uint64_t x12; uint8_t x13 = _addcarryx_u64(x10, x4, x6, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(0x0, x9, 0xffffffffffffffffL, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, x12, 0x7fffffffffffffffL, &x18);
- { uint64_t _; uint8_t x22 = _subborrow_u64(x19, x13, 0x0, &_);
- { uint64_t x23 = cmovznz64(x22, x18, x12);
- { uint64_t x24 = cmovznz64(x22, x15, x9);
- out[0] = x24;
- out[1] = x23;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e127m1/feadd.v b/src/Specific/montgomery64_2e127m1/feadd.v
deleted file mode 100644
index c01f323bd..000000000
--- a/src/Specific/montgomery64_2e127m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e127m1/feaddDisplay.log b/src/Specific/montgomery64_2e127m1/feaddDisplay.log
deleted file mode 100644
index a47056f6b..000000000
--- a/src/Specific/montgomery64_2e127m1/feaddDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x x0 : word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x4, x5, (x6, x7))%core,
- uint64_t x9, uint8_t x10 = addcarryx_u64(0x0, x5, x7);
- uint64_t x12, uint8_t x13 = addcarryx_u64(x10, x4, x6);
- uint64_t x15, uint8_t x16 = subborrow_u64(0x0, x9, 0xffffffffffffffffL);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, x12, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x22 = subborrow_u64(x19, x13, 0x0);
- uint64_t x23 = cmovznz64(x22, x18, x12);
- uint64_t x24 = cmovznz64(x22, x15, x9);
- return (x23, x24))
-(x, x0)%core
- : word64 * word64 → word64 * word64 → ReturnType (uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e127m1/feaddDisplay.v b/src/Specific/montgomery64_2e127m1/feaddDisplay.v
deleted file mode 100644
index acc8bea07..000000000
--- a/src/Specific/montgomery64_2e127m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e127m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e127m1/femul.c b/src/Specific/montgomery64_2e127m1/femul.c
deleted file mode 100644
index c6f5ef6fb..000000000
--- a/src/Specific/montgomery64_2e127m1/femul.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void femul(uint64_t out[2], const uint64_t in1[2], const uint64_t in2[2]) {
- { const uint64_t x4 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x6 = in2[1];
- { const uint64_t x7 = in2[0];
- { uint64_t x10; uint64_t x9 = _mulx_u64(x5, x7, &x10);
- { uint64_t x13; uint64_t x12 = _mulx_u64(x5, x6, &x13);
- { uint64_t x15; uint8_t x16 = _addcarryx_u64(0x0, x10, x12, &x15);
- { uint64_t x18; uint8_t _ = _addcarryx_u64(0x0, x16, x13, &x18);
- { uint64_t x22; uint64_t x21 = _mulx_u64(x9, 0xffffffffffffffffL, &x22);
- { uint64_t x25; uint64_t x24 = _mulx_u64(x9, 0x7fffffffffffffffL, &x25);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(0x0, x22, x24, &x27);
- { uint64_t x30; uint8_t _ = _addcarryx_u64(0x0, x28, x25, &x30);
- { uint64_t _; uint8_t x34 = _addcarryx_u64(0x0, x9, x21, &_);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x15, x27, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x18, x30, &x39);
- { uint64_t x43; uint64_t x42 = _mulx_u64(x4, x7, &x43);
- { uint64_t x46; uint64_t x45 = _mulx_u64(x4, x6, &x46);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(0x0, x43, x45, &x48);
- { uint64_t x51; uint8_t _ = _addcarryx_u64(0x0, x49, x46, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(0x0, x36, x42, &x54);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x55, x39, x48, &x57);
- { uint64_t x60; uint8_t x61 = _addcarryx_u64(x58, x40, x51, &x60);
- { uint64_t x64; uint64_t x63 = _mulx_u64(x54, 0xffffffffffffffffL, &x64);
- { uint64_t x67; uint64_t x66 = _mulx_u64(x54, 0x7fffffffffffffffL, &x67);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x64, x66, &x69);
- { uint64_t x72; uint8_t _ = _addcarryx_u64(0x0, x70, x67, &x72);
- { uint64_t _; uint8_t x76 = _addcarryx_u64(0x0, x54, x63, &_);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x57, x69, &x78);
- { uint64_t x81; uint8_t x82 = _addcarryx_u64(x79, x60, x72, &x81);
- { uint8_t x83 = (x82 + x61);
- { uint64_t x85; uint8_t x86 = _subborrow_u64(0x0, x78, 0xffffffffffffffffL, &x85);
- { uint64_t x88; uint8_t x89 = _subborrow_u64(x86, x81, 0x7fffffffffffffffL, &x88);
- { uint64_t _; uint8_t x92 = _subborrow_u64(x89, x83, 0x0, &_);
- { uint64_t x93 = cmovznz64(x92, x88, x81);
- { uint64_t x94 = cmovznz64(x92, x85, x78);
- out[0] = x94;
- out[1] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e127m1/femul.v b/src/Specific/montgomery64_2e127m1/femul.v
deleted file mode 100644
index db33b1ad3..000000000
--- a/src/Specific/montgomery64_2e127m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e127m1/femulDisplay.log b/src/Specific/montgomery64_2e127m1/femulDisplay.log
deleted file mode 100644
index ea19e6486..000000000
--- a/src/Specific/montgomery64_2e127m1/femulDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x x0 : word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x4, x5, (x6, x7))%core,
- uint64_t x9, uint64_t x10 = mulx_u64(x5, x7);
- uint64_t x12, uint64_t x13 = mulx_u64(x5, x6);
- uint64_t x15, uint8_t x16 = addcarryx_u64(0x0, x10, x12);
- uint64_t x18, uint8_t _ = addcarryx_u64(0x0, x16, x13);
- uint64_t x21, uint64_t x22 = mulx_u64(x9, 0xffffffffffffffffL);
- uint64_t x24, uint64_t x25 = mulx_u64(x9, 0x7fffffffffffffffL);
- uint64_t x27, uint8_t x28 = addcarryx_u64(0x0, x22, x24);
- uint64_t x30, uint8_t _ = addcarryx_u64(0x0, x28, x25);
- uint64_t _, uint8_t x34 = addcarryx_u64(0x0, x9, x21);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x15, x27);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x18, x30);
- uint64_t x42, uint64_t x43 = mulx_u64(x4, x7);
- uint64_t x45, uint64_t x46 = mulx_u64(x4, x6);
- uint64_t x48, uint8_t x49 = addcarryx_u64(0x0, x43, x45);
- uint64_t x51, uint8_t _ = addcarryx_u64(0x0, x49, x46);
- uint64_t x54, uint8_t x55 = addcarryx_u64(0x0, x36, x42);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x55, x39, x48);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x58, x40, x51);
- uint64_t x63, uint64_t x64 = mulx_u64(x54, 0xffffffffffffffffL);
- uint64_t x66, uint64_t x67 = mulx_u64(x54, 0x7fffffffffffffffL);
- uint64_t x69, uint8_t x70 = addcarryx_u64(0x0, x64, x66);
- uint64_t x72, uint8_t _ = addcarryx_u64(0x0, x70, x67);
- uint64_t _, uint8_t x76 = addcarryx_u64(0x0, x54, x63);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x57, x69);
- uint64_t x81, uint8_t x82 = addcarryx_u64(x79, x60, x72);
- uint8_t x83 = (x82 + x61);
- uint64_t x85, uint8_t x86 = subborrow_u64(0x0, x78, 0xffffffffffffffffL);
- uint64_t x88, uint8_t x89 = subborrow_u64(x86, x81, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x92 = subborrow_u64(x89, x83, 0x0);
- uint64_t x93 = cmovznz64(x92, x88, x81);
- uint64_t x94 = cmovznz64(x92, x85, x78);
- return (x93, x94))
-(x, x0)%core
- : word64 * word64 → word64 * word64 → ReturnType (uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e127m1/femulDisplay.v b/src/Specific/montgomery64_2e127m1/femulDisplay.v
deleted file mode 100644
index 000d6ced6..000000000
--- a/src/Specific/montgomery64_2e127m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e127m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e127m1/fenz.c b/src/Specific/montgomery64_2e127m1/fenz.c
deleted file mode 100644
index 3b61c77b8..000000000
--- a/src/Specific/montgomery64_2e127m1/fenz.c
+++ /dev/null
@@ -1,7 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[2]) {
- { const uint64_t x1 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x3 = (x2 | x1);
- out[0] = x3;
- }}}
-}
diff --git a/src/Specific/montgomery64_2e127m1/fenz.v b/src/Specific/montgomery64_2e127m1/fenz.v
deleted file mode 100644
index 74a25c2db..000000000
--- a/src/Specific/montgomery64_2e127m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e127m1/fenzDisplay.log b/src/Specific/montgomery64_2e127m1/fenzDisplay.log
deleted file mode 100644
index 42367b877..000000000
--- a/src/Specific/montgomery64_2e127m1/fenzDisplay.log
+++ /dev/null
@@ -1,8 +0,0 @@
-λ x : word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x1, x2)%core,
- uint64_t x3 = (x2 | x1);
- return x3)
-x
- : word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e127m1/fenzDisplay.v b/src/Specific/montgomery64_2e127m1/fenzDisplay.v
deleted file mode 100644
index 3645a8a57..000000000
--- a/src/Specific/montgomery64_2e127m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e127m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e127m1/feopp.c b/src/Specific/montgomery64_2e127m1/feopp.c
deleted file mode 100644
index 2982fec31..000000000
--- a/src/Specific/montgomery64_2e127m1/feopp.c
+++ /dev/null
@@ -1,14 +0,0 @@
-static void feopp(uint64_t out[2], const uint64_t in1[2]) {
- { const uint64_t x1 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x4; uint8_t x5 = _subborrow_u64(0x0, 0x0, x2, &x4);
- { uint64_t x7; uint8_t x8 = _subborrow_u64(x5, 0x0, x1, &x7);
- { uint64_t x9 = cmovznz64(x8, 0x0, 0xffffffffffffffffL);
- { uint64_t x10 = (x9 & 0xffffffffffffffffL);
- { uint64_t x12; uint8_t x13 = _addcarryx_u64(0x0, x4, x10, &x12);
- { uint64_t x14 = (x9 & 0x7fffffffffffffffL);
- { uint64_t x16; uint8_t _ = _addcarryx_u64(x13, x7, x14, &x16);
- out[0] = x12;
- out[1] = x16;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e127m1/feopp.v b/src/Specific/montgomery64_2e127m1/feopp.v
deleted file mode 100644
index 8c13a7efb..000000000
--- a/src/Specific/montgomery64_2e127m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e127m1/feoppDisplay.log b/src/Specific/montgomery64_2e127m1/feoppDisplay.log
deleted file mode 100644
index 2e861c851..000000000
--- a/src/Specific/montgomery64_2e127m1/feoppDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x1, x2)%core,
- uint64_t x4, uint8_t x5 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x7, uint8_t x8 = subborrow_u64(x5, 0x0, x1);
- uint64_t x9 = cmovznz64(x8, 0x0, 0xffffffffffffffffL);
- uint64_t x10 = (x9 & 0xffffffffffffffffL);
- uint64_t x12, uint8_t x13 = addcarryx_u64(0x0, x4, x10);
- uint64_t x14 = (x9 & 0x7fffffffffffffffL);
- uint64_t x16, uint8_t _ = addcarryx_u64(x13, x7, x14);
- (Return x16, Return x12))
-x
- : word64 * word64 → ReturnType (uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e127m1/feoppDisplay.v b/src/Specific/montgomery64_2e127m1/feoppDisplay.v
deleted file mode 100644
index 752ff2ec7..000000000
--- a/src/Specific/montgomery64_2e127m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e127m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e127m1/fesquare.c b/src/Specific/montgomery64_2e127m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e127m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e127m1/fesub.c b/src/Specific/montgomery64_2e127m1/fesub.c
deleted file mode 100644
index 45bb624d9..000000000
--- a/src/Specific/montgomery64_2e127m1/fesub.c
+++ /dev/null
@@ -1,16 +0,0 @@
-static void fesub(uint64_t out[2], const uint64_t in1[2], const uint64_t in2[2]) {
- { const uint64_t x4 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x6 = in2[1];
- { const uint64_t x7 = in2[0];
- { uint64_t x9; uint8_t x10 = _subborrow_u64(0x0, x5, x7, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, x4, x6, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffffL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x9, x15, &x17);
- { uint64_t x19 = (x14 & 0x7fffffffffffffffL);
- { uint64_t x21; uint8_t _ = _addcarryx_u64(x18, x12, x19, &x21);
- out[0] = x17;
- out[1] = x21;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e127m1/fesub.v b/src/Specific/montgomery64_2e127m1/fesub.v
deleted file mode 100644
index 09945c747..000000000
--- a/src/Specific/montgomery64_2e127m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e127m1/fesubDisplay.log b/src/Specific/montgomery64_2e127m1/fesubDisplay.log
deleted file mode 100644
index ec41671f0..000000000
--- a/src/Specific/montgomery64_2e127m1/fesubDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x x0 : word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x4, x5, (x6, x7))%core,
- uint64_t x9, uint8_t x10 = subborrow_u64(0x0, x5, x7);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, x4, x6);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffffL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x9, x15);
- uint64_t x19 = (x14 & 0x7fffffffffffffffL);
- uint64_t x21, uint8_t _ = addcarryx_u64(x18, x12, x19);
- (Return x21, Return x17))
-(x, x0)%core
- : word64 * word64 → word64 * word64 → ReturnType (uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e127m1/fesubDisplay.v b/src/Specific/montgomery64_2e127m1/fesubDisplay.v
deleted file mode 100644
index 91308f964..000000000
--- a/src/Specific/montgomery64_2e127m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e127m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e127m1/CurveParameters.v b/src/Specific/montgomery64_2e127m1_2limbs/CurveParameters.v
index fb2a5146e..fb2a5146e 100644
--- a/src/Specific/montgomery64_2e127m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e127m1_2limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/Synthesis.v b/src/Specific/montgomery64_2e127m1_2limbs/Synthesis.v
new file mode 100644
index 000000000..9ab5a4d27
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e127m1/compiler.sh b/src/Specific/montgomery64_2e127m1_2limbs/compiler.sh
index 0cd0a7d9a..0cd0a7d9a 100755
--- a/src/Specific/montgomery64_2e127m1/compiler.sh
+++ b/src/Specific/montgomery64_2e127m1_2limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e127m1/compilerxx.sh b/src/Specific/montgomery64_2e127m1_2limbs/compilerxx.sh
index 19dfd153a..19dfd153a 100755
--- a/src/Specific/montgomery64_2e127m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e127m1_2limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/feadd.v b/src/Specific/montgomery64_2e127m1_2limbs/feadd.v
new file mode 100644
index 000000000..b04fa87d7
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/feaddDisplay.v b/src/Specific/montgomery64_2e127m1_2limbs/feaddDisplay.v
new file mode 100644
index 000000000..c4a26b0b0
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/femul.v b/src/Specific/montgomery64_2e127m1_2limbs/femul.v
new file mode 100644
index 000000000..66a33f9c3
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/femulDisplay.v b/src/Specific/montgomery64_2e127m1_2limbs/femulDisplay.v
new file mode 100644
index 000000000..1d32b1bf0
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/fenz.v b/src/Specific/montgomery64_2e127m1_2limbs/fenz.v
new file mode 100644
index 000000000..0f01535d9
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/fenzDisplay.v b/src/Specific/montgomery64_2e127m1_2limbs/fenzDisplay.v
new file mode 100644
index 000000000..dd3265746
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/feopp.v b/src/Specific/montgomery64_2e127m1_2limbs/feopp.v
new file mode 100644
index 000000000..3b4228859
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/feoppDisplay.v b/src/Specific/montgomery64_2e127m1_2limbs/feoppDisplay.v
new file mode 100644
index 000000000..409dbc85a
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/fesub.v b/src/Specific/montgomery64_2e127m1_2limbs/fesub.v
new file mode 100644
index 000000000..c9f9a4b00
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e127m1_2limbs/fesubDisplay.v b/src/Specific/montgomery64_2e127m1_2limbs/fesubDisplay.v
new file mode 100644
index 000000000..1285480a7
--- /dev/null
+++ b/src/Specific/montgomery64_2e127m1_2limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e127m1_2limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e127m1/py_interpreter.sh b/src/Specific/montgomery64_2e127m1_2limbs/py_interpreter.sh
index 83c4398b2..83c4398b2 100755
--- a/src/Specific/montgomery64_2e127m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e127m1_2limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e129m25/Synthesis.v b/src/Specific/montgomery64_2e129m25/Synthesis.v
deleted file mode 100644
index c338ad463..000000000
--- a/src/Specific/montgomery64_2e129m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e129m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e129m25/feadd.c b/src/Specific/montgomery64_2e129m25/feadd.c
deleted file mode 100644
index 1f4da6ce2..000000000
--- a/src/Specific/montgomery64_2e129m25/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffe7L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x1, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e129m25/feadd.v b/src/Specific/montgomery64_2e129m25/feadd.v
deleted file mode 100644
index 6b32bddc3..000000000
--- a/src/Specific/montgomery64_2e129m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e129m25/feaddDisplay.log b/src/Specific/montgomery64_2e129m25/feaddDisplay.log
deleted file mode 100644
index 429f30466..000000000
--- a/src/Specific/montgomery64_2e129m25/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffe7L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x1);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e129m25/feaddDisplay.v b/src/Specific/montgomery64_2e129m25/feaddDisplay.v
deleted file mode 100644
index 02bda4fee..000000000
--- a/src/Specific/montgomery64_2e129m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e129m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e129m25/femul.c b/src/Specific/montgomery64_2e129m25/femul.c
deleted file mode 100644
index 6e245304f..000000000
--- a/src/Specific/montgomery64_2e129m25/femul.c
+++ /dev/null
@@ -1,74 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffe7L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(0x0, x35, x37, &x40);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(x41, x38, x31, &x43);
- { uint64_t _; uint8_t x47 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x22, x40, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x25, x43, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x28, x44, &x55);
- { uint64_t x59; uint64_t x58 = _mulx_u64(x7, x9, &x59);
- { uint64_t x62; uint64_t x61 = _mulx_u64(x7, x11, &x62);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x10, &x65);
- { uint64_t x67; uint8_t x68 = _addcarryx_u64(0x0, x59, x61, &x67);
- { uint64_t x70; uint8_t x71 = _addcarryx_u64(x68, x62, x64, &x70);
- { uint64_t x73; uint8_t _ = _addcarryx_u64(0x0, x71, x65, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(0x0, x49, x58, &x76);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(x77, x52, x67, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x55, x70, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x56, x73, &x85);
- { uint64_t _; uint64_t x88 = _mulx_u64(x76, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x92; uint64_t x91 = _mulx_u64(x88, 0xffffffffffffffe7L, &x92);
- { uint64_t x95; uint64_t x94 = _mulx_u64(x88, 0xffffffffffffffffL, &x95);
- { uint64_t x97; uint8_t x98 = _addcarryx_u64(0x0, x92, x94, &x97);
- { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x95, x88, &x100);
- { uint64_t _; uint8_t x104 = _addcarryx_u64(0x0, x76, x91, &_);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x79, x97, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x82, x100, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x85, x101, &x112);
- { uint8_t x114 = (x113 + x86);
- { uint64_t x117; uint64_t x116 = _mulx_u64(x6, x9, &x117);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x6, x11, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x6, x10, &x123);
- { uint64_t x125; uint8_t x126 = _addcarryx_u64(0x0, x117, x119, &x125);
- { uint64_t x128; uint8_t x129 = _addcarryx_u64(x126, x120, x122, &x128);
- { uint64_t x131; uint8_t _ = _addcarryx_u64(0x0, x129, x123, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(0x0, x106, x116, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x109, x125, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x112, x128, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x114, x131, &x143);
- { uint64_t _; uint64_t x146 = _mulx_u64(x134, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x150; uint64_t x149 = _mulx_u64(x146, 0xffffffffffffffe7L, &x150);
- { uint64_t x153; uint64_t x152 = _mulx_u64(x146, 0xffffffffffffffffL, &x153);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(0x0, x150, x152, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x153, x146, &x158);
- { uint64_t _; uint8_t x162 = _addcarryx_u64(0x0, x134, x149, &_);
- { uint64_t x164; uint8_t x165 = _addcarryx_u64(x162, x137, x155, &x164);
- { uint64_t x167; uint8_t x168 = _addcarryx_u64(x165, x140, x158, &x167);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(x168, x143, x159, &x170);
- { uint8_t x172 = (x171 + x144);
- { uint64_t x174; uint8_t x175 = _subborrow_u64(0x0, x164, 0xffffffffffffffe7L, &x174);
- { uint64_t x177; uint8_t x178 = _subborrow_u64(x175, x167, 0xffffffffffffffffL, &x177);
- { uint64_t x180; uint8_t x181 = _subborrow_u64(x178, x170, 0x1, &x180);
- { uint64_t _; uint8_t x184 = _subborrow_u64(x181, x172, 0x0, &_);
- { uint64_t x185 = cmovznz64(x184, x180, x170);
- { uint64_t x186 = cmovznz64(x184, x177, x167);
- { uint64_t x187 = cmovznz64(x184, x174, x164);
- out[0] = x187;
- out[1] = x186;
- out[2] = x185;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e129m25/femul.v b/src/Specific/montgomery64_2e129m25/femul.v
deleted file mode 100644
index eab7fac6b..000000000
--- a/src/Specific/montgomery64_2e129m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e129m25/femulDisplay.log b/src/Specific/montgomery64_2e129m25/femulDisplay.log
deleted file mode 100644
index 5e06221b0..000000000
--- a/src/Specific/montgomery64_2e129m25/femulDisplay.log
+++ /dev/null
@@ -1,69 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x8f5c28f5c28f5c29L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffe7L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(0x0, x35, x37);
- uint64_t x43, uint8_t x44 = addcarryx_u64(x41, x38, x31);
- uint64_t _, uint8_t x47 = addcarryx_u64(0x0, x13, x34);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x22, x40);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x25, x43);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x28, x44);
- uint64_t x58, uint64_t x59 = mulx_u64(x7, x9);
- uint64_t x61, uint64_t x62 = mulx_u64(x7, x11);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x10);
- uint64_t x67, uint8_t x68 = addcarryx_u64(0x0, x59, x61);
- uint64_t x70, uint8_t x71 = addcarryx_u64(x68, x62, x64);
- uint64_t x73, uint8_t _ = addcarryx_u64(0x0, x71, x65);
- uint64_t x76, uint8_t x77 = addcarryx_u64(0x0, x49, x58);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x77, x52, x67);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x55, x70);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x56, x73);
- uint64_t x88, uint64_t _ = mulx_u64(x76, 0x8f5c28f5c28f5c29L);
- uint64_t x91, uint64_t x92 = mulx_u64(x88, 0xffffffffffffffe7L);
- uint64_t x94, uint64_t x95 = mulx_u64(x88, 0xffffffffffffffffL);
- uint64_t x97, uint8_t x98 = addcarryx_u64(0x0, x92, x94);
- uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x95, x88);
- uint64_t _, uint8_t x104 = addcarryx_u64(0x0, x76, x91);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x79, x97);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x82, x100);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x85, x101);
- uint8_t x114 = (x113 + x86);
- uint64_t x116, uint64_t x117 = mulx_u64(x6, x9);
- uint64_t x119, uint64_t x120 = mulx_u64(x6, x11);
- uint64_t x122, uint64_t x123 = mulx_u64(x6, x10);
- uint64_t x125, uint8_t x126 = addcarryx_u64(0x0, x117, x119);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x120, x122);
- uint64_t x131, uint8_t _ = addcarryx_u64(0x0, x129, x123);
- uint64_t x134, uint8_t x135 = addcarryx_u64(0x0, x106, x116);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x109, x125);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x112, x128);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x114, x131);
- uint64_t x146, uint64_t _ = mulx_u64(x134, 0x8f5c28f5c28f5c29L);
- uint64_t x149, uint64_t x150 = mulx_u64(x146, 0xffffffffffffffe7L);
- uint64_t x152, uint64_t x153 = mulx_u64(x146, 0xffffffffffffffffL);
- uint64_t x155, uint8_t x156 = addcarryx_u64(0x0, x150, x152);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x153, x146);
- uint64_t _, uint8_t x162 = addcarryx_u64(0x0, x134, x149);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x137, x155);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x140, x158);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x143, x159);
- uint8_t x172 = (x171 + x144);
- uint64_t x174, uint8_t x175 = subborrow_u64(0x0, x164, 0xffffffffffffffe7L);
- uint64_t x177, uint8_t x178 = subborrow_u64(x175, x167, 0xffffffffffffffffL);
- uint64_t x180, uint8_t x181 = subborrow_u64(x178, x170, 0x1);
- uint64_t _, uint8_t x184 = subborrow_u64(x181, x172, 0x0);
- uint64_t x185 = cmovznz64(x184, x180, x170);
- uint64_t x186 = cmovznz64(x184, x177, x167);
- uint64_t x187 = cmovznz64(x184, x174, x164);
- return (x185, x186, x187))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e129m25/femulDisplay.v b/src/Specific/montgomery64_2e129m25/femulDisplay.v
deleted file mode 100644
index 896be4b0a..000000000
--- a/src/Specific/montgomery64_2e129m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e129m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e129m25/fenz.c b/src/Specific/montgomery64_2e129m25/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e129m25/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e129m25/fenz.v b/src/Specific/montgomery64_2e129m25/fenz.v
deleted file mode 100644
index d3189fa44..000000000
--- a/src/Specific/montgomery64_2e129m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e129m25/fenzDisplay.log b/src/Specific/montgomery64_2e129m25/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e129m25/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e129m25/fenzDisplay.v b/src/Specific/montgomery64_2e129m25/fenzDisplay.v
deleted file mode 100644
index aed660dc1..000000000
--- a/src/Specific/montgomery64_2e129m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e129m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e129m25/feopp.c b/src/Specific/montgomery64_2e129m25/feopp.c
deleted file mode 100644
index 57985379d..000000000
--- a/src/Specific/montgomery64_2e129m25/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint8_t x23 = ((uint8_t)x14 & 0x1);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e129m25/feopp.v b/src/Specific/montgomery64_2e129m25/feopp.v
deleted file mode 100644
index c1edb5a73..000000000
--- a/src/Specific/montgomery64_2e129m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e129m25/feoppDisplay.log b/src/Specific/montgomery64_2e129m25/feoppDisplay.log
deleted file mode 100644
index e761bfab0..000000000
--- a/src/Specific/montgomery64_2e129m25/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint8_t x23 = ((uint8_t)x14 & 0x1);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e129m25/feoppDisplay.v b/src/Specific/montgomery64_2e129m25/feoppDisplay.v
deleted file mode 100644
index 05eb47a47..000000000
--- a/src/Specific/montgomery64_2e129m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e129m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e129m25/fesquare.c b/src/Specific/montgomery64_2e129m25/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e129m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e129m25/fesub.c b/src/Specific/montgomery64_2e129m25/fesub.c
deleted file mode 100644
index d31d91734..000000000
--- a/src/Specific/montgomery64_2e129m25/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint8_t x30 = ((uint8_t)x21 & 0x1);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e129m25/fesub.v b/src/Specific/montgomery64_2e129m25/fesub.v
deleted file mode 100644
index a33567f7e..000000000
--- a/src/Specific/montgomery64_2e129m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e129m25/fesubDisplay.log b/src/Specific/montgomery64_2e129m25/fesubDisplay.log
deleted file mode 100644
index b792af81b..000000000
--- a/src/Specific/montgomery64_2e129m25/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint8_t x30 = ((uint8_t)x21 & 0x1);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e129m25/fesubDisplay.v b/src/Specific/montgomery64_2e129m25/fesubDisplay.v
deleted file mode 100644
index 1f1d9a82a..000000000
--- a/src/Specific/montgomery64_2e129m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e129m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e129m25/CurveParameters.v b/src/Specific/montgomery64_2e129m25_3limbs/CurveParameters.v
index a9a854de9..a9a854de9 100644
--- a/src/Specific/montgomery64_2e129m25/CurveParameters.v
+++ b/src/Specific/montgomery64_2e129m25_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/Synthesis.v b/src/Specific/montgomery64_2e129m25_3limbs/Synthesis.v
new file mode 100644
index 000000000..0c2f9af49
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e129m25/compiler.sh b/src/Specific/montgomery64_2e129m25_3limbs/compiler.sh
index 0eb5a2e83..0eb5a2e83 100755
--- a/src/Specific/montgomery64_2e129m25/compiler.sh
+++ b/src/Specific/montgomery64_2e129m25_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e129m25/compilerxx.sh b/src/Specific/montgomery64_2e129m25_3limbs/compilerxx.sh
index b1f5aafea..b1f5aafea 100755
--- a/src/Specific/montgomery64_2e129m25/compilerxx.sh
+++ b/src/Specific/montgomery64_2e129m25_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/feadd.v b/src/Specific/montgomery64_2e129m25_3limbs/feadd.v
new file mode 100644
index 000000000..17240f046
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e129m25_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..674755c4e
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/femul.v b/src/Specific/montgomery64_2e129m25_3limbs/femul.v
new file mode 100644
index 000000000..62ff3222d
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e129m25_3limbs/femulDisplay.v
new file mode 100644
index 000000000..80e0676ab
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/fenz.v b/src/Specific/montgomery64_2e129m25_3limbs/fenz.v
new file mode 100644
index 000000000..d798fc1b7
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e129m25_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..cb39055d9
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/feopp.v b/src/Specific/montgomery64_2e129m25_3limbs/feopp.v
new file mode 100644
index 000000000..38ccc7883
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e129m25_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..9d27d4261
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/fesub.v b/src/Specific/montgomery64_2e129m25_3limbs/fesub.v
new file mode 100644
index 000000000..886089943
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e129m25_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e129m25_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..128a01d46
--- /dev/null
+++ b/src/Specific/montgomery64_2e129m25_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e129m25_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e129m25/py_interpreter.sh b/src/Specific/montgomery64_2e129m25_3limbs/py_interpreter.sh
index 39c45c699..39c45c699 100755
--- a/src/Specific/montgomery64_2e129m25/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e129m25_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e130m5/Synthesis.v b/src/Specific/montgomery64_2e130m5/Synthesis.v
deleted file mode 100644
index 97bad6c4f..000000000
--- a/src/Specific/montgomery64_2e130m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e130m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e130m5/feadd.c b/src/Specific/montgomery64_2e130m5/feadd.c
deleted file mode 100644
index fd76ff39c..000000000
--- a/src/Specific/montgomery64_2e130m5/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffffbL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e130m5/feadd.v b/src/Specific/montgomery64_2e130m5/feadd.v
deleted file mode 100644
index 822117e02..000000000
--- a/src/Specific/montgomery64_2e130m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e130m5/feaddDisplay.log b/src/Specific/montgomery64_2e130m5/feaddDisplay.log
deleted file mode 100644
index 3490818b1..000000000
--- a/src/Specific/montgomery64_2e130m5/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffffbL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e130m5/feaddDisplay.v b/src/Specific/montgomery64_2e130m5/feaddDisplay.v
deleted file mode 100644
index 8de32a252..000000000
--- a/src/Specific/montgomery64_2e130m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e130m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e130m5/femul.c b/src/Specific/montgomery64_2e130m5/femul.c
deleted file mode 100644
index fb6f4f400..000000000
--- a/src/Specific/montgomery64_2e130m5/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xcccccccccccccccdL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffffbL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint8_t x41; uint64_t x40 = _mulx_u64_out_u8(x31, 0x3, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint8_t x48 = (x47 + x41);
- { uint64_t _; uint8_t x51 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x51, x22, x43, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x25, x46, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x28, x48, &x59);
- { uint64_t x63; uint64_t x62 = _mulx_u64(x7, x9, &x63);
- { uint64_t x66; uint64_t x65 = _mulx_u64(x7, x11, &x66);
- { uint64_t x69; uint64_t x68 = _mulx_u64(x7, x10, &x69);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(0x0, x63, x65, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x66, x68, &x74);
- { uint64_t x77; uint8_t _ = _addcarryx_u64(0x0, x75, x69, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(0x0, x53, x62, &x80);
- { uint64_t x83; uint8_t x84 = _addcarryx_u64(x81, x56, x71, &x83);
- { uint64_t x86; uint8_t x87 = _addcarryx_u64(x84, x59, x74, &x86);
- { uint64_t x89; uint8_t x90 = _addcarryx_u64(x87, x60, x77, &x89);
- { uint64_t _; uint64_t x92 = _mulx_u64(x80, 0xcccccccccccccccdL, &_);
- { uint64_t x96; uint64_t x95 = _mulx_u64(x92, 0xfffffffffffffffbL, &x96);
- { uint64_t x99; uint64_t x98 = _mulx_u64(x92, 0xffffffffffffffffL, &x99);
- { uint8_t x102; uint64_t x101 = _mulx_u64_out_u8(x92, 0x3, &x102);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(0x0, x96, x98, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x99, x101, &x107);
- { uint8_t x109 = (x108 + x102);
- { uint64_t _; uint8_t x112 = _addcarryx_u64(0x0, x80, x95, &_);
- { uint64_t x114; uint8_t x115 = _addcarryx_u64(x112, x83, x104, &x114);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(x115, x86, x107, &x117);
- { uint64_t x120; uint8_t x121 = _addcarryx_u64(x118, x89, x109, &x120);
- { uint8_t x122 = (x121 + x90);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x6, x9, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x6, x11, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x6, x10, &x131);
- { uint64_t x133; uint8_t x134 = _addcarryx_u64(0x0, x125, x127, &x133);
- { uint64_t x136; uint8_t x137 = _addcarryx_u64(x134, x128, x130, &x136);
- { uint64_t x139; uint8_t _ = _addcarryx_u64(0x0, x137, x131, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(0x0, x114, x124, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x117, x133, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x120, x136, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x122, x139, &x151);
- { uint64_t _; uint64_t x154 = _mulx_u64(x142, 0xcccccccccccccccdL, &_);
- { uint64_t x158; uint64_t x157 = _mulx_u64(x154, 0xfffffffffffffffbL, &x158);
- { uint64_t x161; uint64_t x160 = _mulx_u64(x154, 0xffffffffffffffffL, &x161);
- { uint8_t x164; uint64_t x163 = _mulx_u64_out_u8(x154, 0x3, &x164);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(0x0, x158, x160, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x161, x163, &x169);
- { uint8_t x171 = (x170 + x164);
- { uint64_t _; uint8_t x174 = _addcarryx_u64(0x0, x142, x157, &_);
- { uint64_t x176; uint8_t x177 = _addcarryx_u64(x174, x145, x166, &x176);
- { uint64_t x179; uint8_t x180 = _addcarryx_u64(x177, x148, x169, &x179);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x151, x171, &x182);
- { uint8_t x184 = (x183 + x152);
- { uint64_t x186; uint8_t x187 = _subborrow_u64(0x0, x176, 0xfffffffffffffffbL, &x186);
- { uint64_t x189; uint8_t x190 = _subborrow_u64(x187, x179, 0xffffffffffffffffL, &x189);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(x190, x182, 0x3, &x192);
- { uint64_t _; uint8_t x196 = _subborrow_u64(x193, x184, 0x0, &_);
- { uint64_t x197 = cmovznz64(x196, x192, x182);
- { uint64_t x198 = cmovznz64(x196, x189, x179);
- { uint64_t x199 = cmovznz64(x196, x186, x176);
- out[0] = x199;
- out[1] = x198;
- out[2] = x197;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e130m5/femul.v b/src/Specific/montgomery64_2e130m5/femul.v
deleted file mode 100644
index 2952fa88f..000000000
--- a/src/Specific/montgomery64_2e130m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e130m5/femulDisplay.log b/src/Specific/montgomery64_2e130m5/femulDisplay.log
deleted file mode 100644
index 51f4abe94..000000000
--- a/src/Specific/montgomery64_2e130m5/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xcccccccccccccccdL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffffbL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = mulx_u64_out_u8(x31, 0x3);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint8_t x48 = (x47 + x41);
- uint64_t _, uint8_t x51 = addcarryx_u64(0x0, x13, x34);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x22, x43);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x25, x46);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x28, x48);
- uint64_t x62, uint64_t x63 = mulx_u64(x7, x9);
- uint64_t x65, uint64_t x66 = mulx_u64(x7, x11);
- uint64_t x68, uint64_t x69 = mulx_u64(x7, x10);
- uint64_t x71, uint8_t x72 = addcarryx_u64(0x0, x63, x65);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x66, x68);
- uint64_t x77, uint8_t _ = addcarryx_u64(0x0, x75, x69);
- uint64_t x80, uint8_t x81 = addcarryx_u64(0x0, x53, x62);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x81, x56, x71);
- uint64_t x86, uint8_t x87 = addcarryx_u64(x84, x59, x74);
- uint64_t x89, uint8_t x90 = addcarryx_u64(x87, x60, x77);
- uint64_t x92, uint64_t _ = mulx_u64(x80, 0xcccccccccccccccdL);
- uint64_t x95, uint64_t x96 = mulx_u64(x92, 0xfffffffffffffffbL);
- uint64_t x98, uint64_t x99 = mulx_u64(x92, 0xffffffffffffffffL);
- uint64_t x101, uint8_t x102 = mulx_u64_out_u8(x92, 0x3);
- uint64_t x104, uint8_t x105 = addcarryx_u64(0x0, x96, x98);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x99, x101);
- uint8_t x109 = (x108 + x102);
- uint64_t _, uint8_t x112 = addcarryx_u64(0x0, x80, x95);
- uint64_t x114, uint8_t x115 = addcarryx_u64(x112, x83, x104);
- uint64_t x117, uint8_t x118 = addcarryx_u64(x115, x86, x107);
- uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x89, x109);
- uint8_t x122 = (x121 + x90);
- uint64_t x124, uint64_t x125 = mulx_u64(x6, x9);
- uint64_t x127, uint64_t x128 = mulx_u64(x6, x11);
- uint64_t x130, uint64_t x131 = mulx_u64(x6, x10);
- uint64_t x133, uint8_t x134 = addcarryx_u64(0x0, x125, x127);
- uint64_t x136, uint8_t x137 = addcarryx_u64(x134, x128, x130);
- uint64_t x139, uint8_t _ = addcarryx_u64(0x0, x137, x131);
- uint64_t x142, uint8_t x143 = addcarryx_u64(0x0, x114, x124);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x117, x133);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x120, x136);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x122, x139);
- uint64_t x154, uint64_t _ = mulx_u64(x142, 0xcccccccccccccccdL);
- uint64_t x157, uint64_t x158 = mulx_u64(x154, 0xfffffffffffffffbL);
- uint64_t x160, uint64_t x161 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x163, uint8_t x164 = mulx_u64_out_u8(x154, 0x3);
- uint64_t x166, uint8_t x167 = addcarryx_u64(0x0, x158, x160);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x161, x163);
- uint8_t x171 = (x170 + x164);
- uint64_t _, uint8_t x174 = addcarryx_u64(0x0, x142, x157);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x145, x166);
- uint64_t x179, uint8_t x180 = addcarryx_u64(x177, x148, x169);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x151, x171);
- uint8_t x184 = (x183 + x152);
- uint64_t x186, uint8_t x187 = subborrow_u64(0x0, x176, 0xfffffffffffffffbL);
- uint64_t x189, uint8_t x190 = subborrow_u64(x187, x179, 0xffffffffffffffffL);
- uint64_t x192, uint8_t x193 = subborrow_u64(x190, x182, 0x3);
- uint64_t _, uint8_t x196 = subborrow_u64(x193, x184, 0x0);
- uint64_t x197 = cmovznz64(x196, x192, x182);
- uint64_t x198 = cmovznz64(x196, x189, x179);
- uint64_t x199 = cmovznz64(x196, x186, x176);
- return (x197, x198, x199))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e130m5/femulDisplay.v b/src/Specific/montgomery64_2e130m5/femulDisplay.v
deleted file mode 100644
index 81f96ece5..000000000
--- a/src/Specific/montgomery64_2e130m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e130m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e130m5/fenz.c b/src/Specific/montgomery64_2e130m5/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e130m5/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e130m5/fenz.v b/src/Specific/montgomery64_2e130m5/fenz.v
deleted file mode 100644
index a101bdc90..000000000
--- a/src/Specific/montgomery64_2e130m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e130m5/fenzDisplay.log b/src/Specific/montgomery64_2e130m5/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e130m5/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e130m5/fenzDisplay.v b/src/Specific/montgomery64_2e130m5/fenzDisplay.v
deleted file mode 100644
index 5e8696e13..000000000
--- a/src/Specific/montgomery64_2e130m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e130m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e130m5/feopp.c b/src/Specific/montgomery64_2e130m5/feopp.c
deleted file mode 100644
index 5a36bd38d..000000000
--- a/src/Specific/montgomery64_2e130m5/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint8_t x23 = ((uint8_t)x14 & 0x3);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e130m5/feopp.v b/src/Specific/montgomery64_2e130m5/feopp.v
deleted file mode 100644
index dbd04cb64..000000000
--- a/src/Specific/montgomery64_2e130m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e130m5/feoppDisplay.log b/src/Specific/montgomery64_2e130m5/feoppDisplay.log
deleted file mode 100644
index d35231424..000000000
--- a/src/Specific/montgomery64_2e130m5/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint8_t x23 = ((uint8_t)x14 & 0x3);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e130m5/feoppDisplay.v b/src/Specific/montgomery64_2e130m5/feoppDisplay.v
deleted file mode 100644
index 3b2d3bc33..000000000
--- a/src/Specific/montgomery64_2e130m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e130m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e130m5/fesquare.c b/src/Specific/montgomery64_2e130m5/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e130m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e130m5/fesub.c b/src/Specific/montgomery64_2e130m5/fesub.c
deleted file mode 100644
index a7a5ad633..000000000
--- a/src/Specific/montgomery64_2e130m5/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint8_t x30 = ((uint8_t)x21 & 0x3);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e130m5/fesub.v b/src/Specific/montgomery64_2e130m5/fesub.v
deleted file mode 100644
index 8f66ede0a..000000000
--- a/src/Specific/montgomery64_2e130m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e130m5/fesubDisplay.log b/src/Specific/montgomery64_2e130m5/fesubDisplay.log
deleted file mode 100644
index 28a5a458b..000000000
--- a/src/Specific/montgomery64_2e130m5/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint8_t x30 = ((uint8_t)x21 & 0x3);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e130m5/fesubDisplay.v b/src/Specific/montgomery64_2e130m5/fesubDisplay.v
deleted file mode 100644
index a5b26a7af..000000000
--- a/src/Specific/montgomery64_2e130m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e130m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e130m5/CurveParameters.v b/src/Specific/montgomery64_2e130m5_3limbs/CurveParameters.v
index b4ff2f97e..b4ff2f97e 100644
--- a/src/Specific/montgomery64_2e130m5/CurveParameters.v
+++ b/src/Specific/montgomery64_2e130m5_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/Synthesis.v b/src/Specific/montgomery64_2e130m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..447d033a0
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e130m5/compiler.sh b/src/Specific/montgomery64_2e130m5_3limbs/compiler.sh
index 045163959..045163959 100755
--- a/src/Specific/montgomery64_2e130m5/compiler.sh
+++ b/src/Specific/montgomery64_2e130m5_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e130m5/compilerxx.sh b/src/Specific/montgomery64_2e130m5_3limbs/compilerxx.sh
index d929a5b25..d929a5b25 100755
--- a/src/Specific/montgomery64_2e130m5/compilerxx.sh
+++ b/src/Specific/montgomery64_2e130m5_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/feadd.v b/src/Specific/montgomery64_2e130m5_3limbs/feadd.v
new file mode 100644
index 000000000..67b903a12
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e130m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..ef6edb79c
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/femul.v b/src/Specific/montgomery64_2e130m5_3limbs/femul.v
new file mode 100644
index 000000000..dc589557f
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e130m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..3019e3f31
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/fenz.v b/src/Specific/montgomery64_2e130m5_3limbs/fenz.v
new file mode 100644
index 000000000..e3604d43f
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e130m5_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..96aea020e
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/feopp.v b/src/Specific/montgomery64_2e130m5_3limbs/feopp.v
new file mode 100644
index 000000000..e90ba77cf
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e130m5_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..19683e664
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/fesub.v b/src/Specific/montgomery64_2e130m5_3limbs/fesub.v
new file mode 100644
index 000000000..1e11cb37b
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e130m5_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e130m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..5fecb349f
--- /dev/null
+++ b/src/Specific/montgomery64_2e130m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e130m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e130m5/py_interpreter.sh b/src/Specific/montgomery64_2e130m5_3limbs/py_interpreter.sh
index 9db7098ab..9db7098ab 100755
--- a/src/Specific/montgomery64_2e130m5/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e130m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e137m13/Synthesis.v b/src/Specific/montgomery64_2e137m13/Synthesis.v
deleted file mode 100644
index e79d05098..000000000
--- a/src/Specific/montgomery64_2e137m13/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e137m13.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e137m13/feadd.c b/src/Specific/montgomery64_2e137m13/feadd.c
deleted file mode 100644
index 57dc9adb8..000000000
--- a/src/Specific/montgomery64_2e137m13/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffff3L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x1ff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e137m13/feadd.v b/src/Specific/montgomery64_2e137m13/feadd.v
deleted file mode 100644
index 23c695c47..000000000
--- a/src/Specific/montgomery64_2e137m13/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e137m13/feaddDisplay.log b/src/Specific/montgomery64_2e137m13/feaddDisplay.log
deleted file mode 100644
index 656a4babe..000000000
--- a/src/Specific/montgomery64_2e137m13/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffff3L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x1ff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e137m13/feaddDisplay.v b/src/Specific/montgomery64_2e137m13/feaddDisplay.v
deleted file mode 100644
index c18d6076c..000000000
--- a/src/Specific/montgomery64_2e137m13/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e137m13.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e137m13/femul.c b/src/Specific/montgomery64_2e137m13/femul.c
deleted file mode 100644
index 6c502e42a..000000000
--- a/src/Specific/montgomery64_2e137m13/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x4ec4ec4ec4ec4ec5, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffff3L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x1ff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x4ec4ec4ec4ec4ec5, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffff3L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x1ff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x4ec4ec4ec4ec4ec5, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffff3L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x1ff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffff3L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x1ff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e137m13/femul.v b/src/Specific/montgomery64_2e137m13/femul.v
deleted file mode 100644
index 3aa1a6b1b..000000000
--- a/src/Specific/montgomery64_2e137m13/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e137m13/femulDisplay.log b/src/Specific/montgomery64_2e137m13/femulDisplay.log
deleted file mode 100644
index 04fb62766..000000000
--- a/src/Specific/montgomery64_2e137m13/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x4ec4ec4ec4ec4ec5);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffff3L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x1ff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x4ec4ec4ec4ec4ec5);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffff3L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x1ff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x4ec4ec4ec4ec4ec5);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffff3L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x1ff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffff3L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x1ff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e137m13/femulDisplay.v b/src/Specific/montgomery64_2e137m13/femulDisplay.v
deleted file mode 100644
index 5d2be51b7..000000000
--- a/src/Specific/montgomery64_2e137m13/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e137m13.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e137m13/fenz.c b/src/Specific/montgomery64_2e137m13/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e137m13/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e137m13/fenz.v b/src/Specific/montgomery64_2e137m13/fenz.v
deleted file mode 100644
index 9e575cbbf..000000000
--- a/src/Specific/montgomery64_2e137m13/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e137m13/fenzDisplay.log b/src/Specific/montgomery64_2e137m13/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e137m13/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e137m13/fenzDisplay.v b/src/Specific/montgomery64_2e137m13/fenzDisplay.v
deleted file mode 100644
index ec43d342e..000000000
--- a/src/Specific/montgomery64_2e137m13/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e137m13.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e137m13/feopp.c b/src/Specific/montgomery64_2e137m13/feopp.c
deleted file mode 100644
index 77448545e..000000000
--- a/src/Specific/montgomery64_2e137m13/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffff3L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x1ff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e137m13/feopp.v b/src/Specific/montgomery64_2e137m13/feopp.v
deleted file mode 100644
index 677f62bad..000000000
--- a/src/Specific/montgomery64_2e137m13/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e137m13/feoppDisplay.log b/src/Specific/montgomery64_2e137m13/feoppDisplay.log
deleted file mode 100644
index 40ece040b..000000000
--- a/src/Specific/montgomery64_2e137m13/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffff3L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x1ff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e137m13/feoppDisplay.v b/src/Specific/montgomery64_2e137m13/feoppDisplay.v
deleted file mode 100644
index 5564264d0..000000000
--- a/src/Specific/montgomery64_2e137m13/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e137m13.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e137m13/fesquare.c b/src/Specific/montgomery64_2e137m13/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e137m13/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e137m13/fesub.c b/src/Specific/montgomery64_2e137m13/fesub.c
deleted file mode 100644
index 48eba5996..000000000
--- a/src/Specific/montgomery64_2e137m13/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffff3L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x1ff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e137m13/fesub.v b/src/Specific/montgomery64_2e137m13/fesub.v
deleted file mode 100644
index ace3028ec..000000000
--- a/src/Specific/montgomery64_2e137m13/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e137m13/fesubDisplay.log b/src/Specific/montgomery64_2e137m13/fesubDisplay.log
deleted file mode 100644
index c9e562b56..000000000
--- a/src/Specific/montgomery64_2e137m13/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffff3L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x1ff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e137m13/fesubDisplay.v b/src/Specific/montgomery64_2e137m13/fesubDisplay.v
deleted file mode 100644
index 7a8e7c6f8..000000000
--- a/src/Specific/montgomery64_2e137m13/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e137m13.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e137m13/CurveParameters.v b/src/Specific/montgomery64_2e137m13_3limbs/CurveParameters.v
index 2e161dd87..2e161dd87 100644
--- a/src/Specific/montgomery64_2e137m13/CurveParameters.v
+++ b/src/Specific/montgomery64_2e137m13_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/Synthesis.v b/src/Specific/montgomery64_2e137m13_3limbs/Synthesis.v
new file mode 100644
index 000000000..5ec00bff6
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e137m13/compiler.sh b/src/Specific/montgomery64_2e137m13_3limbs/compiler.sh
index 3074a101e..3074a101e 100755
--- a/src/Specific/montgomery64_2e137m13/compiler.sh
+++ b/src/Specific/montgomery64_2e137m13_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e137m13/compilerxx.sh b/src/Specific/montgomery64_2e137m13_3limbs/compilerxx.sh
index 266f2663c..266f2663c 100755
--- a/src/Specific/montgomery64_2e137m13/compilerxx.sh
+++ b/src/Specific/montgomery64_2e137m13_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/feadd.v b/src/Specific/montgomery64_2e137m13_3limbs/feadd.v
new file mode 100644
index 000000000..c91238348
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e137m13_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..c17888f1a
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/femul.v b/src/Specific/montgomery64_2e137m13_3limbs/femul.v
new file mode 100644
index 000000000..9ca491b89
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e137m13_3limbs/femulDisplay.v
new file mode 100644
index 000000000..88da658f3
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/fenz.v b/src/Specific/montgomery64_2e137m13_3limbs/fenz.v
new file mode 100644
index 000000000..57785dccb
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e137m13_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..fee0e85cc
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/feopp.v b/src/Specific/montgomery64_2e137m13_3limbs/feopp.v
new file mode 100644
index 000000000..5f26f7178
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e137m13_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..bd99daa02
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/fesub.v b/src/Specific/montgomery64_2e137m13_3limbs/fesub.v
new file mode 100644
index 000000000..c33fcdfa6
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e137m13_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e137m13_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..cc4dd7b68
--- /dev/null
+++ b/src/Specific/montgomery64_2e137m13_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e137m13_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e137m13/py_interpreter.sh b/src/Specific/montgomery64_2e137m13_3limbs/py_interpreter.sh
index ad658f727..ad658f727 100755
--- a/src/Specific/montgomery64_2e137m13/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e137m13_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e140m27/Synthesis.v b/src/Specific/montgomery64_2e140m27/Synthesis.v
deleted file mode 100644
index efb13b4a1..000000000
--- a/src/Specific/montgomery64_2e140m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e140m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e140m27/feadd.c b/src/Specific/montgomery64_2e140m27/feadd.c
deleted file mode 100644
index ef4942348..000000000
--- a/src/Specific/montgomery64_2e140m27/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffe5L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0xfff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e140m27/feadd.v b/src/Specific/montgomery64_2e140m27/feadd.v
deleted file mode 100644
index 45d6ed602..000000000
--- a/src/Specific/montgomery64_2e140m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e140m27/feaddDisplay.log b/src/Specific/montgomery64_2e140m27/feaddDisplay.log
deleted file mode 100644
index f20421f20..000000000
--- a/src/Specific/montgomery64_2e140m27/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffe5L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0xfff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e140m27/feaddDisplay.v b/src/Specific/montgomery64_2e140m27/feaddDisplay.v
deleted file mode 100644
index e2f84bd88..000000000
--- a/src/Specific/montgomery64_2e140m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e140m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e140m27/femul.c b/src/Specific/montgomery64_2e140m27/femul.c
deleted file mode 100644
index 4668a124b..000000000
--- a/src/Specific/montgomery64_2e140m27/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x84bda12f684bda13L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffe5L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0xfff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x84bda12f684bda13L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffe5L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0xfff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x84bda12f684bda13L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffe5L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0xfff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffe5L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0xfff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e140m27/femul.v b/src/Specific/montgomery64_2e140m27/femul.v
deleted file mode 100644
index 9aec74011..000000000
--- a/src/Specific/montgomery64_2e140m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e140m27/femulDisplay.log b/src/Specific/montgomery64_2e140m27/femulDisplay.log
deleted file mode 100644
index 3c21d92e6..000000000
--- a/src/Specific/montgomery64_2e140m27/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x84bda12f684bda13L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffe5L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0xfff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x84bda12f684bda13L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffe5L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0xfff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x84bda12f684bda13L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffe5L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0xfff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffe5L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0xfff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e140m27/femulDisplay.v b/src/Specific/montgomery64_2e140m27/femulDisplay.v
deleted file mode 100644
index d293de974..000000000
--- a/src/Specific/montgomery64_2e140m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e140m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e140m27/fenz.c b/src/Specific/montgomery64_2e140m27/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e140m27/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e140m27/fenz.v b/src/Specific/montgomery64_2e140m27/fenz.v
deleted file mode 100644
index 55a74fa04..000000000
--- a/src/Specific/montgomery64_2e140m27/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e140m27/fenzDisplay.log b/src/Specific/montgomery64_2e140m27/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e140m27/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e140m27/fenzDisplay.v b/src/Specific/montgomery64_2e140m27/fenzDisplay.v
deleted file mode 100644
index a8fcb8274..000000000
--- a/src/Specific/montgomery64_2e140m27/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e140m27.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e140m27/feopp.c b/src/Specific/montgomery64_2e140m27/feopp.c
deleted file mode 100644
index b0a35f3f6..000000000
--- a/src/Specific/montgomery64_2e140m27/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffe5L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0xfff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e140m27/feopp.v b/src/Specific/montgomery64_2e140m27/feopp.v
deleted file mode 100644
index 2c434578c..000000000
--- a/src/Specific/montgomery64_2e140m27/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e140m27/feoppDisplay.log b/src/Specific/montgomery64_2e140m27/feoppDisplay.log
deleted file mode 100644
index 1709ee6e4..000000000
--- a/src/Specific/montgomery64_2e140m27/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffe5L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0xfff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e140m27/feoppDisplay.v b/src/Specific/montgomery64_2e140m27/feoppDisplay.v
deleted file mode 100644
index 7388bbf26..000000000
--- a/src/Specific/montgomery64_2e140m27/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e140m27.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e140m27/fesquare.c b/src/Specific/montgomery64_2e140m27/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e140m27/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e140m27/fesub.c b/src/Specific/montgomery64_2e140m27/fesub.c
deleted file mode 100644
index f386086c1..000000000
--- a/src/Specific/montgomery64_2e140m27/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffe5L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0xfff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e140m27/fesub.v b/src/Specific/montgomery64_2e140m27/fesub.v
deleted file mode 100644
index b13fdb8ef..000000000
--- a/src/Specific/montgomery64_2e140m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e140m27/fesubDisplay.log b/src/Specific/montgomery64_2e140m27/fesubDisplay.log
deleted file mode 100644
index 7a2fde310..000000000
--- a/src/Specific/montgomery64_2e140m27/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffe5L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0xfff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e140m27/fesubDisplay.v b/src/Specific/montgomery64_2e140m27/fesubDisplay.v
deleted file mode 100644
index 938d5c613..000000000
--- a/src/Specific/montgomery64_2e140m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e140m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e140m27/CurveParameters.v b/src/Specific/montgomery64_2e140m27_3limbs/CurveParameters.v
index 7ff1f6a0f..7ff1f6a0f 100644
--- a/src/Specific/montgomery64_2e140m27/CurveParameters.v
+++ b/src/Specific/montgomery64_2e140m27_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/Synthesis.v b/src/Specific/montgomery64_2e140m27_3limbs/Synthesis.v
new file mode 100644
index 000000000..f5771c3a4
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e140m27/compiler.sh b/src/Specific/montgomery64_2e140m27_3limbs/compiler.sh
index f2fb61ecb..f2fb61ecb 100755
--- a/src/Specific/montgomery64_2e140m27/compiler.sh
+++ b/src/Specific/montgomery64_2e140m27_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e140m27/compilerxx.sh b/src/Specific/montgomery64_2e140m27_3limbs/compilerxx.sh
index 3d5589ab4..3d5589ab4 100755
--- a/src/Specific/montgomery64_2e140m27/compilerxx.sh
+++ b/src/Specific/montgomery64_2e140m27_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/feadd.v b/src/Specific/montgomery64_2e140m27_3limbs/feadd.v
new file mode 100644
index 000000000..3fe089dec
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e140m27_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..fbcd93104
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/femul.v b/src/Specific/montgomery64_2e140m27_3limbs/femul.v
new file mode 100644
index 000000000..c874efa60
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e140m27_3limbs/femulDisplay.v
new file mode 100644
index 000000000..a40a4354a
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/fenz.v b/src/Specific/montgomery64_2e140m27_3limbs/fenz.v
new file mode 100644
index 000000000..984ce7223
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e140m27_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..5380e0abd
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/feopp.v b/src/Specific/montgomery64_2e140m27_3limbs/feopp.v
new file mode 100644
index 000000000..86bd005a9
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e140m27_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..f033f6195
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/fesub.v b/src/Specific/montgomery64_2e140m27_3limbs/fesub.v
new file mode 100644
index 000000000..092f2ae22
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e140m27_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e140m27_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..ba9abfea1
--- /dev/null
+++ b/src/Specific/montgomery64_2e140m27_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e140m27_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e140m27/py_interpreter.sh b/src/Specific/montgomery64_2e140m27_3limbs/py_interpreter.sh
index 3b2de8348..3b2de8348 100755
--- a/src/Specific/montgomery64_2e140m27/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e140m27_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e141m9/Synthesis.v b/src/Specific/montgomery64_2e141m9/Synthesis.v
deleted file mode 100644
index fc446364e..000000000
--- a/src/Specific/montgomery64_2e141m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e141m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e141m9/feadd.c b/src/Specific/montgomery64_2e141m9/feadd.c
deleted file mode 100644
index 484a1128e..000000000
--- a/src/Specific/montgomery64_2e141m9/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffff7L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x1fff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e141m9/feadd.v b/src/Specific/montgomery64_2e141m9/feadd.v
deleted file mode 100644
index 8d10f0f2e..000000000
--- a/src/Specific/montgomery64_2e141m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e141m9/feaddDisplay.log b/src/Specific/montgomery64_2e141m9/feaddDisplay.log
deleted file mode 100644
index 23d38a106..000000000
--- a/src/Specific/montgomery64_2e141m9/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffff7L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x1fff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e141m9/feaddDisplay.v b/src/Specific/montgomery64_2e141m9/feaddDisplay.v
deleted file mode 100644
index b7ac5186e..000000000
--- a/src/Specific/montgomery64_2e141m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e141m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e141m9/femul.c b/src/Specific/montgomery64_2e141m9/femul.c
deleted file mode 100644
index 2d0bf967e..000000000
--- a/src/Specific/montgomery64_2e141m9/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x8e38e38e38e38e39L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffff7L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x1fff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x8e38e38e38e38e39L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffff7L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x1fff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x8e38e38e38e38e39L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffff7L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x1fff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffff7L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x1fff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e141m9/femul.v b/src/Specific/montgomery64_2e141m9/femul.v
deleted file mode 100644
index 2e25e7d6f..000000000
--- a/src/Specific/montgomery64_2e141m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e141m9/femulDisplay.log b/src/Specific/montgomery64_2e141m9/femulDisplay.log
deleted file mode 100644
index 55ed27c92..000000000
--- a/src/Specific/montgomery64_2e141m9/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x8e38e38e38e38e39L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffff7L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x1fff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x8e38e38e38e38e39L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffff7L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x1fff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x8e38e38e38e38e39L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffff7L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x1fff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffff7L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x1fff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e141m9/femulDisplay.v b/src/Specific/montgomery64_2e141m9/femulDisplay.v
deleted file mode 100644
index 10b6e0764..000000000
--- a/src/Specific/montgomery64_2e141m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e141m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e141m9/fenz.c b/src/Specific/montgomery64_2e141m9/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e141m9/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e141m9/fenz.v b/src/Specific/montgomery64_2e141m9/fenz.v
deleted file mode 100644
index 04cb9d02a..000000000
--- a/src/Specific/montgomery64_2e141m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e141m9/fenzDisplay.log b/src/Specific/montgomery64_2e141m9/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e141m9/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e141m9/fenzDisplay.v b/src/Specific/montgomery64_2e141m9/fenzDisplay.v
deleted file mode 100644
index 43e60b4ba..000000000
--- a/src/Specific/montgomery64_2e141m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e141m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e141m9/feopp.c b/src/Specific/montgomery64_2e141m9/feopp.c
deleted file mode 100644
index 53662378d..000000000
--- a/src/Specific/montgomery64_2e141m9/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffff7L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x1fff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e141m9/feopp.v b/src/Specific/montgomery64_2e141m9/feopp.v
deleted file mode 100644
index 6ffdfd0f7..000000000
--- a/src/Specific/montgomery64_2e141m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e141m9/feoppDisplay.log b/src/Specific/montgomery64_2e141m9/feoppDisplay.log
deleted file mode 100644
index e542a5f6c..000000000
--- a/src/Specific/montgomery64_2e141m9/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffff7L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x1fff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e141m9/feoppDisplay.v b/src/Specific/montgomery64_2e141m9/feoppDisplay.v
deleted file mode 100644
index a4ede1653..000000000
--- a/src/Specific/montgomery64_2e141m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e141m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e141m9/fesquare.c b/src/Specific/montgomery64_2e141m9/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e141m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e141m9/fesub.c b/src/Specific/montgomery64_2e141m9/fesub.c
deleted file mode 100644
index b0a285053..000000000
--- a/src/Specific/montgomery64_2e141m9/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffff7L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x1fff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e141m9/fesub.v b/src/Specific/montgomery64_2e141m9/fesub.v
deleted file mode 100644
index c5c6e5cb1..000000000
--- a/src/Specific/montgomery64_2e141m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e141m9/fesubDisplay.log b/src/Specific/montgomery64_2e141m9/fesubDisplay.log
deleted file mode 100644
index 28e2d96ca..000000000
--- a/src/Specific/montgomery64_2e141m9/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffff7L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x1fff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e141m9/fesubDisplay.v b/src/Specific/montgomery64_2e141m9/fesubDisplay.v
deleted file mode 100644
index 3b68cfbae..000000000
--- a/src/Specific/montgomery64_2e141m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e141m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e141m9/CurveParameters.v b/src/Specific/montgomery64_2e141m9_3limbs/CurveParameters.v
index 1d4146465..1d4146465 100644
--- a/src/Specific/montgomery64_2e141m9/CurveParameters.v
+++ b/src/Specific/montgomery64_2e141m9_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/Synthesis.v b/src/Specific/montgomery64_2e141m9_3limbs/Synthesis.v
new file mode 100644
index 000000000..737c73876
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e141m9/compiler.sh b/src/Specific/montgomery64_2e141m9_3limbs/compiler.sh
index 3a9ed13d7..3a9ed13d7 100755
--- a/src/Specific/montgomery64_2e141m9/compiler.sh
+++ b/src/Specific/montgomery64_2e141m9_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e141m9/compilerxx.sh b/src/Specific/montgomery64_2e141m9_3limbs/compilerxx.sh
index 13eb02b66..13eb02b66 100755
--- a/src/Specific/montgomery64_2e141m9/compilerxx.sh
+++ b/src/Specific/montgomery64_2e141m9_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/feadd.v b/src/Specific/montgomery64_2e141m9_3limbs/feadd.v
new file mode 100644
index 000000000..d6c7afee0
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e141m9_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..1123110f3
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/femul.v b/src/Specific/montgomery64_2e141m9_3limbs/femul.v
new file mode 100644
index 000000000..8199f911c
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e141m9_3limbs/femulDisplay.v
new file mode 100644
index 000000000..3b5b12251
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/fenz.v b/src/Specific/montgomery64_2e141m9_3limbs/fenz.v
new file mode 100644
index 000000000..2ece89136
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e141m9_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..4f3fb14b0
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/feopp.v b/src/Specific/montgomery64_2e141m9_3limbs/feopp.v
new file mode 100644
index 000000000..f55172b1a
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e141m9_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..871c4929c
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/fesub.v b/src/Specific/montgomery64_2e141m9_3limbs/fesub.v
new file mode 100644
index 000000000..e405c867d
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e141m9_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e141m9_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..3334d475e
--- /dev/null
+++ b/src/Specific/montgomery64_2e141m9_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e141m9_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e141m9/py_interpreter.sh b/src/Specific/montgomery64_2e141m9_3limbs/py_interpreter.sh
index 688f9b1ae..688f9b1ae 100755
--- a/src/Specific/montgomery64_2e141m9/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e141m9_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e150m3/Synthesis.v b/src/Specific/montgomery64_2e150m3/Synthesis.v
deleted file mode 100644
index 25f389930..000000000
--- a/src/Specific/montgomery64_2e150m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e150m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e150m3/feadd.c b/src/Specific/montgomery64_2e150m3/feadd.c
deleted file mode 100644
index f7bf1ae57..000000000
--- a/src/Specific/montgomery64_2e150m3/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffffdL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m3/feadd.v b/src/Specific/montgomery64_2e150m3/feadd.v
deleted file mode 100644
index 573273390..000000000
--- a/src/Specific/montgomery64_2e150m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e150m3/feaddDisplay.log b/src/Specific/montgomery64_2e150m3/feaddDisplay.log
deleted file mode 100644
index bf8484756..000000000
--- a/src/Specific/montgomery64_2e150m3/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffffdL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m3/feaddDisplay.v b/src/Specific/montgomery64_2e150m3/feaddDisplay.v
deleted file mode 100644
index 50b4ff3c1..000000000
--- a/src/Specific/montgomery64_2e150m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e150m3/femul.c b/src/Specific/montgomery64_2e150m3/femul.c
deleted file mode 100644
index e6c781e6d..000000000
--- a/src/Specific/montgomery64_2e150m3/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffffdL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffffdL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffffdL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffffdL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m3/femul.v b/src/Specific/montgomery64_2e150m3/femul.v
deleted file mode 100644
index 45e610729..000000000
--- a/src/Specific/montgomery64_2e150m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e150m3/femulDisplay.log b/src/Specific/montgomery64_2e150m3/femulDisplay.log
deleted file mode 100644
index e0c671325..000000000
--- a/src/Specific/montgomery64_2e150m3/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xaaaaaaaaaaaaaaabL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffffdL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xaaaaaaaaaaaaaaabL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffffdL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xaaaaaaaaaaaaaaabL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffffdL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffffdL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m3/femulDisplay.v b/src/Specific/montgomery64_2e150m3/femulDisplay.v
deleted file mode 100644
index 3c009a331..000000000
--- a/src/Specific/montgomery64_2e150m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e150m3/fenz.c b/src/Specific/montgomery64_2e150m3/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e150m3/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m3/fenz.v b/src/Specific/montgomery64_2e150m3/fenz.v
deleted file mode 100644
index da4832124..000000000
--- a/src/Specific/montgomery64_2e150m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e150m3/fenzDisplay.log b/src/Specific/montgomery64_2e150m3/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e150m3/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e150m3/fenzDisplay.v b/src/Specific/montgomery64_2e150m3/fenzDisplay.v
deleted file mode 100644
index 971c40823..000000000
--- a/src/Specific/montgomery64_2e150m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e150m3/feopp.c b/src/Specific/montgomery64_2e150m3/feopp.c
deleted file mode 100644
index d70d226e0..000000000
--- a/src/Specific/montgomery64_2e150m3/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffffdL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m3/feopp.v b/src/Specific/montgomery64_2e150m3/feopp.v
deleted file mode 100644
index 6542f0f66..000000000
--- a/src/Specific/montgomery64_2e150m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e150m3/feoppDisplay.log b/src/Specific/montgomery64_2e150m3/feoppDisplay.log
deleted file mode 100644
index 557bc3a13..000000000
--- a/src/Specific/montgomery64_2e150m3/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffffdL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m3/feoppDisplay.v b/src/Specific/montgomery64_2e150m3/feoppDisplay.v
deleted file mode 100644
index 7832a4398..000000000
--- a/src/Specific/montgomery64_2e150m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e150m3/fesquare.c b/src/Specific/montgomery64_2e150m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e150m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e150m3/fesub.c b/src/Specific/montgomery64_2e150m3/fesub.c
deleted file mode 100644
index f25324f92..000000000
--- a/src/Specific/montgomery64_2e150m3/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffffdL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m3/fesub.v b/src/Specific/montgomery64_2e150m3/fesub.v
deleted file mode 100644
index 207fbfee9..000000000
--- a/src/Specific/montgomery64_2e150m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e150m3/fesubDisplay.log b/src/Specific/montgomery64_2e150m3/fesubDisplay.log
deleted file mode 100644
index 11c135bd2..000000000
--- a/src/Specific/montgomery64_2e150m3/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffffdL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m3/fesubDisplay.v b/src/Specific/montgomery64_2e150m3/fesubDisplay.v
deleted file mode 100644
index 594588ff0..000000000
--- a/src/Specific/montgomery64_2e150m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e150m3/CurveParameters.v b/src/Specific/montgomery64_2e150m3_3limbs/CurveParameters.v
index 9fa7b1f6b..9fa7b1f6b 100644
--- a/src/Specific/montgomery64_2e150m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e150m3_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/Synthesis.v b/src/Specific/montgomery64_2e150m3_3limbs/Synthesis.v
new file mode 100644
index 000000000..9f819a862
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e150m3/compiler.sh b/src/Specific/montgomery64_2e150m3_3limbs/compiler.sh
index b57fd13ef..b57fd13ef 100755
--- a/src/Specific/montgomery64_2e150m3/compiler.sh
+++ b/src/Specific/montgomery64_2e150m3_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e150m3/compilerxx.sh b/src/Specific/montgomery64_2e150m3_3limbs/compilerxx.sh
index 389fb8fc6..389fb8fc6 100755
--- a/src/Specific/montgomery64_2e150m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e150m3_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/feadd.v b/src/Specific/montgomery64_2e150m3_3limbs/feadd.v
new file mode 100644
index 000000000..c936d4a4f
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e150m3_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..625a44ea6
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/femul.v b/src/Specific/montgomery64_2e150m3_3limbs/femul.v
new file mode 100644
index 000000000..badeb3085
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e150m3_3limbs/femulDisplay.v
new file mode 100644
index 000000000..59008ab56
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/fenz.v b/src/Specific/montgomery64_2e150m3_3limbs/fenz.v
new file mode 100644
index 000000000..8da2117c7
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e150m3_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..575f5c536
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/feopp.v b/src/Specific/montgomery64_2e150m3_3limbs/feopp.v
new file mode 100644
index 000000000..a22ebf8df
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e150m3_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..b49d85661
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/fesub.v b/src/Specific/montgomery64_2e150m3_3limbs/fesub.v
new file mode 100644
index 000000000..92e08e429
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e150m3_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e150m3_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..8cd9f347c
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m3_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m3_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e150m3/py_interpreter.sh b/src/Specific/montgomery64_2e150m3_3limbs/py_interpreter.sh
index e14a82219..e14a82219 100755
--- a/src/Specific/montgomery64_2e150m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e150m3_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e150m5/Synthesis.v b/src/Specific/montgomery64_2e150m5/Synthesis.v
deleted file mode 100644
index 0bfe08bbc..000000000
--- a/src/Specific/montgomery64_2e150m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e150m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e150m5/feadd.c b/src/Specific/montgomery64_2e150m5/feadd.c
deleted file mode 100644
index 0b31721e5..000000000
--- a/src/Specific/montgomery64_2e150m5/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffffbL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m5/feadd.v b/src/Specific/montgomery64_2e150m5/feadd.v
deleted file mode 100644
index b5912cea7..000000000
--- a/src/Specific/montgomery64_2e150m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e150m5/feaddDisplay.log b/src/Specific/montgomery64_2e150m5/feaddDisplay.log
deleted file mode 100644
index 654bbedc7..000000000
--- a/src/Specific/montgomery64_2e150m5/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffffbL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m5/feaddDisplay.v b/src/Specific/montgomery64_2e150m5/feaddDisplay.v
deleted file mode 100644
index 579a9bf8f..000000000
--- a/src/Specific/montgomery64_2e150m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e150m5/femul.c b/src/Specific/montgomery64_2e150m5/femul.c
deleted file mode 100644
index 0ae71da39..000000000
--- a/src/Specific/montgomery64_2e150m5/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xcccccccccccccccdL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffffbL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xcccccccccccccccdL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffffbL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xcccccccccccccccdL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffffbL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffffbL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m5/femul.v b/src/Specific/montgomery64_2e150m5/femul.v
deleted file mode 100644
index 899394edd..000000000
--- a/src/Specific/montgomery64_2e150m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e150m5/femulDisplay.log b/src/Specific/montgomery64_2e150m5/femulDisplay.log
deleted file mode 100644
index ea386329f..000000000
--- a/src/Specific/montgomery64_2e150m5/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xcccccccccccccccdL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffffbL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xcccccccccccccccdL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffffbL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xcccccccccccccccdL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffffbL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffffbL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m5/femulDisplay.v b/src/Specific/montgomery64_2e150m5/femulDisplay.v
deleted file mode 100644
index 13df00a44..000000000
--- a/src/Specific/montgomery64_2e150m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e150m5/fenz.c b/src/Specific/montgomery64_2e150m5/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e150m5/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m5/fenz.v b/src/Specific/montgomery64_2e150m5/fenz.v
deleted file mode 100644
index c351178f5..000000000
--- a/src/Specific/montgomery64_2e150m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e150m5/fenzDisplay.log b/src/Specific/montgomery64_2e150m5/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e150m5/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e150m5/fenzDisplay.v b/src/Specific/montgomery64_2e150m5/fenzDisplay.v
deleted file mode 100644
index 9eb5a8216..000000000
--- a/src/Specific/montgomery64_2e150m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e150m5/feopp.c b/src/Specific/montgomery64_2e150m5/feopp.c
deleted file mode 100644
index f0bb881e1..000000000
--- a/src/Specific/montgomery64_2e150m5/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m5/feopp.v b/src/Specific/montgomery64_2e150m5/feopp.v
deleted file mode 100644
index 8f4aefe12..000000000
--- a/src/Specific/montgomery64_2e150m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e150m5/feoppDisplay.log b/src/Specific/montgomery64_2e150m5/feoppDisplay.log
deleted file mode 100644
index beeba9404..000000000
--- a/src/Specific/montgomery64_2e150m5/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m5/feoppDisplay.v b/src/Specific/montgomery64_2e150m5/feoppDisplay.v
deleted file mode 100644
index 09b5a12f6..000000000
--- a/src/Specific/montgomery64_2e150m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e150m5/fesquare.c b/src/Specific/montgomery64_2e150m5/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e150m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e150m5/fesub.c b/src/Specific/montgomery64_2e150m5/fesub.c
deleted file mode 100644
index ee9031dc5..000000000
--- a/src/Specific/montgomery64_2e150m5/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e150m5/fesub.v b/src/Specific/montgomery64_2e150m5/fesub.v
deleted file mode 100644
index b1a1ab40f..000000000
--- a/src/Specific/montgomery64_2e150m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e150m5/fesubDisplay.log b/src/Specific/montgomery64_2e150m5/fesubDisplay.log
deleted file mode 100644
index 1455a0777..000000000
--- a/src/Specific/montgomery64_2e150m5/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e150m5/fesubDisplay.v b/src/Specific/montgomery64_2e150m5/fesubDisplay.v
deleted file mode 100644
index 53772a7a8..000000000
--- a/src/Specific/montgomery64_2e150m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e150m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e150m5/CurveParameters.v b/src/Specific/montgomery64_2e150m5_3limbs/CurveParameters.v
index 249d46427..249d46427 100644
--- a/src/Specific/montgomery64_2e150m5/CurveParameters.v
+++ b/src/Specific/montgomery64_2e150m5_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/Synthesis.v b/src/Specific/montgomery64_2e150m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..091670552
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e150m5/compiler.sh b/src/Specific/montgomery64_2e150m5_3limbs/compiler.sh
index 74989afd8..74989afd8 100755
--- a/src/Specific/montgomery64_2e150m5/compiler.sh
+++ b/src/Specific/montgomery64_2e150m5_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e150m5/compilerxx.sh b/src/Specific/montgomery64_2e150m5_3limbs/compilerxx.sh
index 44a1d6d16..44a1d6d16 100755
--- a/src/Specific/montgomery64_2e150m5/compilerxx.sh
+++ b/src/Specific/montgomery64_2e150m5_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/feadd.v b/src/Specific/montgomery64_2e150m5_3limbs/feadd.v
new file mode 100644
index 000000000..73b8b10dc
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e150m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..25cb94d17
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/femul.v b/src/Specific/montgomery64_2e150m5_3limbs/femul.v
new file mode 100644
index 000000000..3efedb6cc
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e150m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..687a470d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/fenz.v b/src/Specific/montgomery64_2e150m5_3limbs/fenz.v
new file mode 100644
index 000000000..86d1078c7
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e150m5_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..514ad74f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/feopp.v b/src/Specific/montgomery64_2e150m5_3limbs/feopp.v
new file mode 100644
index 000000000..39f7fb5d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e150m5_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..a3cd94e86
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/fesub.v b/src/Specific/montgomery64_2e150m5_3limbs/fesub.v
new file mode 100644
index 000000000..4fc6b12e7
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e150m5_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e150m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..947bd8fd2
--- /dev/null
+++ b/src/Specific/montgomery64_2e150m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e150m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e150m5/py_interpreter.sh b/src/Specific/montgomery64_2e150m5_3limbs/py_interpreter.sh
index 47b3f75d5..47b3f75d5 100755
--- a/src/Specific/montgomery64_2e150m5/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e150m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e152m17/Synthesis.v b/src/Specific/montgomery64_2e152m17/Synthesis.v
deleted file mode 100644
index 660d4d245..000000000
--- a/src/Specific/montgomery64_2e152m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e152m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e152m17/feadd.c b/src/Specific/montgomery64_2e152m17/feadd.c
deleted file mode 100644
index b280cb729..000000000
--- a/src/Specific/montgomery64_2e152m17/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffefL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0xffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e152m17/feadd.v b/src/Specific/montgomery64_2e152m17/feadd.v
deleted file mode 100644
index 3eb15cbd2..000000000
--- a/src/Specific/montgomery64_2e152m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e152m17/feaddDisplay.log b/src/Specific/montgomery64_2e152m17/feaddDisplay.log
deleted file mode 100644
index 3c1c0d937..000000000
--- a/src/Specific/montgomery64_2e152m17/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffefL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0xffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e152m17/feaddDisplay.v b/src/Specific/montgomery64_2e152m17/feaddDisplay.v
deleted file mode 100644
index 7a603d0b1..000000000
--- a/src/Specific/montgomery64_2e152m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e152m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e152m17/femul.c b/src/Specific/montgomery64_2e152m17/femul.c
deleted file mode 100644
index 401222097..000000000
--- a/src/Specific/montgomery64_2e152m17/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffefL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0xffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffefL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0xffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffefL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0xffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffefL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0xffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e152m17/femul.v b/src/Specific/montgomery64_2e152m17/femul.v
deleted file mode 100644
index b61e84f27..000000000
--- a/src/Specific/montgomery64_2e152m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e152m17/femulDisplay.log b/src/Specific/montgomery64_2e152m17/femulDisplay.log
deleted file mode 100644
index 6c3eb91fb..000000000
--- a/src/Specific/montgomery64_2e152m17/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffefL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0xffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffefL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0xffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffefL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0xffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffefL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0xffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e152m17/femulDisplay.v b/src/Specific/montgomery64_2e152m17/femulDisplay.v
deleted file mode 100644
index 42d75752f..000000000
--- a/src/Specific/montgomery64_2e152m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e152m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e152m17/fenz.c b/src/Specific/montgomery64_2e152m17/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e152m17/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e152m17/fenz.v b/src/Specific/montgomery64_2e152m17/fenz.v
deleted file mode 100644
index 5fa15d88a..000000000
--- a/src/Specific/montgomery64_2e152m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e152m17/fenzDisplay.log b/src/Specific/montgomery64_2e152m17/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e152m17/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e152m17/fenzDisplay.v b/src/Specific/montgomery64_2e152m17/fenzDisplay.v
deleted file mode 100644
index 7532a7e20..000000000
--- a/src/Specific/montgomery64_2e152m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e152m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e152m17/feopp.c b/src/Specific/montgomery64_2e152m17/feopp.c
deleted file mode 100644
index cbf79bcda..000000000
--- a/src/Specific/montgomery64_2e152m17/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffefL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0xffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e152m17/feopp.v b/src/Specific/montgomery64_2e152m17/feopp.v
deleted file mode 100644
index fc6ac48e9..000000000
--- a/src/Specific/montgomery64_2e152m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e152m17/feoppDisplay.log b/src/Specific/montgomery64_2e152m17/feoppDisplay.log
deleted file mode 100644
index e27602ec5..000000000
--- a/src/Specific/montgomery64_2e152m17/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffefL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0xffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e152m17/feoppDisplay.v b/src/Specific/montgomery64_2e152m17/feoppDisplay.v
deleted file mode 100644
index fbc2835be..000000000
--- a/src/Specific/montgomery64_2e152m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e152m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e152m17/fesquare.c b/src/Specific/montgomery64_2e152m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e152m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e152m17/fesub.c b/src/Specific/montgomery64_2e152m17/fesub.c
deleted file mode 100644
index 81ae44d47..000000000
--- a/src/Specific/montgomery64_2e152m17/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffefL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0xffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e152m17/fesub.v b/src/Specific/montgomery64_2e152m17/fesub.v
deleted file mode 100644
index 164b4e75e..000000000
--- a/src/Specific/montgomery64_2e152m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e152m17/fesubDisplay.log b/src/Specific/montgomery64_2e152m17/fesubDisplay.log
deleted file mode 100644
index 3d107ab03..000000000
--- a/src/Specific/montgomery64_2e152m17/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffefL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0xffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e152m17/fesubDisplay.v b/src/Specific/montgomery64_2e152m17/fesubDisplay.v
deleted file mode 100644
index 235c1cc4a..000000000
--- a/src/Specific/montgomery64_2e152m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e152m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e152m17/CurveParameters.v b/src/Specific/montgomery64_2e152m17_3limbs/CurveParameters.v
index 581741f40..581741f40 100644
--- a/src/Specific/montgomery64_2e152m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e152m17_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/Synthesis.v b/src/Specific/montgomery64_2e152m17_3limbs/Synthesis.v
new file mode 100644
index 000000000..09c703965
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e152m17/compiler.sh b/src/Specific/montgomery64_2e152m17_3limbs/compiler.sh
index 8a0c549a4..8a0c549a4 100755
--- a/src/Specific/montgomery64_2e152m17/compiler.sh
+++ b/src/Specific/montgomery64_2e152m17_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e152m17/compilerxx.sh b/src/Specific/montgomery64_2e152m17_3limbs/compilerxx.sh
index f264dd9e0..f264dd9e0 100755
--- a/src/Specific/montgomery64_2e152m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e152m17_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/feadd.v b/src/Specific/montgomery64_2e152m17_3limbs/feadd.v
new file mode 100644
index 000000000..c4789708f
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e152m17_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..771f8c841
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/femul.v b/src/Specific/montgomery64_2e152m17_3limbs/femul.v
new file mode 100644
index 000000000..1c3e1c133
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e152m17_3limbs/femulDisplay.v
new file mode 100644
index 000000000..78af37297
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/fenz.v b/src/Specific/montgomery64_2e152m17_3limbs/fenz.v
new file mode 100644
index 000000000..800904599
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e152m17_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..a076b2db2
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/feopp.v b/src/Specific/montgomery64_2e152m17_3limbs/feopp.v
new file mode 100644
index 000000000..9ef6f4979
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e152m17_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..8af8e8a84
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/fesub.v b/src/Specific/montgomery64_2e152m17_3limbs/fesub.v
new file mode 100644
index 000000000..a7ad8dbc9
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e152m17_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e152m17_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..cd65b26df
--- /dev/null
+++ b/src/Specific/montgomery64_2e152m17_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e152m17_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e152m17/py_interpreter.sh b/src/Specific/montgomery64_2e152m17_3limbs/py_interpreter.sh
index 15b8e2ca4..15b8e2ca4 100755
--- a/src/Specific/montgomery64_2e152m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e152m17_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e158m15/Synthesis.v b/src/Specific/montgomery64_2e158m15/Synthesis.v
deleted file mode 100644
index 06d4fa020..000000000
--- a/src/Specific/montgomery64_2e158m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e158m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e158m15/feadd.c b/src/Specific/montgomery64_2e158m15/feadd.c
deleted file mode 100644
index 686fa28f6..000000000
--- a/src/Specific/montgomery64_2e158m15/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffff1L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e158m15/feadd.v b/src/Specific/montgomery64_2e158m15/feadd.v
deleted file mode 100644
index 068aed663..000000000
--- a/src/Specific/montgomery64_2e158m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e158m15/feaddDisplay.log b/src/Specific/montgomery64_2e158m15/feaddDisplay.log
deleted file mode 100644
index e58fcd683..000000000
--- a/src/Specific/montgomery64_2e158m15/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffff1L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e158m15/feaddDisplay.v b/src/Specific/montgomery64_2e158m15/feaddDisplay.v
deleted file mode 100644
index e484dc9ac..000000000
--- a/src/Specific/montgomery64_2e158m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e158m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e158m15/femul.c b/src/Specific/montgomery64_2e158m15/femul.c
deleted file mode 100644
index d83532e8a..000000000
--- a/src/Specific/montgomery64_2e158m15/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffff1L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffff1L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffff1L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffff1L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e158m15/femul.v b/src/Specific/montgomery64_2e158m15/femul.v
deleted file mode 100644
index 3ef5c29ce..000000000
--- a/src/Specific/montgomery64_2e158m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e158m15/femulDisplay.log b/src/Specific/montgomery64_2e158m15/femulDisplay.log
deleted file mode 100644
index d982c5b1b..000000000
--- a/src/Specific/montgomery64_2e158m15/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xeeeeeeeeeeeeeeefL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffff1L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xeeeeeeeeeeeeeeefL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffff1L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xeeeeeeeeeeeeeeefL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffff1L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffff1L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e158m15/femulDisplay.v b/src/Specific/montgomery64_2e158m15/femulDisplay.v
deleted file mode 100644
index 09a7b4e08..000000000
--- a/src/Specific/montgomery64_2e158m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e158m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e158m15/fenz.c b/src/Specific/montgomery64_2e158m15/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e158m15/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e158m15/fenz.v b/src/Specific/montgomery64_2e158m15/fenz.v
deleted file mode 100644
index 9c03167c5..000000000
--- a/src/Specific/montgomery64_2e158m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e158m15/fenzDisplay.log b/src/Specific/montgomery64_2e158m15/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e158m15/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e158m15/fenzDisplay.v b/src/Specific/montgomery64_2e158m15/fenzDisplay.v
deleted file mode 100644
index 145b62564..000000000
--- a/src/Specific/montgomery64_2e158m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e158m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e158m15/feopp.c b/src/Specific/montgomery64_2e158m15/feopp.c
deleted file mode 100644
index ded084772..000000000
--- a/src/Specific/montgomery64_2e158m15/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffff1L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e158m15/feopp.v b/src/Specific/montgomery64_2e158m15/feopp.v
deleted file mode 100644
index 6fc1d2097..000000000
--- a/src/Specific/montgomery64_2e158m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e158m15/feoppDisplay.log b/src/Specific/montgomery64_2e158m15/feoppDisplay.log
deleted file mode 100644
index 958bc93f4..000000000
--- a/src/Specific/montgomery64_2e158m15/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffff1L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e158m15/feoppDisplay.v b/src/Specific/montgomery64_2e158m15/feoppDisplay.v
deleted file mode 100644
index 20d646aca..000000000
--- a/src/Specific/montgomery64_2e158m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e158m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e158m15/fesquare.c b/src/Specific/montgomery64_2e158m15/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e158m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e158m15/fesub.c b/src/Specific/montgomery64_2e158m15/fesub.c
deleted file mode 100644
index 793809f57..000000000
--- a/src/Specific/montgomery64_2e158m15/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffff1L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e158m15/fesub.v b/src/Specific/montgomery64_2e158m15/fesub.v
deleted file mode 100644
index d0010e721..000000000
--- a/src/Specific/montgomery64_2e158m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e158m15/fesubDisplay.log b/src/Specific/montgomery64_2e158m15/fesubDisplay.log
deleted file mode 100644
index 5539940ca..000000000
--- a/src/Specific/montgomery64_2e158m15/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffff1L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e158m15/fesubDisplay.v b/src/Specific/montgomery64_2e158m15/fesubDisplay.v
deleted file mode 100644
index 7f3471c24..000000000
--- a/src/Specific/montgomery64_2e158m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e158m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e158m15/CurveParameters.v b/src/Specific/montgomery64_2e158m15_3limbs/CurveParameters.v
index 82c1baba1..82c1baba1 100644
--- a/src/Specific/montgomery64_2e158m15/CurveParameters.v
+++ b/src/Specific/montgomery64_2e158m15_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/Synthesis.v b/src/Specific/montgomery64_2e158m15_3limbs/Synthesis.v
new file mode 100644
index 000000000..e7ac59824
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e158m15/compiler.sh b/src/Specific/montgomery64_2e158m15_3limbs/compiler.sh
index 5c03591fa..5c03591fa 100755
--- a/src/Specific/montgomery64_2e158m15/compiler.sh
+++ b/src/Specific/montgomery64_2e158m15_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e158m15/compilerxx.sh b/src/Specific/montgomery64_2e158m15_3limbs/compilerxx.sh
index c4283ed8f..c4283ed8f 100755
--- a/src/Specific/montgomery64_2e158m15/compilerxx.sh
+++ b/src/Specific/montgomery64_2e158m15_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/feadd.v b/src/Specific/montgomery64_2e158m15_3limbs/feadd.v
new file mode 100644
index 000000000..db2860447
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e158m15_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..bc7390fda
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/femul.v b/src/Specific/montgomery64_2e158m15_3limbs/femul.v
new file mode 100644
index 000000000..fce127a7c
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e158m15_3limbs/femulDisplay.v
new file mode 100644
index 000000000..71f2c7c26
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/fenz.v b/src/Specific/montgomery64_2e158m15_3limbs/fenz.v
new file mode 100644
index 000000000..d2103a75c
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e158m15_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..2c436f2df
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/feopp.v b/src/Specific/montgomery64_2e158m15_3limbs/feopp.v
new file mode 100644
index 000000000..b76d97a08
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e158m15_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..77d443efc
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/fesub.v b/src/Specific/montgomery64_2e158m15_3limbs/fesub.v
new file mode 100644
index 000000000..bac77b733
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e158m15_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e158m15_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..4a7dc6241
--- /dev/null
+++ b/src/Specific/montgomery64_2e158m15_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e158m15_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e158m15/py_interpreter.sh b/src/Specific/montgomery64_2e158m15_3limbs/py_interpreter.sh
index d0abc4958..d0abc4958 100755
--- a/src/Specific/montgomery64_2e158m15/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e158m15_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e165m25/Synthesis.v b/src/Specific/montgomery64_2e165m25/Synthesis.v
deleted file mode 100644
index 251795189..000000000
--- a/src/Specific/montgomery64_2e165m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e165m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e165m25/feadd.c b/src/Specific/montgomery64_2e165m25/feadd.c
deleted file mode 100644
index 8fd844560..000000000
--- a/src/Specific/montgomery64_2e165m25/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffe7L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x1fffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e165m25/feadd.v b/src/Specific/montgomery64_2e165m25/feadd.v
deleted file mode 100644
index 4d24c1be2..000000000
--- a/src/Specific/montgomery64_2e165m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e165m25/feaddDisplay.log b/src/Specific/montgomery64_2e165m25/feaddDisplay.log
deleted file mode 100644
index 909d6bf32..000000000
--- a/src/Specific/montgomery64_2e165m25/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffe7L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x1fffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e165m25/feaddDisplay.v b/src/Specific/montgomery64_2e165m25/feaddDisplay.v
deleted file mode 100644
index 92998f48a..000000000
--- a/src/Specific/montgomery64_2e165m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e165m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e165m25/femul.c b/src/Specific/montgomery64_2e165m25/femul.c
deleted file mode 100644
index 1a40a737b..000000000
--- a/src/Specific/montgomery64_2e165m25/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffe7L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x1fffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffe7L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x1fffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffe7L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x1fffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffe7L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x1fffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e165m25/femul.v b/src/Specific/montgomery64_2e165m25/femul.v
deleted file mode 100644
index ad984a407..000000000
--- a/src/Specific/montgomery64_2e165m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e165m25/femulDisplay.log b/src/Specific/montgomery64_2e165m25/femulDisplay.log
deleted file mode 100644
index 695ddce41..000000000
--- a/src/Specific/montgomery64_2e165m25/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x8f5c28f5c28f5c29L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffe7L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x1fffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x8f5c28f5c28f5c29L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffe7L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x1fffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x8f5c28f5c28f5c29L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffe7L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x1fffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffe7L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x1fffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e165m25/femulDisplay.v b/src/Specific/montgomery64_2e165m25/femulDisplay.v
deleted file mode 100644
index 603317064..000000000
--- a/src/Specific/montgomery64_2e165m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e165m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e165m25/fenz.c b/src/Specific/montgomery64_2e165m25/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e165m25/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e165m25/fenz.v b/src/Specific/montgomery64_2e165m25/fenz.v
deleted file mode 100644
index 552be16b4..000000000
--- a/src/Specific/montgomery64_2e165m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e165m25/fenzDisplay.log b/src/Specific/montgomery64_2e165m25/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e165m25/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e165m25/fenzDisplay.v b/src/Specific/montgomery64_2e165m25/fenzDisplay.v
deleted file mode 100644
index 7f7109636..000000000
--- a/src/Specific/montgomery64_2e165m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e165m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e165m25/feopp.c b/src/Specific/montgomery64_2e165m25/feopp.c
deleted file mode 100644
index fbb4ed8d5..000000000
--- a/src/Specific/montgomery64_2e165m25/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x1fffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e165m25/feopp.v b/src/Specific/montgomery64_2e165m25/feopp.v
deleted file mode 100644
index 0a16e5863..000000000
--- a/src/Specific/montgomery64_2e165m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e165m25/feoppDisplay.log b/src/Specific/montgomery64_2e165m25/feoppDisplay.log
deleted file mode 100644
index c82d3098f..000000000
--- a/src/Specific/montgomery64_2e165m25/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x1fffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e165m25/feoppDisplay.v b/src/Specific/montgomery64_2e165m25/feoppDisplay.v
deleted file mode 100644
index d846f439b..000000000
--- a/src/Specific/montgomery64_2e165m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e165m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e165m25/fesquare.c b/src/Specific/montgomery64_2e165m25/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e165m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e165m25/fesub.c b/src/Specific/montgomery64_2e165m25/fesub.c
deleted file mode 100644
index b7cec3891..000000000
--- a/src/Specific/montgomery64_2e165m25/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x1fffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e165m25/fesub.v b/src/Specific/montgomery64_2e165m25/fesub.v
deleted file mode 100644
index b0f12b7c3..000000000
--- a/src/Specific/montgomery64_2e165m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e165m25/fesubDisplay.log b/src/Specific/montgomery64_2e165m25/fesubDisplay.log
deleted file mode 100644
index 505664e2b..000000000
--- a/src/Specific/montgomery64_2e165m25/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x1fffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e165m25/fesubDisplay.v b/src/Specific/montgomery64_2e165m25/fesubDisplay.v
deleted file mode 100644
index a89d7ad9c..000000000
--- a/src/Specific/montgomery64_2e165m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e165m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e165m25/CurveParameters.v b/src/Specific/montgomery64_2e165m25_3limbs/CurveParameters.v
index 3915190cb..3915190cb 100644
--- a/src/Specific/montgomery64_2e165m25/CurveParameters.v
+++ b/src/Specific/montgomery64_2e165m25_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/Synthesis.v b/src/Specific/montgomery64_2e165m25_3limbs/Synthesis.v
new file mode 100644
index 000000000..456a52b20
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e165m25/compiler.sh b/src/Specific/montgomery64_2e165m25_3limbs/compiler.sh
index 257811581..257811581 100755
--- a/src/Specific/montgomery64_2e165m25/compiler.sh
+++ b/src/Specific/montgomery64_2e165m25_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e165m25/compilerxx.sh b/src/Specific/montgomery64_2e165m25_3limbs/compilerxx.sh
index 33eb8bfd4..33eb8bfd4 100755
--- a/src/Specific/montgomery64_2e165m25/compilerxx.sh
+++ b/src/Specific/montgomery64_2e165m25_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/feadd.v b/src/Specific/montgomery64_2e165m25_3limbs/feadd.v
new file mode 100644
index 000000000..f0c72969d
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e165m25_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..f60581326
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/femul.v b/src/Specific/montgomery64_2e165m25_3limbs/femul.v
new file mode 100644
index 000000000..9d3fdafd9
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e165m25_3limbs/femulDisplay.v
new file mode 100644
index 000000000..deff6e70a
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/fenz.v b/src/Specific/montgomery64_2e165m25_3limbs/fenz.v
new file mode 100644
index 000000000..ac40c5c44
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e165m25_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..7162ad896
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/feopp.v b/src/Specific/montgomery64_2e165m25_3limbs/feopp.v
new file mode 100644
index 000000000..5862ef613
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e165m25_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..6370b90e8
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/fesub.v b/src/Specific/montgomery64_2e165m25_3limbs/fesub.v
new file mode 100644
index 000000000..0e0d27ef5
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e165m25_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e165m25_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..1b9af7896
--- /dev/null
+++ b/src/Specific/montgomery64_2e165m25_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e165m25_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e165m25/py_interpreter.sh b/src/Specific/montgomery64_2e165m25_3limbs/py_interpreter.sh
index 5a5da3087..5a5da3087 100755
--- a/src/Specific/montgomery64_2e165m25/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e165m25_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e166m5/Synthesis.v b/src/Specific/montgomery64_2e166m5/Synthesis.v
deleted file mode 100644
index 6a4078a06..000000000
--- a/src/Specific/montgomery64_2e166m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e166m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e166m5/feadd.c b/src/Specific/montgomery64_2e166m5/feadd.c
deleted file mode 100644
index ddd0e590c..000000000
--- a/src/Specific/montgomery64_2e166m5/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffffbL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e166m5/feadd.v b/src/Specific/montgomery64_2e166m5/feadd.v
deleted file mode 100644
index 4f51ee2e4..000000000
--- a/src/Specific/montgomery64_2e166m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e166m5/feaddDisplay.log b/src/Specific/montgomery64_2e166m5/feaddDisplay.log
deleted file mode 100644
index 91dc59768..000000000
--- a/src/Specific/montgomery64_2e166m5/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffffbL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e166m5/feaddDisplay.v b/src/Specific/montgomery64_2e166m5/feaddDisplay.v
deleted file mode 100644
index cd12c430f..000000000
--- a/src/Specific/montgomery64_2e166m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e166m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e166m5/femul.c b/src/Specific/montgomery64_2e166m5/femul.c
deleted file mode 100644
index 90f8a9ba1..000000000
--- a/src/Specific/montgomery64_2e166m5/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xcccccccccccccccdL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffffbL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xcccccccccccccccdL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffffbL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xcccccccccccccccdL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffffbL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffffbL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e166m5/femul.v b/src/Specific/montgomery64_2e166m5/femul.v
deleted file mode 100644
index 91aa72318..000000000
--- a/src/Specific/montgomery64_2e166m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e166m5/femulDisplay.log b/src/Specific/montgomery64_2e166m5/femulDisplay.log
deleted file mode 100644
index 71c77bb01..000000000
--- a/src/Specific/montgomery64_2e166m5/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xcccccccccccccccdL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffffbL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xcccccccccccccccdL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffffbL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xcccccccccccccccdL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffffbL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffffbL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e166m5/femulDisplay.v b/src/Specific/montgomery64_2e166m5/femulDisplay.v
deleted file mode 100644
index 7ab3d1d2b..000000000
--- a/src/Specific/montgomery64_2e166m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e166m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e166m5/fenz.c b/src/Specific/montgomery64_2e166m5/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e166m5/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e166m5/fenz.v b/src/Specific/montgomery64_2e166m5/fenz.v
deleted file mode 100644
index 5cff7952b..000000000
--- a/src/Specific/montgomery64_2e166m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e166m5/fenzDisplay.log b/src/Specific/montgomery64_2e166m5/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e166m5/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e166m5/fenzDisplay.v b/src/Specific/montgomery64_2e166m5/fenzDisplay.v
deleted file mode 100644
index c7e8919bb..000000000
--- a/src/Specific/montgomery64_2e166m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e166m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e166m5/feopp.c b/src/Specific/montgomery64_2e166m5/feopp.c
deleted file mode 100644
index c99dc61d8..000000000
--- a/src/Specific/montgomery64_2e166m5/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e166m5/feopp.v b/src/Specific/montgomery64_2e166m5/feopp.v
deleted file mode 100644
index 92020d2c0..000000000
--- a/src/Specific/montgomery64_2e166m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e166m5/feoppDisplay.log b/src/Specific/montgomery64_2e166m5/feoppDisplay.log
deleted file mode 100644
index e58f8f51f..000000000
--- a/src/Specific/montgomery64_2e166m5/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffffbL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e166m5/feoppDisplay.v b/src/Specific/montgomery64_2e166m5/feoppDisplay.v
deleted file mode 100644
index 507253ba5..000000000
--- a/src/Specific/montgomery64_2e166m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e166m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e166m5/fesquare.c b/src/Specific/montgomery64_2e166m5/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e166m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e166m5/fesub.c b/src/Specific/montgomery64_2e166m5/fesub.c
deleted file mode 100644
index f4c87ad6d..000000000
--- a/src/Specific/montgomery64_2e166m5/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e166m5/fesub.v b/src/Specific/montgomery64_2e166m5/fesub.v
deleted file mode 100644
index 7c3903909..000000000
--- a/src/Specific/montgomery64_2e166m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e166m5/fesubDisplay.log b/src/Specific/montgomery64_2e166m5/fesubDisplay.log
deleted file mode 100644
index 3ab9ec12d..000000000
--- a/src/Specific/montgomery64_2e166m5/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffffbL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e166m5/fesubDisplay.v b/src/Specific/montgomery64_2e166m5/fesubDisplay.v
deleted file mode 100644
index 795d8269c..000000000
--- a/src/Specific/montgomery64_2e166m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e166m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e166m5/CurveParameters.v b/src/Specific/montgomery64_2e166m5_3limbs/CurveParameters.v
index b80118c5e..b80118c5e 100644
--- a/src/Specific/montgomery64_2e166m5/CurveParameters.v
+++ b/src/Specific/montgomery64_2e166m5_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/Synthesis.v b/src/Specific/montgomery64_2e166m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..4f271165d
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e166m5/compiler.sh b/src/Specific/montgomery64_2e166m5_3limbs/compiler.sh
index f49bc7b02..f49bc7b02 100755
--- a/src/Specific/montgomery64_2e166m5/compiler.sh
+++ b/src/Specific/montgomery64_2e166m5_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e166m5/compilerxx.sh b/src/Specific/montgomery64_2e166m5_3limbs/compilerxx.sh
index 835abda8e..835abda8e 100755
--- a/src/Specific/montgomery64_2e166m5/compilerxx.sh
+++ b/src/Specific/montgomery64_2e166m5_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/feadd.v b/src/Specific/montgomery64_2e166m5_3limbs/feadd.v
new file mode 100644
index 000000000..e6cfdc036
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e166m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..a93030528
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/femul.v b/src/Specific/montgomery64_2e166m5_3limbs/femul.v
new file mode 100644
index 000000000..180bb0a9b
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e166m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..880ca464b
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/fenz.v b/src/Specific/montgomery64_2e166m5_3limbs/fenz.v
new file mode 100644
index 000000000..78394c814
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e166m5_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..97e275229
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/feopp.v b/src/Specific/montgomery64_2e166m5_3limbs/feopp.v
new file mode 100644
index 000000000..ec8152367
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e166m5_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..fead2b95a
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/fesub.v b/src/Specific/montgomery64_2e166m5_3limbs/fesub.v
new file mode 100644
index 000000000..51fcfecb1
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e166m5_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e166m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..71293c831
--- /dev/null
+++ b/src/Specific/montgomery64_2e166m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e166m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e166m5/py_interpreter.sh b/src/Specific/montgomery64_2e166m5_3limbs/py_interpreter.sh
index a5e2020e0..a5e2020e0 100755
--- a/src/Specific/montgomery64_2e166m5/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e166m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e171m19/Synthesis.v b/src/Specific/montgomery64_2e171m19/Synthesis.v
deleted file mode 100644
index 73b918945..000000000
--- a/src/Specific/montgomery64_2e171m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e171m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e171m19/feadd.c b/src/Specific/montgomery64_2e171m19/feadd.c
deleted file mode 100644
index cfc2a28d9..000000000
--- a/src/Specific/montgomery64_2e171m19/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffedL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x7ffffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e171m19/feadd.v b/src/Specific/montgomery64_2e171m19/feadd.v
deleted file mode 100644
index e58f9d4ed..000000000
--- a/src/Specific/montgomery64_2e171m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e171m19/feaddDisplay.log b/src/Specific/montgomery64_2e171m19/feaddDisplay.log
deleted file mode 100644
index e1dee8a70..000000000
--- a/src/Specific/montgomery64_2e171m19/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffedL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x7ffffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e171m19/feaddDisplay.v b/src/Specific/montgomery64_2e171m19/feaddDisplay.v
deleted file mode 100644
index 50e04c1d5..000000000
--- a/src/Specific/montgomery64_2e171m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e171m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e171m19/femul.c b/src/Specific/montgomery64_2e171m19/femul.c
deleted file mode 100644
index f48dbe98d..000000000
--- a/src/Specific/montgomery64_2e171m19/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x86bca1af286bca1bL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffedL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x7ffffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x86bca1af286bca1bL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffedL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x7ffffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x86bca1af286bca1bL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffedL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x7ffffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffedL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x7ffffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e171m19/femul.v b/src/Specific/montgomery64_2e171m19/femul.v
deleted file mode 100644
index cee541b6e..000000000
--- a/src/Specific/montgomery64_2e171m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e171m19/femulDisplay.log b/src/Specific/montgomery64_2e171m19/femulDisplay.log
deleted file mode 100644
index 1025fdd76..000000000
--- a/src/Specific/montgomery64_2e171m19/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x86bca1af286bca1bL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffedL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x7ffffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x86bca1af286bca1bL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffedL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x7ffffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x86bca1af286bca1bL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffedL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x7ffffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffedL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x7ffffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e171m19/femulDisplay.v b/src/Specific/montgomery64_2e171m19/femulDisplay.v
deleted file mode 100644
index c68990402..000000000
--- a/src/Specific/montgomery64_2e171m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e171m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e171m19/fenz.c b/src/Specific/montgomery64_2e171m19/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e171m19/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e171m19/fenz.v b/src/Specific/montgomery64_2e171m19/fenz.v
deleted file mode 100644
index a2e7ce931..000000000
--- a/src/Specific/montgomery64_2e171m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e171m19/fenzDisplay.log b/src/Specific/montgomery64_2e171m19/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e171m19/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e171m19/fenzDisplay.v b/src/Specific/montgomery64_2e171m19/fenzDisplay.v
deleted file mode 100644
index f084be5d9..000000000
--- a/src/Specific/montgomery64_2e171m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e171m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e171m19/feopp.c b/src/Specific/montgomery64_2e171m19/feopp.c
deleted file mode 100644
index e62a4e9b6..000000000
--- a/src/Specific/montgomery64_2e171m19/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffedL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x7ffffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e171m19/feopp.v b/src/Specific/montgomery64_2e171m19/feopp.v
deleted file mode 100644
index ff068ae49..000000000
--- a/src/Specific/montgomery64_2e171m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e171m19/feoppDisplay.log b/src/Specific/montgomery64_2e171m19/feoppDisplay.log
deleted file mode 100644
index 4c3fc354d..000000000
--- a/src/Specific/montgomery64_2e171m19/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffedL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x7ffffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e171m19/feoppDisplay.v b/src/Specific/montgomery64_2e171m19/feoppDisplay.v
deleted file mode 100644
index bf84676ad..000000000
--- a/src/Specific/montgomery64_2e171m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e171m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e171m19/fesquare.c b/src/Specific/montgomery64_2e171m19/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e171m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e171m19/fesub.c b/src/Specific/montgomery64_2e171m19/fesub.c
deleted file mode 100644
index dc95081fa..000000000
--- a/src/Specific/montgomery64_2e171m19/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffedL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x7ffffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e171m19/fesub.v b/src/Specific/montgomery64_2e171m19/fesub.v
deleted file mode 100644
index 875aa05b6..000000000
--- a/src/Specific/montgomery64_2e171m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e171m19/fesubDisplay.log b/src/Specific/montgomery64_2e171m19/fesubDisplay.log
deleted file mode 100644
index aa902b08f..000000000
--- a/src/Specific/montgomery64_2e171m19/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffedL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x7ffffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e171m19/fesubDisplay.v b/src/Specific/montgomery64_2e171m19/fesubDisplay.v
deleted file mode 100644
index 00ddd84df..000000000
--- a/src/Specific/montgomery64_2e171m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e171m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e171m19/CurveParameters.v b/src/Specific/montgomery64_2e171m19_3limbs/CurveParameters.v
index 776c36f1e..776c36f1e 100644
--- a/src/Specific/montgomery64_2e171m19/CurveParameters.v
+++ b/src/Specific/montgomery64_2e171m19_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/Synthesis.v b/src/Specific/montgomery64_2e171m19_3limbs/Synthesis.v
new file mode 100644
index 000000000..78cf8e037
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e171m19/compiler.sh b/src/Specific/montgomery64_2e171m19_3limbs/compiler.sh
index f3975aacf..f3975aacf 100755
--- a/src/Specific/montgomery64_2e171m19/compiler.sh
+++ b/src/Specific/montgomery64_2e171m19_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e171m19/compilerxx.sh b/src/Specific/montgomery64_2e171m19_3limbs/compilerxx.sh
index 54498cc4b..54498cc4b 100755
--- a/src/Specific/montgomery64_2e171m19/compilerxx.sh
+++ b/src/Specific/montgomery64_2e171m19_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/feadd.v b/src/Specific/montgomery64_2e171m19_3limbs/feadd.v
new file mode 100644
index 000000000..2b8f9218b
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e171m19_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..bcbd06ffc
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/femul.v b/src/Specific/montgomery64_2e171m19_3limbs/femul.v
new file mode 100644
index 000000000..d7e8f70d2
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e171m19_3limbs/femulDisplay.v
new file mode 100644
index 000000000..8155241f7
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/fenz.v b/src/Specific/montgomery64_2e171m19_3limbs/fenz.v
new file mode 100644
index 000000000..d10741407
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e171m19_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..e2b2b174c
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/feopp.v b/src/Specific/montgomery64_2e171m19_3limbs/feopp.v
new file mode 100644
index 000000000..846d7a13e
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e171m19_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..9952d5190
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/fesub.v b/src/Specific/montgomery64_2e171m19_3limbs/fesub.v
new file mode 100644
index 000000000..a1a1c0f5c
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e171m19_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e171m19_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..f3039138f
--- /dev/null
+++ b/src/Specific/montgomery64_2e171m19_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e171m19_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e171m19/py_interpreter.sh b/src/Specific/montgomery64_2e171m19_3limbs/py_interpreter.sh
index 0fe99a0e3..0fe99a0e3 100755
--- a/src/Specific/montgomery64_2e171m19/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e171m19_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e174m17/Synthesis.v b/src/Specific/montgomery64_2e174m17/Synthesis.v
deleted file mode 100644
index bb1bc03a4..000000000
--- a/src/Specific/montgomery64_2e174m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e174m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e174m17/feadd.c b/src/Specific/montgomery64_2e174m17/feadd.c
deleted file mode 100644
index 0b55b0a1f..000000000
--- a/src/Specific/montgomery64_2e174m17/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffefL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m17/feadd.v b/src/Specific/montgomery64_2e174m17/feadd.v
deleted file mode 100644
index 477282c66..000000000
--- a/src/Specific/montgomery64_2e174m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e174m17/feaddDisplay.log b/src/Specific/montgomery64_2e174m17/feaddDisplay.log
deleted file mode 100644
index 8e63c8563..000000000
--- a/src/Specific/montgomery64_2e174m17/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffefL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m17/feaddDisplay.v b/src/Specific/montgomery64_2e174m17/feaddDisplay.v
deleted file mode 100644
index fec68feb3..000000000
--- a/src/Specific/montgomery64_2e174m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e174m17/femul.c b/src/Specific/montgomery64_2e174m17/femul.c
deleted file mode 100644
index 1b4daae65..000000000
--- a/src/Specific/montgomery64_2e174m17/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffefL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffefL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffefL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffefL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m17/femul.v b/src/Specific/montgomery64_2e174m17/femul.v
deleted file mode 100644
index 56c76b799..000000000
--- a/src/Specific/montgomery64_2e174m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e174m17/femulDisplay.log b/src/Specific/montgomery64_2e174m17/femulDisplay.log
deleted file mode 100644
index 8fbd68327..000000000
--- a/src/Specific/montgomery64_2e174m17/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffefL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffefL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffefL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffefL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m17/femulDisplay.v b/src/Specific/montgomery64_2e174m17/femulDisplay.v
deleted file mode 100644
index 112919173..000000000
--- a/src/Specific/montgomery64_2e174m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e174m17/fenz.c b/src/Specific/montgomery64_2e174m17/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e174m17/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m17/fenz.v b/src/Specific/montgomery64_2e174m17/fenz.v
deleted file mode 100644
index 96151811d..000000000
--- a/src/Specific/montgomery64_2e174m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e174m17/fenzDisplay.log b/src/Specific/montgomery64_2e174m17/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e174m17/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e174m17/fenzDisplay.v b/src/Specific/montgomery64_2e174m17/fenzDisplay.v
deleted file mode 100644
index ed771aba6..000000000
--- a/src/Specific/montgomery64_2e174m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e174m17/feopp.c b/src/Specific/montgomery64_2e174m17/feopp.c
deleted file mode 100644
index 9702a946c..000000000
--- a/src/Specific/montgomery64_2e174m17/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffefL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m17/feopp.v b/src/Specific/montgomery64_2e174m17/feopp.v
deleted file mode 100644
index 7e24d6200..000000000
--- a/src/Specific/montgomery64_2e174m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e174m17/feoppDisplay.log b/src/Specific/montgomery64_2e174m17/feoppDisplay.log
deleted file mode 100644
index c3b02e611..000000000
--- a/src/Specific/montgomery64_2e174m17/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffefL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m17/feoppDisplay.v b/src/Specific/montgomery64_2e174m17/feoppDisplay.v
deleted file mode 100644
index d23ba35fb..000000000
--- a/src/Specific/montgomery64_2e174m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e174m17/fesquare.c b/src/Specific/montgomery64_2e174m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e174m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e174m17/fesub.c b/src/Specific/montgomery64_2e174m17/fesub.c
deleted file mode 100644
index 8c618bdcc..000000000
--- a/src/Specific/montgomery64_2e174m17/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffefL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m17/fesub.v b/src/Specific/montgomery64_2e174m17/fesub.v
deleted file mode 100644
index 9c3a1e47a..000000000
--- a/src/Specific/montgomery64_2e174m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e174m17/fesubDisplay.log b/src/Specific/montgomery64_2e174m17/fesubDisplay.log
deleted file mode 100644
index 5274fa01c..000000000
--- a/src/Specific/montgomery64_2e174m17/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffefL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m17/fesubDisplay.v b/src/Specific/montgomery64_2e174m17/fesubDisplay.v
deleted file mode 100644
index 9987bfd47..000000000
--- a/src/Specific/montgomery64_2e174m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e174m17/CurveParameters.v b/src/Specific/montgomery64_2e174m17_3limbs/CurveParameters.v
index 73ad4b3fe..73ad4b3fe 100644
--- a/src/Specific/montgomery64_2e174m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e174m17_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/Synthesis.v b/src/Specific/montgomery64_2e174m17_3limbs/Synthesis.v
new file mode 100644
index 000000000..70568abd2
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e174m17/compiler.sh b/src/Specific/montgomery64_2e174m17_3limbs/compiler.sh
index 22d0d5d51..22d0d5d51 100755
--- a/src/Specific/montgomery64_2e174m17/compiler.sh
+++ b/src/Specific/montgomery64_2e174m17_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e174m17/compilerxx.sh b/src/Specific/montgomery64_2e174m17_3limbs/compilerxx.sh
index 6817a4773..6817a4773 100755
--- a/src/Specific/montgomery64_2e174m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e174m17_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/feadd.v b/src/Specific/montgomery64_2e174m17_3limbs/feadd.v
new file mode 100644
index 000000000..d7d6f3077
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e174m17_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..6f5eb8593
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/femul.v b/src/Specific/montgomery64_2e174m17_3limbs/femul.v
new file mode 100644
index 000000000..812ee9c1b
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e174m17_3limbs/femulDisplay.v
new file mode 100644
index 000000000..85cdd2db3
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/fenz.v b/src/Specific/montgomery64_2e174m17_3limbs/fenz.v
new file mode 100644
index 000000000..3320b4336
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e174m17_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..fa6b82bf2
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/feopp.v b/src/Specific/montgomery64_2e174m17_3limbs/feopp.v
new file mode 100644
index 000000000..e0d83fe6d
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e174m17_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..7dd23b868
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/fesub.v b/src/Specific/montgomery64_2e174m17_3limbs/fesub.v
new file mode 100644
index 000000000..e2e1b6fa7
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e174m17_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e174m17_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..7b02ea6e9
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m17_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m17_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e174m17/py_interpreter.sh b/src/Specific/montgomery64_2e174m17_3limbs/py_interpreter.sh
index ac5979bf9..ac5979bf9 100755
--- a/src/Specific/montgomery64_2e174m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e174m17_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e174m3/Synthesis.v b/src/Specific/montgomery64_2e174m3/Synthesis.v
deleted file mode 100644
index 4a2dbfc98..000000000
--- a/src/Specific/montgomery64_2e174m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e174m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e174m3/feadd.c b/src/Specific/montgomery64_2e174m3/feadd.c
deleted file mode 100644
index 3d83e59ed..000000000
--- a/src/Specific/montgomery64_2e174m3/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffffdL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m3/feadd.v b/src/Specific/montgomery64_2e174m3/feadd.v
deleted file mode 100644
index 9ccbb0c17..000000000
--- a/src/Specific/montgomery64_2e174m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e174m3/feaddDisplay.log b/src/Specific/montgomery64_2e174m3/feaddDisplay.log
deleted file mode 100644
index c559ecee4..000000000
--- a/src/Specific/montgomery64_2e174m3/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffffdL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m3/feaddDisplay.v b/src/Specific/montgomery64_2e174m3/feaddDisplay.v
deleted file mode 100644
index 9bd37c6e1..000000000
--- a/src/Specific/montgomery64_2e174m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e174m3/femul.c b/src/Specific/montgomery64_2e174m3/femul.c
deleted file mode 100644
index ae9801d21..000000000
--- a/src/Specific/montgomery64_2e174m3/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffffdL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffffdL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffffdL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffffdL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m3/femul.v b/src/Specific/montgomery64_2e174m3/femul.v
deleted file mode 100644
index 37dcee0be..000000000
--- a/src/Specific/montgomery64_2e174m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e174m3/femulDisplay.log b/src/Specific/montgomery64_2e174m3/femulDisplay.log
deleted file mode 100644
index e8cea29ab..000000000
--- a/src/Specific/montgomery64_2e174m3/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0xaaaaaaaaaaaaaaabL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffffdL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0xaaaaaaaaaaaaaaabL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffffdL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0xaaaaaaaaaaaaaaabL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffffdL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffffdL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m3/femulDisplay.v b/src/Specific/montgomery64_2e174m3/femulDisplay.v
deleted file mode 100644
index 031c8d83f..000000000
--- a/src/Specific/montgomery64_2e174m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e174m3/fenz.c b/src/Specific/montgomery64_2e174m3/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e174m3/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m3/fenz.v b/src/Specific/montgomery64_2e174m3/fenz.v
deleted file mode 100644
index 0b597f7dc..000000000
--- a/src/Specific/montgomery64_2e174m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e174m3/fenzDisplay.log b/src/Specific/montgomery64_2e174m3/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e174m3/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e174m3/fenzDisplay.v b/src/Specific/montgomery64_2e174m3/fenzDisplay.v
deleted file mode 100644
index 34607c10e..000000000
--- a/src/Specific/montgomery64_2e174m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e174m3/feopp.c b/src/Specific/montgomery64_2e174m3/feopp.c
deleted file mode 100644
index 19ee56f31..000000000
--- a/src/Specific/montgomery64_2e174m3/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffffdL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m3/feopp.v b/src/Specific/montgomery64_2e174m3/feopp.v
deleted file mode 100644
index 0b12a4c64..000000000
--- a/src/Specific/montgomery64_2e174m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e174m3/feoppDisplay.log b/src/Specific/montgomery64_2e174m3/feoppDisplay.log
deleted file mode 100644
index 1990945e3..000000000
--- a/src/Specific/montgomery64_2e174m3/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffffdL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m3/feoppDisplay.v b/src/Specific/montgomery64_2e174m3/feoppDisplay.v
deleted file mode 100644
index 567fb7a61..000000000
--- a/src/Specific/montgomery64_2e174m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e174m3/fesquare.c b/src/Specific/montgomery64_2e174m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e174m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e174m3/fesub.c b/src/Specific/montgomery64_2e174m3/fesub.c
deleted file mode 100644
index d92e16d29..000000000
--- a/src/Specific/montgomery64_2e174m3/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffffdL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e174m3/fesub.v b/src/Specific/montgomery64_2e174m3/fesub.v
deleted file mode 100644
index 7aa46209f..000000000
--- a/src/Specific/montgomery64_2e174m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e174m3/fesubDisplay.log b/src/Specific/montgomery64_2e174m3/fesubDisplay.log
deleted file mode 100644
index 06cc33bbf..000000000
--- a/src/Specific/montgomery64_2e174m3/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffffdL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e174m3/fesubDisplay.v b/src/Specific/montgomery64_2e174m3/fesubDisplay.v
deleted file mode 100644
index de2e10d7a..000000000
--- a/src/Specific/montgomery64_2e174m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e174m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e174m3/CurveParameters.v b/src/Specific/montgomery64_2e174m3_3limbs/CurveParameters.v
index fe20134ec..fe20134ec 100644
--- a/src/Specific/montgomery64_2e174m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e174m3_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/Synthesis.v b/src/Specific/montgomery64_2e174m3_3limbs/Synthesis.v
new file mode 100644
index 000000000..4b475f02e
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e174m3/compiler.sh b/src/Specific/montgomery64_2e174m3_3limbs/compiler.sh
index c38150731..c38150731 100755
--- a/src/Specific/montgomery64_2e174m3/compiler.sh
+++ b/src/Specific/montgomery64_2e174m3_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e174m3/compilerxx.sh b/src/Specific/montgomery64_2e174m3_3limbs/compilerxx.sh
index fe82bbe9f..fe82bbe9f 100755
--- a/src/Specific/montgomery64_2e174m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e174m3_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/feadd.v b/src/Specific/montgomery64_2e174m3_3limbs/feadd.v
new file mode 100644
index 000000000..b43fdfa7b
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e174m3_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..514b81fda
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/femul.v b/src/Specific/montgomery64_2e174m3_3limbs/femul.v
new file mode 100644
index 000000000..f3df08665
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e174m3_3limbs/femulDisplay.v
new file mode 100644
index 000000000..e7c5d83b4
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/fenz.v b/src/Specific/montgomery64_2e174m3_3limbs/fenz.v
new file mode 100644
index 000000000..dbb484584
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e174m3_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..230660c92
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/feopp.v b/src/Specific/montgomery64_2e174m3_3limbs/feopp.v
new file mode 100644
index 000000000..2cc6c0362
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e174m3_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..c99c43c1a
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/fesub.v b/src/Specific/montgomery64_2e174m3_3limbs/fesub.v
new file mode 100644
index 000000000..b2d6fd812
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e174m3_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e174m3_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..cfc796386
--- /dev/null
+++ b/src/Specific/montgomery64_2e174m3_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e174m3_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e174m3/py_interpreter.sh b/src/Specific/montgomery64_2e174m3_3limbs/py_interpreter.sh
index d66ba455b..d66ba455b 100755
--- a/src/Specific/montgomery64_2e174m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e174m3_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e189m25/Synthesis.v b/src/Specific/montgomery64_2e189m25/Synthesis.v
deleted file mode 100644
index 9acb45413..000000000
--- a/src/Specific/montgomery64_2e189m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e189m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e189m25/feadd.c b/src/Specific/montgomery64_2e189m25/feadd.c
deleted file mode 100644
index 297cd9cbc..000000000
--- a/src/Specific/montgomery64_2e189m25/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffe7L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x1fffffffffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e189m25/feadd.v b/src/Specific/montgomery64_2e189m25/feadd.v
deleted file mode 100644
index 83385e55f..000000000
--- a/src/Specific/montgomery64_2e189m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e189m25/feaddDisplay.log b/src/Specific/montgomery64_2e189m25/feaddDisplay.log
deleted file mode 100644
index 831ce8317..000000000
--- a/src/Specific/montgomery64_2e189m25/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffe7L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x1fffffffffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e189m25/feaddDisplay.v b/src/Specific/montgomery64_2e189m25/feaddDisplay.v
deleted file mode 100644
index 77fe97f41..000000000
--- a/src/Specific/montgomery64_2e189m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e189m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e189m25/femul.c b/src/Specific/montgomery64_2e189m25/femul.c
deleted file mode 100644
index c5a3d4492..000000000
--- a/src/Specific/montgomery64_2e189m25/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffe7L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x1fffffffffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffe7L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x1fffffffffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffe7L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x1fffffffffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffe7L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x1fffffffffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e189m25/femul.v b/src/Specific/montgomery64_2e189m25/femul.v
deleted file mode 100644
index 5d0fe890e..000000000
--- a/src/Specific/montgomery64_2e189m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e189m25/femulDisplay.log b/src/Specific/montgomery64_2e189m25/femulDisplay.log
deleted file mode 100644
index d0507df07..000000000
--- a/src/Specific/montgomery64_2e189m25/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x8f5c28f5c28f5c29L);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffe7L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x1fffffffffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x8f5c28f5c28f5c29L);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffe7L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x1fffffffffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x8f5c28f5c28f5c29L);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffe7L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x1fffffffffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffe7L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x1fffffffffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e189m25/femulDisplay.v b/src/Specific/montgomery64_2e189m25/femulDisplay.v
deleted file mode 100644
index a499df697..000000000
--- a/src/Specific/montgomery64_2e189m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e189m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e189m25/fenz.c b/src/Specific/montgomery64_2e189m25/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e189m25/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e189m25/fenz.v b/src/Specific/montgomery64_2e189m25/fenz.v
deleted file mode 100644
index 6f088dd0d..000000000
--- a/src/Specific/montgomery64_2e189m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e189m25/fenzDisplay.log b/src/Specific/montgomery64_2e189m25/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e189m25/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e189m25/fenzDisplay.v b/src/Specific/montgomery64_2e189m25/fenzDisplay.v
deleted file mode 100644
index b5802bc4c..000000000
--- a/src/Specific/montgomery64_2e189m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e189m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e189m25/feopp.c b/src/Specific/montgomery64_2e189m25/feopp.c
deleted file mode 100644
index acef14dec..000000000
--- a/src/Specific/montgomery64_2e189m25/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x1fffffffffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e189m25/feopp.v b/src/Specific/montgomery64_2e189m25/feopp.v
deleted file mode 100644
index 5709576a4..000000000
--- a/src/Specific/montgomery64_2e189m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e189m25/feoppDisplay.log b/src/Specific/montgomery64_2e189m25/feoppDisplay.log
deleted file mode 100644
index c11948d1e..000000000
--- a/src/Specific/montgomery64_2e189m25/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffe7L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x1fffffffffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e189m25/feoppDisplay.v b/src/Specific/montgomery64_2e189m25/feoppDisplay.v
deleted file mode 100644
index e1ea6a7f8..000000000
--- a/src/Specific/montgomery64_2e189m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e189m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e189m25/fesquare.c b/src/Specific/montgomery64_2e189m25/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e189m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e189m25/fesub.c b/src/Specific/montgomery64_2e189m25/fesub.c
deleted file mode 100644
index 9959078f0..000000000
--- a/src/Specific/montgomery64_2e189m25/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x1fffffffffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e189m25/fesub.v b/src/Specific/montgomery64_2e189m25/fesub.v
deleted file mode 100644
index 9133f490a..000000000
--- a/src/Specific/montgomery64_2e189m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e189m25/fesubDisplay.log b/src/Specific/montgomery64_2e189m25/fesubDisplay.log
deleted file mode 100644
index 692e6a34c..000000000
--- a/src/Specific/montgomery64_2e189m25/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffe7L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x1fffffffffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e189m25/fesubDisplay.v b/src/Specific/montgomery64_2e189m25/fesubDisplay.v
deleted file mode 100644
index 80d43ea11..000000000
--- a/src/Specific/montgomery64_2e189m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e189m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e189m25/CurveParameters.v b/src/Specific/montgomery64_2e189m25_3limbs/CurveParameters.v
index 6f8159a72..6f8159a72 100644
--- a/src/Specific/montgomery64_2e189m25/CurveParameters.v
+++ b/src/Specific/montgomery64_2e189m25_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/Synthesis.v b/src/Specific/montgomery64_2e189m25_3limbs/Synthesis.v
new file mode 100644
index 000000000..5721758fa
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e189m25/compiler.sh b/src/Specific/montgomery64_2e189m25_3limbs/compiler.sh
index 5bb03b1fc..5bb03b1fc 100755
--- a/src/Specific/montgomery64_2e189m25/compiler.sh
+++ b/src/Specific/montgomery64_2e189m25_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e189m25/compilerxx.sh b/src/Specific/montgomery64_2e189m25_3limbs/compilerxx.sh
index 4df898ed0..4df898ed0 100755
--- a/src/Specific/montgomery64_2e189m25/compilerxx.sh
+++ b/src/Specific/montgomery64_2e189m25_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/feadd.v b/src/Specific/montgomery64_2e189m25_3limbs/feadd.v
new file mode 100644
index 000000000..581a541d2
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e189m25_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..84ce8b70f
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/femul.v b/src/Specific/montgomery64_2e189m25_3limbs/femul.v
new file mode 100644
index 000000000..9aa5bfdfb
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e189m25_3limbs/femulDisplay.v
new file mode 100644
index 000000000..b02fa3fe8
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/fenz.v b/src/Specific/montgomery64_2e189m25_3limbs/fenz.v
new file mode 100644
index 000000000..fe339b027
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e189m25_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..1f99d8f4d
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/feopp.v b/src/Specific/montgomery64_2e189m25_3limbs/feopp.v
new file mode 100644
index 000000000..08a4add86
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e189m25_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..f50f013df
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/fesub.v b/src/Specific/montgomery64_2e189m25_3limbs/fesub.v
new file mode 100644
index 000000000..b1f482285
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e189m25_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e189m25_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..8ff18961a
--- /dev/null
+++ b/src/Specific/montgomery64_2e189m25_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e189m25_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e189m25/py_interpreter.sh b/src/Specific/montgomery64_2e189m25_3limbs/py_interpreter.sh
index 4170c37e6..4170c37e6 100755
--- a/src/Specific/montgomery64_2e189m25/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e189m25_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e190m11/Synthesis.v b/src/Specific/montgomery64_2e190m11/Synthesis.v
deleted file mode 100644
index ffd4cf05f..000000000
--- a/src/Specific/montgomery64_2e190m11/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e190m11.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e190m11/feadd.c b/src/Specific/montgomery64_2e190m11/feadd.c
deleted file mode 100644
index 8b2ff0c3f..000000000
--- a/src/Specific/montgomery64_2e190m11/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xfffffffffffffff5L, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x3fffffffffffffff, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e190m11/feadd.v b/src/Specific/montgomery64_2e190m11/feadd.v
deleted file mode 100644
index f1a679f6a..000000000
--- a/src/Specific/montgomery64_2e190m11/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e190m11/feaddDisplay.log b/src/Specific/montgomery64_2e190m11/feaddDisplay.log
deleted file mode 100644
index f6f352aec..000000000
--- a/src/Specific/montgomery64_2e190m11/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xfffffffffffffff5L);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x3fffffffffffffff);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e190m11/feaddDisplay.v b/src/Specific/montgomery64_2e190m11/feaddDisplay.v
deleted file mode 100644
index 86282fccb..000000000
--- a/src/Specific/montgomery64_2e190m11/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e190m11.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e190m11/femul.c b/src/Specific/montgomery64_2e190m11/femul.c
deleted file mode 100644
index 0119b01ed..000000000
--- a/src/Specific/montgomery64_2e190m11/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x2e8ba2e8ba2e8ba3, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xfffffffffffffff5L, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x3fffffffffffffff, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x2e8ba2e8ba2e8ba3, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xfffffffffffffff5L, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x3fffffffffffffff, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x2e8ba2e8ba2e8ba3, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xfffffffffffffff5L, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x3fffffffffffffff, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xfffffffffffffff5L, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x3fffffffffffffff, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e190m11/femul.v b/src/Specific/montgomery64_2e190m11/femul.v
deleted file mode 100644
index dc57728a3..000000000
--- a/src/Specific/montgomery64_2e190m11/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e190m11/femulDisplay.log b/src/Specific/montgomery64_2e190m11/femulDisplay.log
deleted file mode 100644
index 185717349..000000000
--- a/src/Specific/montgomery64_2e190m11/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x2e8ba2e8ba2e8ba3);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xfffffffffffffff5L);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x3fffffffffffffff);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x2e8ba2e8ba2e8ba3);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xfffffffffffffff5L);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x3fffffffffffffff);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x2e8ba2e8ba2e8ba3);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xfffffffffffffff5L);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x3fffffffffffffff);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xfffffffffffffff5L);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x3fffffffffffffff);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e190m11/femulDisplay.v b/src/Specific/montgomery64_2e190m11/femulDisplay.v
deleted file mode 100644
index 0b56f9d4f..000000000
--- a/src/Specific/montgomery64_2e190m11/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e190m11.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e190m11/fenz.c b/src/Specific/montgomery64_2e190m11/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e190m11/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e190m11/fenz.v b/src/Specific/montgomery64_2e190m11/fenz.v
deleted file mode 100644
index 8e7bd042c..000000000
--- a/src/Specific/montgomery64_2e190m11/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e190m11/fenzDisplay.log b/src/Specific/montgomery64_2e190m11/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e190m11/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e190m11/fenzDisplay.v b/src/Specific/montgomery64_2e190m11/fenzDisplay.v
deleted file mode 100644
index 48f138d49..000000000
--- a/src/Specific/montgomery64_2e190m11/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e190m11.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e190m11/feopp.c b/src/Specific/montgomery64_2e190m11/feopp.c
deleted file mode 100644
index bb4485f74..000000000
--- a/src/Specific/montgomery64_2e190m11/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffff5L);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x3fffffffffffffff);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e190m11/feopp.v b/src/Specific/montgomery64_2e190m11/feopp.v
deleted file mode 100644
index 3e39bd4e4..000000000
--- a/src/Specific/montgomery64_2e190m11/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e190m11/feoppDisplay.log b/src/Specific/montgomery64_2e190m11/feoppDisplay.log
deleted file mode 100644
index 9fdeaa269..000000000
--- a/src/Specific/montgomery64_2e190m11/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffff5L);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x3fffffffffffffff);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e190m11/feoppDisplay.v b/src/Specific/montgomery64_2e190m11/feoppDisplay.v
deleted file mode 100644
index 23d839d8b..000000000
--- a/src/Specific/montgomery64_2e190m11/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e190m11.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e190m11/fesquare.c b/src/Specific/montgomery64_2e190m11/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e190m11/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e190m11/fesub.c b/src/Specific/montgomery64_2e190m11/fesub.c
deleted file mode 100644
index a88dac55b..000000000
--- a/src/Specific/montgomery64_2e190m11/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xfffffffffffffff5L);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x3fffffffffffffff);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e190m11/fesub.v b/src/Specific/montgomery64_2e190m11/fesub.v
deleted file mode 100644
index 88d920d6e..000000000
--- a/src/Specific/montgomery64_2e190m11/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e190m11/fesubDisplay.log b/src/Specific/montgomery64_2e190m11/fesubDisplay.log
deleted file mode 100644
index 152265c89..000000000
--- a/src/Specific/montgomery64_2e190m11/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xfffffffffffffff5L);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x3fffffffffffffff);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e190m11/fesubDisplay.v b/src/Specific/montgomery64_2e190m11/fesubDisplay.v
deleted file mode 100644
index d5c5d3373..000000000
--- a/src/Specific/montgomery64_2e190m11/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e190m11.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e190m11/CurveParameters.v b/src/Specific/montgomery64_2e190m11_3limbs/CurveParameters.v
index 18a845f0f..18a845f0f 100644
--- a/src/Specific/montgomery64_2e190m11/CurveParameters.v
+++ b/src/Specific/montgomery64_2e190m11_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/Synthesis.v b/src/Specific/montgomery64_2e190m11_3limbs/Synthesis.v
new file mode 100644
index 000000000..1ca0a7186
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e190m11/compiler.sh b/src/Specific/montgomery64_2e190m11_3limbs/compiler.sh
index 2f71425dc..2f71425dc 100755
--- a/src/Specific/montgomery64_2e190m11/compiler.sh
+++ b/src/Specific/montgomery64_2e190m11_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e190m11/compilerxx.sh b/src/Specific/montgomery64_2e190m11_3limbs/compilerxx.sh
index 46e900a1d..46e900a1d 100755
--- a/src/Specific/montgomery64_2e190m11/compilerxx.sh
+++ b/src/Specific/montgomery64_2e190m11_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/feadd.v b/src/Specific/montgomery64_2e190m11_3limbs/feadd.v
new file mode 100644
index 000000000..a1f6b2082
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e190m11_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..f7646fee8
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/femul.v b/src/Specific/montgomery64_2e190m11_3limbs/femul.v
new file mode 100644
index 000000000..78cdb1acf
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e190m11_3limbs/femulDisplay.v
new file mode 100644
index 000000000..f8621943c
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/fenz.v b/src/Specific/montgomery64_2e190m11_3limbs/fenz.v
new file mode 100644
index 000000000..5032740ca
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e190m11_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..4516a9137
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/feopp.v b/src/Specific/montgomery64_2e190m11_3limbs/feopp.v
new file mode 100644
index 000000000..9a927f245
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e190m11_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..5e940e5bf
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/fesub.v b/src/Specific/montgomery64_2e190m11_3limbs/fesub.v
new file mode 100644
index 000000000..7ab9ec756
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e190m11_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e190m11_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..725e0072a
--- /dev/null
+++ b/src/Specific/montgomery64_2e190m11_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e190m11_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e190m11/py_interpreter.sh b/src/Specific/montgomery64_2e190m11_3limbs/py_interpreter.sh
index ae6a726fd..ae6a726fd 100755
--- a/src/Specific/montgomery64_2e190m11/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e190m11_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e191m19/Synthesis.v b/src/Specific/montgomery64_2e191m19/Synthesis.v
deleted file mode 100644
index 8f9d744aa..000000000
--- a/src/Specific/montgomery64_2e191m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e191m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e191m19/feadd.c b/src/Specific/montgomery64_2e191m19/feadd.c
deleted file mode 100644
index 3139704bc..000000000
--- a/src/Specific/montgomery64_2e191m19/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffedL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xffffffffffffffffL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0x7fffffffffffffffL, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e191m19/feadd.v b/src/Specific/montgomery64_2e191m19/feadd.v
deleted file mode 100644
index 1698bd5c1..000000000
--- a/src/Specific/montgomery64_2e191m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e191m19/feaddDisplay.log b/src/Specific/montgomery64_2e191m19/feaddDisplay.log
deleted file mode 100644
index 0ebc92482..000000000
--- a/src/Specific/montgomery64_2e191m19/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffedL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e191m19/feaddDisplay.v b/src/Specific/montgomery64_2e191m19/feaddDisplay.v
deleted file mode 100644
index 26da2fa23..000000000
--- a/src/Specific/montgomery64_2e191m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e191m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e191m19/femul.c b/src/Specific/montgomery64_2e191m19/femul.c
deleted file mode 100644
index df68f86c4..000000000
--- a/src/Specific/montgomery64_2e191m19/femul.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t _; uint64_t x31 = _mulx_u64(x13, 0x86bca1af286bca1bL, &_);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x31, 0xffffffffffffffedL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x31, 0xffffffffffffffffL, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x31, 0x7fffffffffffffffL, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x35, x37, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x38, x40, &x46);
- { uint64_t x49; uint8_t _ = _addcarryx_u64(0x0, x47, x41, &x49);
- { uint64_t _; uint8_t x53 = _addcarryx_u64(0x0, x13, x34, &_);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x22, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x25, x46, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x28, x49, &x61);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x9, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x11, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x7, x10, &x71);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(0x0, x65, x67, &x73);
- { uint64_t x76; uint8_t x77 = _addcarryx_u64(x74, x68, x70, &x76);
- { uint64_t x79; uint8_t _ = _addcarryx_u64(0x0, x77, x71, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x55, x64, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x61, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x62, x79, &x91);
- { uint64_t _; uint64_t x94 = _mulx_u64(x82, 0x86bca1af286bca1bL, &_);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x94, 0xffffffffffffffedL, &x98);
- { uint64_t x101; uint64_t x100 = _mulx_u64(x94, 0xffffffffffffffffL, &x101);
- { uint64_t x104; uint64_t x103 = _mulx_u64(x94, 0x7fffffffffffffffL, &x104);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(0x0, x98, x100, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x101, x103, &x109);
- { uint64_t x112; uint8_t _ = _addcarryx_u64(0x0, x110, x104, &x112);
- { uint64_t _; uint8_t x116 = _addcarryx_u64(0x0, x82, x97, &_);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x85, x106, &x118);
- { uint64_t x121; uint8_t x122 = _addcarryx_u64(x119, x88, x109, &x121);
- { uint64_t x124; uint8_t x125 = _addcarryx_u64(x122, x91, x112, &x124);
- { uint8_t x126 = (x125 + x92);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x9, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x6, x11, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x6, x10, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x129, x131, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x132, x134, &x140);
- { uint64_t x143; uint8_t _ = _addcarryx_u64(0x0, x141, x135, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(0x0, x118, x128, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x121, x137, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x124, x140, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x126, x143, &x155);
- { uint64_t _; uint64_t x158 = _mulx_u64(x146, 0x86bca1af286bca1bL, &_);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x158, 0xffffffffffffffedL, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x158, 0xffffffffffffffffL, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x158, 0x7fffffffffffffffL, &x168);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(0x0, x162, x164, &x170);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x165, x167, &x173);
- { uint64_t x176; uint8_t _ = _addcarryx_u64(0x0, x174, x168, &x176);
- { uint64_t _; uint8_t x180 = _addcarryx_u64(0x0, x146, x161, &_);
- { uint64_t x182; uint8_t x183 = _addcarryx_u64(x180, x149, x170, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(x183, x152, x173, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x155, x176, &x188);
- { uint8_t x190 = (x189 + x156);
- { uint64_t x192; uint8_t x193 = _subborrow_u64(0x0, x182, 0xffffffffffffffedL, &x192);
- { uint64_t x195; uint8_t x196 = _subborrow_u64(x193, x185, 0xffffffffffffffffL, &x195);
- { uint64_t x198; uint8_t x199 = _subborrow_u64(x196, x188, 0x7fffffffffffffffL, &x198);
- { uint64_t _; uint8_t x202 = _subborrow_u64(x199, x190, 0x0, &_);
- { uint64_t x203 = cmovznz64(x202, x198, x188);
- { uint64_t x204 = cmovznz64(x202, x195, x185);
- { uint64_t x205 = cmovznz64(x202, x192, x182);
- out[0] = x205;
- out[1] = x204;
- out[2] = x203;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e191m19/femul.v b/src/Specific/montgomery64_2e191m19/femul.v
deleted file mode 100644
index b06266659..000000000
--- a/src/Specific/montgomery64_2e191m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e191m19/femulDisplay.log b/src/Specific/montgomery64_2e191m19/femulDisplay.log
deleted file mode 100644
index 0534b16de..000000000
--- a/src/Specific/montgomery64_2e191m19/femulDisplay.log
+++ /dev/null
@@ -1,75 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t _ = mulx_u64(x13, 0x86bca1af286bca1bL);
- uint64_t x34, uint64_t x35 = mulx_u64(x31, 0xffffffffffffffedL);
- uint64_t x37, uint64_t x38 = mulx_u64(x31, 0xffffffffffffffffL);
- uint64_t x40, uint64_t x41 = mulx_u64(x31, 0x7fffffffffffffffL);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x35, x37);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x38, x40);
- uint64_t x49, uint8_t _ = addcarryx_u64(0x0, x47, x41);
- uint64_t _, uint8_t x53 = addcarryx_u64(0x0, x13, x34);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x22, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x25, x46);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x28, x49);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x9);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x11);
- uint64_t x70, uint64_t x71 = mulx_u64(x7, x10);
- uint64_t x73, uint8_t x74 = addcarryx_u64(0x0, x65, x67);
- uint64_t x76, uint8_t x77 = addcarryx_u64(x74, x68, x70);
- uint64_t x79, uint8_t _ = addcarryx_u64(0x0, x77, x71);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x55, x64);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x61, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x62, x79);
- uint64_t x94, uint64_t _ = mulx_u64(x82, 0x86bca1af286bca1bL);
- uint64_t x97, uint64_t x98 = mulx_u64(x94, 0xffffffffffffffedL);
- uint64_t x100, uint64_t x101 = mulx_u64(x94, 0xffffffffffffffffL);
- uint64_t x103, uint64_t x104 = mulx_u64(x94, 0x7fffffffffffffffL);
- uint64_t x106, uint8_t x107 = addcarryx_u64(0x0, x98, x100);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x101, x103);
- uint64_t x112, uint8_t _ = addcarryx_u64(0x0, x110, x104);
- uint64_t _, uint8_t x116 = addcarryx_u64(0x0, x82, x97);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x85, x106);
- uint64_t x121, uint8_t x122 = addcarryx_u64(x119, x88, x109);
- uint64_t x124, uint8_t x125 = addcarryx_u64(x122, x91, x112);
- uint8_t x126 = (x125 + x92);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x9);
- uint64_t x131, uint64_t x132 = mulx_u64(x6, x11);
- uint64_t x134, uint64_t x135 = mulx_u64(x6, x10);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x129, x131);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x132, x134);
- uint64_t x143, uint8_t _ = addcarryx_u64(0x0, x141, x135);
- uint64_t x146, uint8_t x147 = addcarryx_u64(0x0, x118, x128);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x121, x137);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x124, x140);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x126, x143);
- uint64_t x158, uint64_t _ = mulx_u64(x146, 0x86bca1af286bca1bL);
- uint64_t x161, uint64_t x162 = mulx_u64(x158, 0xffffffffffffffedL);
- uint64_t x164, uint64_t x165 = mulx_u64(x158, 0xffffffffffffffffL);
- uint64_t x167, uint64_t x168 = mulx_u64(x158, 0x7fffffffffffffffL);
- uint64_t x170, uint8_t x171 = addcarryx_u64(0x0, x162, x164);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x165, x167);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x168);
- uint64_t _, uint8_t x180 = addcarryx_u64(0x0, x146, x161);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x149, x170);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x152, x173);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x155, x176);
- uint8_t x190 = (x189 + x156);
- uint64_t x192, uint8_t x193 = subborrow_u64(0x0, x182, 0xffffffffffffffedL);
- uint64_t x195, uint8_t x196 = subborrow_u64(x193, x185, 0xffffffffffffffffL);
- uint64_t x198, uint8_t x199 = subborrow_u64(x196, x188, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x202 = subborrow_u64(x199, x190, 0x0);
- uint64_t x203 = cmovznz64(x202, x198, x188);
- uint64_t x204 = cmovznz64(x202, x195, x185);
- uint64_t x205 = cmovznz64(x202, x192, x182);
- return (x203, x204, x205))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e191m19/femulDisplay.v b/src/Specific/montgomery64_2e191m19/femulDisplay.v
deleted file mode 100644
index 3ad5f82af..000000000
--- a/src/Specific/montgomery64_2e191m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e191m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e191m19/fenz.c b/src/Specific/montgomery64_2e191m19/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e191m19/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e191m19/fenz.v b/src/Specific/montgomery64_2e191m19/fenz.v
deleted file mode 100644
index a0882cf77..000000000
--- a/src/Specific/montgomery64_2e191m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e191m19/fenzDisplay.log b/src/Specific/montgomery64_2e191m19/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e191m19/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e191m19/fenzDisplay.v b/src/Specific/montgomery64_2e191m19/fenzDisplay.v
deleted file mode 100644
index def745c58..000000000
--- a/src/Specific/montgomery64_2e191m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e191m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e191m19/feopp.c b/src/Specific/montgomery64_2e191m19/feopp.c
deleted file mode 100644
index 9c2e12b67..000000000
--- a/src/Specific/montgomery64_2e191m19/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffedL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xffffffffffffffffL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0x7fffffffffffffffL);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e191m19/feopp.v b/src/Specific/montgomery64_2e191m19/feopp.v
deleted file mode 100644
index 47f183dd9..000000000
--- a/src/Specific/montgomery64_2e191m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e191m19/feoppDisplay.log b/src/Specific/montgomery64_2e191m19/feoppDisplay.log
deleted file mode 100644
index 3b72f2aea..000000000
--- a/src/Specific/montgomery64_2e191m19/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffedL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xffffffffffffffffL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0x7fffffffffffffffL);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e191m19/feoppDisplay.v b/src/Specific/montgomery64_2e191m19/feoppDisplay.v
deleted file mode 100644
index 0f23448e9..000000000
--- a/src/Specific/montgomery64_2e191m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e191m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e191m19/fesquare.c b/src/Specific/montgomery64_2e191m19/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e191m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e191m19/fesub.c b/src/Specific/montgomery64_2e191m19/fesub.c
deleted file mode 100644
index e6683bd03..000000000
--- a/src/Specific/montgomery64_2e191m19/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffedL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xffffffffffffffffL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0x7fffffffffffffffL);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e191m19/fesub.v b/src/Specific/montgomery64_2e191m19/fesub.v
deleted file mode 100644
index be0f7179b..000000000
--- a/src/Specific/montgomery64_2e191m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e191m19/fesubDisplay.log b/src/Specific/montgomery64_2e191m19/fesubDisplay.log
deleted file mode 100644
index 0a4d49441..000000000
--- a/src/Specific/montgomery64_2e191m19/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffedL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xffffffffffffffffL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0x7fffffffffffffffL);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e191m19/fesubDisplay.v b/src/Specific/montgomery64_2e191m19/fesubDisplay.v
deleted file mode 100644
index 081ceb27d..000000000
--- a/src/Specific/montgomery64_2e191m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e191m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e191m19/CurveParameters.v b/src/Specific/montgomery64_2e191m19_3limbs/CurveParameters.v
index 54d7d6487..54d7d6487 100644
--- a/src/Specific/montgomery64_2e191m19/CurveParameters.v
+++ b/src/Specific/montgomery64_2e191m19_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/Synthesis.v b/src/Specific/montgomery64_2e191m19_3limbs/Synthesis.v
new file mode 100644
index 000000000..32de8a922
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e191m19/compiler.sh b/src/Specific/montgomery64_2e191m19_3limbs/compiler.sh
index 37341c903..37341c903 100755
--- a/src/Specific/montgomery64_2e191m19/compiler.sh
+++ b/src/Specific/montgomery64_2e191m19_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e191m19/compilerxx.sh b/src/Specific/montgomery64_2e191m19_3limbs/compilerxx.sh
index 594db32a6..594db32a6 100755
--- a/src/Specific/montgomery64_2e191m19/compilerxx.sh
+++ b/src/Specific/montgomery64_2e191m19_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/feadd.v b/src/Specific/montgomery64_2e191m19_3limbs/feadd.v
new file mode 100644
index 000000000..ebf97915e
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e191m19_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..5a709da06
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/femul.v b/src/Specific/montgomery64_2e191m19_3limbs/femul.v
new file mode 100644
index 000000000..6434bcd37
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e191m19_3limbs/femulDisplay.v
new file mode 100644
index 000000000..7410b8ffb
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/fenz.v b/src/Specific/montgomery64_2e191m19_3limbs/fenz.v
new file mode 100644
index 000000000..180980a54
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e191m19_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..408b1852a
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/feopp.v b/src/Specific/montgomery64_2e191m19_3limbs/feopp.v
new file mode 100644
index 000000000..84f43edf7
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e191m19_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..635b58fdb
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/fesub.v b/src/Specific/montgomery64_2e191m19_3limbs/fesub.v
new file mode 100644
index 000000000..a032b33aa
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e191m19_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e191m19_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..23419c34e
--- /dev/null
+++ b/src/Specific/montgomery64_2e191m19_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e191m19_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e191m19/py_interpreter.sh b/src/Specific/montgomery64_2e191m19_3limbs/py_interpreter.sh
index 33c60afb6..33c60afb6 100755
--- a/src/Specific/montgomery64_2e191m19/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e191m19_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v b/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v
deleted file mode 100644
index 3e9c0abfd..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feadd.c b/src/Specific/montgomery64_2e192m2e64m1/feadd.c
deleted file mode 100644
index b46c6c8d6..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feadd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _addcarryx_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _addcarryx_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _addcarryx_u64(x17, x6, x10, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(0x0, x13, 0xffffffffffffffffL, &x22);
- { uint64_t x25; uint8_t x26 = _subborrow_u64(x23, x16, 0xfffffffffffffffeL, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x19, 0xffffffffffffffffL, &x28);
- { uint64_t _; uint8_t x32 = _subborrow_u64(x29, x20, 0x0, &_);
- { uint64_t x33 = cmovznz64(x32, x28, x19);
- { uint64_t x34 = cmovznz64(x32, x25, x16);
- { uint64_t x35 = cmovznz64(x32, x22, x13);
- out[0] = x35;
- out[1] = x34;
- out[2] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feadd.v b/src/Specific/montgomery64_2e192m2e64m1/feadd.v
deleted file mode 100644
index 5b431d1b2..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.log b/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.log
deleted file mode 100644
index 6ab76e5b9..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = addcarryx_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = addcarryx_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = addcarryx_u64(x17, x6, x10);
- uint64_t x22, uint8_t x23 = subborrow_u64(0x0, x13, 0xffffffffffffffffL);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, x16, 0xfffffffffffffffeL);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x19, 0xffffffffffffffffL);
- uint64_t _, uint8_t x32 = subborrow_u64(x29, x20, 0x0);
- uint64_t x33 = cmovznz64(x32, x28, x19);
- uint64_t x34 = cmovznz64(x32, x25, x16);
- uint64_t x35 = cmovznz64(x32, x22, x13);
- return (x33, x34, x35))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v
deleted file mode 100644
index c9c2e321c..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/femul.c b/src/Specific/montgomery64_2e192m2e64m1/femul.c
deleted file mode 100644
index aea170aaa..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/femul.c
+++ /dev/null
@@ -1,77 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x14; uint64_t x13 = _mulx_u64(x5, x9, &x14);
- { uint64_t x17; uint64_t x16 = _mulx_u64(x5, x11, &x17);
- { uint64_t x20; uint64_t x19 = _mulx_u64(x5, x10, &x20);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x14, x16, &x22);
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(x23, x17, x19, &x25);
- { uint64_t x28; uint8_t _ = _addcarryx_u64(0x0, x26, x20, &x28);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x13, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x13, 0xfffffffffffffffeL, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x13, 0xffffffffffffffffL, &x38);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(0x0, x32, x34, &x40);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(x41, x35, x37, &x43);
- { uint64_t x46; uint8_t _ = _addcarryx_u64(0x0, x44, x38, &x46);
- { uint64_t _; uint8_t x50 = _addcarryx_u64(0x0, x13, x31, &_);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x22, x40, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x25, x43, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x28, x46, &x58);
- { uint64_t x62; uint64_t x61 = _mulx_u64(x7, x9, &x62);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x7, x11, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x7, x10, &x68);
- { uint64_t x70; uint8_t x71 = _addcarryx_u64(0x0, x62, x64, &x70);
- { uint64_t x73; uint8_t x74 = _addcarryx_u64(x71, x65, x67, &x73);
- { uint64_t x76; uint8_t _ = _addcarryx_u64(0x0, x74, x68, &x76);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x52, x61, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x55, x70, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x58, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x59, x76, &x88);
- { uint64_t x92; uint64_t x91 = _mulx_u64(x79, 0xffffffffffffffffL, &x92);
- { uint64_t x95; uint64_t x94 = _mulx_u64(x79, 0xfffffffffffffffeL, &x95);
- { uint64_t x98; uint64_t x97 = _mulx_u64(x79, 0xffffffffffffffffL, &x98);
- { uint64_t x100; uint8_t x101 = _addcarryx_u64(0x0, x92, x94, &x100);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x95, x97, &x103);
- { uint64_t x106; uint8_t _ = _addcarryx_u64(0x0, x104, x98, &x106);
- { uint64_t _; uint8_t x110 = _addcarryx_u64(0x0, x79, x91, &_);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x82, x100, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x85, x103, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x88, x106, &x118);
- { uint8_t x120 = (x119 + x89);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x6, x9, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x6, x11, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x6, x10, &x129);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(0x0, x123, x125, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(x132, x126, x128, &x134);
- { uint64_t x137; uint8_t _ = _addcarryx_u64(0x0, x135, x129, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(0x0, x112, x122, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x115, x131, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x118, x134, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x120, x137, &x149);
- { uint64_t x153; uint64_t x152 = _mulx_u64(x140, 0xffffffffffffffffL, &x153);
- { uint64_t x156; uint64_t x155 = _mulx_u64(x140, 0xfffffffffffffffeL, &x156);
- { uint64_t x159; uint64_t x158 = _mulx_u64(x140, 0xffffffffffffffffL, &x159);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(0x0, x153, x155, &x161);
- { uint64_t x164; uint8_t x165 = _addcarryx_u64(x162, x156, x158, &x164);
- { uint64_t x167; uint8_t _ = _addcarryx_u64(0x0, x165, x159, &x167);
- { uint64_t _; uint8_t x171 = _addcarryx_u64(0x0, x140, x152, &_);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(x171, x143, x161, &x173);
- { uint64_t x176; uint8_t x177 = _addcarryx_u64(x174, x146, x164, &x176);
- { uint64_t x179; uint8_t x180 = _addcarryx_u64(x177, x149, x167, &x179);
- { uint8_t x181 = (x180 + x150);
- { uint64_t x183; uint8_t x184 = _subborrow_u64(0x0, x173, 0xffffffffffffffffL, &x183);
- { uint64_t x186; uint8_t x187 = _subborrow_u64(x184, x176, 0xfffffffffffffffeL, &x186);
- { uint64_t x189; uint8_t x190 = _subborrow_u64(x187, x179, 0xffffffffffffffffL, &x189);
- { uint64_t _; uint8_t x193 = _subborrow_u64(x190, x181, 0x0, &_);
- { uint64_t x194 = cmovznz64(x193, x189, x179);
- { uint64_t x195 = cmovznz64(x193, x186, x176);
- { uint64_t x196 = cmovznz64(x193, x183, x173);
- out[0] = x196;
- out[1] = x195;
- out[2] = x194;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/femul.v b/src/Specific/montgomery64_2e192m2e64m1/femul.v
deleted file mode 100644
index a69a0988f..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.log b/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.log
deleted file mode 100644
index 7607e6c7f..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.log
+++ /dev/null
@@ -1,72 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint64_t x14 = mulx_u64(x5, x9);
- uint64_t x16, uint64_t x17 = mulx_u64(x5, x11);
- uint64_t x19, uint64_t x20 = mulx_u64(x5, x10);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x14, x16);
- uint64_t x25, uint8_t x26 = addcarryx_u64(x23, x17, x19);
- uint64_t x28, uint8_t _ = addcarryx_u64(0x0, x26, x20);
- uint64_t x31, uint64_t x32 = mulx_u64(x13, 0xffffffffffffffffL);
- uint64_t x34, uint64_t x35 = mulx_u64(x13, 0xfffffffffffffffeL);
- uint64_t x37, uint64_t x38 = mulx_u64(x13, 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(0x0, x32, x34);
- uint64_t x43, uint8_t x44 = addcarryx_u64(x41, x35, x37);
- uint64_t x46, uint8_t _ = addcarryx_u64(0x0, x44, x38);
- uint64_t _, uint8_t x50 = addcarryx_u64(0x0, x13, x31);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x22, x40);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x25, x43);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x28, x46);
- uint64_t x61, uint64_t x62 = mulx_u64(x7, x9);
- uint64_t x64, uint64_t x65 = mulx_u64(x7, x11);
- uint64_t x67, uint64_t x68 = mulx_u64(x7, x10);
- uint64_t x70, uint8_t x71 = addcarryx_u64(0x0, x62, x64);
- uint64_t x73, uint8_t x74 = addcarryx_u64(x71, x65, x67);
- uint64_t x76, uint8_t _ = addcarryx_u64(0x0, x74, x68);
- uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x52, x61);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x55, x70);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x58, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x59, x76);
- uint64_t x91, uint64_t x92 = mulx_u64(x79, 0xffffffffffffffffL);
- uint64_t x94, uint64_t x95 = mulx_u64(x79, 0xfffffffffffffffeL);
- uint64_t x97, uint64_t x98 = mulx_u64(x79, 0xffffffffffffffffL);
- uint64_t x100, uint8_t x101 = addcarryx_u64(0x0, x92, x94);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x95, x97);
- uint64_t x106, uint8_t _ = addcarryx_u64(0x0, x104, x98);
- uint64_t _, uint8_t x110 = addcarryx_u64(0x0, x79, x91);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x82, x100);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x85, x103);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x88, x106);
- uint8_t x120 = (x119 + x89);
- uint64_t x122, uint64_t x123 = mulx_u64(x6, x9);
- uint64_t x125, uint64_t x126 = mulx_u64(x6, x11);
- uint64_t x128, uint64_t x129 = mulx_u64(x6, x10);
- uint64_t x131, uint8_t x132 = addcarryx_u64(0x0, x123, x125);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x126, x128);
- uint64_t x137, uint8_t _ = addcarryx_u64(0x0, x135, x129);
- uint64_t x140, uint8_t x141 = addcarryx_u64(0x0, x112, x122);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x115, x131);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x118, x134);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x120, x137);
- uint64_t x152, uint64_t x153 = mulx_u64(x140, 0xffffffffffffffffL);
- uint64_t x155, uint64_t x156 = mulx_u64(x140, 0xfffffffffffffffeL);
- uint64_t x158, uint64_t x159 = mulx_u64(x140, 0xffffffffffffffffL);
- uint64_t x161, uint8_t x162 = addcarryx_u64(0x0, x153, x155);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x156, x158);
- uint64_t x167, uint8_t _ = addcarryx_u64(0x0, x165, x159);
- uint64_t _, uint8_t x171 = addcarryx_u64(0x0, x140, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x143, x161);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x146, x164);
- uint64_t x179, uint8_t x180 = addcarryx_u64(x177, x149, x167);
- uint8_t x181 = (x180 + x150);
- uint64_t x183, uint8_t x184 = subborrow_u64(0x0, x173, 0xffffffffffffffffL);
- uint64_t x186, uint8_t x187 = subborrow_u64(x184, x176, 0xfffffffffffffffeL);
- uint64_t x189, uint8_t x190 = subborrow_u64(x187, x179, 0xffffffffffffffffL);
- uint64_t _, uint8_t x193 = subborrow_u64(x190, x181, 0x0);
- uint64_t x194 = cmovznz64(x193, x189, x179);
- uint64_t x195 = cmovznz64(x193, x186, x176);
- uint64_t x196 = cmovznz64(x193, x183, x173);
- return (x194, x195, x196))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v
deleted file mode 100644
index cc4ee4fd5..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenz.c b/src/Specific/montgomery64_2e192m2e64m1/fenz.c
deleted file mode 100644
index 2632a2866..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fenz.c
+++ /dev/null
@@ -1,9 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x5 = (x4 | x3);
- { uint64_t x6 = (x2 | x5);
- out[0] = x6;
- }}}}}
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenz.v b/src/Specific/montgomery64_2e192m2e64m1/fenz.v
deleted file mode 100644
index b87de072e..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.log b/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.log
deleted file mode 100644
index 680322e0f..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.log
+++ /dev/null
@@ -1,9 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x5 = (x4 | x3);
- uint64_t x6 = (x2 | x5);
- return x6)
-x
- : word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v
deleted file mode 100644
index fc2928498..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feopp.c b/src/Specific/montgomery64_2e192m2e64m1/feopp.c
deleted file mode 100644
index 13a4cb613..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feopp.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void feopp(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u64(0x0, 0x0, x2, &x6);
- { uint64_t x9; uint8_t x10 = _subborrow_u64(x7, 0x0, x4, &x9);
- { uint64_t x12; uint8_t x13 = _subborrow_u64(x10, 0x0, x3, &x12);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffffffffL);
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x6, x15, &x17);
- { uint64_t x19 = (x14 & 0xfffffffffffffffeL);
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(x18, x9, x19, &x21);
- { uint64_t x23 = (x14 & 0xffffffffffffffffL);
- { uint64_t x25; uint8_t _ = _addcarryx_u64(x22, x12, x23, &x25);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feopp.v b/src/Specific/montgomery64_2e192m2e64m1/feopp.v
deleted file mode 100644
index 673151a75..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.log b/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.log
deleted file mode 100644
index 130eb71da..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x9, uint8_t x10 = subborrow_u64(x7, 0x0, x4);
- uint64_t x12, uint8_t x13 = subborrow_u64(x10, 0x0, x3);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffffffffL);
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x6, x15);
- uint64_t x19 = (x14 & 0xfffffffffffffffeL);
- uint64_t x21, uint8_t x22 = addcarryx_u64(x18, x9, x19);
- uint64_t x23 = (x14 & 0xffffffffffffffffL);
- uint64_t x25, uint8_t _ = addcarryx_u64(x22, x12, x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v
deleted file mode 100644
index 4ed4b624c..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesquare.c b/src/Specific/montgomery64_2e192m2e64m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesub.c b/src/Specific/montgomery64_2e192m2e64m1/fesub.c
deleted file mode 100644
index 5ccff56fb..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fesub.c
+++ /dev/null
@@ -1,22 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint64_t x13; uint8_t x14 = _subborrow_u64(0x0, x5, x9, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, x7, x11, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, x6, x10, &x19);
- { uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- { uint64_t x22 = (x21 & 0xffffffffffffffffL);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(0x0, x13, x22, &x24);
- { uint64_t x26 = (x21 & 0xfffffffffffffffeL);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x25, x16, x26, &x28);
- { uint64_t x30 = (x21 & 0xffffffffffffffffL);
- { uint64_t x32; uint8_t _ = _addcarryx_u64(x29, x19, x30, &x32);
- out[0] = x24;
- out[1] = x28;
- out[2] = x32;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesub.v b/src/Specific/montgomery64_2e192m2e64m1/fesub.v
deleted file mode 100644
index 19da7aa32..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.log b/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.log
deleted file mode 100644
index d0da94fa8..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint64_t x13, uint8_t x14 = subborrow_u64(0x0, x5, x9);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, x7, x11);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, x6, x10);
- uint64_t x21 = cmovznz64(x20, 0x0, 0xffffffffffffffffL);
- uint64_t x22 = (x21 & 0xffffffffffffffffL);
- uint64_t x24, uint8_t x25 = addcarryx_u64(0x0, x13, x22);
- uint64_t x26 = (x21 & 0xfffffffffffffffeL);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x25, x16, x26);
- uint64_t x30 = (x21 & 0xffffffffffffffffL);
- uint64_t x32, uint8_t _ = addcarryx_u64(x29, x19, x30);
- (Return x32, Return x28, Return x24))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v b/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v
deleted file mode 100644
index d32c681ed..000000000
--- a/src/Specific/montgomery64_2e192m2e64m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e192m2e64m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/CurveParameters.v
index bdd7fe851..bdd7fe851 100644
--- a/src/Specific/montgomery64_2e192m2e64m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/Synthesis.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/Synthesis.v
new file mode 100644
index 000000000..0cba6c8b2
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/compiler.sh b/src/Specific/montgomery64_2e192m2e64m1_3limbs/compiler.sh
index 62b5be831..62b5be831 100755
--- a/src/Specific/montgomery64_2e192m2e64m1/compiler.sh
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e192m2e64m1/compilerxx.sh b/src/Specific/montgomery64_2e192m2e64m1_3limbs/compilerxx.sh
index 0bf56b928..0bf56b928 100755
--- a/src/Specific/montgomery64_2e192m2e64m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/feadd.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feadd.v
new file mode 100644
index 000000000..79eccab6f
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/feaddDisplay.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..78697c705
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/femul.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/femul.v
new file mode 100644
index 000000000..f1ba1337b
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/femulDisplay.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/femulDisplay.v
new file mode 100644
index 000000000..fdd8499d0
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenz.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenz.v
new file mode 100644
index 000000000..da71ee297
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenzDisplay.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenzDisplay.v
new file mode 100644
index 000000000..05f27ba77
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/feopp.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feopp.v
new file mode 100644
index 000000000..8ac57eeae
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/feoppDisplay.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feoppDisplay.v
new file mode 100644
index 000000000..5086092dd
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesub.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesub.v
new file mode 100644
index 000000000..4e63c1baa
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesubDisplay.v b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..f5f075671
--- /dev/null
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e192m2e64m1_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e192m2e64m1/py_interpreter.sh b/src/Specific/montgomery64_2e192m2e64m1_3limbs/py_interpreter.sh
index 5b7c36b50..5b7c36b50 100755
--- a/src/Specific/montgomery64_2e192m2e64m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e192m2e64m1_3limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e194m33/Synthesis.v b/src/Specific/montgomery64_2e194m33/Synthesis.v
deleted file mode 100644
index 71c5b9402..000000000
--- a/src/Specific/montgomery64_2e194m33/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e194m33.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e194m33/feadd.c b/src/Specific/montgomery64_2e194m33/feadd.c
deleted file mode 100644
index ac925e7c3..000000000
--- a/src/Specific/montgomery64_2e194m33/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffdfL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e194m33/feadd.v b/src/Specific/montgomery64_2e194m33/feadd.v
deleted file mode 100644
index fc8d33320..000000000
--- a/src/Specific/montgomery64_2e194m33/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e194m33/feaddDisplay.log b/src/Specific/montgomery64_2e194m33/feaddDisplay.log
deleted file mode 100644
index 031dc3bf4..000000000
--- a/src/Specific/montgomery64_2e194m33/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffdfL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e194m33/feaddDisplay.v b/src/Specific/montgomery64_2e194m33/feaddDisplay.v
deleted file mode 100644
index 7338c0c6f..000000000
--- a/src/Specific/montgomery64_2e194m33/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e194m33.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e194m33/femul.c b/src/Specific/montgomery64_2e194m33/femul.c
deleted file mode 100644
index 273eabe04..000000000
--- a/src/Specific/montgomery64_2e194m33/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xf83e0f83e0f83e1, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffdfL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint8_t x54; uint64_t x53 = _mulx_u64_out_u8(x41, 0x3, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint8_t x64 = (x63 + x54);
- { uint64_t _; uint8_t x67 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(x67, x29, x56, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x32, x59, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x35, x62, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x38, x64, &x78);
- { uint64_t x82; uint64_t x81 = _mulx_u64(x7, x11, &x82);
- { uint64_t x85; uint64_t x84 = _mulx_u64(x7, x13, &x85);
- { uint64_t x88; uint64_t x87 = _mulx_u64(x7, x15, &x88);
- { uint64_t x91; uint64_t x90 = _mulx_u64(x7, x14, &x91);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(0x0, x82, x84, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x85, x87, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x88, x90, &x99);
- { uint64_t x102; uint8_t _ = _addcarryx_u64(0x0, x100, x91, &x102);
- { uint64_t x105; uint8_t x106 = _addcarryx_u64(0x0, x69, x81, &x105);
- { uint64_t x108; uint8_t x109 = _addcarryx_u64(x106, x72, x93, &x108);
- { uint64_t x111; uint8_t x112 = _addcarryx_u64(x109, x75, x96, &x111);
- { uint64_t x114; uint8_t x115 = _addcarryx_u64(x112, x78, x99, &x114);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(x115, x79, x102, &x117);
- { uint64_t _; uint64_t x120 = _mulx_u64(x105, 0xf83e0f83e0f83e1, &_);
- { uint64_t x124; uint64_t x123 = _mulx_u64(x120, 0xffffffffffffffdfL, &x124);
- { uint64_t x127; uint64_t x126 = _mulx_u64(x120, 0xffffffffffffffffL, &x127);
- { uint64_t x130; uint64_t x129 = _mulx_u64(x120, 0xffffffffffffffffL, &x130);
- { uint8_t x133; uint64_t x132 = _mulx_u64_out_u8(x120, 0x3, &x133);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(0x0, x124, x126, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x127, x129, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x130, x132, &x141);
- { uint8_t x143 = (x142 + x133);
- { uint64_t _; uint8_t x146 = _addcarryx_u64(0x0, x105, x123, &_);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x108, x135, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x111, x138, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(x152, x114, x141, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x117, x143, &x157);
- { uint8_t x159 = (x158 + x118);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x9, x11, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x9, x13, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x9, x15, &x168);
- { uint64_t x171; uint64_t x170 = _mulx_u64(x9, x14, &x171);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(0x0, x162, x164, &x173);
- { uint64_t x176; uint8_t x177 = _addcarryx_u64(x174, x165, x167, &x176);
- { uint64_t x179; uint8_t x180 = _addcarryx_u64(x177, x168, x170, &x179);
- { uint64_t x182; uint8_t _ = _addcarryx_u64(0x0, x180, x171, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(0x0, x148, x161, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x151, x173, &x188);
- { uint64_t x191; uint8_t x192 = _addcarryx_u64(x189, x154, x176, &x191);
- { uint64_t x194; uint8_t x195 = _addcarryx_u64(x192, x157, x179, &x194);
- { uint64_t x197; uint8_t x198 = _addcarryx_u64(x195, x159, x182, &x197);
- { uint64_t _; uint64_t x200 = _mulx_u64(x185, 0xf83e0f83e0f83e1, &_);
- { uint64_t x204; uint64_t x203 = _mulx_u64(x200, 0xffffffffffffffdfL, &x204);
- { uint64_t x207; uint64_t x206 = _mulx_u64(x200, 0xffffffffffffffffL, &x207);
- { uint64_t x210; uint64_t x209 = _mulx_u64(x200, 0xffffffffffffffffL, &x210);
- { uint8_t x213; uint64_t x212 = _mulx_u64_out_u8(x200, 0x3, &x213);
- { uint64_t x215; uint8_t x216 = _addcarryx_u64(0x0, x204, x206, &x215);
- { uint64_t x218; uint8_t x219 = _addcarryx_u64(x216, x207, x209, &x218);
- { uint64_t x221; uint8_t x222 = _addcarryx_u64(x219, x210, x212, &x221);
- { uint8_t x223 = (x222 + x213);
- { uint64_t _; uint8_t x226 = _addcarryx_u64(0x0, x185, x203, &_);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x188, x215, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x191, x218, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x194, x221, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x197, x223, &x237);
- { uint8_t x239 = (x238 + x198);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x11, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x13, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x15, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x14, &x251);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x248, x250, &x259);
- { uint64_t x262; uint8_t _ = _addcarryx_u64(0x0, x260, x251, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(0x0, x228, x241, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x239, x262, &x277);
- { uint64_t _; uint64_t x280 = _mulx_u64(x265, 0xf83e0f83e0f83e1, &_);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x280, 0xffffffffffffffdfL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x280, 0xffffffffffffffffL, &x287);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x280, 0xffffffffffffffffL, &x290);
- { uint8_t x293; uint64_t x292 = _mulx_u64_out_u8(x280, 0x3, &x293);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(0x0, x284, x286, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x287, x289, &x298);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x290, x292, &x301);
- { uint8_t x303 = (x302 + x293);
- { uint64_t _; uint8_t x306 = _addcarryx_u64(0x0, x265, x283, &_);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(x306, x268, x295, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x271, x298, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x274, x301, &x314);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x277, x303, &x317);
- { uint8_t x319 = (x318 + x278);
- { uint64_t x321; uint8_t x322 = _subborrow_u64(0x0, x308, 0xffffffffffffffdfL, &x321);
- { uint64_t x324; uint8_t x325 = _subborrow_u64(x322, x311, 0xffffffffffffffffL, &x324);
- { uint64_t x327; uint8_t x328 = _subborrow_u64(x325, x314, 0xffffffffffffffffL, &x327);
- { uint64_t x330; uint8_t x331 = _subborrow_u64(x328, x317, 0x3, &x330);
- { uint64_t _; uint8_t x334 = _subborrow_u64(x331, x319, 0x0, &_);
- { uint64_t x335 = cmovznz64(x334, x330, x317);
- { uint64_t x336 = cmovznz64(x334, x327, x314);
- { uint64_t x337 = cmovznz64(x334, x324, x311);
- { uint64_t x338 = cmovznz64(x334, x321, x308);
- out[0] = x338;
- out[1] = x337;
- out[2] = x336;
- out[3] = x335;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e194m33/femul.v b/src/Specific/montgomery64_2e194m33/femul.v
deleted file mode 100644
index 02bc4f9e7..000000000
--- a/src/Specific/montgomery64_2e194m33/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e194m33/femulDisplay.log b/src/Specific/montgomery64_2e194m33/femulDisplay.log
deleted file mode 100644
index e7bf4c410..000000000
--- a/src/Specific/montgomery64_2e194m33/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xf83e0f83e0f83e1);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffdfL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = mulx_u64_out_u8(x41, 0x3);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint8_t x64 = (x63 + x54);
- uint64_t _, uint8_t x67 = addcarryx_u64(0x0, x17, x44);
- uint64_t x69, uint8_t x70 = addcarryx_u64(x67, x29, x56);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x32, x59);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x35, x62);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x38, x64);
- uint64_t x81, uint64_t x82 = mulx_u64(x7, x11);
- uint64_t x84, uint64_t x85 = mulx_u64(x7, x13);
- uint64_t x87, uint64_t x88 = mulx_u64(x7, x15);
- uint64_t x90, uint64_t x91 = mulx_u64(x7, x14);
- uint64_t x93, uint8_t x94 = addcarryx_u64(0x0, x82, x84);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x85, x87);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x88, x90);
- uint64_t x102, uint8_t _ = addcarryx_u64(0x0, x100, x91);
- uint64_t x105, uint8_t x106 = addcarryx_u64(0x0, x69, x81);
- uint64_t x108, uint8_t x109 = addcarryx_u64(x106, x72, x93);
- uint64_t x111, uint8_t x112 = addcarryx_u64(x109, x75, x96);
- uint64_t x114, uint8_t x115 = addcarryx_u64(x112, x78, x99);
- uint64_t x117, uint8_t x118 = addcarryx_u64(x115, x79, x102);
- uint64_t x120, uint64_t _ = mulx_u64(x105, 0xf83e0f83e0f83e1);
- uint64_t x123, uint64_t x124 = mulx_u64(x120, 0xffffffffffffffdfL);
- uint64_t x126, uint64_t x127 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x129, uint64_t x130 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x132, uint8_t x133 = mulx_u64_out_u8(x120, 0x3);
- uint64_t x135, uint8_t x136 = addcarryx_u64(0x0, x124, x126);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x127, x129);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x130, x132);
- uint8_t x143 = (x142 + x133);
- uint64_t _, uint8_t x146 = addcarryx_u64(0x0, x105, x123);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x108, x135);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x111, x138);
- uint64_t x154, uint8_t x155 = addcarryx_u64(x152, x114, x141);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x117, x143);
- uint8_t x159 = (x158 + x118);
- uint64_t x161, uint64_t x162 = mulx_u64(x9, x11);
- uint64_t x164, uint64_t x165 = mulx_u64(x9, x13);
- uint64_t x167, uint64_t x168 = mulx_u64(x9, x15);
- uint64_t x170, uint64_t x171 = mulx_u64(x9, x14);
- uint64_t x173, uint8_t x174 = addcarryx_u64(0x0, x162, x164);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x165, x167);
- uint64_t x179, uint8_t x180 = addcarryx_u64(x177, x168, x170);
- uint64_t x182, uint8_t _ = addcarryx_u64(0x0, x180, x171);
- uint64_t x185, uint8_t x186 = addcarryx_u64(0x0, x148, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x151, x173);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x154, x176);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x157, x179);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x159, x182);
- uint64_t x200, uint64_t _ = mulx_u64(x185, 0xf83e0f83e0f83e1);
- uint64_t x203, uint64_t x204 = mulx_u64(x200, 0xffffffffffffffdfL);
- uint64_t x206, uint64_t x207 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x209, uint64_t x210 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x212, uint8_t x213 = mulx_u64_out_u8(x200, 0x3);
- uint64_t x215, uint8_t x216 = addcarryx_u64(0x0, x204, x206);
- uint64_t x218, uint8_t x219 = addcarryx_u64(x216, x207, x209);
- uint64_t x221, uint8_t x222 = addcarryx_u64(x219, x210, x212);
- uint8_t x223 = (x222 + x213);
- uint64_t _, uint8_t x226 = addcarryx_u64(0x0, x185, x203);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x188, x215);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x191, x218);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x194, x221);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x197, x223);
- uint8_t x239 = (x238 + x198);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x11);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x13);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x15);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x14);
- uint64_t x253, uint8_t x254 = addcarryx_u64(0x0, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x248, x250);
- uint64_t x262, uint8_t _ = addcarryx_u64(0x0, x260, x251);
- uint64_t x265, uint8_t x266 = addcarryx_u64(0x0, x228, x241);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x239, x262);
- uint64_t x280, uint64_t _ = mulx_u64(x265, 0xf83e0f83e0f83e1);
- uint64_t x283, uint64_t x284 = mulx_u64(x280, 0xffffffffffffffdfL);
- uint64_t x286, uint64_t x287 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x289, uint64_t x290 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x292, uint8_t x293 = mulx_u64_out_u8(x280, 0x3);
- uint64_t x295, uint8_t x296 = addcarryx_u64(0x0, x284, x286);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x287, x289);
- uint64_t x301, uint8_t x302 = addcarryx_u64(x299, x290, x292);
- uint8_t x303 = (x302 + x293);
- uint64_t _, uint8_t x306 = addcarryx_u64(0x0, x265, x283);
- uint64_t x308, uint8_t x309 = addcarryx_u64(x306, x268, x295);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x271, x298);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x274, x301);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x277, x303);
- uint8_t x319 = (x318 + x278);
- uint64_t x321, uint8_t x322 = subborrow_u64(0x0, x308, 0xffffffffffffffdfL);
- uint64_t x324, uint8_t x325 = subborrow_u64(x322, x311, 0xffffffffffffffffL);
- uint64_t x327, uint8_t x328 = subborrow_u64(x325, x314, 0xffffffffffffffffL);
- uint64_t x330, uint8_t x331 = subborrow_u64(x328, x317, 0x3);
- uint64_t _, uint8_t x334 = subborrow_u64(x331, x319, 0x0);
- uint64_t x335 = cmovznz64(x334, x330, x317);
- uint64_t x336 = cmovznz64(x334, x327, x314);
- uint64_t x337 = cmovznz64(x334, x324, x311);
- uint64_t x338 = cmovznz64(x334, x321, x308);
- return (x335, x336, x337, x338))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e194m33/femulDisplay.v b/src/Specific/montgomery64_2e194m33/femulDisplay.v
deleted file mode 100644
index b0cb42496..000000000
--- a/src/Specific/montgomery64_2e194m33/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e194m33.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e194m33/fenz.c b/src/Specific/montgomery64_2e194m33/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e194m33/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e194m33/fenz.v b/src/Specific/montgomery64_2e194m33/fenz.v
deleted file mode 100644
index 4192dd0e0..000000000
--- a/src/Specific/montgomery64_2e194m33/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e194m33/fenzDisplay.log b/src/Specific/montgomery64_2e194m33/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e194m33/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e194m33/fenzDisplay.v b/src/Specific/montgomery64_2e194m33/fenzDisplay.v
deleted file mode 100644
index b9fc23276..000000000
--- a/src/Specific/montgomery64_2e194m33/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e194m33.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e194m33/feopp.c b/src/Specific/montgomery64_2e194m33/feopp.c
deleted file mode 100644
index a12db40d3..000000000
--- a/src/Specific/montgomery64_2e194m33/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffdfL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint8_t x32 = ((uint8_t)x19 & 0x3);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e194m33/feopp.v b/src/Specific/montgomery64_2e194m33/feopp.v
deleted file mode 100644
index 8a9d8fc95..000000000
--- a/src/Specific/montgomery64_2e194m33/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e194m33/feoppDisplay.log b/src/Specific/montgomery64_2e194m33/feoppDisplay.log
deleted file mode 100644
index 48c2b2587..000000000
--- a/src/Specific/montgomery64_2e194m33/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffdfL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint8_t x32 = ((uint8_t)x19 & 0x3);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e194m33/feoppDisplay.v b/src/Specific/montgomery64_2e194m33/feoppDisplay.v
deleted file mode 100644
index f86fa63e3..000000000
--- a/src/Specific/montgomery64_2e194m33/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e194m33.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e194m33/fesquare.c b/src/Specific/montgomery64_2e194m33/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e194m33/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e194m33/fesub.c b/src/Specific/montgomery64_2e194m33/fesub.c
deleted file mode 100644
index 0d8b5aea0..000000000
--- a/src/Specific/montgomery64_2e194m33/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffdfL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint8_t x41 = ((uint8_t)x28 & 0x3);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e194m33/fesub.v b/src/Specific/montgomery64_2e194m33/fesub.v
deleted file mode 100644
index cfb478e56..000000000
--- a/src/Specific/montgomery64_2e194m33/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e194m33/fesubDisplay.log b/src/Specific/montgomery64_2e194m33/fesubDisplay.log
deleted file mode 100644
index 07812034e..000000000
--- a/src/Specific/montgomery64_2e194m33/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffdfL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint8_t x41 = ((uint8_t)x28 & 0x3);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e194m33/fesubDisplay.v b/src/Specific/montgomery64_2e194m33/fesubDisplay.v
deleted file mode 100644
index 8bce75931..000000000
--- a/src/Specific/montgomery64_2e194m33/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e194m33.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e194m33/CurveParameters.v b/src/Specific/montgomery64_2e194m33_4limbs/CurveParameters.v
index 2b450282c..2b450282c 100644
--- a/src/Specific/montgomery64_2e194m33/CurveParameters.v
+++ b/src/Specific/montgomery64_2e194m33_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/Synthesis.v b/src/Specific/montgomery64_2e194m33_4limbs/Synthesis.v
new file mode 100644
index 000000000..03a183c79
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e194m33/compiler.sh b/src/Specific/montgomery64_2e194m33_4limbs/compiler.sh
index bb45792ec..bb45792ec 100755
--- a/src/Specific/montgomery64_2e194m33/compiler.sh
+++ b/src/Specific/montgomery64_2e194m33_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e194m33/compilerxx.sh b/src/Specific/montgomery64_2e194m33_4limbs/compilerxx.sh
index 045a6450f..045a6450f 100755
--- a/src/Specific/montgomery64_2e194m33/compilerxx.sh
+++ b/src/Specific/montgomery64_2e194m33_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/feadd.v b/src/Specific/montgomery64_2e194m33_4limbs/feadd.v
new file mode 100644
index 000000000..2e181c924
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e194m33_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..c38357610
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/femul.v b/src/Specific/montgomery64_2e194m33_4limbs/femul.v
new file mode 100644
index 000000000..4dcca4d23
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e194m33_4limbs/femulDisplay.v
new file mode 100644
index 000000000..f201525fc
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/fenz.v b/src/Specific/montgomery64_2e194m33_4limbs/fenz.v
new file mode 100644
index 000000000..55c922f36
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e194m33_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..e05e4785a
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/feopp.v b/src/Specific/montgomery64_2e194m33_4limbs/feopp.v
new file mode 100644
index 000000000..c67ce9c3b
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e194m33_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..77065b5e2
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/fesub.v b/src/Specific/montgomery64_2e194m33_4limbs/fesub.v
new file mode 100644
index 000000000..b5fe9dad0
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e194m33_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e194m33_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..3638569b3
--- /dev/null
+++ b/src/Specific/montgomery64_2e194m33_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e194m33_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e194m33/py_interpreter.sh b/src/Specific/montgomery64_2e194m33_4limbs/py_interpreter.sh
index 28ef9a8a4..28ef9a8a4 100755
--- a/src/Specific/montgomery64_2e194m33/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e194m33_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e196m15/Synthesis.v b/src/Specific/montgomery64_2e196m15/Synthesis.v
deleted file mode 100644
index cc9e108f0..000000000
--- a/src/Specific/montgomery64_2e196m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e196m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e196m15/feadd.c b/src/Specific/montgomery64_2e196m15/feadd.c
deleted file mode 100644
index 1411b0e95..000000000
--- a/src/Specific/montgomery64_2e196m15/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffff1L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xf, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e196m15/feadd.v b/src/Specific/montgomery64_2e196m15/feadd.v
deleted file mode 100644
index 9ebf5f998..000000000
--- a/src/Specific/montgomery64_2e196m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e196m15/feaddDisplay.log b/src/Specific/montgomery64_2e196m15/feaddDisplay.log
deleted file mode 100644
index 35d293c7c..000000000
--- a/src/Specific/montgomery64_2e196m15/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffff1L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xf);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e196m15/feaddDisplay.v b/src/Specific/montgomery64_2e196m15/feaddDisplay.v
deleted file mode 100644
index d3ab9b333..000000000
--- a/src/Specific/montgomery64_2e196m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e196m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e196m15/femul.c b/src/Specific/montgomery64_2e196m15/femul.c
deleted file mode 100644
index 9e6c9aeaf..000000000
--- a/src/Specific/montgomery64_2e196m15/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffff1L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint8_t x54; uint64_t x53 = _mulx_u64_out_u8(x41, 0xf, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint8_t x64 = (x63 + x54);
- { uint64_t _; uint8_t x67 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(x67, x29, x56, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x32, x59, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x35, x62, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x38, x64, &x78);
- { uint64_t x82; uint64_t x81 = _mulx_u64(x7, x11, &x82);
- { uint64_t x85; uint64_t x84 = _mulx_u64(x7, x13, &x85);
- { uint64_t x88; uint64_t x87 = _mulx_u64(x7, x15, &x88);
- { uint64_t x91; uint64_t x90 = _mulx_u64(x7, x14, &x91);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(0x0, x82, x84, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x85, x87, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x88, x90, &x99);
- { uint64_t x102; uint8_t _ = _addcarryx_u64(0x0, x100, x91, &x102);
- { uint64_t x105; uint8_t x106 = _addcarryx_u64(0x0, x69, x81, &x105);
- { uint64_t x108; uint8_t x109 = _addcarryx_u64(x106, x72, x93, &x108);
- { uint64_t x111; uint8_t x112 = _addcarryx_u64(x109, x75, x96, &x111);
- { uint64_t x114; uint8_t x115 = _addcarryx_u64(x112, x78, x99, &x114);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(x115, x79, x102, &x117);
- { uint64_t _; uint64_t x120 = _mulx_u64(x105, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x124; uint64_t x123 = _mulx_u64(x120, 0xfffffffffffffff1L, &x124);
- { uint64_t x127; uint64_t x126 = _mulx_u64(x120, 0xffffffffffffffffL, &x127);
- { uint64_t x130; uint64_t x129 = _mulx_u64(x120, 0xffffffffffffffffL, &x130);
- { uint8_t x133; uint64_t x132 = _mulx_u64_out_u8(x120, 0xf, &x133);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(0x0, x124, x126, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x127, x129, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x130, x132, &x141);
- { uint8_t x143 = (x142 + x133);
- { uint64_t _; uint8_t x146 = _addcarryx_u64(0x0, x105, x123, &_);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x108, x135, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x111, x138, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(x152, x114, x141, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x117, x143, &x157);
- { uint8_t x159 = (x158 + x118);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x9, x11, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x9, x13, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x9, x15, &x168);
- { uint64_t x171; uint64_t x170 = _mulx_u64(x9, x14, &x171);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(0x0, x162, x164, &x173);
- { uint64_t x176; uint8_t x177 = _addcarryx_u64(x174, x165, x167, &x176);
- { uint64_t x179; uint8_t x180 = _addcarryx_u64(x177, x168, x170, &x179);
- { uint64_t x182; uint8_t _ = _addcarryx_u64(0x0, x180, x171, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(0x0, x148, x161, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x151, x173, &x188);
- { uint64_t x191; uint8_t x192 = _addcarryx_u64(x189, x154, x176, &x191);
- { uint64_t x194; uint8_t x195 = _addcarryx_u64(x192, x157, x179, &x194);
- { uint64_t x197; uint8_t x198 = _addcarryx_u64(x195, x159, x182, &x197);
- { uint64_t _; uint64_t x200 = _mulx_u64(x185, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x204; uint64_t x203 = _mulx_u64(x200, 0xfffffffffffffff1L, &x204);
- { uint64_t x207; uint64_t x206 = _mulx_u64(x200, 0xffffffffffffffffL, &x207);
- { uint64_t x210; uint64_t x209 = _mulx_u64(x200, 0xffffffffffffffffL, &x210);
- { uint8_t x213; uint64_t x212 = _mulx_u64_out_u8(x200, 0xf, &x213);
- { uint64_t x215; uint8_t x216 = _addcarryx_u64(0x0, x204, x206, &x215);
- { uint64_t x218; uint8_t x219 = _addcarryx_u64(x216, x207, x209, &x218);
- { uint64_t x221; uint8_t x222 = _addcarryx_u64(x219, x210, x212, &x221);
- { uint8_t x223 = (x222 + x213);
- { uint64_t _; uint8_t x226 = _addcarryx_u64(0x0, x185, x203, &_);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x188, x215, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x191, x218, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x194, x221, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x197, x223, &x237);
- { uint8_t x239 = (x238 + x198);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x11, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x13, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x15, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x14, &x251);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x248, x250, &x259);
- { uint64_t x262; uint8_t _ = _addcarryx_u64(0x0, x260, x251, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(0x0, x228, x241, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x239, x262, &x277);
- { uint64_t _; uint64_t x280 = _mulx_u64(x265, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x280, 0xfffffffffffffff1L, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x280, 0xffffffffffffffffL, &x287);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x280, 0xffffffffffffffffL, &x290);
- { uint8_t x293; uint64_t x292 = _mulx_u64_out_u8(x280, 0xf, &x293);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(0x0, x284, x286, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x287, x289, &x298);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x290, x292, &x301);
- { uint8_t x303 = (x302 + x293);
- { uint64_t _; uint8_t x306 = _addcarryx_u64(0x0, x265, x283, &_);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(x306, x268, x295, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x271, x298, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x274, x301, &x314);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x277, x303, &x317);
- { uint8_t x319 = (x318 + x278);
- { uint64_t x321; uint8_t x322 = _subborrow_u64(0x0, x308, 0xfffffffffffffff1L, &x321);
- { uint64_t x324; uint8_t x325 = _subborrow_u64(x322, x311, 0xffffffffffffffffL, &x324);
- { uint64_t x327; uint8_t x328 = _subborrow_u64(x325, x314, 0xffffffffffffffffL, &x327);
- { uint64_t x330; uint8_t x331 = _subborrow_u64(x328, x317, 0xf, &x330);
- { uint64_t _; uint8_t x334 = _subborrow_u64(x331, x319, 0x0, &_);
- { uint64_t x335 = cmovznz64(x334, x330, x317);
- { uint64_t x336 = cmovznz64(x334, x327, x314);
- { uint64_t x337 = cmovznz64(x334, x324, x311);
- { uint64_t x338 = cmovznz64(x334, x321, x308);
- out[0] = x338;
- out[1] = x337;
- out[2] = x336;
- out[3] = x335;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e196m15/femul.v b/src/Specific/montgomery64_2e196m15/femul.v
deleted file mode 100644
index c5a7d05b8..000000000
--- a/src/Specific/montgomery64_2e196m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e196m15/femulDisplay.log b/src/Specific/montgomery64_2e196m15/femulDisplay.log
deleted file mode 100644
index a2c56f3fd..000000000
--- a/src/Specific/montgomery64_2e196m15/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xeeeeeeeeeeeeeeefL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffff1L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = mulx_u64_out_u8(x41, 0xf);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint8_t x64 = (x63 + x54);
- uint64_t _, uint8_t x67 = addcarryx_u64(0x0, x17, x44);
- uint64_t x69, uint8_t x70 = addcarryx_u64(x67, x29, x56);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x32, x59);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x35, x62);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x38, x64);
- uint64_t x81, uint64_t x82 = mulx_u64(x7, x11);
- uint64_t x84, uint64_t x85 = mulx_u64(x7, x13);
- uint64_t x87, uint64_t x88 = mulx_u64(x7, x15);
- uint64_t x90, uint64_t x91 = mulx_u64(x7, x14);
- uint64_t x93, uint8_t x94 = addcarryx_u64(0x0, x82, x84);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x85, x87);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x88, x90);
- uint64_t x102, uint8_t _ = addcarryx_u64(0x0, x100, x91);
- uint64_t x105, uint8_t x106 = addcarryx_u64(0x0, x69, x81);
- uint64_t x108, uint8_t x109 = addcarryx_u64(x106, x72, x93);
- uint64_t x111, uint8_t x112 = addcarryx_u64(x109, x75, x96);
- uint64_t x114, uint8_t x115 = addcarryx_u64(x112, x78, x99);
- uint64_t x117, uint8_t x118 = addcarryx_u64(x115, x79, x102);
- uint64_t x120, uint64_t _ = mulx_u64(x105, 0xeeeeeeeeeeeeeeefL);
- uint64_t x123, uint64_t x124 = mulx_u64(x120, 0xfffffffffffffff1L);
- uint64_t x126, uint64_t x127 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x129, uint64_t x130 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x132, uint8_t x133 = mulx_u64_out_u8(x120, 0xf);
- uint64_t x135, uint8_t x136 = addcarryx_u64(0x0, x124, x126);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x127, x129);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x130, x132);
- uint8_t x143 = (x142 + x133);
- uint64_t _, uint8_t x146 = addcarryx_u64(0x0, x105, x123);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x108, x135);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x111, x138);
- uint64_t x154, uint8_t x155 = addcarryx_u64(x152, x114, x141);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x117, x143);
- uint8_t x159 = (x158 + x118);
- uint64_t x161, uint64_t x162 = mulx_u64(x9, x11);
- uint64_t x164, uint64_t x165 = mulx_u64(x9, x13);
- uint64_t x167, uint64_t x168 = mulx_u64(x9, x15);
- uint64_t x170, uint64_t x171 = mulx_u64(x9, x14);
- uint64_t x173, uint8_t x174 = addcarryx_u64(0x0, x162, x164);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x165, x167);
- uint64_t x179, uint8_t x180 = addcarryx_u64(x177, x168, x170);
- uint64_t x182, uint8_t _ = addcarryx_u64(0x0, x180, x171);
- uint64_t x185, uint8_t x186 = addcarryx_u64(0x0, x148, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x151, x173);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x154, x176);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x157, x179);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x159, x182);
- uint64_t x200, uint64_t _ = mulx_u64(x185, 0xeeeeeeeeeeeeeeefL);
- uint64_t x203, uint64_t x204 = mulx_u64(x200, 0xfffffffffffffff1L);
- uint64_t x206, uint64_t x207 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x209, uint64_t x210 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x212, uint8_t x213 = mulx_u64_out_u8(x200, 0xf);
- uint64_t x215, uint8_t x216 = addcarryx_u64(0x0, x204, x206);
- uint64_t x218, uint8_t x219 = addcarryx_u64(x216, x207, x209);
- uint64_t x221, uint8_t x222 = addcarryx_u64(x219, x210, x212);
- uint8_t x223 = (x222 + x213);
- uint64_t _, uint8_t x226 = addcarryx_u64(0x0, x185, x203);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x188, x215);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x191, x218);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x194, x221);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x197, x223);
- uint8_t x239 = (x238 + x198);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x11);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x13);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x15);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x14);
- uint64_t x253, uint8_t x254 = addcarryx_u64(0x0, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x248, x250);
- uint64_t x262, uint8_t _ = addcarryx_u64(0x0, x260, x251);
- uint64_t x265, uint8_t x266 = addcarryx_u64(0x0, x228, x241);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x239, x262);
- uint64_t x280, uint64_t _ = mulx_u64(x265, 0xeeeeeeeeeeeeeeefL);
- uint64_t x283, uint64_t x284 = mulx_u64(x280, 0xfffffffffffffff1L);
- uint64_t x286, uint64_t x287 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x289, uint64_t x290 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x292, uint8_t x293 = mulx_u64_out_u8(x280, 0xf);
- uint64_t x295, uint8_t x296 = addcarryx_u64(0x0, x284, x286);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x287, x289);
- uint64_t x301, uint8_t x302 = addcarryx_u64(x299, x290, x292);
- uint8_t x303 = (x302 + x293);
- uint64_t _, uint8_t x306 = addcarryx_u64(0x0, x265, x283);
- uint64_t x308, uint8_t x309 = addcarryx_u64(x306, x268, x295);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x271, x298);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x274, x301);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x277, x303);
- uint8_t x319 = (x318 + x278);
- uint64_t x321, uint8_t x322 = subborrow_u64(0x0, x308, 0xfffffffffffffff1L);
- uint64_t x324, uint8_t x325 = subborrow_u64(x322, x311, 0xffffffffffffffffL);
- uint64_t x327, uint8_t x328 = subborrow_u64(x325, x314, 0xffffffffffffffffL);
- uint64_t x330, uint8_t x331 = subborrow_u64(x328, x317, 0xf);
- uint64_t _, uint8_t x334 = subborrow_u64(x331, x319, 0x0);
- uint64_t x335 = cmovznz64(x334, x330, x317);
- uint64_t x336 = cmovznz64(x334, x327, x314);
- uint64_t x337 = cmovznz64(x334, x324, x311);
- uint64_t x338 = cmovznz64(x334, x321, x308);
- return (x335, x336, x337, x338))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e196m15/femulDisplay.v b/src/Specific/montgomery64_2e196m15/femulDisplay.v
deleted file mode 100644
index 69c5524a0..000000000
--- a/src/Specific/montgomery64_2e196m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e196m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e196m15/fenz.c b/src/Specific/montgomery64_2e196m15/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e196m15/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e196m15/fenz.v b/src/Specific/montgomery64_2e196m15/fenz.v
deleted file mode 100644
index c6fac0926..000000000
--- a/src/Specific/montgomery64_2e196m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e196m15/fenzDisplay.log b/src/Specific/montgomery64_2e196m15/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e196m15/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e196m15/fenzDisplay.v b/src/Specific/montgomery64_2e196m15/fenzDisplay.v
deleted file mode 100644
index d9ed29291..000000000
--- a/src/Specific/montgomery64_2e196m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e196m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e196m15/feopp.c b/src/Specific/montgomery64_2e196m15/feopp.c
deleted file mode 100644
index 19622bda1..000000000
--- a/src/Specific/montgomery64_2e196m15/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffff1L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint8_t x32 = ((uint8_t)x19 & 0xf);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e196m15/feopp.v b/src/Specific/montgomery64_2e196m15/feopp.v
deleted file mode 100644
index 023d779d7..000000000
--- a/src/Specific/montgomery64_2e196m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e196m15/feoppDisplay.log b/src/Specific/montgomery64_2e196m15/feoppDisplay.log
deleted file mode 100644
index cc51b2dd1..000000000
--- a/src/Specific/montgomery64_2e196m15/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffff1L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint8_t x32 = ((uint8_t)x19 & 0xf);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e196m15/feoppDisplay.v b/src/Specific/montgomery64_2e196m15/feoppDisplay.v
deleted file mode 100644
index e3c83a34c..000000000
--- a/src/Specific/montgomery64_2e196m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e196m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e196m15/fesquare.c b/src/Specific/montgomery64_2e196m15/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e196m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e196m15/fesub.c b/src/Specific/montgomery64_2e196m15/fesub.c
deleted file mode 100644
index 8ce694442..000000000
--- a/src/Specific/montgomery64_2e196m15/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffff1L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint8_t x41 = ((uint8_t)x28 & 0xf);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e196m15/fesub.v b/src/Specific/montgomery64_2e196m15/fesub.v
deleted file mode 100644
index b0c7f7a25..000000000
--- a/src/Specific/montgomery64_2e196m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e196m15/fesubDisplay.log b/src/Specific/montgomery64_2e196m15/fesubDisplay.log
deleted file mode 100644
index 961fd6c8d..000000000
--- a/src/Specific/montgomery64_2e196m15/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffff1L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint8_t x41 = ((uint8_t)x28 & 0xf);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e196m15/fesubDisplay.v b/src/Specific/montgomery64_2e196m15/fesubDisplay.v
deleted file mode 100644
index 340671b13..000000000
--- a/src/Specific/montgomery64_2e196m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e196m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e196m15/CurveParameters.v b/src/Specific/montgomery64_2e196m15_4limbs/CurveParameters.v
index f876ce2bf..f876ce2bf 100644
--- a/src/Specific/montgomery64_2e196m15/CurveParameters.v
+++ b/src/Specific/montgomery64_2e196m15_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/Synthesis.v b/src/Specific/montgomery64_2e196m15_4limbs/Synthesis.v
new file mode 100644
index 000000000..5d0bab3a1
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e196m15/compiler.sh b/src/Specific/montgomery64_2e196m15_4limbs/compiler.sh
index 09267e80a..09267e80a 100755
--- a/src/Specific/montgomery64_2e196m15/compiler.sh
+++ b/src/Specific/montgomery64_2e196m15_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e196m15/compilerxx.sh b/src/Specific/montgomery64_2e196m15_4limbs/compilerxx.sh
index 1d0951700..1d0951700 100755
--- a/src/Specific/montgomery64_2e196m15/compilerxx.sh
+++ b/src/Specific/montgomery64_2e196m15_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/feadd.v b/src/Specific/montgomery64_2e196m15_4limbs/feadd.v
new file mode 100644
index 000000000..a9d7dce04
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e196m15_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..3fdbff070
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/femul.v b/src/Specific/montgomery64_2e196m15_4limbs/femul.v
new file mode 100644
index 000000000..c1c8c8285
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e196m15_4limbs/femulDisplay.v
new file mode 100644
index 000000000..5898011f8
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/fenz.v b/src/Specific/montgomery64_2e196m15_4limbs/fenz.v
new file mode 100644
index 000000000..f37678d02
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e196m15_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..974087bd0
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/feopp.v b/src/Specific/montgomery64_2e196m15_4limbs/feopp.v
new file mode 100644
index 000000000..a8742e2b5
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e196m15_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..8d7f56818
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/fesub.v b/src/Specific/montgomery64_2e196m15_4limbs/fesub.v
new file mode 100644
index 000000000..b7fbe0ba6
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e196m15_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e196m15_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..10b8c075e
--- /dev/null
+++ b/src/Specific/montgomery64_2e196m15_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e196m15_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e196m15/py_interpreter.sh b/src/Specific/montgomery64_2e196m15_4limbs/py_interpreter.sh
index f8a492b8c..f8a492b8c 100755
--- a/src/Specific/montgomery64_2e196m15/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e196m15_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e198m17/Synthesis.v b/src/Specific/montgomery64_2e198m17/Synthesis.v
deleted file mode 100644
index 780f08e1c..000000000
--- a/src/Specific/montgomery64_2e198m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e198m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e198m17/feadd.c b/src/Specific/montgomery64_2e198m17/feadd.c
deleted file mode 100644
index 462dab71d..000000000
--- a/src/Specific/montgomery64_2e198m17/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffefL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3f, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e198m17/feadd.v b/src/Specific/montgomery64_2e198m17/feadd.v
deleted file mode 100644
index 73b0855fc..000000000
--- a/src/Specific/montgomery64_2e198m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e198m17/feaddDisplay.log b/src/Specific/montgomery64_2e198m17/feaddDisplay.log
deleted file mode 100644
index d4d34eddd..000000000
--- a/src/Specific/montgomery64_2e198m17/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffefL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3f);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e198m17/feaddDisplay.v b/src/Specific/montgomery64_2e198m17/feaddDisplay.v
deleted file mode 100644
index 458795e27..000000000
--- a/src/Specific/montgomery64_2e198m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e198m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e198m17/femul.c b/src/Specific/montgomery64_2e198m17/femul.c
deleted file mode 100644
index 3e5aad476..000000000
--- a/src/Specific/montgomery64_2e198m17/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffefL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint8_t x54; uint64_t x53 = _mulx_u64_out_u8(x41, 0x3f, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint8_t x64 = (x63 + x54);
- { uint64_t _; uint8_t x67 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(x67, x29, x56, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x32, x59, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x35, x62, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x38, x64, &x78);
- { uint64_t x82; uint64_t x81 = _mulx_u64(x7, x11, &x82);
- { uint64_t x85; uint64_t x84 = _mulx_u64(x7, x13, &x85);
- { uint64_t x88; uint64_t x87 = _mulx_u64(x7, x15, &x88);
- { uint64_t x91; uint64_t x90 = _mulx_u64(x7, x14, &x91);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(0x0, x82, x84, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x85, x87, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x88, x90, &x99);
- { uint64_t x102; uint8_t _ = _addcarryx_u64(0x0, x100, x91, &x102);
- { uint64_t x105; uint8_t x106 = _addcarryx_u64(0x0, x69, x81, &x105);
- { uint64_t x108; uint8_t x109 = _addcarryx_u64(x106, x72, x93, &x108);
- { uint64_t x111; uint8_t x112 = _addcarryx_u64(x109, x75, x96, &x111);
- { uint64_t x114; uint8_t x115 = _addcarryx_u64(x112, x78, x99, &x114);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(x115, x79, x102, &x117);
- { uint64_t _; uint64_t x120 = _mulx_u64(x105, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x124; uint64_t x123 = _mulx_u64(x120, 0xffffffffffffffefL, &x124);
- { uint64_t x127; uint64_t x126 = _mulx_u64(x120, 0xffffffffffffffffL, &x127);
- { uint64_t x130; uint64_t x129 = _mulx_u64(x120, 0xffffffffffffffffL, &x130);
- { uint8_t x133; uint64_t x132 = _mulx_u64_out_u8(x120, 0x3f, &x133);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(0x0, x124, x126, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x127, x129, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x130, x132, &x141);
- { uint8_t x143 = (x142 + x133);
- { uint64_t _; uint8_t x146 = _addcarryx_u64(0x0, x105, x123, &_);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x108, x135, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x111, x138, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(x152, x114, x141, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x117, x143, &x157);
- { uint8_t x159 = (x158 + x118);
- { uint64_t x162; uint64_t x161 = _mulx_u64(x9, x11, &x162);
- { uint64_t x165; uint64_t x164 = _mulx_u64(x9, x13, &x165);
- { uint64_t x168; uint64_t x167 = _mulx_u64(x9, x15, &x168);
- { uint64_t x171; uint64_t x170 = _mulx_u64(x9, x14, &x171);
- { uint64_t x173; uint8_t x174 = _addcarryx_u64(0x0, x162, x164, &x173);
- { uint64_t x176; uint8_t x177 = _addcarryx_u64(x174, x165, x167, &x176);
- { uint64_t x179; uint8_t x180 = _addcarryx_u64(x177, x168, x170, &x179);
- { uint64_t x182; uint8_t _ = _addcarryx_u64(0x0, x180, x171, &x182);
- { uint64_t x185; uint8_t x186 = _addcarryx_u64(0x0, x148, x161, &x185);
- { uint64_t x188; uint8_t x189 = _addcarryx_u64(x186, x151, x173, &x188);
- { uint64_t x191; uint8_t x192 = _addcarryx_u64(x189, x154, x176, &x191);
- { uint64_t x194; uint8_t x195 = _addcarryx_u64(x192, x157, x179, &x194);
- { uint64_t x197; uint8_t x198 = _addcarryx_u64(x195, x159, x182, &x197);
- { uint64_t _; uint64_t x200 = _mulx_u64(x185, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x204; uint64_t x203 = _mulx_u64(x200, 0xffffffffffffffefL, &x204);
- { uint64_t x207; uint64_t x206 = _mulx_u64(x200, 0xffffffffffffffffL, &x207);
- { uint64_t x210; uint64_t x209 = _mulx_u64(x200, 0xffffffffffffffffL, &x210);
- { uint8_t x213; uint64_t x212 = _mulx_u64_out_u8(x200, 0x3f, &x213);
- { uint64_t x215; uint8_t x216 = _addcarryx_u64(0x0, x204, x206, &x215);
- { uint64_t x218; uint8_t x219 = _addcarryx_u64(x216, x207, x209, &x218);
- { uint64_t x221; uint8_t x222 = _addcarryx_u64(x219, x210, x212, &x221);
- { uint8_t x223 = (x222 + x213);
- { uint64_t _; uint8_t x226 = _addcarryx_u64(0x0, x185, x203, &_);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x188, x215, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x191, x218, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x194, x221, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x197, x223, &x237);
- { uint8_t x239 = (x238 + x198);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x11, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x13, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x15, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x14, &x251);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x248, x250, &x259);
- { uint64_t x262; uint8_t _ = _addcarryx_u64(0x0, x260, x251, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(0x0, x228, x241, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x239, x262, &x277);
- { uint64_t _; uint64_t x280 = _mulx_u64(x265, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x280, 0xffffffffffffffefL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x280, 0xffffffffffffffffL, &x287);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x280, 0xffffffffffffffffL, &x290);
- { uint8_t x293; uint64_t x292 = _mulx_u64_out_u8(x280, 0x3f, &x293);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(0x0, x284, x286, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x287, x289, &x298);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x290, x292, &x301);
- { uint8_t x303 = (x302 + x293);
- { uint64_t _; uint8_t x306 = _addcarryx_u64(0x0, x265, x283, &_);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(x306, x268, x295, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x271, x298, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x274, x301, &x314);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x277, x303, &x317);
- { uint8_t x319 = (x318 + x278);
- { uint64_t x321; uint8_t x322 = _subborrow_u64(0x0, x308, 0xffffffffffffffefL, &x321);
- { uint64_t x324; uint8_t x325 = _subborrow_u64(x322, x311, 0xffffffffffffffffL, &x324);
- { uint64_t x327; uint8_t x328 = _subborrow_u64(x325, x314, 0xffffffffffffffffL, &x327);
- { uint64_t x330; uint8_t x331 = _subborrow_u64(x328, x317, 0x3f, &x330);
- { uint64_t _; uint8_t x334 = _subborrow_u64(x331, x319, 0x0, &_);
- { uint64_t x335 = cmovznz64(x334, x330, x317);
- { uint64_t x336 = cmovznz64(x334, x327, x314);
- { uint64_t x337 = cmovznz64(x334, x324, x311);
- { uint64_t x338 = cmovznz64(x334, x321, x308);
- out[0] = x338;
- out[1] = x337;
- out[2] = x336;
- out[3] = x335;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e198m17/femul.v b/src/Specific/montgomery64_2e198m17/femul.v
deleted file mode 100644
index ac1253894..000000000
--- a/src/Specific/montgomery64_2e198m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e198m17/femulDisplay.log b/src/Specific/montgomery64_2e198m17/femulDisplay.log
deleted file mode 100644
index 8823d6e80..000000000
--- a/src/Specific/montgomery64_2e198m17/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffefL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = mulx_u64_out_u8(x41, 0x3f);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint8_t x64 = (x63 + x54);
- uint64_t _, uint8_t x67 = addcarryx_u64(0x0, x17, x44);
- uint64_t x69, uint8_t x70 = addcarryx_u64(x67, x29, x56);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x32, x59);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x35, x62);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x38, x64);
- uint64_t x81, uint64_t x82 = mulx_u64(x7, x11);
- uint64_t x84, uint64_t x85 = mulx_u64(x7, x13);
- uint64_t x87, uint64_t x88 = mulx_u64(x7, x15);
- uint64_t x90, uint64_t x91 = mulx_u64(x7, x14);
- uint64_t x93, uint8_t x94 = addcarryx_u64(0x0, x82, x84);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x85, x87);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x88, x90);
- uint64_t x102, uint8_t _ = addcarryx_u64(0x0, x100, x91);
- uint64_t x105, uint8_t x106 = addcarryx_u64(0x0, x69, x81);
- uint64_t x108, uint8_t x109 = addcarryx_u64(x106, x72, x93);
- uint64_t x111, uint8_t x112 = addcarryx_u64(x109, x75, x96);
- uint64_t x114, uint8_t x115 = addcarryx_u64(x112, x78, x99);
- uint64_t x117, uint8_t x118 = addcarryx_u64(x115, x79, x102);
- uint64_t x120, uint64_t _ = mulx_u64(x105, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x123, uint64_t x124 = mulx_u64(x120, 0xffffffffffffffefL);
- uint64_t x126, uint64_t x127 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x129, uint64_t x130 = mulx_u64(x120, 0xffffffffffffffffL);
- uint64_t x132, uint8_t x133 = mulx_u64_out_u8(x120, 0x3f);
- uint64_t x135, uint8_t x136 = addcarryx_u64(0x0, x124, x126);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x127, x129);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x130, x132);
- uint8_t x143 = (x142 + x133);
- uint64_t _, uint8_t x146 = addcarryx_u64(0x0, x105, x123);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x108, x135);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x111, x138);
- uint64_t x154, uint8_t x155 = addcarryx_u64(x152, x114, x141);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x117, x143);
- uint8_t x159 = (x158 + x118);
- uint64_t x161, uint64_t x162 = mulx_u64(x9, x11);
- uint64_t x164, uint64_t x165 = mulx_u64(x9, x13);
- uint64_t x167, uint64_t x168 = mulx_u64(x9, x15);
- uint64_t x170, uint64_t x171 = mulx_u64(x9, x14);
- uint64_t x173, uint8_t x174 = addcarryx_u64(0x0, x162, x164);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x165, x167);
- uint64_t x179, uint8_t x180 = addcarryx_u64(x177, x168, x170);
- uint64_t x182, uint8_t _ = addcarryx_u64(0x0, x180, x171);
- uint64_t x185, uint8_t x186 = addcarryx_u64(0x0, x148, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x151, x173);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x154, x176);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x157, x179);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x159, x182);
- uint64_t x200, uint64_t _ = mulx_u64(x185, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x203, uint64_t x204 = mulx_u64(x200, 0xffffffffffffffefL);
- uint64_t x206, uint64_t x207 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x209, uint64_t x210 = mulx_u64(x200, 0xffffffffffffffffL);
- uint64_t x212, uint8_t x213 = mulx_u64_out_u8(x200, 0x3f);
- uint64_t x215, uint8_t x216 = addcarryx_u64(0x0, x204, x206);
- uint64_t x218, uint8_t x219 = addcarryx_u64(x216, x207, x209);
- uint64_t x221, uint8_t x222 = addcarryx_u64(x219, x210, x212);
- uint8_t x223 = (x222 + x213);
- uint64_t _, uint8_t x226 = addcarryx_u64(0x0, x185, x203);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x188, x215);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x191, x218);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x194, x221);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x197, x223);
- uint8_t x239 = (x238 + x198);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x11);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x13);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x15);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x14);
- uint64_t x253, uint8_t x254 = addcarryx_u64(0x0, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x248, x250);
- uint64_t x262, uint8_t _ = addcarryx_u64(0x0, x260, x251);
- uint64_t x265, uint8_t x266 = addcarryx_u64(0x0, x228, x241);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x239, x262);
- uint64_t x280, uint64_t _ = mulx_u64(x265, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x283, uint64_t x284 = mulx_u64(x280, 0xffffffffffffffefL);
- uint64_t x286, uint64_t x287 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x289, uint64_t x290 = mulx_u64(x280, 0xffffffffffffffffL);
- uint64_t x292, uint8_t x293 = mulx_u64_out_u8(x280, 0x3f);
- uint64_t x295, uint8_t x296 = addcarryx_u64(0x0, x284, x286);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x287, x289);
- uint64_t x301, uint8_t x302 = addcarryx_u64(x299, x290, x292);
- uint8_t x303 = (x302 + x293);
- uint64_t _, uint8_t x306 = addcarryx_u64(0x0, x265, x283);
- uint64_t x308, uint8_t x309 = addcarryx_u64(x306, x268, x295);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x271, x298);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x274, x301);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x277, x303);
- uint8_t x319 = (x318 + x278);
- uint64_t x321, uint8_t x322 = subborrow_u64(0x0, x308, 0xffffffffffffffefL);
- uint64_t x324, uint8_t x325 = subborrow_u64(x322, x311, 0xffffffffffffffffL);
- uint64_t x327, uint8_t x328 = subborrow_u64(x325, x314, 0xffffffffffffffffL);
- uint64_t x330, uint8_t x331 = subborrow_u64(x328, x317, 0x3f);
- uint64_t _, uint8_t x334 = subborrow_u64(x331, x319, 0x0);
- uint64_t x335 = cmovznz64(x334, x330, x317);
- uint64_t x336 = cmovznz64(x334, x327, x314);
- uint64_t x337 = cmovznz64(x334, x324, x311);
- uint64_t x338 = cmovznz64(x334, x321, x308);
- return (x335, x336, x337, x338))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e198m17/femulDisplay.v b/src/Specific/montgomery64_2e198m17/femulDisplay.v
deleted file mode 100644
index ffd6ef40e..000000000
--- a/src/Specific/montgomery64_2e198m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e198m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e198m17/fenz.c b/src/Specific/montgomery64_2e198m17/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e198m17/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e198m17/fenz.v b/src/Specific/montgomery64_2e198m17/fenz.v
deleted file mode 100644
index bb45a951c..000000000
--- a/src/Specific/montgomery64_2e198m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e198m17/fenzDisplay.log b/src/Specific/montgomery64_2e198m17/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e198m17/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e198m17/fenzDisplay.v b/src/Specific/montgomery64_2e198m17/fenzDisplay.v
deleted file mode 100644
index bf5efe3a9..000000000
--- a/src/Specific/montgomery64_2e198m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e198m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e198m17/feopp.c b/src/Specific/montgomery64_2e198m17/feopp.c
deleted file mode 100644
index 710608892..000000000
--- a/src/Specific/montgomery64_2e198m17/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffefL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint8_t x32 = ((uint8_t)x19 & 0x3f);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e198m17/feopp.v b/src/Specific/montgomery64_2e198m17/feopp.v
deleted file mode 100644
index ebbb8c49e..000000000
--- a/src/Specific/montgomery64_2e198m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e198m17/feoppDisplay.log b/src/Specific/montgomery64_2e198m17/feoppDisplay.log
deleted file mode 100644
index cb54ba741..000000000
--- a/src/Specific/montgomery64_2e198m17/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffefL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint8_t x32 = ((uint8_t)x19 & 0x3f);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e198m17/feoppDisplay.v b/src/Specific/montgomery64_2e198m17/feoppDisplay.v
deleted file mode 100644
index 4b1168124..000000000
--- a/src/Specific/montgomery64_2e198m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e198m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e198m17/fesquare.c b/src/Specific/montgomery64_2e198m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e198m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e198m17/fesub.c b/src/Specific/montgomery64_2e198m17/fesub.c
deleted file mode 100644
index eb73e957b..000000000
--- a/src/Specific/montgomery64_2e198m17/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffefL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint8_t x41 = ((uint8_t)x28 & 0x3f);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e198m17/fesub.v b/src/Specific/montgomery64_2e198m17/fesub.v
deleted file mode 100644
index 58e568aa0..000000000
--- a/src/Specific/montgomery64_2e198m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e198m17/fesubDisplay.log b/src/Specific/montgomery64_2e198m17/fesubDisplay.log
deleted file mode 100644
index a70ca85ad..000000000
--- a/src/Specific/montgomery64_2e198m17/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffefL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint8_t x41 = ((uint8_t)x28 & 0x3f);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e198m17/fesubDisplay.v b/src/Specific/montgomery64_2e198m17/fesubDisplay.v
deleted file mode 100644
index 5eb43966d..000000000
--- a/src/Specific/montgomery64_2e198m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e198m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e198m17/CurveParameters.v b/src/Specific/montgomery64_2e198m17_4limbs/CurveParameters.v
index 16c39e743..16c39e743 100644
--- a/src/Specific/montgomery64_2e198m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e198m17_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/Synthesis.v b/src/Specific/montgomery64_2e198m17_4limbs/Synthesis.v
new file mode 100644
index 000000000..8c1e199d8
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e198m17/compiler.sh b/src/Specific/montgomery64_2e198m17_4limbs/compiler.sh
index 55c2f43d1..55c2f43d1 100755
--- a/src/Specific/montgomery64_2e198m17/compiler.sh
+++ b/src/Specific/montgomery64_2e198m17_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e198m17/compilerxx.sh b/src/Specific/montgomery64_2e198m17_4limbs/compilerxx.sh
index 704c1246c..704c1246c 100755
--- a/src/Specific/montgomery64_2e198m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e198m17_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/feadd.v b/src/Specific/montgomery64_2e198m17_4limbs/feadd.v
new file mode 100644
index 000000000..94635fa24
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e198m17_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..7a94878bf
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/femul.v b/src/Specific/montgomery64_2e198m17_4limbs/femul.v
new file mode 100644
index 000000000..185665bac
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e198m17_4limbs/femulDisplay.v
new file mode 100644
index 000000000..d75c2feda
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/fenz.v b/src/Specific/montgomery64_2e198m17_4limbs/fenz.v
new file mode 100644
index 000000000..4a7446ca3
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e198m17_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..188c1157e
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/feopp.v b/src/Specific/montgomery64_2e198m17_4limbs/feopp.v
new file mode 100644
index 000000000..580fc90d0
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e198m17_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..24280fac3
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/fesub.v b/src/Specific/montgomery64_2e198m17_4limbs/fesub.v
new file mode 100644
index 000000000..9fa121538
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e198m17_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e198m17_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..016486afc
--- /dev/null
+++ b/src/Specific/montgomery64_2e198m17_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e198m17_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e198m17/py_interpreter.sh b/src/Specific/montgomery64_2e198m17_4limbs/py_interpreter.sh
index 4e637fbc6..4e637fbc6 100755
--- a/src/Specific/montgomery64_2e198m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e198m17_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/Synthesis.v b/src/Specific/montgomery64_2e205m45x2e198m1/Synthesis.v
deleted file mode 100644
index c198f878c..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feadd.c b/src/Specific/montgomery64_2e205m45x2e198m1/feadd.c
deleted file mode 100644
index efa3e56d5..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x14bf, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feadd.v b/src/Specific/montgomery64_2e205m45x2e198m1/feadd.v
deleted file mode 100644
index 1045be305..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.log b/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.log
deleted file mode 100644
index f0bef4fdc..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x14bf);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.v
deleted file mode 100644
index ec3b10113..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/femul.c b/src/Specific/montgomery64_2e205m45x2e198m1/femul.c
deleted file mode 100644
index 48e9c8511..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/femul.c
+++ /dev/null
@@ -1,126 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t x42; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x17, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x17, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x17, 0x14bf, &x51);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(0x0, x42, x44, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t _ = _addcarryx_u64(0x0, x60, x51, &x62);
- { uint64_t _; uint8_t x66 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x29, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x32, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x35, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x38, x62, &x77);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x11, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x13, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x15, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x14, &x90);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(0x0, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t _ = _addcarryx_u64(0x0, x99, x90, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(0x0, x68, x80, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x78, x101, &x116);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x104, 0xffffffffffffffffL, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x104, 0xffffffffffffffffL, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x104, 0xffffffffffffffffL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x104, 0x14bf, &x129);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(0x0, x120, x122, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(x132, x123, x125, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x126, x128, &x137);
- { uint64_t x140; uint8_t _ = _addcarryx_u64(0x0, x138, x129, &x140);
- { uint64_t _; uint8_t x144 = _addcarryx_u64(0x0, x104, x119, &_);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x107, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x110, x134, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x113, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x116, x140, &x155);
- { uint8_t x157 = (x156 + x117);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x11, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x13, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x15, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x14, &x169);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(0x0, x160, x162, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x163, x165, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x166, x168, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x169, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(0x0, x146, x159, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x152, x174, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x157, x180, &x195);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x183, 0xffffffffffffffffL, &x199);
- { uint64_t x202; uint64_t x201 = _mulx_u64(x183, 0xffffffffffffffffL, &x202);
- { uint64_t x205; uint64_t x204 = _mulx_u64(x183, 0xffffffffffffffffL, &x205);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x183, 0x14bf, &x208);
- { uint64_t x210; uint8_t x211 = _addcarryx_u64(0x0, x199, x201, &x210);
- { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x202, x204, &x213);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x205, x207, &x216);
- { uint64_t x219; uint8_t _ = _addcarryx_u64(0x0, x217, x208, &x219);
- { uint64_t _; uint8_t x223 = _addcarryx_u64(0x0, x183, x198, &_);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x186, x210, &x225);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x189, x213, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x192, x216, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x195, x219, &x234);
- { uint8_t x236 = (x235 + x196);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x11, &x239);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x13, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x15, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x14, &x248);
- { uint64_t x250; uint8_t x251 = _addcarryx_u64(0x0, x239, x241, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t _ = _addcarryx_u64(0x0, x257, x248, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(0x0, x225, x238, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x228, x250, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x236, x259, &x274);
- { uint64_t x278; uint64_t x277 = _mulx_u64(x262, 0xffffffffffffffffL, &x278);
- { uint64_t x281; uint64_t x280 = _mulx_u64(x262, 0xffffffffffffffffL, &x281);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x262, 0xffffffffffffffffL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x262, 0x14bf, &x287);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(0x0, x278, x280, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x281, x283, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x284, x286, &x295);
- { uint64_t x298; uint8_t _ = _addcarryx_u64(0x0, x296, x287, &x298);
- { uint64_t _; uint8_t x302 = _addcarryx_u64(0x0, x262, x277, &_);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x265, x289, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x268, x292, &x307);
- { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x271, x295, &x310);
- { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x274, x298, &x313);
- { uint8_t x315 = (x314 + x275);
- { uint64_t x317; uint8_t x318 = _subborrow_u64(0x0, x304, 0xffffffffffffffffL, &x317);
- { uint64_t x320; uint8_t x321 = _subborrow_u64(x318, x307, 0xffffffffffffffffL, &x320);
- { uint64_t x323; uint8_t x324 = _subborrow_u64(x321, x310, 0xffffffffffffffffL, &x323);
- { uint64_t x326; uint8_t x327 = _subborrow_u64(x324, x313, 0x14bf, &x326);
- { uint64_t _; uint8_t x330 = _subborrow_u64(x327, x315, 0x0, &_);
- { uint64_t x331 = cmovznz64(x330, x326, x313);
- { uint64_t x332 = cmovznz64(x330, x323, x310);
- { uint64_t x333 = cmovznz64(x330, x320, x307);
- { uint64_t x334 = cmovznz64(x330, x317, x304);
- out[0] = x334;
- out[1] = x333;
- out[2] = x332;
- out[3] = x331;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/femul.v b/src/Specific/montgomery64_2e205m45x2e198m1/femul.v
deleted file mode 100644
index 93a255403..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.log b/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.log
deleted file mode 100644
index 1d65f9a33..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.log
+++ /dev/null
@@ -1,118 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t x42 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x47, uint64_t x48 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x17, 0x14bf);
- uint64_t x53, uint8_t x54 = addcarryx_u64(0x0, x42, x44);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t _ = addcarryx_u64(0x0, x60, x51);
- uint64_t _, uint8_t x66 = addcarryx_u64(0x0, x17, x41);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x29, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x32, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x35, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x38, x62);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x11);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x13);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x15);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x14);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t _ = addcarryx_u64(0x0, x99, x90);
- uint64_t x104, uint8_t x105 = addcarryx_u64(0x0, x68, x80);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x78, x101);
- uint64_t x119, uint64_t x120 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x122, uint64_t x123 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x125, uint64_t x126 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x128, uint64_t x129 = mulx_u64(x104, 0x14bf);
- uint64_t x131, uint8_t x132 = addcarryx_u64(0x0, x120, x122);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x123, x125);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x126, x128);
- uint64_t x140, uint8_t _ = addcarryx_u64(0x0, x138, x129);
- uint64_t _, uint8_t x144 = addcarryx_u64(0x0, x104, x119);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x107, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x110, x134);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x113, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x116, x140);
- uint8_t x157 = (x156 + x117);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x11);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x13);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x15);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x14);
- uint64_t x171, uint8_t x172 = addcarryx_u64(0x0, x160, x162);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x163, x165);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x166, x168);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x169);
- uint64_t x183, uint8_t x184 = addcarryx_u64(0x0, x146, x159);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x152, x174);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x157, x180);
- uint64_t x198, uint64_t x199 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x201, uint64_t x202 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x204, uint64_t x205 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x207, uint64_t x208 = mulx_u64(x183, 0x14bf);
- uint64_t x210, uint8_t x211 = addcarryx_u64(0x0, x199, x201);
- uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x202, x204);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x205, x207);
- uint64_t x219, uint8_t _ = addcarryx_u64(0x0, x217, x208);
- uint64_t _, uint8_t x223 = addcarryx_u64(0x0, x183, x198);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x186, x210);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x189, x213);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x192, x216);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x195, x219);
- uint8_t x236 = (x235 + x196);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x11);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x13);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x15);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x14);
- uint64_t x250, uint8_t x251 = addcarryx_u64(0x0, x239, x241);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t _ = addcarryx_u64(0x0, x257, x248);
- uint64_t x262, uint8_t x263 = addcarryx_u64(0x0, x225, x238);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x228, x250);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x236, x259);
- uint64_t x277, uint64_t x278 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x280, uint64_t x281 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x283, uint64_t x284 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x286, uint64_t x287 = mulx_u64(x262, 0x14bf);
- uint64_t x289, uint8_t x290 = addcarryx_u64(0x0, x278, x280);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x281, x283);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x284, x286);
- uint64_t x298, uint8_t _ = addcarryx_u64(0x0, x296, x287);
- uint64_t _, uint8_t x302 = addcarryx_u64(0x0, x262, x277);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x265, x289);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x268, x292);
- uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x271, x295);
- uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x274, x298);
- uint8_t x315 = (x314 + x275);
- uint64_t x317, uint8_t x318 = subborrow_u64(0x0, x304, 0xffffffffffffffffL);
- uint64_t x320, uint8_t x321 = subborrow_u64(x318, x307, 0xffffffffffffffffL);
- uint64_t x323, uint8_t x324 = subborrow_u64(x321, x310, 0xffffffffffffffffL);
- uint64_t x326, uint8_t x327 = subborrow_u64(x324, x313, 0x14bf);
- uint64_t _, uint8_t x330 = subborrow_u64(x327, x315, 0x0);
- uint64_t x331 = cmovznz64(x330, x326, x313);
- uint64_t x332 = cmovznz64(x330, x323, x310);
- uint64_t x333 = cmovznz64(x330, x320, x307);
- uint64_t x334 = cmovznz64(x330, x317, x304);
- return (x331, x332, x333, x334))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.v
deleted file mode 100644
index 6db9ed501..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fenz.c b/src/Specific/montgomery64_2e205m45x2e198m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fenz.v b/src/Specific/montgomery64_2e205m45x2e198m1/fenz.v
deleted file mode 100644
index 14dd318e7..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.log b/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.v
deleted file mode 100644
index 53a37a651..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feopp.c b/src/Specific/montgomery64_2e205m45x2e198m1/feopp.c
deleted file mode 100644
index 0f3e0e288..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffffL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x14bf);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feopp.v b/src/Specific/montgomery64_2e205m45x2e198m1/feopp.v
deleted file mode 100644
index 29491a2e4..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.log b/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.log
deleted file mode 100644
index 1d4dfdaf4..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffffL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x14bf);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.v
deleted file mode 100644
index b1cd7c97e..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fesquare.c b/src/Specific/montgomery64_2e205m45x2e198m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fesub.c b/src/Specific/montgomery64_2e205m45x2e198m1/fesub.c
deleted file mode 100644
index 8a803be34..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x14bf);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fesub.v b/src/Specific/montgomery64_2e205m45x2e198m1/fesub.v
deleted file mode 100644
index 2baac31cc..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.log b/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.log
deleted file mode 100644
index ea83e4737..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x14bf);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.v
deleted file mode 100644
index 5777d734a..000000000
--- a/src/Specific/montgomery64_2e205m45x2e198m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/CurveParameters.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/CurveParameters.v
index 69690d6d5..69690d6d5 100644
--- a/src/Specific/montgomery64_2e205m45x2e198m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..d6a3ee4d8
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/compiler.sh b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/compiler.sh
index ee7ad3da3..ee7ad3da3 100755
--- a/src/Specific/montgomery64_2e205m45x2e198m1/compiler.sh
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/compilerxx.sh b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/compilerxx.sh
index c7a92381e..c7a92381e 100755
--- a/src/Specific/montgomery64_2e205m45x2e198m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feadd.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feadd.v
new file mode 100644
index 000000000..64b8ec57c
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..325ad0713
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femul.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femul.v
new file mode 100644
index 000000000..877c1dac7
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..81cb9de27
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenz.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenz.v
new file mode 100644
index 000000000..c4a3d1b8f
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..695e0c41a
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feopp.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feopp.v
new file mode 100644
index 000000000..3c2768abb
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..340969cfe
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesub.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesub.v
new file mode 100644
index 000000000..f77e07583
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..dd01cb919
--- /dev/null
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e205m45x2e198m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e205m45x2e198m1/py_interpreter.sh b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/py_interpreter.sh
index 65ae1af0b..65ae1af0b 100755
--- a/src/Specific/montgomery64_2e205m45x2e198m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e205m45x2e198m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e206m5/Synthesis.v b/src/Specific/montgomery64_2e206m5/Synthesis.v
deleted file mode 100644
index 31b23d27b..000000000
--- a/src/Specific/montgomery64_2e206m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e206m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e206m5/feadd.c b/src/Specific/montgomery64_2e206m5/feadd.c
deleted file mode 100644
index bf6500712..000000000
--- a/src/Specific/montgomery64_2e206m5/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffffbL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3fff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e206m5/feadd.v b/src/Specific/montgomery64_2e206m5/feadd.v
deleted file mode 100644
index 41c2cd7c1..000000000
--- a/src/Specific/montgomery64_2e206m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e206m5/feaddDisplay.log b/src/Specific/montgomery64_2e206m5/feaddDisplay.log
deleted file mode 100644
index b639a1e26..000000000
--- a/src/Specific/montgomery64_2e206m5/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffffbL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3fff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e206m5/feaddDisplay.v b/src/Specific/montgomery64_2e206m5/feaddDisplay.v
deleted file mode 100644
index c91f01804..000000000
--- a/src/Specific/montgomery64_2e206m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e206m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e206m5/femul.c b/src/Specific/montgomery64_2e206m5/femul.c
deleted file mode 100644
index 63fd232b1..000000000
--- a/src/Specific/montgomery64_2e206m5/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xcccccccccccccccdL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffffbL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x3fff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xcccccccccccccccdL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffffbL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x3fff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xcccccccccccccccdL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffffbL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x3fff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xcccccccccccccccdL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffffbL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x3fff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffffbL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x3fff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e206m5/femul.v b/src/Specific/montgomery64_2e206m5/femul.v
deleted file mode 100644
index bd1ec1695..000000000
--- a/src/Specific/montgomery64_2e206m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e206m5/femulDisplay.log b/src/Specific/montgomery64_2e206m5/femulDisplay.log
deleted file mode 100644
index 597866bef..000000000
--- a/src/Specific/montgomery64_2e206m5/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xcccccccccccccccdL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffffbL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x3fff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xcccccccccccccccdL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffffbL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x3fff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xcccccccccccccccdL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffffbL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x3fff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xcccccccccccccccdL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffffbL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x3fff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffffbL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x3fff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e206m5/femulDisplay.v b/src/Specific/montgomery64_2e206m5/femulDisplay.v
deleted file mode 100644
index 2c6b5f335..000000000
--- a/src/Specific/montgomery64_2e206m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e206m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e206m5/fenz.c b/src/Specific/montgomery64_2e206m5/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e206m5/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e206m5/fenz.v b/src/Specific/montgomery64_2e206m5/fenz.v
deleted file mode 100644
index 87cbd258a..000000000
--- a/src/Specific/montgomery64_2e206m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e206m5/fenzDisplay.log b/src/Specific/montgomery64_2e206m5/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e206m5/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e206m5/fenzDisplay.v b/src/Specific/montgomery64_2e206m5/fenzDisplay.v
deleted file mode 100644
index 38a408d40..000000000
--- a/src/Specific/montgomery64_2e206m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e206m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e206m5/feopp.c b/src/Specific/montgomery64_2e206m5/feopp.c
deleted file mode 100644
index 14512cb65..000000000
--- a/src/Specific/montgomery64_2e206m5/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffffbL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x3fff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e206m5/feopp.v b/src/Specific/montgomery64_2e206m5/feopp.v
deleted file mode 100644
index bcd3e106b..000000000
--- a/src/Specific/montgomery64_2e206m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e206m5/feoppDisplay.log b/src/Specific/montgomery64_2e206m5/feoppDisplay.log
deleted file mode 100644
index 66766af29..000000000
--- a/src/Specific/montgomery64_2e206m5/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffffbL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x3fff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e206m5/feoppDisplay.v b/src/Specific/montgomery64_2e206m5/feoppDisplay.v
deleted file mode 100644
index 308f139bd..000000000
--- a/src/Specific/montgomery64_2e206m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e206m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e206m5/fesquare.c b/src/Specific/montgomery64_2e206m5/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e206m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e206m5/fesub.c b/src/Specific/montgomery64_2e206m5/fesub.c
deleted file mode 100644
index e8a81cfcb..000000000
--- a/src/Specific/montgomery64_2e206m5/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffffbL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x3fff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e206m5/fesub.v b/src/Specific/montgomery64_2e206m5/fesub.v
deleted file mode 100644
index 3b20f1a67..000000000
--- a/src/Specific/montgomery64_2e206m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e206m5/fesubDisplay.log b/src/Specific/montgomery64_2e206m5/fesubDisplay.log
deleted file mode 100644
index c2474635a..000000000
--- a/src/Specific/montgomery64_2e206m5/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffffbL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x3fff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e206m5/fesubDisplay.v b/src/Specific/montgomery64_2e206m5/fesubDisplay.v
deleted file mode 100644
index 33e9348d2..000000000
--- a/src/Specific/montgomery64_2e206m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e206m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e206m5/CurveParameters.v b/src/Specific/montgomery64_2e206m5_4limbs/CurveParameters.v
index b96f6d0a6..b96f6d0a6 100644
--- a/src/Specific/montgomery64_2e206m5/CurveParameters.v
+++ b/src/Specific/montgomery64_2e206m5_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/Synthesis.v b/src/Specific/montgomery64_2e206m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..2b2669eb6
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e206m5/compiler.sh b/src/Specific/montgomery64_2e206m5_4limbs/compiler.sh
index ec3f700a9..ec3f700a9 100755
--- a/src/Specific/montgomery64_2e206m5/compiler.sh
+++ b/src/Specific/montgomery64_2e206m5_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e206m5/compilerxx.sh b/src/Specific/montgomery64_2e206m5_4limbs/compilerxx.sh
index 929675969..929675969 100755
--- a/src/Specific/montgomery64_2e206m5/compilerxx.sh
+++ b/src/Specific/montgomery64_2e206m5_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/feadd.v b/src/Specific/montgomery64_2e206m5_4limbs/feadd.v
new file mode 100644
index 000000000..863728097
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e206m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..2b0d45f81
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/femul.v b/src/Specific/montgomery64_2e206m5_4limbs/femul.v
new file mode 100644
index 000000000..8ceef20c4
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e206m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..0c1e8f71c
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/fenz.v b/src/Specific/montgomery64_2e206m5_4limbs/fenz.v
new file mode 100644
index 000000000..29e13f108
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e206m5_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..239ba0e38
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/feopp.v b/src/Specific/montgomery64_2e206m5_4limbs/feopp.v
new file mode 100644
index 000000000..da531035a
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e206m5_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..c1cfbd778
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/fesub.v b/src/Specific/montgomery64_2e206m5_4limbs/fesub.v
new file mode 100644
index 000000000..b8819bb15
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e206m5_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e206m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..8911c0480
--- /dev/null
+++ b/src/Specific/montgomery64_2e206m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e206m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e206m5/py_interpreter.sh b/src/Specific/montgomery64_2e206m5_4limbs/py_interpreter.sh
index 80e73f064..80e73f064 100755
--- a/src/Specific/montgomery64_2e206m5/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e206m5_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e212m29/Synthesis.v b/src/Specific/montgomery64_2e212m29/Synthesis.v
deleted file mode 100644
index 622992994..000000000
--- a/src/Specific/montgomery64_2e212m29/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e212m29.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e212m29/feadd.c b/src/Specific/montgomery64_2e212m29/feadd.c
deleted file mode 100644
index 849154657..000000000
--- a/src/Specific/montgomery64_2e212m29/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffe3L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xfffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e212m29/feadd.v b/src/Specific/montgomery64_2e212m29/feadd.v
deleted file mode 100644
index 4dd578b04..000000000
--- a/src/Specific/montgomery64_2e212m29/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e212m29/feaddDisplay.log b/src/Specific/montgomery64_2e212m29/feaddDisplay.log
deleted file mode 100644
index 7d014a6a5..000000000
--- a/src/Specific/montgomery64_2e212m29/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffe3L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xfffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e212m29/feaddDisplay.v b/src/Specific/montgomery64_2e212m29/feaddDisplay.v
deleted file mode 100644
index 32614397f..000000000
--- a/src/Specific/montgomery64_2e212m29/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e212m29.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e212m29/femul.c b/src/Specific/montgomery64_2e212m29/femul.c
deleted file mode 100644
index 1782985d0..000000000
--- a/src/Specific/montgomery64_2e212m29/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x34f72c234f72c235, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffe3L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0xfffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x34f72c234f72c235, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffffe3L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0xfffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x34f72c234f72c235, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffffe3L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0xfffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x34f72c234f72c235, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffffe3L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0xfffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffffe3L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0xfffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e212m29/femul.v b/src/Specific/montgomery64_2e212m29/femul.v
deleted file mode 100644
index 49bf0b3c1..000000000
--- a/src/Specific/montgomery64_2e212m29/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e212m29/femulDisplay.log b/src/Specific/montgomery64_2e212m29/femulDisplay.log
deleted file mode 100644
index 98e14dbdc..000000000
--- a/src/Specific/montgomery64_2e212m29/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x34f72c234f72c235);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffe3L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0xfffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x34f72c234f72c235);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffffe3L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0xfffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x34f72c234f72c235);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffffe3L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0xfffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x34f72c234f72c235);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffffe3L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0xfffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffffe3L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0xfffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e212m29/femulDisplay.v b/src/Specific/montgomery64_2e212m29/femulDisplay.v
deleted file mode 100644
index bff16ba22..000000000
--- a/src/Specific/montgomery64_2e212m29/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e212m29.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e212m29/fenz.c b/src/Specific/montgomery64_2e212m29/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e212m29/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e212m29/fenz.v b/src/Specific/montgomery64_2e212m29/fenz.v
deleted file mode 100644
index cc2c0a0d0..000000000
--- a/src/Specific/montgomery64_2e212m29/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e212m29/fenzDisplay.log b/src/Specific/montgomery64_2e212m29/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e212m29/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e212m29/fenzDisplay.v b/src/Specific/montgomery64_2e212m29/fenzDisplay.v
deleted file mode 100644
index c7928772b..000000000
--- a/src/Specific/montgomery64_2e212m29/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e212m29.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e212m29/feopp.c b/src/Specific/montgomery64_2e212m29/feopp.c
deleted file mode 100644
index ad381e68b..000000000
--- a/src/Specific/montgomery64_2e212m29/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffe3L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xfffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e212m29/feopp.v b/src/Specific/montgomery64_2e212m29/feopp.v
deleted file mode 100644
index 69263a761..000000000
--- a/src/Specific/montgomery64_2e212m29/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e212m29/feoppDisplay.log b/src/Specific/montgomery64_2e212m29/feoppDisplay.log
deleted file mode 100644
index 3b7584aeb..000000000
--- a/src/Specific/montgomery64_2e212m29/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffe3L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xfffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e212m29/feoppDisplay.v b/src/Specific/montgomery64_2e212m29/feoppDisplay.v
deleted file mode 100644
index b0b39b915..000000000
--- a/src/Specific/montgomery64_2e212m29/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e212m29.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e212m29/fesquare.c b/src/Specific/montgomery64_2e212m29/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e212m29/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e212m29/fesub.c b/src/Specific/montgomery64_2e212m29/fesub.c
deleted file mode 100644
index 7911800fc..000000000
--- a/src/Specific/montgomery64_2e212m29/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffe3L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xfffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e212m29/fesub.v b/src/Specific/montgomery64_2e212m29/fesub.v
deleted file mode 100644
index fc6dd5434..000000000
--- a/src/Specific/montgomery64_2e212m29/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e212m29/fesubDisplay.log b/src/Specific/montgomery64_2e212m29/fesubDisplay.log
deleted file mode 100644
index 11fdb98c0..000000000
--- a/src/Specific/montgomery64_2e212m29/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffe3L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xfffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e212m29/fesubDisplay.v b/src/Specific/montgomery64_2e212m29/fesubDisplay.v
deleted file mode 100644
index f71f4562e..000000000
--- a/src/Specific/montgomery64_2e212m29/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e212m29.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e212m29/CurveParameters.v b/src/Specific/montgomery64_2e212m29_4limbs/CurveParameters.v
index 569504adc..569504adc 100644
--- a/src/Specific/montgomery64_2e212m29/CurveParameters.v
+++ b/src/Specific/montgomery64_2e212m29_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/Synthesis.v b/src/Specific/montgomery64_2e212m29_4limbs/Synthesis.v
new file mode 100644
index 000000000..67eb0d836
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e212m29/compiler.sh b/src/Specific/montgomery64_2e212m29_4limbs/compiler.sh
index a7bfe6657..a7bfe6657 100755
--- a/src/Specific/montgomery64_2e212m29/compiler.sh
+++ b/src/Specific/montgomery64_2e212m29_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e212m29/compilerxx.sh b/src/Specific/montgomery64_2e212m29_4limbs/compilerxx.sh
index 92914e981..92914e981 100755
--- a/src/Specific/montgomery64_2e212m29/compilerxx.sh
+++ b/src/Specific/montgomery64_2e212m29_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/feadd.v b/src/Specific/montgomery64_2e212m29_4limbs/feadd.v
new file mode 100644
index 000000000..52e77bb5e
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e212m29_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..3901e8920
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/femul.v b/src/Specific/montgomery64_2e212m29_4limbs/femul.v
new file mode 100644
index 000000000..3e84d080d
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e212m29_4limbs/femulDisplay.v
new file mode 100644
index 000000000..05a1d9342
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/fenz.v b/src/Specific/montgomery64_2e212m29_4limbs/fenz.v
new file mode 100644
index 000000000..094a58750
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e212m29_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..b0676631a
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/feopp.v b/src/Specific/montgomery64_2e212m29_4limbs/feopp.v
new file mode 100644
index 000000000..2b37dfe9c
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e212m29_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..b788cc2a9
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/fesub.v b/src/Specific/montgomery64_2e212m29_4limbs/fesub.v
new file mode 100644
index 000000000..cca124485
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e212m29_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e212m29_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..bbe2fd511
--- /dev/null
+++ b/src/Specific/montgomery64_2e212m29_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e212m29_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e212m29/py_interpreter.sh b/src/Specific/montgomery64_2e212m29_4limbs/py_interpreter.sh
index 75c8d487d..75c8d487d 100755
--- a/src/Specific/montgomery64_2e212m29/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e212m29_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e213m3/Synthesis.v b/src/Specific/montgomery64_2e213m3/Synthesis.v
deleted file mode 100644
index cc96feb31..000000000
--- a/src/Specific/montgomery64_2e213m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e213m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e213m3/feadd.c b/src/Specific/montgomery64_2e213m3/feadd.c
deleted file mode 100644
index 007d524ae..000000000
--- a/src/Specific/montgomery64_2e213m3/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffffdL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x1fffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e213m3/feadd.v b/src/Specific/montgomery64_2e213m3/feadd.v
deleted file mode 100644
index 98cb92367..000000000
--- a/src/Specific/montgomery64_2e213m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e213m3/feaddDisplay.log b/src/Specific/montgomery64_2e213m3/feaddDisplay.log
deleted file mode 100644
index a2348cfc3..000000000
--- a/src/Specific/montgomery64_2e213m3/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffffdL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x1fffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e213m3/feaddDisplay.v b/src/Specific/montgomery64_2e213m3/feaddDisplay.v
deleted file mode 100644
index b3d48ffab..000000000
--- a/src/Specific/montgomery64_2e213m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e213m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e213m3/femul.c b/src/Specific/montgomery64_2e213m3/femul.c
deleted file mode 100644
index 6e80f4806..000000000
--- a/src/Specific/montgomery64_2e213m3/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffffdL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x1fffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffffdL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x1fffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffffdL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x1fffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffffdL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x1fffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffffdL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x1fffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e213m3/femul.v b/src/Specific/montgomery64_2e213m3/femul.v
deleted file mode 100644
index e8c29e1d0..000000000
--- a/src/Specific/montgomery64_2e213m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e213m3/femulDisplay.log b/src/Specific/montgomery64_2e213m3/femulDisplay.log
deleted file mode 100644
index 2205892f9..000000000
--- a/src/Specific/montgomery64_2e213m3/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xaaaaaaaaaaaaaaabL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffffdL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x1fffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xaaaaaaaaaaaaaaabL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffffdL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x1fffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xaaaaaaaaaaaaaaabL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffffdL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x1fffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xaaaaaaaaaaaaaaabL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffffdL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x1fffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffffdL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x1fffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e213m3/femulDisplay.v b/src/Specific/montgomery64_2e213m3/femulDisplay.v
deleted file mode 100644
index 49d740462..000000000
--- a/src/Specific/montgomery64_2e213m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e213m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e213m3/fenz.c b/src/Specific/montgomery64_2e213m3/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e213m3/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e213m3/fenz.v b/src/Specific/montgomery64_2e213m3/fenz.v
deleted file mode 100644
index c7cc843f0..000000000
--- a/src/Specific/montgomery64_2e213m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e213m3/fenzDisplay.log b/src/Specific/montgomery64_2e213m3/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e213m3/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e213m3/fenzDisplay.v b/src/Specific/montgomery64_2e213m3/fenzDisplay.v
deleted file mode 100644
index 63335f429..000000000
--- a/src/Specific/montgomery64_2e213m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e213m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e213m3/feopp.c b/src/Specific/montgomery64_2e213m3/feopp.c
deleted file mode 100644
index 9600b219b..000000000
--- a/src/Specific/montgomery64_2e213m3/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffffdL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x1fffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e213m3/feopp.v b/src/Specific/montgomery64_2e213m3/feopp.v
deleted file mode 100644
index 0d3f9dd20..000000000
--- a/src/Specific/montgomery64_2e213m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e213m3/feoppDisplay.log b/src/Specific/montgomery64_2e213m3/feoppDisplay.log
deleted file mode 100644
index 9d47c9866..000000000
--- a/src/Specific/montgomery64_2e213m3/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffffdL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x1fffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e213m3/feoppDisplay.v b/src/Specific/montgomery64_2e213m3/feoppDisplay.v
deleted file mode 100644
index 1a6fed624..000000000
--- a/src/Specific/montgomery64_2e213m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e213m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e213m3/fesquare.c b/src/Specific/montgomery64_2e213m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e213m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e213m3/fesub.c b/src/Specific/montgomery64_2e213m3/fesub.c
deleted file mode 100644
index e27dc5c35..000000000
--- a/src/Specific/montgomery64_2e213m3/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffffdL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x1fffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e213m3/fesub.v b/src/Specific/montgomery64_2e213m3/fesub.v
deleted file mode 100644
index 94536376f..000000000
--- a/src/Specific/montgomery64_2e213m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e213m3/fesubDisplay.log b/src/Specific/montgomery64_2e213m3/fesubDisplay.log
deleted file mode 100644
index 066544600..000000000
--- a/src/Specific/montgomery64_2e213m3/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffffdL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x1fffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e213m3/fesubDisplay.v b/src/Specific/montgomery64_2e213m3/fesubDisplay.v
deleted file mode 100644
index 5bd3ceeb2..000000000
--- a/src/Specific/montgomery64_2e213m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e213m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e213m3/CurveParameters.v b/src/Specific/montgomery64_2e213m3_4limbs/CurveParameters.v
index f260326b0..f260326b0 100644
--- a/src/Specific/montgomery64_2e213m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e213m3_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/Synthesis.v b/src/Specific/montgomery64_2e213m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..a84e7e9b2
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e213m3/compiler.sh b/src/Specific/montgomery64_2e213m3_4limbs/compiler.sh
index 3e13ff5b3..3e13ff5b3 100755
--- a/src/Specific/montgomery64_2e213m3/compiler.sh
+++ b/src/Specific/montgomery64_2e213m3_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e213m3/compilerxx.sh b/src/Specific/montgomery64_2e213m3_4limbs/compilerxx.sh
index 2659bbac2..2659bbac2 100755
--- a/src/Specific/montgomery64_2e213m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e213m3_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/feadd.v b/src/Specific/montgomery64_2e213m3_4limbs/feadd.v
new file mode 100644
index 000000000..11efe4929
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e213m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..4cb88857e
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/femul.v b/src/Specific/montgomery64_2e213m3_4limbs/femul.v
new file mode 100644
index 000000000..a47f8679b
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e213m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..975b6e10e
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/fenz.v b/src/Specific/montgomery64_2e213m3_4limbs/fenz.v
new file mode 100644
index 000000000..1ee57066c
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e213m3_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..c71c5f639
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/feopp.v b/src/Specific/montgomery64_2e213m3_4limbs/feopp.v
new file mode 100644
index 000000000..c9f58a3e4
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e213m3_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..41f77b62c
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/fesub.v b/src/Specific/montgomery64_2e213m3_4limbs/fesub.v
new file mode 100644
index 000000000..28edaf9b5
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e213m3_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e213m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..dd8c0a0ed
--- /dev/null
+++ b/src/Specific/montgomery64_2e213m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e213m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e213m3/py_interpreter.sh b/src/Specific/montgomery64_2e213m3_4limbs/py_interpreter.sh
index 0ae74aca7..0ae74aca7 100755
--- a/src/Specific/montgomery64_2e213m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e213m3_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v b/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v
deleted file mode 100644
index 6b8c9ec50..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feadd.c b/src/Specific/montgomery64_2e216m2e108m1/feadd.c
deleted file mode 100644
index 8bbafb674..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffefffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feadd.v b/src/Specific/montgomery64_2e216m2e108m1/feadd.v
deleted file mode 100644
index 26c6a9fc6..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.log b/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.log
deleted file mode 100644
index 7b28d893c..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffefffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v
deleted file mode 100644
index ba43258d4..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/femul.c b/src/Specific/montgomery64_2e216m2e108m1/femul.c
deleted file mode 100644
index d010f3680..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/femul.c
+++ /dev/null
@@ -1,126 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t x42; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x17, 0xffffefffffffffffL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x17, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x17, 0xffffff, &x51);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(0x0, x42, x44, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t _ = _addcarryx_u64(0x0, x60, x51, &x62);
- { uint64_t _; uint8_t x66 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x29, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x32, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x35, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x38, x62, &x77);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x11, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x13, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x15, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x14, &x90);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(0x0, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t _ = _addcarryx_u64(0x0, x99, x90, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(0x0, x68, x80, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x78, x101, &x116);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x104, 0xffffffffffffffffL, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x104, 0xffffefffffffffffL, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x104, 0xffffffffffffffffL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x104, 0xffffff, &x129);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(0x0, x120, x122, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(x132, x123, x125, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x126, x128, &x137);
- { uint64_t x140; uint8_t _ = _addcarryx_u64(0x0, x138, x129, &x140);
- { uint64_t _; uint8_t x144 = _addcarryx_u64(0x0, x104, x119, &_);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x107, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x110, x134, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x113, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x116, x140, &x155);
- { uint8_t x157 = (x156 + x117);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x11, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x13, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x15, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x14, &x169);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(0x0, x160, x162, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x163, x165, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x166, x168, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x169, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(0x0, x146, x159, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x152, x174, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x157, x180, &x195);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x183, 0xffffffffffffffffL, &x199);
- { uint64_t x202; uint64_t x201 = _mulx_u64(x183, 0xffffefffffffffffL, &x202);
- { uint64_t x205; uint64_t x204 = _mulx_u64(x183, 0xffffffffffffffffL, &x205);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x183, 0xffffff, &x208);
- { uint64_t x210; uint8_t x211 = _addcarryx_u64(0x0, x199, x201, &x210);
- { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x202, x204, &x213);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x205, x207, &x216);
- { uint64_t x219; uint8_t _ = _addcarryx_u64(0x0, x217, x208, &x219);
- { uint64_t _; uint8_t x223 = _addcarryx_u64(0x0, x183, x198, &_);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x186, x210, &x225);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x189, x213, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x192, x216, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x195, x219, &x234);
- { uint8_t x236 = (x235 + x196);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x11, &x239);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x13, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x15, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x14, &x248);
- { uint64_t x250; uint8_t x251 = _addcarryx_u64(0x0, x239, x241, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t _ = _addcarryx_u64(0x0, x257, x248, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(0x0, x225, x238, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x228, x250, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x236, x259, &x274);
- { uint64_t x278; uint64_t x277 = _mulx_u64(x262, 0xffffffffffffffffL, &x278);
- { uint64_t x281; uint64_t x280 = _mulx_u64(x262, 0xffffefffffffffffL, &x281);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x262, 0xffffffffffffffffL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x262, 0xffffff, &x287);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(0x0, x278, x280, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x281, x283, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x284, x286, &x295);
- { uint64_t x298; uint8_t _ = _addcarryx_u64(0x0, x296, x287, &x298);
- { uint64_t _; uint8_t x302 = _addcarryx_u64(0x0, x262, x277, &_);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x265, x289, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x268, x292, &x307);
- { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x271, x295, &x310);
- { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x274, x298, &x313);
- { uint8_t x315 = (x314 + x275);
- { uint64_t x317; uint8_t x318 = _subborrow_u64(0x0, x304, 0xffffffffffffffffL, &x317);
- { uint64_t x320; uint8_t x321 = _subborrow_u64(x318, x307, 0xffffefffffffffffL, &x320);
- { uint64_t x323; uint8_t x324 = _subborrow_u64(x321, x310, 0xffffffffffffffffL, &x323);
- { uint64_t x326; uint8_t x327 = _subborrow_u64(x324, x313, 0xffffff, &x326);
- { uint64_t _; uint8_t x330 = _subborrow_u64(x327, x315, 0x0, &_);
- { uint64_t x331 = cmovznz64(x330, x326, x313);
- { uint64_t x332 = cmovznz64(x330, x323, x310);
- { uint64_t x333 = cmovznz64(x330, x320, x307);
- { uint64_t x334 = cmovznz64(x330, x317, x304);
- out[0] = x334;
- out[1] = x333;
- out[2] = x332;
- out[3] = x331;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/femul.v b/src/Specific/montgomery64_2e216m2e108m1/femul.v
deleted file mode 100644
index 0c3879af2..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.log b/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.log
deleted file mode 100644
index a24ee7be3..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.log
+++ /dev/null
@@ -1,118 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t x42 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x17, 0xffffefffffffffffL);
- uint64_t x47, uint64_t x48 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x17, 0xffffff);
- uint64_t x53, uint8_t x54 = addcarryx_u64(0x0, x42, x44);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t _ = addcarryx_u64(0x0, x60, x51);
- uint64_t _, uint8_t x66 = addcarryx_u64(0x0, x17, x41);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x29, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x32, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x35, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x38, x62);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x11);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x13);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x15);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x14);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t _ = addcarryx_u64(0x0, x99, x90);
- uint64_t x104, uint8_t x105 = addcarryx_u64(0x0, x68, x80);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x78, x101);
- uint64_t x119, uint64_t x120 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x122, uint64_t x123 = mulx_u64(x104, 0xffffefffffffffffL);
- uint64_t x125, uint64_t x126 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x128, uint64_t x129 = mulx_u64(x104, 0xffffff);
- uint64_t x131, uint8_t x132 = addcarryx_u64(0x0, x120, x122);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x123, x125);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x126, x128);
- uint64_t x140, uint8_t _ = addcarryx_u64(0x0, x138, x129);
- uint64_t _, uint8_t x144 = addcarryx_u64(0x0, x104, x119);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x107, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x110, x134);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x113, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x116, x140);
- uint8_t x157 = (x156 + x117);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x11);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x13);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x15);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x14);
- uint64_t x171, uint8_t x172 = addcarryx_u64(0x0, x160, x162);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x163, x165);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x166, x168);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x169);
- uint64_t x183, uint8_t x184 = addcarryx_u64(0x0, x146, x159);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x152, x174);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x157, x180);
- uint64_t x198, uint64_t x199 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x201, uint64_t x202 = mulx_u64(x183, 0xffffefffffffffffL);
- uint64_t x204, uint64_t x205 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x207, uint64_t x208 = mulx_u64(x183, 0xffffff);
- uint64_t x210, uint8_t x211 = addcarryx_u64(0x0, x199, x201);
- uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x202, x204);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x205, x207);
- uint64_t x219, uint8_t _ = addcarryx_u64(0x0, x217, x208);
- uint64_t _, uint8_t x223 = addcarryx_u64(0x0, x183, x198);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x186, x210);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x189, x213);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x192, x216);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x195, x219);
- uint8_t x236 = (x235 + x196);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x11);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x13);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x15);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x14);
- uint64_t x250, uint8_t x251 = addcarryx_u64(0x0, x239, x241);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t _ = addcarryx_u64(0x0, x257, x248);
- uint64_t x262, uint8_t x263 = addcarryx_u64(0x0, x225, x238);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x228, x250);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x236, x259);
- uint64_t x277, uint64_t x278 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x280, uint64_t x281 = mulx_u64(x262, 0xffffefffffffffffL);
- uint64_t x283, uint64_t x284 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x286, uint64_t x287 = mulx_u64(x262, 0xffffff);
- uint64_t x289, uint8_t x290 = addcarryx_u64(0x0, x278, x280);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x281, x283);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x284, x286);
- uint64_t x298, uint8_t _ = addcarryx_u64(0x0, x296, x287);
- uint64_t _, uint8_t x302 = addcarryx_u64(0x0, x262, x277);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x265, x289);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x268, x292);
- uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x271, x295);
- uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x274, x298);
- uint8_t x315 = (x314 + x275);
- uint64_t x317, uint8_t x318 = subborrow_u64(0x0, x304, 0xffffffffffffffffL);
- uint64_t x320, uint8_t x321 = subborrow_u64(x318, x307, 0xffffefffffffffffL);
- uint64_t x323, uint8_t x324 = subborrow_u64(x321, x310, 0xffffffffffffffffL);
- uint64_t x326, uint8_t x327 = subborrow_u64(x324, x313, 0xffffff);
- uint64_t _, uint8_t x330 = subborrow_u64(x327, x315, 0x0);
- uint64_t x331 = cmovznz64(x330, x326, x313);
- uint64_t x332 = cmovznz64(x330, x323, x310);
- uint64_t x333 = cmovznz64(x330, x320, x307);
- uint64_t x334 = cmovznz64(x330, x317, x304);
- return (x331, x332, x333, x334))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v
deleted file mode 100644
index 22e2a8b9f..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenz.c b/src/Specific/montgomery64_2e216m2e108m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenz.v b/src/Specific/montgomery64_2e216m2e108m1/fenz.v
deleted file mode 100644
index 19ca0dedf..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.log b/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v
deleted file mode 100644
index b5c29bc90..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feopp.c b/src/Specific/montgomery64_2e216m2e108m1/feopp.c
deleted file mode 100644
index 78aa58a09..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffffL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffefffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feopp.v b/src/Specific/montgomery64_2e216m2e108m1/feopp.v
deleted file mode 100644
index a37c55cdc..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.log b/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.log
deleted file mode 100644
index 70322fe03..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffffL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffefffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v
deleted file mode 100644
index 2b765ae10..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesquare.c b/src/Specific/montgomery64_2e216m2e108m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesub.c b/src/Specific/montgomery64_2e216m2e108m1/fesub.c
deleted file mode 100644
index 74132016f..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffefffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesub.v b/src/Specific/montgomery64_2e216m2e108m1/fesub.v
deleted file mode 100644
index ff7f12041..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.log b/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.log
deleted file mode 100644
index 7d9995253..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffefffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v b/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v
deleted file mode 100644
index 46fdc34cf..000000000
--- a/src/Specific/montgomery64_2e216m2e108m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e216m2e108m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/CurveParameters.v
index 945150d91..945150d91 100644
--- a/src/Specific/montgomery64_2e216m2e108m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..2274084d2
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/compiler.sh b/src/Specific/montgomery64_2e216m2e108m1_4limbs/compiler.sh
index 5c233a935..5c233a935 100755
--- a/src/Specific/montgomery64_2e216m2e108m1/compiler.sh
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e216m2e108m1/compilerxx.sh b/src/Specific/montgomery64_2e216m2e108m1_4limbs/compilerxx.sh
index d1b8f23ae..d1b8f23ae 100755
--- a/src/Specific/montgomery64_2e216m2e108m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/feadd.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feadd.v
new file mode 100644
index 000000000..1401567e2
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..bbd56c14b
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/femul.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/femul.v
new file mode 100644
index 000000000..dea143d0c
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..438efaade
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenz.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenz.v
new file mode 100644
index 000000000..f8e2faebf
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..fb39ad201
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/feopp.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feopp.v
new file mode 100644
index 000000000..4f7c9a494
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..aa876f5ed
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesub.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesub.v
new file mode 100644
index 000000000..d916bc6a4
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..692657b3f
--- /dev/null
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e216m2e108m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e216m2e108m1/py_interpreter.sh b/src/Specific/montgomery64_2e216m2e108m1_4limbs/py_interpreter.sh
index 57e84d282..57e84d282 100755
--- a/src/Specific/montgomery64_2e216m2e108m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e216m2e108m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e221m3/Synthesis.v b/src/Specific/montgomery64_2e221m3/Synthesis.v
deleted file mode 100644
index c92205107..000000000
--- a/src/Specific/montgomery64_2e221m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e221m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e221m3/feadd.c b/src/Specific/montgomery64_2e221m3/feadd.c
deleted file mode 100644
index 24f858061..000000000
--- a/src/Specific/montgomery64_2e221m3/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffffdL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x1fffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e221m3/feadd.v b/src/Specific/montgomery64_2e221m3/feadd.v
deleted file mode 100644
index 32df43ead..000000000
--- a/src/Specific/montgomery64_2e221m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e221m3/feaddDisplay.log b/src/Specific/montgomery64_2e221m3/feaddDisplay.log
deleted file mode 100644
index 212988003..000000000
--- a/src/Specific/montgomery64_2e221m3/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffffdL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x1fffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e221m3/feaddDisplay.v b/src/Specific/montgomery64_2e221m3/feaddDisplay.v
deleted file mode 100644
index c9a0e7c01..000000000
--- a/src/Specific/montgomery64_2e221m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e221m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e221m3/femul.c b/src/Specific/montgomery64_2e221m3/femul.c
deleted file mode 100644
index 9ef17c44b..000000000
--- a/src/Specific/montgomery64_2e221m3/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffffdL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x1fffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffffdL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x1fffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffffdL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x1fffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffffdL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x1fffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffffdL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x1fffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e221m3/femul.v b/src/Specific/montgomery64_2e221m3/femul.v
deleted file mode 100644
index 8a3b9fefa..000000000
--- a/src/Specific/montgomery64_2e221m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e221m3/femulDisplay.log b/src/Specific/montgomery64_2e221m3/femulDisplay.log
deleted file mode 100644
index b50291902..000000000
--- a/src/Specific/montgomery64_2e221m3/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xaaaaaaaaaaaaaaabL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffffdL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x1fffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xaaaaaaaaaaaaaaabL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffffdL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x1fffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xaaaaaaaaaaaaaaabL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffffdL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x1fffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xaaaaaaaaaaaaaaabL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffffdL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x1fffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffffdL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x1fffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e221m3/femulDisplay.v b/src/Specific/montgomery64_2e221m3/femulDisplay.v
deleted file mode 100644
index aaff5fd68..000000000
--- a/src/Specific/montgomery64_2e221m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e221m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e221m3/fenz.c b/src/Specific/montgomery64_2e221m3/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e221m3/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e221m3/fenz.v b/src/Specific/montgomery64_2e221m3/fenz.v
deleted file mode 100644
index e761130d4..000000000
--- a/src/Specific/montgomery64_2e221m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e221m3/fenzDisplay.log b/src/Specific/montgomery64_2e221m3/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e221m3/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e221m3/fenzDisplay.v b/src/Specific/montgomery64_2e221m3/fenzDisplay.v
deleted file mode 100644
index da8ffabed..000000000
--- a/src/Specific/montgomery64_2e221m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e221m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e221m3/feopp.c b/src/Specific/montgomery64_2e221m3/feopp.c
deleted file mode 100644
index 1f92ce83d..000000000
--- a/src/Specific/montgomery64_2e221m3/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffffdL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x1fffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e221m3/feopp.v b/src/Specific/montgomery64_2e221m3/feopp.v
deleted file mode 100644
index 09e677e80..000000000
--- a/src/Specific/montgomery64_2e221m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e221m3/feoppDisplay.log b/src/Specific/montgomery64_2e221m3/feoppDisplay.log
deleted file mode 100644
index f298014bc..000000000
--- a/src/Specific/montgomery64_2e221m3/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffffdL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x1fffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e221m3/feoppDisplay.v b/src/Specific/montgomery64_2e221m3/feoppDisplay.v
deleted file mode 100644
index 532f47996..000000000
--- a/src/Specific/montgomery64_2e221m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e221m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e221m3/fesquare.c b/src/Specific/montgomery64_2e221m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e221m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e221m3/fesub.c b/src/Specific/montgomery64_2e221m3/fesub.c
deleted file mode 100644
index 7db2e8c61..000000000
--- a/src/Specific/montgomery64_2e221m3/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffffdL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x1fffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e221m3/fesub.v b/src/Specific/montgomery64_2e221m3/fesub.v
deleted file mode 100644
index 91f03619e..000000000
--- a/src/Specific/montgomery64_2e221m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e221m3/fesubDisplay.log b/src/Specific/montgomery64_2e221m3/fesubDisplay.log
deleted file mode 100644
index 3c9cbaee3..000000000
--- a/src/Specific/montgomery64_2e221m3/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffffdL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x1fffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e221m3/fesubDisplay.v b/src/Specific/montgomery64_2e221m3/fesubDisplay.v
deleted file mode 100644
index 20a769273..000000000
--- a/src/Specific/montgomery64_2e221m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e221m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e221m3/CurveParameters.v b/src/Specific/montgomery64_2e221m3_4limbs/CurveParameters.v
index 2eb4ee31e..2eb4ee31e 100644
--- a/src/Specific/montgomery64_2e221m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e221m3_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/Synthesis.v b/src/Specific/montgomery64_2e221m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..e7ed95c62
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e221m3/compiler.sh b/src/Specific/montgomery64_2e221m3_4limbs/compiler.sh
index f0b75c142..f0b75c142 100755
--- a/src/Specific/montgomery64_2e221m3/compiler.sh
+++ b/src/Specific/montgomery64_2e221m3_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e221m3/compilerxx.sh b/src/Specific/montgomery64_2e221m3_4limbs/compilerxx.sh
index d14188c78..d14188c78 100755
--- a/src/Specific/montgomery64_2e221m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e221m3_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/feadd.v b/src/Specific/montgomery64_2e221m3_4limbs/feadd.v
new file mode 100644
index 000000000..ba27adcaf
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e221m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..da667cf63
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/femul.v b/src/Specific/montgomery64_2e221m3_4limbs/femul.v
new file mode 100644
index 000000000..7ee4bd6dd
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e221m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..6107f200d
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/fenz.v b/src/Specific/montgomery64_2e221m3_4limbs/fenz.v
new file mode 100644
index 000000000..75c98b024
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e221m3_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..72a05c3d0
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/feopp.v b/src/Specific/montgomery64_2e221m3_4limbs/feopp.v
new file mode 100644
index 000000000..6d0b247e3
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e221m3_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..cdefdba08
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/fesub.v b/src/Specific/montgomery64_2e221m3_4limbs/fesub.v
new file mode 100644
index 000000000..d6843bca4
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e221m3_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e221m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..378491963
--- /dev/null
+++ b/src/Specific/montgomery64_2e221m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e221m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e221m3/py_interpreter.sh b/src/Specific/montgomery64_2e221m3_4limbs/py_interpreter.sh
index 0d3b6ff7f..0d3b6ff7f 100755
--- a/src/Specific/montgomery64_2e221m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e221m3_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e222m117/Synthesis.v b/src/Specific/montgomery64_2e222m117/Synthesis.v
deleted file mode 100644
index 4ccdbc9aa..000000000
--- a/src/Specific/montgomery64_2e222m117/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e222m117.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e222m117/feadd.c b/src/Specific/montgomery64_2e222m117/feadd.c
deleted file mode 100644
index f91088926..000000000
--- a/src/Specific/montgomery64_2e222m117/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffff8bL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3fffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e222m117/feadd.v b/src/Specific/montgomery64_2e222m117/feadd.v
deleted file mode 100644
index 0f2a71c77..000000000
--- a/src/Specific/montgomery64_2e222m117/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e222m117/feaddDisplay.log b/src/Specific/montgomery64_2e222m117/feaddDisplay.log
deleted file mode 100644
index 855ae784b..000000000
--- a/src/Specific/montgomery64_2e222m117/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffff8bL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3fffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e222m117/feaddDisplay.v b/src/Specific/montgomery64_2e222m117/feaddDisplay.v
deleted file mode 100644
index af7d09ac2..000000000
--- a/src/Specific/montgomery64_2e222m117/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e222m117.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e222m117/femul.c b/src/Specific/montgomery64_2e222m117/femul.c
deleted file mode 100644
index 899159869..000000000
--- a/src/Specific/montgomery64_2e222m117/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xcfdcfdcfdcfdcfddL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffff8bL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x3fffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xcfdcfdcfdcfdcfddL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffff8bL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x3fffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xcfdcfdcfdcfdcfddL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffff8bL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x3fffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xcfdcfdcfdcfdcfddL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffff8bL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x3fffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffff8bL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x3fffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e222m117/femul.v b/src/Specific/montgomery64_2e222m117/femul.v
deleted file mode 100644
index 78d354100..000000000
--- a/src/Specific/montgomery64_2e222m117/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e222m117/femulDisplay.log b/src/Specific/montgomery64_2e222m117/femulDisplay.log
deleted file mode 100644
index 2031fec31..000000000
--- a/src/Specific/montgomery64_2e222m117/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xcfdcfdcfdcfdcfddL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffff8bL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x3fffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xcfdcfdcfdcfdcfddL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffff8bL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x3fffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xcfdcfdcfdcfdcfddL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffff8bL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x3fffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xcfdcfdcfdcfdcfddL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffff8bL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x3fffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffff8bL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x3fffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e222m117/femulDisplay.v b/src/Specific/montgomery64_2e222m117/femulDisplay.v
deleted file mode 100644
index d55adb91f..000000000
--- a/src/Specific/montgomery64_2e222m117/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e222m117.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e222m117/fenz.c b/src/Specific/montgomery64_2e222m117/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e222m117/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e222m117/fenz.v b/src/Specific/montgomery64_2e222m117/fenz.v
deleted file mode 100644
index d0a147ba2..000000000
--- a/src/Specific/montgomery64_2e222m117/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e222m117/fenzDisplay.log b/src/Specific/montgomery64_2e222m117/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e222m117/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e222m117/fenzDisplay.v b/src/Specific/montgomery64_2e222m117/fenzDisplay.v
deleted file mode 100644
index 900592d01..000000000
--- a/src/Specific/montgomery64_2e222m117/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e222m117.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e222m117/feopp.c b/src/Specific/montgomery64_2e222m117/feopp.c
deleted file mode 100644
index 447eee8ab..000000000
--- a/src/Specific/montgomery64_2e222m117/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffff8bL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x3fffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e222m117/feopp.v b/src/Specific/montgomery64_2e222m117/feopp.v
deleted file mode 100644
index 6ec3f26ca..000000000
--- a/src/Specific/montgomery64_2e222m117/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e222m117/feoppDisplay.log b/src/Specific/montgomery64_2e222m117/feoppDisplay.log
deleted file mode 100644
index c4aa04fad..000000000
--- a/src/Specific/montgomery64_2e222m117/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffff8bL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x3fffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e222m117/feoppDisplay.v b/src/Specific/montgomery64_2e222m117/feoppDisplay.v
deleted file mode 100644
index 2e836af53..000000000
--- a/src/Specific/montgomery64_2e222m117/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e222m117.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e222m117/fesquare.c b/src/Specific/montgomery64_2e222m117/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e222m117/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e222m117/fesub.c b/src/Specific/montgomery64_2e222m117/fesub.c
deleted file mode 100644
index b138dafbd..000000000
--- a/src/Specific/montgomery64_2e222m117/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffff8bL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x3fffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e222m117/fesub.v b/src/Specific/montgomery64_2e222m117/fesub.v
deleted file mode 100644
index 80e3881e4..000000000
--- a/src/Specific/montgomery64_2e222m117/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e222m117/fesubDisplay.log b/src/Specific/montgomery64_2e222m117/fesubDisplay.log
deleted file mode 100644
index 13abe8776..000000000
--- a/src/Specific/montgomery64_2e222m117/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffff8bL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x3fffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e222m117/fesubDisplay.v b/src/Specific/montgomery64_2e222m117/fesubDisplay.v
deleted file mode 100644
index ea1b8a60e..000000000
--- a/src/Specific/montgomery64_2e222m117/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e222m117.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e222m117/CurveParameters.v b/src/Specific/montgomery64_2e222m117_4limbs/CurveParameters.v
index 894baebcb..894baebcb 100644
--- a/src/Specific/montgomery64_2e222m117/CurveParameters.v
+++ b/src/Specific/montgomery64_2e222m117_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/Synthesis.v b/src/Specific/montgomery64_2e222m117_4limbs/Synthesis.v
new file mode 100644
index 000000000..7ab729b8f
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e222m117/compiler.sh b/src/Specific/montgomery64_2e222m117_4limbs/compiler.sh
index 30ec55070..30ec55070 100755
--- a/src/Specific/montgomery64_2e222m117/compiler.sh
+++ b/src/Specific/montgomery64_2e222m117_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e222m117/compilerxx.sh b/src/Specific/montgomery64_2e222m117_4limbs/compilerxx.sh
index 0f7b6824b..0f7b6824b 100755
--- a/src/Specific/montgomery64_2e222m117/compilerxx.sh
+++ b/src/Specific/montgomery64_2e222m117_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/feadd.v b/src/Specific/montgomery64_2e222m117_4limbs/feadd.v
new file mode 100644
index 000000000..52495a550
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e222m117_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..843dae2da
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/femul.v b/src/Specific/montgomery64_2e222m117_4limbs/femul.v
new file mode 100644
index 000000000..ea08179e2
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e222m117_4limbs/femulDisplay.v
new file mode 100644
index 000000000..68915c088
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/fenz.v b/src/Specific/montgomery64_2e222m117_4limbs/fenz.v
new file mode 100644
index 000000000..bf3a8e7af
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e222m117_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..f56874bf5
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/feopp.v b/src/Specific/montgomery64_2e222m117_4limbs/feopp.v
new file mode 100644
index 000000000..31c1016a0
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e222m117_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..824c8685c
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/fesub.v b/src/Specific/montgomery64_2e222m117_4limbs/fesub.v
new file mode 100644
index 000000000..f8ded826b
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e222m117_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e222m117_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7755e6aca
--- /dev/null
+++ b/src/Specific/montgomery64_2e222m117_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e222m117_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e222m117/py_interpreter.sh b/src/Specific/montgomery64_2e222m117_4limbs/py_interpreter.sh
index ae39189e8..ae39189e8 100755
--- a/src/Specific/montgomery64_2e222m117/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e222m117_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v b/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v
deleted file mode 100644
index 7ec5135ce..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feadd.c b/src/Specific/montgomery64_2e224m2e96p1/feadd.c
deleted file mode 100644
index 1cb91cd34..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0x1, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffff00000000L, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feadd.v b/src/Specific/montgomery64_2e224m2e96p1/feadd.v
deleted file mode 100644
index c850b0a4e..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.log b/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.log
deleted file mode 100644
index c653739ee..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0x1);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffff00000000L);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v
deleted file mode 100644
index c6082401d..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/femul.c b/src/Specific/montgomery64_2e224m2e96p1/femul.c
deleted file mode 100644
index eacac67f9..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/femul.c
+++ /dev/null
@@ -1,122 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffff00000000L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffff, &x51);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(0x0, x45, x47, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x48, x50, &x56);
- { uint64_t x59; uint8_t _ = _addcarryx_u64(0x0, x57, x51, &x59);
- { uint64_t _; uint8_t x63 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x65; uint8_t x66 = _addcarryx_u64(x63, x29, x44, &x65);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x32, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x35, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x38, x59, &x74);
- { uint64_t x78; uint64_t x77 = _mulx_u64(x7, x11, &x78);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x13, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x15, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x14, &x87);
- { uint64_t x89; uint8_t x90 = _addcarryx_u64(0x0, x78, x80, &x89);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(x90, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t _ = _addcarryx_u64(0x0, x96, x87, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(0x0, x65, x77, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x68, x89, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x75, x98, &x113);
- { uint64_t _; uint64_t x116 = _mulx_u64(x101, 0xffffffffffffffffL, &_);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x116, 0xffffffff00000000L, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x116, 0xffffffffffffffffL, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x116, 0xffffffff, &x126);
- { uint64_t x128; uint8_t x129 = _addcarryx_u64(0x0, x120, x122, &x128);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(x129, x123, x125, &x131);
- { uint64_t x134; uint8_t _ = _addcarryx_u64(0x0, x132, x126, &x134);
- { uint64_t _; uint8_t x138 = _addcarryx_u64(0x0, x101, x116, &_);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x104, x119, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x107, x128, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x110, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x113, x134, &x149);
- { uint8_t x151 = (x150 + x114);
- { uint64_t x154; uint64_t x153 = _mulx_u64(x9, x11, &x154);
- { uint64_t x157; uint64_t x156 = _mulx_u64(x9, x13, &x157);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x15, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x14, &x163);
- { uint64_t x165; uint8_t x166 = _addcarryx_u64(0x0, x154, x156, &x165);
- { uint64_t x168; uint8_t x169 = _addcarryx_u64(x166, x157, x159, &x168);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x160, x162, &x171);
- { uint64_t x174; uint8_t _ = _addcarryx_u64(0x0, x172, x163, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x140, x153, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x143, x165, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x146, x168, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x151, x174, &x189);
- { uint64_t _; uint64_t x192 = _mulx_u64(x177, 0xffffffffffffffffL, &_);
- { uint64_t x196; uint64_t x195 = _mulx_u64(x192, 0xffffffff00000000L, &x196);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x192, 0xffffffffffffffffL, &x199);
- { uint64_t x202; uint64_t x201 = _mulx_u64(x192, 0xffffffff, &x202);
- { uint64_t x204; uint8_t x205 = _addcarryx_u64(0x0, x196, x198, &x204);
- { uint64_t x207; uint8_t x208 = _addcarryx_u64(x205, x199, x201, &x207);
- { uint64_t x210; uint8_t _ = _addcarryx_u64(0x0, x208, x202, &x210);
- { uint64_t _; uint8_t x214 = _addcarryx_u64(0x0, x177, x192, &_);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x180, x195, &x216);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x183, x204, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x186, x207, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x189, x210, &x225);
- { uint8_t x227 = (x226 + x190);
- { uint64_t x230; uint64_t x229 = _mulx_u64(x8, x11, &x230);
- { uint64_t x233; uint64_t x232 = _mulx_u64(x8, x13, &x233);
- { uint64_t x236; uint64_t x235 = _mulx_u64(x8, x15, &x236);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x14, &x239);
- { uint64_t x241; uint8_t x242 = _addcarryx_u64(0x0, x230, x232, &x241);
- { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x233, x235, &x244);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x236, x238, &x247);
- { uint64_t x250; uint8_t _ = _addcarryx_u64(0x0, x248, x239, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x216, x229, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x219, x241, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x222, x244, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x225, x247, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x227, x250, &x265);
- { uint64_t _; uint64_t x268 = _mulx_u64(x253, 0xffffffffffffffffL, &_);
- { uint64_t x272; uint64_t x271 = _mulx_u64(x268, 0xffffffff00000000L, &x272);
- { uint64_t x275; uint64_t x274 = _mulx_u64(x268, 0xffffffffffffffffL, &x275);
- { uint64_t x278; uint64_t x277 = _mulx_u64(x268, 0xffffffff, &x278);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(0x0, x272, x274, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x275, x277, &x283);
- { uint64_t x286; uint8_t _ = _addcarryx_u64(0x0, x284, x278, &x286);
- { uint64_t _; uint8_t x290 = _addcarryx_u64(0x0, x253, x268, &_);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x256, x271, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x259, x280, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x262, x283, &x298);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x265, x286, &x301);
- { uint8_t x303 = (x302 + x266);
- { uint64_t x305; uint8_t x306 = _subborrow_u64(0x0, x292, 0x1, &x305);
- { uint64_t x308; uint8_t x309 = _subborrow_u64(x306, x295, 0xffffffff00000000L, &x308);
- { uint64_t x311; uint8_t x312 = _subborrow_u64(x309, x298, 0xffffffffffffffffL, &x311);
- { uint64_t x314; uint8_t x315 = _subborrow_u64(x312, x301, 0xffffffff, &x314);
- { uint64_t _; uint8_t x318 = _subborrow_u64(x315, x303, 0x0, &_);
- { uint64_t x319 = cmovznz64(x318, x314, x301);
- { uint64_t x320 = cmovznz64(x318, x311, x298);
- { uint64_t x321 = cmovznz64(x318, x308, x295);
- { uint64_t x322 = cmovznz64(x318, x305, x292);
- out[0] = x322;
- out[1] = x321;
- out[2] = x320;
- out[3] = x319;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/femul.v b/src/Specific/montgomery64_2e224m2e96p1/femul.v
deleted file mode 100644
index a5a4b11b8..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.log b/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.log
deleted file mode 100644
index 7482561e4..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.log
+++ /dev/null
@@ -1,114 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffff00000000L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffff);
- uint64_t x53, uint8_t x54 = addcarryx_u64(0x0, x45, x47);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x48, x50);
- uint64_t x59, uint8_t _ = addcarryx_u64(0x0, x57, x51);
- uint64_t _, uint8_t x63 = addcarryx_u64(0x0, x17, x41);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x29, x44);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x32, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x35, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x38, x59);
- uint64_t x77, uint64_t x78 = mulx_u64(x7, x11);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x13);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x15);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x14);
- uint64_t x89, uint8_t x90 = addcarryx_u64(0x0, x78, x80);
- uint64_t x92, uint8_t x93 = addcarryx_u64(x90, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t _ = addcarryx_u64(0x0, x96, x87);
- uint64_t x101, uint8_t x102 = addcarryx_u64(0x0, x65, x77);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x68, x89);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x75, x98);
- uint64_t x116, uint64_t _ = mulx_u64(x101, 0xffffffffffffffffL);
- uint64_t x119, uint64_t x120 = mulx_u64(x116, 0xffffffff00000000L);
- uint64_t x122, uint64_t x123 = mulx_u64(x116, 0xffffffffffffffffL);
- uint64_t x125, uint64_t x126 = mulx_u64(x116, 0xffffffff);
- uint64_t x128, uint8_t x129 = addcarryx_u64(0x0, x120, x122);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x123, x125);
- uint64_t x134, uint8_t _ = addcarryx_u64(0x0, x132, x126);
- uint64_t _, uint8_t x138 = addcarryx_u64(0x0, x101, x116);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x104, x119);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x107, x128);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x110, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x113, x134);
- uint8_t x151 = (x150 + x114);
- uint64_t x153, uint64_t x154 = mulx_u64(x9, x11);
- uint64_t x156, uint64_t x157 = mulx_u64(x9, x13);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x15);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x14);
- uint64_t x165, uint8_t x166 = addcarryx_u64(0x0, x154, x156);
- uint64_t x168, uint8_t x169 = addcarryx_u64(x166, x157, x159);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x160, x162);
- uint64_t x174, uint8_t _ = addcarryx_u64(0x0, x172, x163);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x140, x153);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x143, x165);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x146, x168);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x151, x174);
- uint64_t x192, uint64_t _ = mulx_u64(x177, 0xffffffffffffffffL);
- uint64_t x195, uint64_t x196 = mulx_u64(x192, 0xffffffff00000000L);
- uint64_t x198, uint64_t x199 = mulx_u64(x192, 0xffffffffffffffffL);
- uint64_t x201, uint64_t x202 = mulx_u64(x192, 0xffffffff);
- uint64_t x204, uint8_t x205 = addcarryx_u64(0x0, x196, x198);
- uint64_t x207, uint8_t x208 = addcarryx_u64(x205, x199, x201);
- uint64_t x210, uint8_t _ = addcarryx_u64(0x0, x208, x202);
- uint64_t _, uint8_t x214 = addcarryx_u64(0x0, x177, x192);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x180, x195);
- uint64_t x219, uint8_t x220 = addcarryx_u64(x217, x183, x204);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x186, x207);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x189, x210);
- uint8_t x227 = (x226 + x190);
- uint64_t x229, uint64_t x230 = mulx_u64(x8, x11);
- uint64_t x232, uint64_t x233 = mulx_u64(x8, x13);
- uint64_t x235, uint64_t x236 = mulx_u64(x8, x15);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x14);
- uint64_t x241, uint8_t x242 = addcarryx_u64(0x0, x230, x232);
- uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x233, x235);
- uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x236, x238);
- uint64_t x250, uint8_t _ = addcarryx_u64(0x0, x248, x239);
- uint64_t x253, uint8_t x254 = addcarryx_u64(0x0, x216, x229);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x219, x241);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x222, x244);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x225, x247);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x227, x250);
- uint64_t x268, uint64_t _ = mulx_u64(x253, 0xffffffffffffffffL);
- uint64_t x271, uint64_t x272 = mulx_u64(x268, 0xffffffff00000000L);
- uint64_t x274, uint64_t x275 = mulx_u64(x268, 0xffffffffffffffffL);
- uint64_t x277, uint64_t x278 = mulx_u64(x268, 0xffffffff);
- uint64_t x280, uint8_t x281 = addcarryx_u64(0x0, x272, x274);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x275, x277);
- uint64_t x286, uint8_t _ = addcarryx_u64(0x0, x284, x278);
- uint64_t _, uint8_t x290 = addcarryx_u64(0x0, x253, x268);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x256, x271);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x259, x280);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x262, x283);
- uint64_t x301, uint8_t x302 = addcarryx_u64(x299, x265, x286);
- uint8_t x303 = (x302 + x266);
- uint64_t x305, uint8_t x306 = subborrow_u64(0x0, x292, 0x1);
- uint64_t x308, uint8_t x309 = subborrow_u64(x306, x295, 0xffffffff00000000L);
- uint64_t x311, uint8_t x312 = subborrow_u64(x309, x298, 0xffffffffffffffffL);
- uint64_t x314, uint8_t x315 = subborrow_u64(x312, x301, 0xffffffff);
- uint64_t _, uint8_t x318 = subborrow_u64(x315, x303, 0x0);
- uint64_t x319 = cmovznz64(x318, x314, x301);
- uint64_t x320 = cmovznz64(x318, x311, x298);
- uint64_t x321 = cmovznz64(x318, x308, x295);
- uint64_t x322 = cmovznz64(x318, x305, x292);
- return (x319, x320, x321, x322))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v
deleted file mode 100644
index d75d7c69b..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenz.c b/src/Specific/montgomery64_2e224m2e96p1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenz.v b/src/Specific/montgomery64_2e224m2e96p1/fenz.v
deleted file mode 100644
index 54cfdc272..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.log b/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v
deleted file mode 100644
index 81c790d41..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feopp.c b/src/Specific/montgomery64_2e224m2e96p1/feopp.c
deleted file mode 100644
index 6bb56a416..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint8_t x20 = ((uint8_t)x19 & 0x1);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffff00000000L);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feopp.v b/src/Specific/montgomery64_2e224m2e96p1/feopp.v
deleted file mode 100644
index 8959a4772..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.log b/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.log
deleted file mode 100644
index 2885df362..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint8_t x20 = ((uint8_t)x19 & 0x1);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffff00000000L);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v
deleted file mode 100644
index f335f4ca7..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesquare.c b/src/Specific/montgomery64_2e224m2e96p1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesub.c b/src/Specific/montgomery64_2e224m2e96p1/fesub.c
deleted file mode 100644
index 91a2004fc..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint8_t x29 = ((uint8_t)x28 & 0x1);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffff00000000L);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesub.v b/src/Specific/montgomery64_2e224m2e96p1/fesub.v
deleted file mode 100644
index 6a2eff3b4..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.log b/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.log
deleted file mode 100644
index 73f4b09ed..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint8_t x29 = ((uint8_t)x28 & 0x1);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffff00000000L);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v b/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v
deleted file mode 100644
index 9a33236ee..000000000
--- a/src/Specific/montgomery64_2e224m2e96p1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e224m2e96p1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/CurveParameters.v
index e28cc7788..e28cc7788 100644
--- a/src/Specific/montgomery64_2e224m2e96p1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/Synthesis.v
new file mode 100644
index 000000000..fe000ddb6
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/compiler.sh b/src/Specific/montgomery64_2e224m2e96p1_4limbs/compiler.sh
index bcb760439..bcb760439 100755
--- a/src/Specific/montgomery64_2e224m2e96p1/compiler.sh
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e224m2e96p1/compilerxx.sh b/src/Specific/montgomery64_2e224m2e96p1_4limbs/compilerxx.sh
index 12fe4b0dc..12fe4b0dc 100755
--- a/src/Specific/montgomery64_2e224m2e96p1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/feadd.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feadd.v
new file mode 100644
index 000000000..86bc0cb4d
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..eaabe2e75
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/femul.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/femul.v
new file mode 100644
index 000000000..a0a30863f
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..88f2f2724
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenz.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenz.v
new file mode 100644
index 000000000..2145482c8
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..f4f781d8a
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/feopp.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feopp.v
new file mode 100644
index 000000000..af178f50e
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..db4a25b69
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesub.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesub.v
new file mode 100644
index 000000000..665bee9b6
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..d58f143e5
--- /dev/null
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e224m2e96p1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e224m2e96p1/py_interpreter.sh b/src/Specific/montgomery64_2e224m2e96p1_4limbs/py_interpreter.sh
index 442eebd51..442eebd51 100755
--- a/src/Specific/montgomery64_2e224m2e96p1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e224m2e96p1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e226m5/Synthesis.v b/src/Specific/montgomery64_2e226m5/Synthesis.v
deleted file mode 100644
index bf270f083..000000000
--- a/src/Specific/montgomery64_2e226m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e226m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e226m5/feadd.c b/src/Specific/montgomery64_2e226m5/feadd.c
deleted file mode 100644
index 4334bc35d..000000000
--- a/src/Specific/montgomery64_2e226m5/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffffbL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3ffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e226m5/feadd.v b/src/Specific/montgomery64_2e226m5/feadd.v
deleted file mode 100644
index 1fccb4e64..000000000
--- a/src/Specific/montgomery64_2e226m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e226m5/feaddDisplay.log b/src/Specific/montgomery64_2e226m5/feaddDisplay.log
deleted file mode 100644
index 1c5eb603b..000000000
--- a/src/Specific/montgomery64_2e226m5/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffffbL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3ffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e226m5/feaddDisplay.v b/src/Specific/montgomery64_2e226m5/feaddDisplay.v
deleted file mode 100644
index 4210bcd73..000000000
--- a/src/Specific/montgomery64_2e226m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e226m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e226m5/femul.c b/src/Specific/montgomery64_2e226m5/femul.c
deleted file mode 100644
index e894281fb..000000000
--- a/src/Specific/montgomery64_2e226m5/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xcccccccccccccccdL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffffbL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x3ffffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xcccccccccccccccdL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffffbL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x3ffffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xcccccccccccccccdL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffffbL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x3ffffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xcccccccccccccccdL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffffbL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x3ffffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffffbL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x3ffffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e226m5/femul.v b/src/Specific/montgomery64_2e226m5/femul.v
deleted file mode 100644
index 491e18a21..000000000
--- a/src/Specific/montgomery64_2e226m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e226m5/femulDisplay.log b/src/Specific/montgomery64_2e226m5/femulDisplay.log
deleted file mode 100644
index 646644444..000000000
--- a/src/Specific/montgomery64_2e226m5/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xcccccccccccccccdL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffffbL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x3ffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xcccccccccccccccdL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffffbL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x3ffffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xcccccccccccccccdL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffffbL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x3ffffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xcccccccccccccccdL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffffbL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x3ffffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffffbL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x3ffffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e226m5/femulDisplay.v b/src/Specific/montgomery64_2e226m5/femulDisplay.v
deleted file mode 100644
index 6290fb6df..000000000
--- a/src/Specific/montgomery64_2e226m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e226m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e226m5/fenz.c b/src/Specific/montgomery64_2e226m5/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e226m5/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e226m5/fenz.v b/src/Specific/montgomery64_2e226m5/fenz.v
deleted file mode 100644
index 3e26bcf72..000000000
--- a/src/Specific/montgomery64_2e226m5/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e226m5/fenzDisplay.log b/src/Specific/montgomery64_2e226m5/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e226m5/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e226m5/fenzDisplay.v b/src/Specific/montgomery64_2e226m5/fenzDisplay.v
deleted file mode 100644
index 46389cfc7..000000000
--- a/src/Specific/montgomery64_2e226m5/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e226m5.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e226m5/feopp.c b/src/Specific/montgomery64_2e226m5/feopp.c
deleted file mode 100644
index 6f2c1f751..000000000
--- a/src/Specific/montgomery64_2e226m5/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffffbL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x3ffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e226m5/feopp.v b/src/Specific/montgomery64_2e226m5/feopp.v
deleted file mode 100644
index 7a8711909..000000000
--- a/src/Specific/montgomery64_2e226m5/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e226m5/feoppDisplay.log b/src/Specific/montgomery64_2e226m5/feoppDisplay.log
deleted file mode 100644
index dc4cd833a..000000000
--- a/src/Specific/montgomery64_2e226m5/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffffbL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x3ffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e226m5/feoppDisplay.v b/src/Specific/montgomery64_2e226m5/feoppDisplay.v
deleted file mode 100644
index 922688f4c..000000000
--- a/src/Specific/montgomery64_2e226m5/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e226m5.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e226m5/fesquare.c b/src/Specific/montgomery64_2e226m5/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e226m5/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e226m5/fesub.c b/src/Specific/montgomery64_2e226m5/fesub.c
deleted file mode 100644
index 0bd48dc55..000000000
--- a/src/Specific/montgomery64_2e226m5/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffffbL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x3ffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e226m5/fesub.v b/src/Specific/montgomery64_2e226m5/fesub.v
deleted file mode 100644
index f6de732bf..000000000
--- a/src/Specific/montgomery64_2e226m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e226m5/fesubDisplay.log b/src/Specific/montgomery64_2e226m5/fesubDisplay.log
deleted file mode 100644
index cf4c950b3..000000000
--- a/src/Specific/montgomery64_2e226m5/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffffbL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x3ffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e226m5/fesubDisplay.v b/src/Specific/montgomery64_2e226m5/fesubDisplay.v
deleted file mode 100644
index 0b776fe9c..000000000
--- a/src/Specific/montgomery64_2e226m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e226m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e226m5/CurveParameters.v b/src/Specific/montgomery64_2e226m5_4limbs/CurveParameters.v
index 3e97cd422..3e97cd422 100644
--- a/src/Specific/montgomery64_2e226m5/CurveParameters.v
+++ b/src/Specific/montgomery64_2e226m5_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/Synthesis.v b/src/Specific/montgomery64_2e226m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..cb21ccb1c
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e226m5/compiler.sh b/src/Specific/montgomery64_2e226m5_4limbs/compiler.sh
index c09fb3b4f..c09fb3b4f 100755
--- a/src/Specific/montgomery64_2e226m5/compiler.sh
+++ b/src/Specific/montgomery64_2e226m5_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e226m5/compilerxx.sh b/src/Specific/montgomery64_2e226m5_4limbs/compilerxx.sh
index 022816f51..022816f51 100755
--- a/src/Specific/montgomery64_2e226m5/compilerxx.sh
+++ b/src/Specific/montgomery64_2e226m5_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/feadd.v b/src/Specific/montgomery64_2e226m5_4limbs/feadd.v
new file mode 100644
index 000000000..2f06dd51a
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e226m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..e5c90eae9
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/femul.v b/src/Specific/montgomery64_2e226m5_4limbs/femul.v
new file mode 100644
index 000000000..3965c4d41
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e226m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..bcf32be28
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/fenz.v b/src/Specific/montgomery64_2e226m5_4limbs/fenz.v
new file mode 100644
index 000000000..5aed15975
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e226m5_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..8ef3e785d
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/feopp.v b/src/Specific/montgomery64_2e226m5_4limbs/feopp.v
new file mode 100644
index 000000000..a8007ab31
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e226m5_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..f16c25942
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/fesub.v b/src/Specific/montgomery64_2e226m5_4limbs/fesub.v
new file mode 100644
index 000000000..e3ef8730b
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e226m5_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e226m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..bb87a8f2f
--- /dev/null
+++ b/src/Specific/montgomery64_2e226m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e226m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e226m5/py_interpreter.sh b/src/Specific/montgomery64_2e226m5_4limbs/py_interpreter.sh
index 7850c705f..7850c705f 100755
--- a/src/Specific/montgomery64_2e226m5/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e226m5_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e230m27/Synthesis.v b/src/Specific/montgomery64_2e230m27/Synthesis.v
deleted file mode 100644
index 24b869df8..000000000
--- a/src/Specific/montgomery64_2e230m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e230m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e230m27/feadd.c b/src/Specific/montgomery64_2e230m27/feadd.c
deleted file mode 100644
index 0027b2e0e..000000000
--- a/src/Specific/montgomery64_2e230m27/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffe5L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3fffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e230m27/feadd.v b/src/Specific/montgomery64_2e230m27/feadd.v
deleted file mode 100644
index e6067ae6d..000000000
--- a/src/Specific/montgomery64_2e230m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e230m27/feaddDisplay.log b/src/Specific/montgomery64_2e230m27/feaddDisplay.log
deleted file mode 100644
index e6e4b6cfe..000000000
--- a/src/Specific/montgomery64_2e230m27/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffe5L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3fffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e230m27/feaddDisplay.v b/src/Specific/montgomery64_2e230m27/feaddDisplay.v
deleted file mode 100644
index fc3372721..000000000
--- a/src/Specific/montgomery64_2e230m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e230m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e230m27/femul.c b/src/Specific/montgomery64_2e230m27/femul.c
deleted file mode 100644
index 11104a07f..000000000
--- a/src/Specific/montgomery64_2e230m27/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x84bda12f684bda13L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffe5L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x3fffffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x84bda12f684bda13L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffffe5L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x3fffffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x84bda12f684bda13L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffffe5L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x3fffffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x84bda12f684bda13L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffffe5L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x3fffffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffffe5L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x3fffffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e230m27/femul.v b/src/Specific/montgomery64_2e230m27/femul.v
deleted file mode 100644
index c851716e9..000000000
--- a/src/Specific/montgomery64_2e230m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e230m27/femulDisplay.log b/src/Specific/montgomery64_2e230m27/femulDisplay.log
deleted file mode 100644
index 4f8e62a26..000000000
--- a/src/Specific/montgomery64_2e230m27/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x84bda12f684bda13L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffe5L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x3fffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x84bda12f684bda13L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffffe5L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x3fffffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x84bda12f684bda13L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffffe5L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x3fffffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x84bda12f684bda13L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffffe5L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x3fffffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffffe5L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x3fffffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e230m27/femulDisplay.v b/src/Specific/montgomery64_2e230m27/femulDisplay.v
deleted file mode 100644
index 307cdb810..000000000
--- a/src/Specific/montgomery64_2e230m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e230m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e230m27/fenz.c b/src/Specific/montgomery64_2e230m27/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e230m27/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e230m27/fenz.v b/src/Specific/montgomery64_2e230m27/fenz.v
deleted file mode 100644
index 8e888bf6e..000000000
--- a/src/Specific/montgomery64_2e230m27/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e230m27/fenzDisplay.log b/src/Specific/montgomery64_2e230m27/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e230m27/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e230m27/fenzDisplay.v b/src/Specific/montgomery64_2e230m27/fenzDisplay.v
deleted file mode 100644
index 83757c145..000000000
--- a/src/Specific/montgomery64_2e230m27/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e230m27.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e230m27/feopp.c b/src/Specific/montgomery64_2e230m27/feopp.c
deleted file mode 100644
index a94c07462..000000000
--- a/src/Specific/montgomery64_2e230m27/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffe5L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x3fffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e230m27/feopp.v b/src/Specific/montgomery64_2e230m27/feopp.v
deleted file mode 100644
index ac0a6ccfd..000000000
--- a/src/Specific/montgomery64_2e230m27/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e230m27/feoppDisplay.log b/src/Specific/montgomery64_2e230m27/feoppDisplay.log
deleted file mode 100644
index 467219dc4..000000000
--- a/src/Specific/montgomery64_2e230m27/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffe5L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x3fffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e230m27/feoppDisplay.v b/src/Specific/montgomery64_2e230m27/feoppDisplay.v
deleted file mode 100644
index eda5385b1..000000000
--- a/src/Specific/montgomery64_2e230m27/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e230m27.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e230m27/fesquare.c b/src/Specific/montgomery64_2e230m27/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e230m27/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e230m27/fesub.c b/src/Specific/montgomery64_2e230m27/fesub.c
deleted file mode 100644
index 0227c54e6..000000000
--- a/src/Specific/montgomery64_2e230m27/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffe5L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x3fffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e230m27/fesub.v b/src/Specific/montgomery64_2e230m27/fesub.v
deleted file mode 100644
index 2cc6df637..000000000
--- a/src/Specific/montgomery64_2e230m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e230m27/fesubDisplay.log b/src/Specific/montgomery64_2e230m27/fesubDisplay.log
deleted file mode 100644
index 08985aaf7..000000000
--- a/src/Specific/montgomery64_2e230m27/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffe5L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x3fffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e230m27/fesubDisplay.v b/src/Specific/montgomery64_2e230m27/fesubDisplay.v
deleted file mode 100644
index 2e7318e7f..000000000
--- a/src/Specific/montgomery64_2e230m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e230m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e230m27/CurveParameters.v b/src/Specific/montgomery64_2e230m27_4limbs/CurveParameters.v
index 488698c86..488698c86 100644
--- a/src/Specific/montgomery64_2e230m27/CurveParameters.v
+++ b/src/Specific/montgomery64_2e230m27_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/Synthesis.v b/src/Specific/montgomery64_2e230m27_4limbs/Synthesis.v
new file mode 100644
index 000000000..f26b1a0be
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e230m27/compiler.sh b/src/Specific/montgomery64_2e230m27_4limbs/compiler.sh
index 551076c67..551076c67 100755
--- a/src/Specific/montgomery64_2e230m27/compiler.sh
+++ b/src/Specific/montgomery64_2e230m27_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e230m27/compilerxx.sh b/src/Specific/montgomery64_2e230m27_4limbs/compilerxx.sh
index c280725f0..c280725f0 100755
--- a/src/Specific/montgomery64_2e230m27/compilerxx.sh
+++ b/src/Specific/montgomery64_2e230m27_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/feadd.v b/src/Specific/montgomery64_2e230m27_4limbs/feadd.v
new file mode 100644
index 000000000..0d7c759cb
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e230m27_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..46cfb118e
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/femul.v b/src/Specific/montgomery64_2e230m27_4limbs/femul.v
new file mode 100644
index 000000000..662a17122
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e230m27_4limbs/femulDisplay.v
new file mode 100644
index 000000000..e5bbdda0b
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/fenz.v b/src/Specific/montgomery64_2e230m27_4limbs/fenz.v
new file mode 100644
index 000000000..bd7592861
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e230m27_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..71a83217d
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/feopp.v b/src/Specific/montgomery64_2e230m27_4limbs/feopp.v
new file mode 100644
index 000000000..72ca4d646
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e230m27_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..303cc946a
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/fesub.v b/src/Specific/montgomery64_2e230m27_4limbs/fesub.v
new file mode 100644
index 000000000..b1ccc65aa
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e230m27_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e230m27_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..831205a62
--- /dev/null
+++ b/src/Specific/montgomery64_2e230m27_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e230m27_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e230m27/py_interpreter.sh b/src/Specific/montgomery64_2e230m27_4limbs/py_interpreter.sh
index 069fa6d19..069fa6d19 100755
--- a/src/Specific/montgomery64_2e230m27/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e230m27_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e235m15/Synthesis.v b/src/Specific/montgomery64_2e235m15/Synthesis.v
deleted file mode 100644
index da0416ba6..000000000
--- a/src/Specific/montgomery64_2e235m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e235m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e235m15/feadd.c b/src/Specific/montgomery64_2e235m15/feadd.c
deleted file mode 100644
index 6537ac9bf..000000000
--- a/src/Specific/montgomery64_2e235m15/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffff1L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7ffffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e235m15/feadd.v b/src/Specific/montgomery64_2e235m15/feadd.v
deleted file mode 100644
index eb8027ce7..000000000
--- a/src/Specific/montgomery64_2e235m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e235m15/feaddDisplay.log b/src/Specific/montgomery64_2e235m15/feaddDisplay.log
deleted file mode 100644
index 9827efd67..000000000
--- a/src/Specific/montgomery64_2e235m15/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffff1L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7ffffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e235m15/feaddDisplay.v b/src/Specific/montgomery64_2e235m15/feaddDisplay.v
deleted file mode 100644
index 0661a353f..000000000
--- a/src/Specific/montgomery64_2e235m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e235m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e235m15/femul.c b/src/Specific/montgomery64_2e235m15/femul.c
deleted file mode 100644
index 3f0c87231..000000000
--- a/src/Specific/montgomery64_2e235m15/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffff1L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7ffffffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffff1L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7ffffffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffff1L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7ffffffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffff1L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7ffffffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffff1L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7ffffffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e235m15/femul.v b/src/Specific/montgomery64_2e235m15/femul.v
deleted file mode 100644
index e50e012c8..000000000
--- a/src/Specific/montgomery64_2e235m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e235m15/femulDisplay.log b/src/Specific/montgomery64_2e235m15/femulDisplay.log
deleted file mode 100644
index 2b9931cf7..000000000
--- a/src/Specific/montgomery64_2e235m15/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xeeeeeeeeeeeeeeefL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffff1L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7ffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xeeeeeeeeeeeeeeefL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffff1L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7ffffffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xeeeeeeeeeeeeeeefL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffff1L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7ffffffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xeeeeeeeeeeeeeeefL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffff1L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7ffffffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffff1L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7ffffffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e235m15/femulDisplay.v b/src/Specific/montgomery64_2e235m15/femulDisplay.v
deleted file mode 100644
index 91dead46c..000000000
--- a/src/Specific/montgomery64_2e235m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e235m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e235m15/fenz.c b/src/Specific/montgomery64_2e235m15/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e235m15/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e235m15/fenz.v b/src/Specific/montgomery64_2e235m15/fenz.v
deleted file mode 100644
index 9bd2b2e47..000000000
--- a/src/Specific/montgomery64_2e235m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e235m15/fenzDisplay.log b/src/Specific/montgomery64_2e235m15/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e235m15/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e235m15/fenzDisplay.v b/src/Specific/montgomery64_2e235m15/fenzDisplay.v
deleted file mode 100644
index 8bb2b7fb8..000000000
--- a/src/Specific/montgomery64_2e235m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e235m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e235m15/feopp.c b/src/Specific/montgomery64_2e235m15/feopp.c
deleted file mode 100644
index 8030e3746..000000000
--- a/src/Specific/montgomery64_2e235m15/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffff1L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7ffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e235m15/feopp.v b/src/Specific/montgomery64_2e235m15/feopp.v
deleted file mode 100644
index 4bd2e3f37..000000000
--- a/src/Specific/montgomery64_2e235m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e235m15/feoppDisplay.log b/src/Specific/montgomery64_2e235m15/feoppDisplay.log
deleted file mode 100644
index 94ec9e81b..000000000
--- a/src/Specific/montgomery64_2e235m15/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffff1L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7ffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e235m15/feoppDisplay.v b/src/Specific/montgomery64_2e235m15/feoppDisplay.v
deleted file mode 100644
index a918a58a2..000000000
--- a/src/Specific/montgomery64_2e235m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e235m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e235m15/fesquare.c b/src/Specific/montgomery64_2e235m15/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e235m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e235m15/fesub.c b/src/Specific/montgomery64_2e235m15/fesub.c
deleted file mode 100644
index 88f0cc105..000000000
--- a/src/Specific/montgomery64_2e235m15/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffff1L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7ffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e235m15/fesub.v b/src/Specific/montgomery64_2e235m15/fesub.v
deleted file mode 100644
index 9bd76b05a..000000000
--- a/src/Specific/montgomery64_2e235m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e235m15/fesubDisplay.log b/src/Specific/montgomery64_2e235m15/fesubDisplay.log
deleted file mode 100644
index 1faf8a6e8..000000000
--- a/src/Specific/montgomery64_2e235m15/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffff1L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7ffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e235m15/fesubDisplay.v b/src/Specific/montgomery64_2e235m15/fesubDisplay.v
deleted file mode 100644
index b3425abda..000000000
--- a/src/Specific/montgomery64_2e235m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e235m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e235m15/CurveParameters.v b/src/Specific/montgomery64_2e235m15_4limbs/CurveParameters.v
index bf979d13d..bf979d13d 100644
--- a/src/Specific/montgomery64_2e235m15/CurveParameters.v
+++ b/src/Specific/montgomery64_2e235m15_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/Synthesis.v b/src/Specific/montgomery64_2e235m15_4limbs/Synthesis.v
new file mode 100644
index 000000000..c1a67ed8f
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e235m15/compiler.sh b/src/Specific/montgomery64_2e235m15_4limbs/compiler.sh
index 6c00c83c5..6c00c83c5 100755
--- a/src/Specific/montgomery64_2e235m15/compiler.sh
+++ b/src/Specific/montgomery64_2e235m15_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e235m15/compilerxx.sh b/src/Specific/montgomery64_2e235m15_4limbs/compilerxx.sh
index b8bbb3032..b8bbb3032 100755
--- a/src/Specific/montgomery64_2e235m15/compilerxx.sh
+++ b/src/Specific/montgomery64_2e235m15_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/feadd.v b/src/Specific/montgomery64_2e235m15_4limbs/feadd.v
new file mode 100644
index 000000000..91bf1a9a3
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e235m15_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..ca9221ebb
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/femul.v b/src/Specific/montgomery64_2e235m15_4limbs/femul.v
new file mode 100644
index 000000000..8ca528e6c
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e235m15_4limbs/femulDisplay.v
new file mode 100644
index 000000000..e0e048a4a
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/fenz.v b/src/Specific/montgomery64_2e235m15_4limbs/fenz.v
new file mode 100644
index 000000000..ca720f2f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e235m15_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..09d4d92bb
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/feopp.v b/src/Specific/montgomery64_2e235m15_4limbs/feopp.v
new file mode 100644
index 000000000..8ab10418b
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e235m15_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..2537ac69b
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/fesub.v b/src/Specific/montgomery64_2e235m15_4limbs/fesub.v
new file mode 100644
index 000000000..2bf8f3d6e
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e235m15_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e235m15_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7ecdc27fe
--- /dev/null
+++ b/src/Specific/montgomery64_2e235m15_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e235m15_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e235m15/py_interpreter.sh b/src/Specific/montgomery64_2e235m15_4limbs/py_interpreter.sh
index 0adf3e5ba..0adf3e5ba 100755
--- a/src/Specific/montgomery64_2e235m15/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e235m15_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e243m9/Synthesis.v b/src/Specific/montgomery64_2e243m9/Synthesis.v
deleted file mode 100644
index 43caea3f5..000000000
--- a/src/Specific/montgomery64_2e243m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e243m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e243m9/feadd.c b/src/Specific/montgomery64_2e243m9/feadd.c
deleted file mode 100644
index 01f0c4674..000000000
--- a/src/Specific/montgomery64_2e243m9/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffff7L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7ffffffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e243m9/feadd.v b/src/Specific/montgomery64_2e243m9/feadd.v
deleted file mode 100644
index 5beb2fddf..000000000
--- a/src/Specific/montgomery64_2e243m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e243m9/feaddDisplay.log b/src/Specific/montgomery64_2e243m9/feaddDisplay.log
deleted file mode 100644
index 9871bcfa8..000000000
--- a/src/Specific/montgomery64_2e243m9/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffff7L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7ffffffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e243m9/feaddDisplay.v b/src/Specific/montgomery64_2e243m9/feaddDisplay.v
deleted file mode 100644
index ef8bb9b3a..000000000
--- a/src/Specific/montgomery64_2e243m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e243m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e243m9/femul.c b/src/Specific/montgomery64_2e243m9/femul.c
deleted file mode 100644
index b515b9f12..000000000
--- a/src/Specific/montgomery64_2e243m9/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x8e38e38e38e38e39L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffff7L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7ffffffffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x8e38e38e38e38e39L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffff7L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7ffffffffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x8e38e38e38e38e39L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffff7L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7ffffffffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x8e38e38e38e38e39L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffff7L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7ffffffffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffff7L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7ffffffffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e243m9/femul.v b/src/Specific/montgomery64_2e243m9/femul.v
deleted file mode 100644
index 3972420c1..000000000
--- a/src/Specific/montgomery64_2e243m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e243m9/femulDisplay.log b/src/Specific/montgomery64_2e243m9/femulDisplay.log
deleted file mode 100644
index 6b961a6ce..000000000
--- a/src/Specific/montgomery64_2e243m9/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x8e38e38e38e38e39L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffff7L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x8e38e38e38e38e39L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffff7L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7ffffffffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x8e38e38e38e38e39L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffff7L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7ffffffffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x8e38e38e38e38e39L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffff7L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7ffffffffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffff7L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7ffffffffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e243m9/femulDisplay.v b/src/Specific/montgomery64_2e243m9/femulDisplay.v
deleted file mode 100644
index afe0099b9..000000000
--- a/src/Specific/montgomery64_2e243m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e243m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e243m9/fenz.c b/src/Specific/montgomery64_2e243m9/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e243m9/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e243m9/fenz.v b/src/Specific/montgomery64_2e243m9/fenz.v
deleted file mode 100644
index a96f27053..000000000
--- a/src/Specific/montgomery64_2e243m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e243m9/fenzDisplay.log b/src/Specific/montgomery64_2e243m9/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e243m9/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e243m9/fenzDisplay.v b/src/Specific/montgomery64_2e243m9/fenzDisplay.v
deleted file mode 100644
index 269bca14d..000000000
--- a/src/Specific/montgomery64_2e243m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e243m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e243m9/feopp.c b/src/Specific/montgomery64_2e243m9/feopp.c
deleted file mode 100644
index 956373177..000000000
--- a/src/Specific/montgomery64_2e243m9/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffff7L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7ffffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e243m9/feopp.v b/src/Specific/montgomery64_2e243m9/feopp.v
deleted file mode 100644
index eeb2279e3..000000000
--- a/src/Specific/montgomery64_2e243m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e243m9/feoppDisplay.log b/src/Specific/montgomery64_2e243m9/feoppDisplay.log
deleted file mode 100644
index f40ba16b9..000000000
--- a/src/Specific/montgomery64_2e243m9/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffff7L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7ffffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e243m9/feoppDisplay.v b/src/Specific/montgomery64_2e243m9/feoppDisplay.v
deleted file mode 100644
index 05c42fd3d..000000000
--- a/src/Specific/montgomery64_2e243m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e243m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e243m9/fesquare.c b/src/Specific/montgomery64_2e243m9/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e243m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e243m9/fesub.c b/src/Specific/montgomery64_2e243m9/fesub.c
deleted file mode 100644
index 93debaaa9..000000000
--- a/src/Specific/montgomery64_2e243m9/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffff7L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e243m9/fesub.v b/src/Specific/montgomery64_2e243m9/fesub.v
deleted file mode 100644
index 33de5cbb1..000000000
--- a/src/Specific/montgomery64_2e243m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e243m9/fesubDisplay.log b/src/Specific/montgomery64_2e243m9/fesubDisplay.log
deleted file mode 100644
index c730ca129..000000000
--- a/src/Specific/montgomery64_2e243m9/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffff7L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e243m9/fesubDisplay.v b/src/Specific/montgomery64_2e243m9/fesubDisplay.v
deleted file mode 100644
index de1460d32..000000000
--- a/src/Specific/montgomery64_2e243m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e243m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e243m9/CurveParameters.v b/src/Specific/montgomery64_2e243m9_4limbs/CurveParameters.v
index 51d5b0a88..51d5b0a88 100644
--- a/src/Specific/montgomery64_2e243m9/CurveParameters.v
+++ b/src/Specific/montgomery64_2e243m9_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/Synthesis.v b/src/Specific/montgomery64_2e243m9_4limbs/Synthesis.v
new file mode 100644
index 000000000..088828941
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e243m9/compiler.sh b/src/Specific/montgomery64_2e243m9_4limbs/compiler.sh
index d821d6fae..d821d6fae 100755
--- a/src/Specific/montgomery64_2e243m9/compiler.sh
+++ b/src/Specific/montgomery64_2e243m9_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e243m9/compilerxx.sh b/src/Specific/montgomery64_2e243m9_4limbs/compilerxx.sh
index c39cb359a..c39cb359a 100755
--- a/src/Specific/montgomery64_2e243m9/compilerxx.sh
+++ b/src/Specific/montgomery64_2e243m9_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/feadd.v b/src/Specific/montgomery64_2e243m9_4limbs/feadd.v
new file mode 100644
index 000000000..f731c61b0
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e243m9_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..3451553de
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/femul.v b/src/Specific/montgomery64_2e243m9_4limbs/femul.v
new file mode 100644
index 000000000..a6283e9d9
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e243m9_4limbs/femulDisplay.v
new file mode 100644
index 000000000..804f3a43f
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/fenz.v b/src/Specific/montgomery64_2e243m9_4limbs/fenz.v
new file mode 100644
index 000000000..fc3a244d4
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e243m9_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..f6b53c52a
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/feopp.v b/src/Specific/montgomery64_2e243m9_4limbs/feopp.v
new file mode 100644
index 000000000..7f88e6a95
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e243m9_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..fe5f34f93
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/fesub.v b/src/Specific/montgomery64_2e243m9_4limbs/fesub.v
new file mode 100644
index 000000000..017554c3c
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e243m9_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e243m9_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..9855c30d3
--- /dev/null
+++ b/src/Specific/montgomery64_2e243m9_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e243m9_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e243m9/py_interpreter.sh b/src/Specific/montgomery64_2e243m9_4limbs/py_interpreter.sh
index 67bc8d431..67bc8d431 100755
--- a/src/Specific/montgomery64_2e243m9/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e243m9_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e251m9/Synthesis.v b/src/Specific/montgomery64_2e251m9/Synthesis.v
deleted file mode 100644
index 5426330ea..000000000
--- a/src/Specific/montgomery64_2e251m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e251m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e251m9/feadd.c b/src/Specific/montgomery64_2e251m9/feadd.c
deleted file mode 100644
index 42b9ea878..000000000
--- a/src/Specific/montgomery64_2e251m9/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffff7L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7ffffffffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e251m9/feadd.v b/src/Specific/montgomery64_2e251m9/feadd.v
deleted file mode 100644
index ed0c9d3c0..000000000
--- a/src/Specific/montgomery64_2e251m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e251m9/feaddDisplay.log b/src/Specific/montgomery64_2e251m9/feaddDisplay.log
deleted file mode 100644
index a4fd422d6..000000000
--- a/src/Specific/montgomery64_2e251m9/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffff7L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7ffffffffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e251m9/feaddDisplay.v b/src/Specific/montgomery64_2e251m9/feaddDisplay.v
deleted file mode 100644
index e0e3cac56..000000000
--- a/src/Specific/montgomery64_2e251m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e251m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e251m9/femul.c b/src/Specific/montgomery64_2e251m9/femul.c
deleted file mode 100644
index c10aea27b..000000000
--- a/src/Specific/montgomery64_2e251m9/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x8e38e38e38e38e39L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffff7L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7ffffffffffffff, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x8e38e38e38e38e39L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffff7L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7ffffffffffffff, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x8e38e38e38e38e39L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffff7L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7ffffffffffffff, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x8e38e38e38e38e39L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffff7L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7ffffffffffffff, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffff7L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7ffffffffffffff, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e251m9/femul.v b/src/Specific/montgomery64_2e251m9/femul.v
deleted file mode 100644
index c0013bd56..000000000
--- a/src/Specific/montgomery64_2e251m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e251m9/femulDisplay.log b/src/Specific/montgomery64_2e251m9/femulDisplay.log
deleted file mode 100644
index 0f9304f68..000000000
--- a/src/Specific/montgomery64_2e251m9/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x8e38e38e38e38e39L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffff7L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7ffffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x8e38e38e38e38e39L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffff7L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7ffffffffffffff);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x8e38e38e38e38e39L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffff7L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7ffffffffffffff);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x8e38e38e38e38e39L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffff7L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7ffffffffffffff);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffff7L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7ffffffffffffff);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e251m9/femulDisplay.v b/src/Specific/montgomery64_2e251m9/femulDisplay.v
deleted file mode 100644
index 7a0629b54..000000000
--- a/src/Specific/montgomery64_2e251m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e251m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e251m9/fenz.c b/src/Specific/montgomery64_2e251m9/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e251m9/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e251m9/fenz.v b/src/Specific/montgomery64_2e251m9/fenz.v
deleted file mode 100644
index face9c72e..000000000
--- a/src/Specific/montgomery64_2e251m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e251m9/fenzDisplay.log b/src/Specific/montgomery64_2e251m9/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e251m9/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e251m9/fenzDisplay.v b/src/Specific/montgomery64_2e251m9/fenzDisplay.v
deleted file mode 100644
index ab06c3608..000000000
--- a/src/Specific/montgomery64_2e251m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e251m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e251m9/feopp.c b/src/Specific/montgomery64_2e251m9/feopp.c
deleted file mode 100644
index e37c6d0d9..000000000
--- a/src/Specific/montgomery64_2e251m9/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffff7L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7ffffffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e251m9/feopp.v b/src/Specific/montgomery64_2e251m9/feopp.v
deleted file mode 100644
index 7ea0e1b04..000000000
--- a/src/Specific/montgomery64_2e251m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e251m9/feoppDisplay.log b/src/Specific/montgomery64_2e251m9/feoppDisplay.log
deleted file mode 100644
index 237800aa3..000000000
--- a/src/Specific/montgomery64_2e251m9/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffff7L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7ffffffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e251m9/feoppDisplay.v b/src/Specific/montgomery64_2e251m9/feoppDisplay.v
deleted file mode 100644
index d6007539d..000000000
--- a/src/Specific/montgomery64_2e251m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e251m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e251m9/fesquare.c b/src/Specific/montgomery64_2e251m9/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e251m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e251m9/fesub.c b/src/Specific/montgomery64_2e251m9/fesub.c
deleted file mode 100644
index 8391d0892..000000000
--- a/src/Specific/montgomery64_2e251m9/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffff7L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7ffffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e251m9/fesub.v b/src/Specific/montgomery64_2e251m9/fesub.v
deleted file mode 100644
index 8c3c8d976..000000000
--- a/src/Specific/montgomery64_2e251m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e251m9/fesubDisplay.log b/src/Specific/montgomery64_2e251m9/fesubDisplay.log
deleted file mode 100644
index d98803e52..000000000
--- a/src/Specific/montgomery64_2e251m9/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffff7L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7ffffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e251m9/fesubDisplay.v b/src/Specific/montgomery64_2e251m9/fesubDisplay.v
deleted file mode 100644
index 4c9fcbf37..000000000
--- a/src/Specific/montgomery64_2e251m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e251m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e251m9/CurveParameters.v b/src/Specific/montgomery64_2e251m9_4limbs/CurveParameters.v
index 0f61ec8c0..0f61ec8c0 100644
--- a/src/Specific/montgomery64_2e251m9/CurveParameters.v
+++ b/src/Specific/montgomery64_2e251m9_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/Synthesis.v b/src/Specific/montgomery64_2e251m9_4limbs/Synthesis.v
new file mode 100644
index 000000000..58051c4ad
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e251m9/compiler.sh b/src/Specific/montgomery64_2e251m9_4limbs/compiler.sh
index 19f402810..19f402810 100755
--- a/src/Specific/montgomery64_2e251m9/compiler.sh
+++ b/src/Specific/montgomery64_2e251m9_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e251m9/compilerxx.sh b/src/Specific/montgomery64_2e251m9_4limbs/compilerxx.sh
index 23d64e42d..23d64e42d 100755
--- a/src/Specific/montgomery64_2e251m9/compilerxx.sh
+++ b/src/Specific/montgomery64_2e251m9_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/feadd.v b/src/Specific/montgomery64_2e251m9_4limbs/feadd.v
new file mode 100644
index 000000000..df1c84e04
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e251m9_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..e1bab30b4
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/femul.v b/src/Specific/montgomery64_2e251m9_4limbs/femul.v
new file mode 100644
index 000000000..8602b3811
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e251m9_4limbs/femulDisplay.v
new file mode 100644
index 000000000..884821965
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/fenz.v b/src/Specific/montgomery64_2e251m9_4limbs/fenz.v
new file mode 100644
index 000000000..c993d57b8
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e251m9_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..25c78f288
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/feopp.v b/src/Specific/montgomery64_2e251m9_4limbs/feopp.v
new file mode 100644
index 000000000..ed21323a5
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e251m9_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..531508bee
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/fesub.v b/src/Specific/montgomery64_2e251m9_4limbs/fesub.v
new file mode 100644
index 000000000..daa52e52b
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e251m9_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e251m9_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..bfe64ae82
--- /dev/null
+++ b/src/Specific/montgomery64_2e251m9_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e251m9_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e251m9/py_interpreter.sh b/src/Specific/montgomery64_2e251m9_4limbs/py_interpreter.sh
index 97e1673a8..97e1673a8 100755
--- a/src/Specific/montgomery64_2e251m9/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e251m9_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/Synthesis.v b/src/Specific/montgomery64_2e254m127x2e240m1/Synthesis.v
deleted file mode 100644
index 1aa2b7692..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feadd.c b/src/Specific/montgomery64_2e254m127x2e240m1/feadd.c
deleted file mode 100644
index 6921369c7..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x3f80ffffffffffff, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feadd.v b/src/Specific/montgomery64_2e254m127x2e240m1/feadd.v
deleted file mode 100644
index bddc46a1b..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.log b/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.log
deleted file mode 100644
index acf9736ba..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x3f80ffffffffffff);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.v
deleted file mode 100644
index cb29439e7..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/femul.c b/src/Specific/montgomery64_2e254m127x2e240m1/femul.c
deleted file mode 100644
index 69062aa1d..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/femul.c
+++ /dev/null
@@ -1,126 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t x42; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x17, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x17, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x17, 0x3f80ffffffffffff, &x51);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(0x0, x42, x44, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t _ = _addcarryx_u64(0x0, x60, x51, &x62);
- { uint64_t _; uint8_t x66 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x29, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x32, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x35, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x38, x62, &x77);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x11, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x13, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x15, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x14, &x90);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(0x0, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t _ = _addcarryx_u64(0x0, x99, x90, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(0x0, x68, x80, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x78, x101, &x116);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x104, 0xffffffffffffffffL, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x104, 0xffffffffffffffffL, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x104, 0xffffffffffffffffL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x104, 0x3f80ffffffffffff, &x129);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(0x0, x120, x122, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(x132, x123, x125, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x126, x128, &x137);
- { uint64_t x140; uint8_t _ = _addcarryx_u64(0x0, x138, x129, &x140);
- { uint64_t _; uint8_t x144 = _addcarryx_u64(0x0, x104, x119, &_);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x107, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x110, x134, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x113, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x116, x140, &x155);
- { uint8_t x157 = (x156 + x117);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x11, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x13, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x15, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x14, &x169);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(0x0, x160, x162, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x163, x165, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x166, x168, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x169, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(0x0, x146, x159, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x152, x174, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x157, x180, &x195);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x183, 0xffffffffffffffffL, &x199);
- { uint64_t x202; uint64_t x201 = _mulx_u64(x183, 0xffffffffffffffffL, &x202);
- { uint64_t x205; uint64_t x204 = _mulx_u64(x183, 0xffffffffffffffffL, &x205);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x183, 0x3f80ffffffffffff, &x208);
- { uint64_t x210; uint8_t x211 = _addcarryx_u64(0x0, x199, x201, &x210);
- { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x202, x204, &x213);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x205, x207, &x216);
- { uint64_t x219; uint8_t _ = _addcarryx_u64(0x0, x217, x208, &x219);
- { uint64_t _; uint8_t x223 = _addcarryx_u64(0x0, x183, x198, &_);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x186, x210, &x225);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x189, x213, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x192, x216, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x195, x219, &x234);
- { uint8_t x236 = (x235 + x196);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x11, &x239);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x13, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x15, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x14, &x248);
- { uint64_t x250; uint8_t x251 = _addcarryx_u64(0x0, x239, x241, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t _ = _addcarryx_u64(0x0, x257, x248, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(0x0, x225, x238, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x228, x250, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x236, x259, &x274);
- { uint64_t x278; uint64_t x277 = _mulx_u64(x262, 0xffffffffffffffffL, &x278);
- { uint64_t x281; uint64_t x280 = _mulx_u64(x262, 0xffffffffffffffffL, &x281);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x262, 0xffffffffffffffffL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x262, 0x3f80ffffffffffff, &x287);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(0x0, x278, x280, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x281, x283, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x284, x286, &x295);
- { uint64_t x298; uint8_t _ = _addcarryx_u64(0x0, x296, x287, &x298);
- { uint64_t _; uint8_t x302 = _addcarryx_u64(0x0, x262, x277, &_);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x265, x289, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x268, x292, &x307);
- { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x271, x295, &x310);
- { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x274, x298, &x313);
- { uint8_t x315 = (x314 + x275);
- { uint64_t x317; uint8_t x318 = _subborrow_u64(0x0, x304, 0xffffffffffffffffL, &x317);
- { uint64_t x320; uint8_t x321 = _subborrow_u64(x318, x307, 0xffffffffffffffffL, &x320);
- { uint64_t x323; uint8_t x324 = _subborrow_u64(x321, x310, 0xffffffffffffffffL, &x323);
- { uint64_t x326; uint8_t x327 = _subborrow_u64(x324, x313, 0x3f80ffffffffffff, &x326);
- { uint64_t _; uint8_t x330 = _subborrow_u64(x327, x315, 0x0, &_);
- { uint64_t x331 = cmovznz64(x330, x326, x313);
- { uint64_t x332 = cmovznz64(x330, x323, x310);
- { uint64_t x333 = cmovznz64(x330, x320, x307);
- { uint64_t x334 = cmovznz64(x330, x317, x304);
- out[0] = x334;
- out[1] = x333;
- out[2] = x332;
- out[3] = x331;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/femul.v b/src/Specific/montgomery64_2e254m127x2e240m1/femul.v
deleted file mode 100644
index c6efa7dd9..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.log b/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.log
deleted file mode 100644
index 730bbce58..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.log
+++ /dev/null
@@ -1,118 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t x42 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x47, uint64_t x48 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x17, 0x3f80ffffffffffff);
- uint64_t x53, uint8_t x54 = addcarryx_u64(0x0, x42, x44);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t _ = addcarryx_u64(0x0, x60, x51);
- uint64_t _, uint8_t x66 = addcarryx_u64(0x0, x17, x41);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x29, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x32, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x35, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x38, x62);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x11);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x13);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x15);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x14);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t _ = addcarryx_u64(0x0, x99, x90);
- uint64_t x104, uint8_t x105 = addcarryx_u64(0x0, x68, x80);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x78, x101);
- uint64_t x119, uint64_t x120 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x122, uint64_t x123 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x125, uint64_t x126 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x128, uint64_t x129 = mulx_u64(x104, 0x3f80ffffffffffff);
- uint64_t x131, uint8_t x132 = addcarryx_u64(0x0, x120, x122);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x123, x125);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x126, x128);
- uint64_t x140, uint8_t _ = addcarryx_u64(0x0, x138, x129);
- uint64_t _, uint8_t x144 = addcarryx_u64(0x0, x104, x119);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x107, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x110, x134);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x113, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x116, x140);
- uint8_t x157 = (x156 + x117);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x11);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x13);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x15);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x14);
- uint64_t x171, uint8_t x172 = addcarryx_u64(0x0, x160, x162);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x163, x165);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x166, x168);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x169);
- uint64_t x183, uint8_t x184 = addcarryx_u64(0x0, x146, x159);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x152, x174);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x157, x180);
- uint64_t x198, uint64_t x199 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x201, uint64_t x202 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x204, uint64_t x205 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x207, uint64_t x208 = mulx_u64(x183, 0x3f80ffffffffffff);
- uint64_t x210, uint8_t x211 = addcarryx_u64(0x0, x199, x201);
- uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x202, x204);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x205, x207);
- uint64_t x219, uint8_t _ = addcarryx_u64(0x0, x217, x208);
- uint64_t _, uint8_t x223 = addcarryx_u64(0x0, x183, x198);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x186, x210);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x189, x213);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x192, x216);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x195, x219);
- uint8_t x236 = (x235 + x196);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x11);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x13);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x15);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x14);
- uint64_t x250, uint8_t x251 = addcarryx_u64(0x0, x239, x241);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t _ = addcarryx_u64(0x0, x257, x248);
- uint64_t x262, uint8_t x263 = addcarryx_u64(0x0, x225, x238);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x228, x250);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x236, x259);
- uint64_t x277, uint64_t x278 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x280, uint64_t x281 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x283, uint64_t x284 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x286, uint64_t x287 = mulx_u64(x262, 0x3f80ffffffffffff);
- uint64_t x289, uint8_t x290 = addcarryx_u64(0x0, x278, x280);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x281, x283);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x284, x286);
- uint64_t x298, uint8_t _ = addcarryx_u64(0x0, x296, x287);
- uint64_t _, uint8_t x302 = addcarryx_u64(0x0, x262, x277);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x265, x289);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x268, x292);
- uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x271, x295);
- uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x274, x298);
- uint8_t x315 = (x314 + x275);
- uint64_t x317, uint8_t x318 = subborrow_u64(0x0, x304, 0xffffffffffffffffL);
- uint64_t x320, uint8_t x321 = subborrow_u64(x318, x307, 0xffffffffffffffffL);
- uint64_t x323, uint8_t x324 = subborrow_u64(x321, x310, 0xffffffffffffffffL);
- uint64_t x326, uint8_t x327 = subborrow_u64(x324, x313, 0x3f80ffffffffffff);
- uint64_t _, uint8_t x330 = subborrow_u64(x327, x315, 0x0);
- uint64_t x331 = cmovznz64(x330, x326, x313);
- uint64_t x332 = cmovznz64(x330, x323, x310);
- uint64_t x333 = cmovznz64(x330, x320, x307);
- uint64_t x334 = cmovznz64(x330, x317, x304);
- return (x331, x332, x333, x334))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.v
deleted file mode 100644
index bb8bea612..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fenz.c b/src/Specific/montgomery64_2e254m127x2e240m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fenz.v b/src/Specific/montgomery64_2e254m127x2e240m1/fenz.v
deleted file mode 100644
index ce858bfe8..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.log b/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.v
deleted file mode 100644
index b0b68222e..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feopp.c b/src/Specific/montgomery64_2e254m127x2e240m1/feopp.c
deleted file mode 100644
index 862551d03..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffffL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x3f80ffffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feopp.v b/src/Specific/montgomery64_2e254m127x2e240m1/feopp.v
deleted file mode 100644
index 4f483a326..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.log b/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.log
deleted file mode 100644
index dc4848371..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffffL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x3f80ffffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.v
deleted file mode 100644
index 18ca1f058..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fesquare.c b/src/Specific/montgomery64_2e254m127x2e240m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fesub.c b/src/Specific/montgomery64_2e254m127x2e240m1/fesub.c
deleted file mode 100644
index 82b995af4..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x3f80ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fesub.v b/src/Specific/montgomery64_2e254m127x2e240m1/fesub.v
deleted file mode 100644
index 6ac290273..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.log b/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.log
deleted file mode 100644
index a9f5ecefa..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x3f80ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.v
deleted file mode 100644
index c07cc5418..000000000
--- a/src/Specific/montgomery64_2e254m127x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/CurveParameters.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/CurveParameters.v
index 34d6d4b0c..34d6d4b0c 100644
--- a/src/Specific/montgomery64_2e254m127x2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..9eb3bc57b
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/compiler.sh b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/compiler.sh
index c9e9fab3c..c9e9fab3c 100755
--- a/src/Specific/montgomery64_2e254m127x2e240m1/compiler.sh
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/compilerxx.sh b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/compilerxx.sh
index 0de8808ea..0de8808ea 100755
--- a/src/Specific/montgomery64_2e254m127x2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feadd.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feadd.v
new file mode 100644
index 000000000..6eb12fd58
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..4ad4e08c1
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femul.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femul.v
new file mode 100644
index 000000000..0ca722ef1
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..d43c115fc
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenz.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenz.v
new file mode 100644
index 000000000..36fd50b9e
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..4ba2ec450
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feopp.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feopp.v
new file mode 100644
index 000000000..01bca31ae
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..dc2fe3d94
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesub.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesub.v
new file mode 100644
index 000000000..c895dd9df
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..0d00ee3e6
--- /dev/null
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e254m127x2e240m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e254m127x2e240m1/py_interpreter.sh b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/py_interpreter.sh
index 05bd087a0..05bd087a0 100755
--- a/src/Specific/montgomery64_2e254m127x2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e254m127x2e240m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e255m19/Synthesis.v b/src/Specific/montgomery64_2e255m19/Synthesis.v
deleted file mode 100644
index 500b39d0d..000000000
--- a/src/Specific/montgomery64_2e255m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e255m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e255m19/feadd.c b/src/Specific/montgomery64_2e255m19/feadd.c
deleted file mode 100644
index caf4ae59e..000000000
--- a/src/Specific/montgomery64_2e255m19/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffedL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7fffffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m19/feadd.v b/src/Specific/montgomery64_2e255m19/feadd.v
deleted file mode 100644
index 5196e0afe..000000000
--- a/src/Specific/montgomery64_2e255m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e255m19/feaddDisplay.log b/src/Specific/montgomery64_2e255m19/feaddDisplay.log
deleted file mode 100644
index 0afad5f44..000000000
--- a/src/Specific/montgomery64_2e255m19/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffedL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m19/feaddDisplay.v b/src/Specific/montgomery64_2e255m19/feaddDisplay.v
deleted file mode 100644
index 48c5c550d..000000000
--- a/src/Specific/montgomery64_2e255m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e255m19/femul.c b/src/Specific/montgomery64_2e255m19/femul.c
deleted file mode 100644
index 27976f9d3..000000000
--- a/src/Specific/montgomery64_2e255m19/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x86bca1af286bca1bL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffedL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7fffffffffffffffL, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x86bca1af286bca1bL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffffedL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7fffffffffffffffL, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x86bca1af286bca1bL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffffedL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7fffffffffffffffL, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x86bca1af286bca1bL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffffedL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7fffffffffffffffL, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffffedL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7fffffffffffffffL, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m19/femul.v b/src/Specific/montgomery64_2e255m19/femul.v
deleted file mode 100644
index e190443c7..000000000
--- a/src/Specific/montgomery64_2e255m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e255m19/femulDisplay.log b/src/Specific/montgomery64_2e255m19/femulDisplay.log
deleted file mode 100644
index 0a8c04e28..000000000
--- a/src/Specific/montgomery64_2e255m19/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x86bca1af286bca1bL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffedL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7fffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x86bca1af286bca1bL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffffedL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7fffffffffffffffL);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x86bca1af286bca1bL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffffedL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7fffffffffffffffL);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x86bca1af286bca1bL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffffedL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7fffffffffffffffL);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffffedL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m19/femulDisplay.v b/src/Specific/montgomery64_2e255m19/femulDisplay.v
deleted file mode 100644
index 3df0854a8..000000000
--- a/src/Specific/montgomery64_2e255m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e255m19/fenz.c b/src/Specific/montgomery64_2e255m19/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e255m19/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m19/fenz.v b/src/Specific/montgomery64_2e255m19/fenz.v
deleted file mode 100644
index 33e2d4a4c..000000000
--- a/src/Specific/montgomery64_2e255m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e255m19/fenzDisplay.log b/src/Specific/montgomery64_2e255m19/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e255m19/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e255m19/fenzDisplay.v b/src/Specific/montgomery64_2e255m19/fenzDisplay.v
deleted file mode 100644
index bb346a254..000000000
--- a/src/Specific/montgomery64_2e255m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e255m19/feopp.c b/src/Specific/montgomery64_2e255m19/feopp.c
deleted file mode 100644
index f7bc56926..000000000
--- a/src/Specific/montgomery64_2e255m19/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffedL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m19/feopp.v b/src/Specific/montgomery64_2e255m19/feopp.v
deleted file mode 100644
index 687f357ab..000000000
--- a/src/Specific/montgomery64_2e255m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e255m19/feoppDisplay.log b/src/Specific/montgomery64_2e255m19/feoppDisplay.log
deleted file mode 100644
index ef7f18fdb..000000000
--- a/src/Specific/montgomery64_2e255m19/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffedL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m19/feoppDisplay.v b/src/Specific/montgomery64_2e255m19/feoppDisplay.v
deleted file mode 100644
index 59ad5be57..000000000
--- a/src/Specific/montgomery64_2e255m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e255m19/fesquare.c b/src/Specific/montgomery64_2e255m19/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e255m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e255m19/fesub.c b/src/Specific/montgomery64_2e255m19/fesub.c
deleted file mode 100644
index 8e4400464..000000000
--- a/src/Specific/montgomery64_2e255m19/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffedL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m19/fesub.v b/src/Specific/montgomery64_2e255m19/fesub.v
deleted file mode 100644
index 95551d105..000000000
--- a/src/Specific/montgomery64_2e255m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e255m19/fesubDisplay.log b/src/Specific/montgomery64_2e255m19/fesubDisplay.log
deleted file mode 100644
index 68b1ede8b..000000000
--- a/src/Specific/montgomery64_2e255m19/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffedL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m19/fesubDisplay.v b/src/Specific/montgomery64_2e255m19/fesubDisplay.v
deleted file mode 100644
index 32d63831c..000000000
--- a/src/Specific/montgomery64_2e255m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e255m19/CurveParameters.v b/src/Specific/montgomery64_2e255m19_4limbs/CurveParameters.v
index a82c6a4f3..a82c6a4f3 100644
--- a/src/Specific/montgomery64_2e255m19/CurveParameters.v
+++ b/src/Specific/montgomery64_2e255m19_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/Synthesis.v b/src/Specific/montgomery64_2e255m19_4limbs/Synthesis.v
new file mode 100644
index 000000000..4fc32ad44
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e255m19/compiler.sh b/src/Specific/montgomery64_2e255m19_4limbs/compiler.sh
index 511f71918..511f71918 100755
--- a/src/Specific/montgomery64_2e255m19/compiler.sh
+++ b/src/Specific/montgomery64_2e255m19_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e255m19/compilerxx.sh b/src/Specific/montgomery64_2e255m19_4limbs/compilerxx.sh
index 53d8a1827..53d8a1827 100755
--- a/src/Specific/montgomery64_2e255m19/compilerxx.sh
+++ b/src/Specific/montgomery64_2e255m19_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/feadd.v b/src/Specific/montgomery64_2e255m19_4limbs/feadd.v
new file mode 100644
index 000000000..b2f2a364d
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e255m19_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..450f306c3
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/femul.v b/src/Specific/montgomery64_2e255m19_4limbs/femul.v
new file mode 100644
index 000000000..b2c1f97c4
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e255m19_4limbs/femulDisplay.v
new file mode 100644
index 000000000..d1bef8998
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/fenz.v b/src/Specific/montgomery64_2e255m19_4limbs/fenz.v
new file mode 100644
index 000000000..deab9711a
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e255m19_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..1902024fd
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/feopp.v b/src/Specific/montgomery64_2e255m19_4limbs/feopp.v
new file mode 100644
index 000000000..1c288f624
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e255m19_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..69a1c33a7
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/fesub.v b/src/Specific/montgomery64_2e255m19_4limbs/fesub.v
new file mode 100644
index 000000000..0cbd08a32
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e255m19_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e255m19_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..cbc7270f7
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m19_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m19_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e255m19/py_interpreter.sh b/src/Specific/montgomery64_2e255m19_4limbs/py_interpreter.sh
index 90e12d083..90e12d083 100755
--- a/src/Specific/montgomery64_2e255m19/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e255m19_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v
deleted file mode 100644
index caefcd321..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^255 - 2^4 - 2^1 - 1
-Base: 64
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 4%nat;
- base := 64;
- bitwidth := 64;
- s := 2^255;
- c := [(1, 1); (2^1, 1); (2^4, 1)];
- carry_chains := None;
-
- a24 := None;
- coef_div_modulus := None;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := true;
- freeze := Some false;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v
deleted file mode 100644
index fd251b416..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh b/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh
deleted file mode 100755
index 13a09c62b..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/compilerxx.sh b/src/Specific/montgomery64_2e255m2e4m2e1m1/compilerxx.sh
deleted file mode 100755
index f905809b0..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.c
deleted file mode 100644
index caf4ae59e..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffedL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7fffffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v
deleted file mode 100644
index a89156c91..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.log b/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.log
deleted file mode 100644
index 0afad5f44..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffedL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v
deleted file mode 100644
index 9ec2b3bf0..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.c
deleted file mode 100644
index 27976f9d3..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0x86bca1af286bca1bL, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffffedL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7fffffffffffffffL, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0x86bca1af286bca1bL, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffffedL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7fffffffffffffffL, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0x86bca1af286bca1bL, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffffedL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7fffffffffffffffL, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0x86bca1af286bca1bL, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffffedL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7fffffffffffffffL, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffffedL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7fffffffffffffffL, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v
deleted file mode 100644
index f3ce36d68..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.log b/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.log
deleted file mode 100644
index 0a8c04e28..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0x86bca1af286bca1bL);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffffedL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7fffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0x86bca1af286bca1bL);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffffedL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7fffffffffffffffL);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0x86bca1af286bca1bL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffffedL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7fffffffffffffffL);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0x86bca1af286bca1bL);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffffedL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7fffffffffffffffL);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffffedL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v
deleted file mode 100644
index 2100cc41b..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v
deleted file mode 100644
index 0cf0f008e..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.log b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v
deleted file mode 100644
index e073de9ec..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.c
deleted file mode 100644
index f7bc56926..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffedL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v
deleted file mode 100644
index 22ce892c0..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.log b/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.log
deleted file mode 100644
index ef7f18fdb..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffedL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v
deleted file mode 100644
index ac250f528..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesquare.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.c b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.c
deleted file mode 100644
index 8e4400464..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffedL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v
deleted file mode 100644
index d0bced220..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.log b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.log
deleted file mode 100644
index 68b1ede8b..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffedL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v
deleted file mode 100644
index 26c9e3f2a..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m2e4m2e1m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e255m2e4m2e1m1/py_interpreter.sh b/src/Specific/montgomery64_2e255m2e4m2e1m1/py_interpreter.sh
deleted file mode 100755
index ddd7f4f64..000000000
--- a/src/Specific/montgomery64_2e255m2e4m2e1m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**255 - 2**4 - 2**1 - 1' -Dmodulus_bytes='64' -Da24='121665'
diff --git a/src/Specific/montgomery64_2e255m765/Synthesis.v b/src/Specific/montgomery64_2e255m765/Synthesis.v
deleted file mode 100644
index 1ca7feee8..000000000
--- a/src/Specific/montgomery64_2e255m765/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e255m765.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e255m765/feadd.c b/src/Specific/montgomery64_2e255m765/feadd.c
deleted file mode 100644
index 44d3c7827..000000000
--- a/src/Specific/montgomery64_2e255m765/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffffffffd03L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0x7fffffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m765/feadd.v b/src/Specific/montgomery64_2e255m765/feadd.v
deleted file mode 100644
index 4ffe91126..000000000
--- a/src/Specific/montgomery64_2e255m765/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e255m765/feaddDisplay.log b/src/Specific/montgomery64_2e255m765/feaddDisplay.log
deleted file mode 100644
index fe4bb1921..000000000
--- a/src/Specific/montgomery64_2e255m765/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffffffffd03L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m765/feaddDisplay.v b/src/Specific/montgomery64_2e255m765/feaddDisplay.v
deleted file mode 100644
index 6e9d0ea72..000000000
--- a/src/Specific/montgomery64_2e255m765/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m765.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e255m765/femul.c b/src/Specific/montgomery64_2e255m765/femul.c
deleted file mode 100644
index b2c04e1ce..000000000
--- a/src/Specific/montgomery64_2e255m765/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xaa54ffaa54ffaa55L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffffffffd03L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0x7fffffffffffffffL, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xaa54ffaa54ffaa55L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffffffffd03L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0x7fffffffffffffffL, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xaa54ffaa54ffaa55L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffffffffd03L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0x7fffffffffffffffL, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xaa54ffaa54ffaa55L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffffffffd03L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0x7fffffffffffffffL, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffffffffd03L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0x7fffffffffffffffL, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m765/femul.v b/src/Specific/montgomery64_2e255m765/femul.v
deleted file mode 100644
index 383df0ec0..000000000
--- a/src/Specific/montgomery64_2e255m765/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e255m765/femulDisplay.log b/src/Specific/montgomery64_2e255m765/femulDisplay.log
deleted file mode 100644
index 88a22cde6..000000000
--- a/src/Specific/montgomery64_2e255m765/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xaa54ffaa54ffaa55L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffffffffd03L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0x7fffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xaa54ffaa54ffaa55L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffffffffd03L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0x7fffffffffffffffL);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xaa54ffaa54ffaa55L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffffffffd03L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0x7fffffffffffffffL);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xaa54ffaa54ffaa55L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffffffffd03L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0x7fffffffffffffffL);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffffffffd03L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m765/femulDisplay.v b/src/Specific/montgomery64_2e255m765/femulDisplay.v
deleted file mode 100644
index 43c9ca5af..000000000
--- a/src/Specific/montgomery64_2e255m765/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m765.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e255m765/fenz.c b/src/Specific/montgomery64_2e255m765/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e255m765/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m765/fenz.v b/src/Specific/montgomery64_2e255m765/fenz.v
deleted file mode 100644
index ccfff304c..000000000
--- a/src/Specific/montgomery64_2e255m765/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e255m765/fenzDisplay.log b/src/Specific/montgomery64_2e255m765/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e255m765/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e255m765/fenzDisplay.v b/src/Specific/montgomery64_2e255m765/fenzDisplay.v
deleted file mode 100644
index 7ff9cc9cf..000000000
--- a/src/Specific/montgomery64_2e255m765/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m765.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e255m765/feopp.c b/src/Specific/montgomery64_2e255m765/feopp.c
deleted file mode 100644
index 3842bfcc0..000000000
--- a/src/Specific/montgomery64_2e255m765/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffd03L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m765/feopp.v b/src/Specific/montgomery64_2e255m765/feopp.v
deleted file mode 100644
index b21d13c87..000000000
--- a/src/Specific/montgomery64_2e255m765/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e255m765/feoppDisplay.log b/src/Specific/montgomery64_2e255m765/feoppDisplay.log
deleted file mode 100644
index bc3a61489..000000000
--- a/src/Specific/montgomery64_2e255m765/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffd03L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0x7fffffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m765/feoppDisplay.v b/src/Specific/montgomery64_2e255m765/feoppDisplay.v
deleted file mode 100644
index baa171ec2..000000000
--- a/src/Specific/montgomery64_2e255m765/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m765.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e255m765/fesquare.c b/src/Specific/montgomery64_2e255m765/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e255m765/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e255m765/fesub.c b/src/Specific/montgomery64_2e255m765/fesub.c
deleted file mode 100644
index 61706f866..000000000
--- a/src/Specific/montgomery64_2e255m765/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffffffffd03L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e255m765/fesub.v b/src/Specific/montgomery64_2e255m765/fesub.v
deleted file mode 100644
index a82f60333..000000000
--- a/src/Specific/montgomery64_2e255m765/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e255m765/fesubDisplay.log b/src/Specific/montgomery64_2e255m765/fesubDisplay.log
deleted file mode 100644
index f31b891f6..000000000
--- a/src/Specific/montgomery64_2e255m765/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffffffffd03L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0x7fffffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e255m765/fesubDisplay.v b/src/Specific/montgomery64_2e255m765/fesubDisplay.v
deleted file mode 100644
index 654fbccbc..000000000
--- a/src/Specific/montgomery64_2e255m765/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e255m765.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e255m765/CurveParameters.v b/src/Specific/montgomery64_2e255m765_4limbs/CurveParameters.v
index 24ae9e3d8..24ae9e3d8 100644
--- a/src/Specific/montgomery64_2e255m765/CurveParameters.v
+++ b/src/Specific/montgomery64_2e255m765_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/Synthesis.v b/src/Specific/montgomery64_2e255m765_4limbs/Synthesis.v
new file mode 100644
index 000000000..1062894ae
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e255m765/compiler.sh b/src/Specific/montgomery64_2e255m765_4limbs/compiler.sh
index 63dc7a3b5..63dc7a3b5 100755
--- a/src/Specific/montgomery64_2e255m765/compiler.sh
+++ b/src/Specific/montgomery64_2e255m765_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e255m765/compilerxx.sh b/src/Specific/montgomery64_2e255m765_4limbs/compilerxx.sh
index 66d7169af..66d7169af 100755
--- a/src/Specific/montgomery64_2e255m765/compilerxx.sh
+++ b/src/Specific/montgomery64_2e255m765_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/feadd.v b/src/Specific/montgomery64_2e255m765_4limbs/feadd.v
new file mode 100644
index 000000000..c79fa3c96
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e255m765_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..5b4720878
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/femul.v b/src/Specific/montgomery64_2e255m765_4limbs/femul.v
new file mode 100644
index 000000000..1f615977e
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e255m765_4limbs/femulDisplay.v
new file mode 100644
index 000000000..dde0a7c9f
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/fenz.v b/src/Specific/montgomery64_2e255m765_4limbs/fenz.v
new file mode 100644
index 000000000..00f4de132
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e255m765_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..a4922ce86
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/feopp.v b/src/Specific/montgomery64_2e255m765_4limbs/feopp.v
new file mode 100644
index 000000000..88c79387d
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e255m765_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..5d6635c3d
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/fesub.v b/src/Specific/montgomery64_2e255m765_4limbs/fesub.v
new file mode 100644
index 000000000..5a98a42f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e255m765_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e255m765_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7cb3ba9df
--- /dev/null
+++ b/src/Specific/montgomery64_2e255m765_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e255m765_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e255m765/py_interpreter.sh b/src/Specific/montgomery64_2e255m765_4limbs/py_interpreter.sh
index 1dca40d71..1dca40d71 100755
--- a/src/Specific/montgomery64_2e255m765/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e255m765_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e256m189/Synthesis.v b/src/Specific/montgomery64_2e256m189/Synthesis.v
deleted file mode 100644
index 16e00f287..000000000
--- a/src/Specific/montgomery64_2e256m189/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e256m189.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m189/feadd.c b/src/Specific/montgomery64_2e256m189/feadd.c
deleted file mode 100644
index 1f8f68ebe..000000000
--- a/src/Specific/montgomery64_2e256m189/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffff43L, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m189/feadd.v b/src/Specific/montgomery64_2e256m189/feadd.v
deleted file mode 100644
index 52a88df92..000000000
--- a/src/Specific/montgomery64_2e256m189/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m189/feaddDisplay.log b/src/Specific/montgomery64_2e256m189/feaddDisplay.log
deleted file mode 100644
index 5b28c3467..000000000
--- a/src/Specific/montgomery64_2e256m189/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffff43L);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m189/feaddDisplay.v b/src/Specific/montgomery64_2e256m189/feaddDisplay.v
deleted file mode 100644
index 363d867a5..000000000
--- a/src/Specific/montgomery64_2e256m189/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m189.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e256m189/femul.c b/src/Specific/montgomery64_2e256m189/femul.c
deleted file mode 100644
index 7acb54447..000000000
--- a/src/Specific/montgomery64_2e256m189/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xa53fa94fea53fa95L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xffffffffffffff43L, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0xffffffffffffffffL, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xa53fa94fea53fa95L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xffffffffffffff43L, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0xffffffffffffffffL, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xa53fa94fea53fa95L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xffffffffffffff43L, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0xffffffffffffffffL, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xa53fa94fea53fa95L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xffffffffffffff43L, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0xffffffffffffffffL, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xffffffffffffff43L, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0xffffffffffffffffL, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m189/femul.v b/src/Specific/montgomery64_2e256m189/femul.v
deleted file mode 100644
index 54b070858..000000000
--- a/src/Specific/montgomery64_2e256m189/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m189/femulDisplay.log b/src/Specific/montgomery64_2e256m189/femulDisplay.log
deleted file mode 100644
index e9d9a9334..000000000
--- a/src/Specific/montgomery64_2e256m189/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xa53fa94fea53fa95L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xffffffffffffff43L);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xa53fa94fea53fa95L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xffffffffffffff43L);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xa53fa94fea53fa95L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffff43L);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xa53fa94fea53fa95L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xffffffffffffff43L);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xffffffffffffff43L);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0xffffffffffffffffL);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m189/femulDisplay.v b/src/Specific/montgomery64_2e256m189/femulDisplay.v
deleted file mode 100644
index 0a310f262..000000000
--- a/src/Specific/montgomery64_2e256m189/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m189.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e256m189/fenz.c b/src/Specific/montgomery64_2e256m189/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e256m189/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m189/fenz.v b/src/Specific/montgomery64_2e256m189/fenz.v
deleted file mode 100644
index 476ef4915..000000000
--- a/src/Specific/montgomery64_2e256m189/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m189/fenzDisplay.log b/src/Specific/montgomery64_2e256m189/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e256m189/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e256m189/fenzDisplay.v b/src/Specific/montgomery64_2e256m189/fenzDisplay.v
deleted file mode 100644
index f5b34b6d8..000000000
--- a/src/Specific/montgomery64_2e256m189/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m189.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m189/feopp.c b/src/Specific/montgomery64_2e256m189/feopp.c
deleted file mode 100644
index e6fb61c33..000000000
--- a/src/Specific/montgomery64_2e256m189/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffff43L);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xffffffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m189/feopp.v b/src/Specific/montgomery64_2e256m189/feopp.v
deleted file mode 100644
index 474026b45..000000000
--- a/src/Specific/montgomery64_2e256m189/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m189/feoppDisplay.log b/src/Specific/montgomery64_2e256m189/feoppDisplay.log
deleted file mode 100644
index 9eabbbfcf..000000000
--- a/src/Specific/montgomery64_2e256m189/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffff43L);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xffffffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m189/feoppDisplay.v b/src/Specific/montgomery64_2e256m189/feoppDisplay.v
deleted file mode 100644
index 6bc246b17..000000000
--- a/src/Specific/montgomery64_2e256m189/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m189.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e256m189/fesquare.c b/src/Specific/montgomery64_2e256m189/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e256m189/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e256m189/fesub.c b/src/Specific/montgomery64_2e256m189/fesub.c
deleted file mode 100644
index 235e733b4..000000000
--- a/src/Specific/montgomery64_2e256m189/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffff43L);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xffffffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m189/fesub.v b/src/Specific/montgomery64_2e256m189/fesub.v
deleted file mode 100644
index 33d170ead..000000000
--- a/src/Specific/montgomery64_2e256m189/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m189/fesubDisplay.log b/src/Specific/montgomery64_2e256m189/fesubDisplay.log
deleted file mode 100644
index a7aa158b4..000000000
--- a/src/Specific/montgomery64_2e256m189/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffff43L);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xffffffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m189/fesubDisplay.v b/src/Specific/montgomery64_2e256m189/fesubDisplay.v
deleted file mode 100644
index cda7c4b5e..000000000
--- a/src/Specific/montgomery64_2e256m189/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m189.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e256m189/CurveParameters.v b/src/Specific/montgomery64_2e256m189_4limbs/CurveParameters.v
index c6844835e..c6844835e 100644
--- a/src/Specific/montgomery64_2e256m189/CurveParameters.v
+++ b/src/Specific/montgomery64_2e256m189_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/Synthesis.v b/src/Specific/montgomery64_2e256m189_4limbs/Synthesis.v
new file mode 100644
index 000000000..c848649b6
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m189/compiler.sh b/src/Specific/montgomery64_2e256m189_4limbs/compiler.sh
index 92ccec083..92ccec083 100755
--- a/src/Specific/montgomery64_2e256m189/compiler.sh
+++ b/src/Specific/montgomery64_2e256m189_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e256m189/compilerxx.sh b/src/Specific/montgomery64_2e256m189_4limbs/compilerxx.sh
index d58d0fe05..d58d0fe05 100755
--- a/src/Specific/montgomery64_2e256m189/compilerxx.sh
+++ b/src/Specific/montgomery64_2e256m189_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/feadd.v b/src/Specific/montgomery64_2e256m189_4limbs/feadd.v
new file mode 100644
index 000000000..82683d6a9
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e256m189_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..92c1c0c1e
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/femul.v b/src/Specific/montgomery64_2e256m189_4limbs/femul.v
new file mode 100644
index 000000000..ce046d552
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e256m189_4limbs/femulDisplay.v
new file mode 100644
index 000000000..247fc3ba8
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/fenz.v b/src/Specific/montgomery64_2e256m189_4limbs/fenz.v
new file mode 100644
index 000000000..e6a62189a
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e256m189_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..fc77eb948
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/feopp.v b/src/Specific/montgomery64_2e256m189_4limbs/feopp.v
new file mode 100644
index 000000000..88e81e1bb
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e256m189_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..727d3a5e4
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/fesub.v b/src/Specific/montgomery64_2e256m189_4limbs/fesub.v
new file mode 100644
index 000000000..818853ad0
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m189_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e256m189_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..912959003
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m189_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m189_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e256m189/py_interpreter.sh b/src/Specific/montgomery64_2e256m189_4limbs/py_interpreter.sh
index 457d92c81..457d92c81 100755
--- a/src/Specific/montgomery64_2e256m189/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e256m189_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v
deleted file mode 100644
index 10fb1326a..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.c
deleted file mode 100644
index 9b4c39955..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffff, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0x0, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffffff00000001L, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v
deleted file mode 100644
index e864c286c..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.log b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.log
deleted file mode 100644
index 9849e94ae..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffff);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0x0);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffffff00000001L);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v
deleted file mode 100644
index 695e31eee..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.c
deleted file mode 100644
index 71c0a2e99..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.c
+++ /dev/null
@@ -1,122 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t x42; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x17, 0xffffffff, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x17, 0xffffffff00000001L, &x48);
- { uint64_t x50; uint8_t x51 = _addcarryx_u64(0x0, x42, x44, &x50);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x51, x45, 0x0, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, 0x0, x47, &x56);
- { uint64_t x59; uint8_t _ = _addcarryx_u64(0x0, x57, x48, &x59);
- { uint64_t _; uint8_t x63 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x65; uint8_t x66 = _addcarryx_u64(x63, x29, x50, &x65);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x32, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x35, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x38, x59, &x74);
- { uint64_t x78; uint64_t x77 = _mulx_u64(x7, x11, &x78);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x13, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x15, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x14, &x87);
- { uint64_t x89; uint8_t x90 = _addcarryx_u64(0x0, x78, x80, &x89);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(x90, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t _ = _addcarryx_u64(0x0, x96, x87, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(0x0, x65, x77, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x68, x89, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x75, x98, &x113);
- { uint64_t x117; uint64_t x116 = _mulx_u64(x101, 0xffffffffffffffffL, &x117);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x101, 0xffffffff, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x101, 0xffffffff00000001L, &x123);
- { uint64_t x125; uint8_t x126 = _addcarryx_u64(0x0, x117, x119, &x125);
- { uint64_t x128; uint8_t x129 = _addcarryx_u64(x126, x120, 0x0, &x128);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(x129, 0x0, x122, &x131);
- { uint64_t x134; uint8_t _ = _addcarryx_u64(0x0, x132, x123, &x134);
- { uint64_t _; uint8_t x138 = _addcarryx_u64(0x0, x101, x116, &_);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x104, x125, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x107, x128, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x110, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x113, x134, &x149);
- { uint8_t x151 = (x150 + x114);
- { uint64_t x154; uint64_t x153 = _mulx_u64(x9, x11, &x154);
- { uint64_t x157; uint64_t x156 = _mulx_u64(x9, x13, &x157);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x15, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x14, &x163);
- { uint64_t x165; uint8_t x166 = _addcarryx_u64(0x0, x154, x156, &x165);
- { uint64_t x168; uint8_t x169 = _addcarryx_u64(x166, x157, x159, &x168);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x160, x162, &x171);
- { uint64_t x174; uint8_t _ = _addcarryx_u64(0x0, x172, x163, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x140, x153, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x143, x165, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x146, x168, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x151, x174, &x189);
- { uint64_t x193; uint64_t x192 = _mulx_u64(x177, 0xffffffffffffffffL, &x193);
- { uint64_t x196; uint64_t x195 = _mulx_u64(x177, 0xffffffff, &x196);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x177, 0xffffffff00000001L, &x199);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(0x0, x193, x195, &x201);
- { uint64_t x204; uint8_t x205 = _addcarryx_u64(x202, x196, 0x0, &x204);
- { uint64_t x207; uint8_t x208 = _addcarryx_u64(x205, 0x0, x198, &x207);
- { uint64_t x210; uint8_t _ = _addcarryx_u64(0x0, x208, x199, &x210);
- { uint64_t _; uint8_t x214 = _addcarryx_u64(0x0, x177, x192, &_);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x180, x201, &x216);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x183, x204, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x186, x207, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x189, x210, &x225);
- { uint8_t x227 = (x226 + x190);
- { uint64_t x230; uint64_t x229 = _mulx_u64(x8, x11, &x230);
- { uint64_t x233; uint64_t x232 = _mulx_u64(x8, x13, &x233);
- { uint64_t x236; uint64_t x235 = _mulx_u64(x8, x15, &x236);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x14, &x239);
- { uint64_t x241; uint8_t x242 = _addcarryx_u64(0x0, x230, x232, &x241);
- { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x233, x235, &x244);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x236, x238, &x247);
- { uint64_t x250; uint8_t _ = _addcarryx_u64(0x0, x248, x239, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(0x0, x216, x229, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x219, x241, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x222, x244, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x225, x247, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x227, x250, &x265);
- { uint64_t x269; uint64_t x268 = _mulx_u64(x253, 0xffffffffffffffffL, &x269);
- { uint64_t x272; uint64_t x271 = _mulx_u64(x253, 0xffffffff, &x272);
- { uint64_t x275; uint64_t x274 = _mulx_u64(x253, 0xffffffff00000001L, &x275);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(0x0, x269, x271, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x272, 0x0, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, 0x0, x274, &x283);
- { uint64_t x286; uint8_t _ = _addcarryx_u64(0x0, x284, x275, &x286);
- { uint64_t _; uint8_t x290 = _addcarryx_u64(0x0, x253, x268, &_);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x256, x277, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x259, x280, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x262, x283, &x298);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(x299, x265, x286, &x301);
- { uint8_t x303 = (x302 + x266);
- { uint64_t x305; uint8_t x306 = _subborrow_u64(0x0, x292, 0xffffffffffffffffL, &x305);
- { uint64_t x308; uint8_t x309 = _subborrow_u64(x306, x295, 0xffffffff, &x308);
- { uint64_t x311; uint8_t x312 = _subborrow_u64(x309, x298, 0x0, &x311);
- { uint64_t x314; uint8_t x315 = _subborrow_u64(x312, x301, 0xffffffff00000001L, &x314);
- { uint64_t _; uint8_t x318 = _subborrow_u64(x315, x303, 0x0, &_);
- { uint64_t x319 = cmovznz64(x318, x314, x301);
- { uint64_t x320 = cmovznz64(x318, x311, x298);
- { uint64_t x321 = cmovznz64(x318, x308, x295);
- { uint64_t x322 = cmovznz64(x318, x305, x292);
- out[0] = x322;
- out[1] = x321;
- out[2] = x320;
- out[3] = x319;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v
deleted file mode 100644
index a47f76782..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.log b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.log
deleted file mode 100644
index 1ad198fe0..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.log
+++ /dev/null
@@ -1,114 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t x42 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x17, 0xffffffff);
- uint64_t x47, uint64_t x48 = mulx_u64(x17, 0xffffffff00000001L);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x42, x44);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x45, 0x0);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, 0x0, x47);
- uint64_t x59, uint8_t _ = addcarryx_u64(0x0, x57, x48);
- uint64_t _, uint8_t x63 = addcarryx_u64(0x0, x17, x41);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x29, x50);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x32, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x35, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x38, x59);
- uint64_t x77, uint64_t x78 = mulx_u64(x7, x11);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x13);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x15);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x14);
- uint64_t x89, uint8_t x90 = addcarryx_u64(0x0, x78, x80);
- uint64_t x92, uint8_t x93 = addcarryx_u64(x90, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t _ = addcarryx_u64(0x0, x96, x87);
- uint64_t x101, uint8_t x102 = addcarryx_u64(0x0, x65, x77);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x68, x89);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x75, x98);
- uint64_t x116, uint64_t x117 = mulx_u64(x101, 0xffffffffffffffffL);
- uint64_t x119, uint64_t x120 = mulx_u64(x101, 0xffffffff);
- uint64_t x122, uint64_t x123 = mulx_u64(x101, 0xffffffff00000001L);
- uint64_t x125, uint8_t x126 = addcarryx_u64(0x0, x117, x119);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x120, 0x0);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, 0x0, x122);
- uint64_t x134, uint8_t _ = addcarryx_u64(0x0, x132, x123);
- uint64_t _, uint8_t x138 = addcarryx_u64(0x0, x101, x116);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x104, x125);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x107, x128);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x110, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x113, x134);
- uint8_t x151 = (x150 + x114);
- uint64_t x153, uint64_t x154 = mulx_u64(x9, x11);
- uint64_t x156, uint64_t x157 = mulx_u64(x9, x13);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x15);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x14);
- uint64_t x165, uint8_t x166 = addcarryx_u64(0x0, x154, x156);
- uint64_t x168, uint8_t x169 = addcarryx_u64(x166, x157, x159);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x160, x162);
- uint64_t x174, uint8_t _ = addcarryx_u64(0x0, x172, x163);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x140, x153);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x143, x165);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x146, x168);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x151, x174);
- uint64_t x192, uint64_t x193 = mulx_u64(x177, 0xffffffffffffffffL);
- uint64_t x195, uint64_t x196 = mulx_u64(x177, 0xffffffff);
- uint64_t x198, uint64_t x199 = mulx_u64(x177, 0xffffffff00000001L);
- uint64_t x201, uint8_t x202 = addcarryx_u64(0x0, x193, x195);
- uint64_t x204, uint8_t x205 = addcarryx_u64(x202, x196, 0x0);
- uint64_t x207, uint8_t x208 = addcarryx_u64(x205, 0x0, x198);
- uint64_t x210, uint8_t _ = addcarryx_u64(0x0, x208, x199);
- uint64_t _, uint8_t x214 = addcarryx_u64(0x0, x177, x192);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x180, x201);
- uint64_t x219, uint8_t x220 = addcarryx_u64(x217, x183, x204);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x186, x207);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x189, x210);
- uint8_t x227 = (x226 + x190);
- uint64_t x229, uint64_t x230 = mulx_u64(x8, x11);
- uint64_t x232, uint64_t x233 = mulx_u64(x8, x13);
- uint64_t x235, uint64_t x236 = mulx_u64(x8, x15);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x14);
- uint64_t x241, uint8_t x242 = addcarryx_u64(0x0, x230, x232);
- uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x233, x235);
- uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x236, x238);
- uint64_t x250, uint8_t _ = addcarryx_u64(0x0, x248, x239);
- uint64_t x253, uint8_t x254 = addcarryx_u64(0x0, x216, x229);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x219, x241);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x222, x244);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x225, x247);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x227, x250);
- uint64_t x268, uint64_t x269 = mulx_u64(x253, 0xffffffffffffffffL);
- uint64_t x271, uint64_t x272 = mulx_u64(x253, 0xffffffff);
- uint64_t x274, uint64_t x275 = mulx_u64(x253, 0xffffffff00000001L);
- uint64_t x277, uint8_t x278 = addcarryx_u64(0x0, x269, x271);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x272, 0x0);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, 0x0, x274);
- uint64_t x286, uint8_t _ = addcarryx_u64(0x0, x284, x275);
- uint64_t _, uint8_t x290 = addcarryx_u64(0x0, x253, x268);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x256, x277);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x259, x280);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x262, x283);
- uint64_t x301, uint8_t x302 = addcarryx_u64(x299, x265, x286);
- uint8_t x303 = (x302 + x266);
- uint64_t x305, uint8_t x306 = subborrow_u64(0x0, x292, 0xffffffffffffffffL);
- uint64_t x308, uint8_t x309 = subborrow_u64(x306, x295, 0xffffffff);
- uint64_t x311, uint8_t x312 = subborrow_u64(x309, x298, 0x0);
- uint64_t x314, uint8_t x315 = subborrow_u64(x312, x301, 0xffffffff00000001L);
- uint64_t _, uint8_t x318 = subborrow_u64(x315, x303, 0x0);
- uint64_t x319 = cmovznz64(x318, x314, x301);
- uint64_t x320 = cmovznz64(x318, x311, x298);
- uint64_t x321 = cmovznz64(x318, x308, x295);
- uint64_t x322 = cmovznz64(x318, x305, x292);
- return (x319, x320, x321, x322))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v
deleted file mode 100644
index 106a547a1..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v
deleted file mode 100644
index 87cd2ecb4..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.log b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v
deleted file mode 100644
index 226c8a395..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.c
deleted file mode 100644
index 680f0ec5b..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.c
+++ /dev/null
@@ -1,23 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffffL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffff);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(x27, x14, 0x0, &x29);
- { uint64_t x31 = (x19 & 0xffffffff00000001L);
- { uint64_t x33; uint8_t _ = _addcarryx_u64(x30, x17, x31, &x33);
- out[0] = x22;
- out[1] = x26;
- out[2] = x29;
- out[3] = x33;
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v
deleted file mode 100644
index a4e662fc8..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.log b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.log
deleted file mode 100644
index b08bcd7fb..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffffL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffff);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x29, uint8_t x30 = addcarryx_u64(x27, x14, 0x0);
- uint64_t x31 = (x19 & 0xffffffff00000001L);
- uint64_t x33, uint8_t _ = addcarryx_u64(x30, x17, x31);
- (Return x33, Return x29, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v
deleted file mode 100644
index 0122644a6..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesquare.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.c b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.c
deleted file mode 100644
index 7697d07d2..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x23, 0x0, &x38);
- { uint64_t x40 = (x28 & 0xffffffff00000001L);
- { uint64_t x42; uint8_t _ = _addcarryx_u64(x39, x26, x40, &x42);
- out[0] = x31;
- out[1] = x35;
- out[2] = x38;
- out[3] = x42;
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v
deleted file mode 100644
index a09164acc..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.log b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.log
deleted file mode 100644
index 9175c3383..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.log
+++ /dev/null
@@ -1,19 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x23, 0x0);
- uint64_t x40 = (x28 & 0xffffffff00000001L);
- uint64_t x42, uint8_t _ = addcarryx_u64(x39, x26, x40);
- (Return x42, Return x38, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v
deleted file mode 100644
index 281fe514c..000000000
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/CurveParameters.v
index 1d1a9e4a7..1d1a9e4a7 100644
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..bfe232445
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compiler.sh
index 1dc7c1ca2..1dc7c1ca2 100755
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compiler.sh
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compilerxx.sh b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compilerxx.sh
index 6ea1aa644..6ea1aa644 100755
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feadd.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feadd.v
new file mode 100644
index 000000000..152486e84
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..2a123f9d3
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femul.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femul.v
new file mode 100644
index 000000000..921d38ccb
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..18f0467cb
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenz.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenz.v
new file mode 100644
index 000000000..76dc46dd4
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..8544084a1
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feopp.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feopp.v
new file mode 100644
index 000000000..839f259b0
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..b08796e1d
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesub.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesub.v
new file mode 100644
index 000000000..bd5ef89b7
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..c72236eec
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e224p2e192p2e96m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/py_interpreter.sh b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/py_interpreter.sh
index 211c82368..211c82368 100755
--- a/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e256m2e224p2e192p2e96m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v b/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v
deleted file mode 100644
index e004cf4b2..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feadd.c b/src/Specific/montgomery64_2e256m2e32m977/feadd.c
deleted file mode 100644
index 14f720f2d..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xfffffffefffffc2fL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffffffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feadd.v b/src/Specific/montgomery64_2e256m2e32m977/feadd.v
deleted file mode 100644
index 9d82497ad..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.log b/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.log
deleted file mode 100644
index ae304849e..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xfffffffefffffc2fL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffffffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v
deleted file mode 100644
index d16ae6e53..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/femul.c b/src/Specific/montgomery64_2e256m2e32m977/femul.c
deleted file mode 100644
index e6301b612..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/femul.c
+++ /dev/null
@@ -1,130 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t _; uint64_t x41 = _mulx_u64(x17, 0xd838091dd2253531L, &_);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x41, 0xfffffffefffffc2fL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x41, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x41, 0xffffffffffffffffL, &x51);
- { uint64_t x54; uint64_t x53 = _mulx_u64(x41, 0xffffffffffffffffL, &x54);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(0x0, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t x63 = _addcarryx_u64(x60, x51, x53, &x62);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(0x0, x63, x54, &x65);
- { uint64_t _; uint8_t x69 = _addcarryx_u64(0x0, x17, x44, &_);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x29, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x32, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x35, x62, &x77);
- { uint64_t x80; uint8_t x81 = _addcarryx_u64(x78, x38, x65, &x80);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x11, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x13, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x15, &x90);
- { uint64_t x93; uint64_t x92 = _mulx_u64(x7, x14, &x93);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(0x0, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x90, x92, &x101);
- { uint64_t x104; uint8_t _ = _addcarryx_u64(0x0, x102, x93, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(0x0, x71, x83, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x80, x101, &x116);
- { uint64_t x119; uint8_t x120 = _addcarryx_u64(x117, x81, x104, &x119);
- { uint64_t _; uint64_t x122 = _mulx_u64(x107, 0xd838091dd2253531L, &_);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x122, 0xfffffffefffffc2fL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x122, 0xffffffffffffffffL, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x122, 0xffffffffffffffffL, &x132);
- { uint64_t x135; uint64_t x134 = _mulx_u64(x122, 0xffffffffffffffffL, &x135);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(0x0, x126, x128, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x129, x131, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x132, x134, &x143);
- { uint64_t x146; uint8_t _ = _addcarryx_u64(0x0, x144, x135, &x146);
- { uint64_t _; uint8_t x150 = _addcarryx_u64(0x0, x107, x125, &_);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x110, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x113, x140, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x116, x143, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x119, x146, &x161);
- { uint8_t x163 = (x162 + x120);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x11, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x13, &x169);
- { uint64_t x172; uint64_t x171 = _mulx_u64(x9, x15, &x172);
- { uint64_t x175; uint64_t x174 = _mulx_u64(x9, x14, &x175);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(0x0, x166, x168, &x177);
- { uint64_t x180; uint8_t x181 = _addcarryx_u64(x178, x169, x171, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(x181, x172, x174, &x183);
- { uint64_t x186; uint8_t _ = _addcarryx_u64(0x0, x184, x175, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(0x0, x152, x165, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x158, x180, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x161, x183, &x198);
- { uint64_t x201; uint8_t x202 = _addcarryx_u64(x199, x163, x186, &x201);
- { uint64_t _; uint64_t x204 = _mulx_u64(x189, 0xd838091dd2253531L, &_);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x204, 0xfffffffefffffc2fL, &x208);
- { uint64_t x211; uint64_t x210 = _mulx_u64(x204, 0xffffffffffffffffL, &x211);
- { uint64_t x214; uint64_t x213 = _mulx_u64(x204, 0xffffffffffffffffL, &x214);
- { uint64_t x217; uint64_t x216 = _mulx_u64(x204, 0xffffffffffffffffL, &x217);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(0x0, x208, x210, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x211, x213, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x214, x216, &x225);
- { uint64_t x228; uint8_t _ = _addcarryx_u64(0x0, x226, x217, &x228);
- { uint64_t _; uint8_t x232 = _addcarryx_u64(0x0, x189, x207, &_);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x192, x219, &x234);
- { uint64_t x237; uint8_t x238 = _addcarryx_u64(x235, x195, x222, &x237);
- { uint64_t x240; uint8_t x241 = _addcarryx_u64(x238, x198, x225, &x240);
- { uint64_t x243; uint8_t x244 = _addcarryx_u64(x241, x201, x228, &x243);
- { uint8_t x245 = (x244 + x202);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x11, &x248);
- { uint64_t x251; uint64_t x250 = _mulx_u64(x8, x13, &x251);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x8, x15, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x8, x14, &x257);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(0x0, x248, x250, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(x260, x251, x253, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x254, x256, &x265);
- { uint64_t x268; uint8_t _ = _addcarryx_u64(0x0, x266, x257, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(0x0, x234, x247, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x237, x259, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x240, x262, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x243, x265, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x245, x268, &x283);
- { uint64_t _; uint64_t x286 = _mulx_u64(x271, 0xd838091dd2253531L, &_);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x286, 0xfffffffefffffc2fL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x286, 0xffffffffffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x286, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x286, 0xffffffffffffffffL, &x299);
- { uint64_t x301; uint8_t x302 = _addcarryx_u64(0x0, x290, x292, &x301);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x293, x295, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x296, x298, &x307);
- { uint64_t x310; uint8_t _ = _addcarryx_u64(0x0, x308, x299, &x310);
- { uint64_t _; uint8_t x314 = _addcarryx_u64(0x0, x271, x289, &_);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x274, x301, &x316);
- { uint64_t x319; uint8_t x320 = _addcarryx_u64(x317, x277, x304, &x319);
- { uint64_t x322; uint8_t x323 = _addcarryx_u64(x320, x280, x307, &x322);
- { uint64_t x325; uint8_t x326 = _addcarryx_u64(x323, x283, x310, &x325);
- { uint8_t x327 = (x326 + x284);
- { uint64_t x329; uint8_t x330 = _subborrow_u64(0x0, x316, 0xfffffffefffffc2fL, &x329);
- { uint64_t x332; uint8_t x333 = _subborrow_u64(x330, x319, 0xffffffffffffffffL, &x332);
- { uint64_t x335; uint8_t x336 = _subborrow_u64(x333, x322, 0xffffffffffffffffL, &x335);
- { uint64_t x338; uint8_t x339 = _subborrow_u64(x336, x325, 0xffffffffffffffffL, &x338);
- { uint64_t _; uint8_t x342 = _subborrow_u64(x339, x327, 0x0, &_);
- { uint64_t x343 = cmovznz64(x342, x338, x325);
- { uint64_t x344 = cmovznz64(x342, x335, x322);
- { uint64_t x345 = cmovznz64(x342, x332, x319);
- { uint64_t x346 = cmovznz64(x342, x329, x316);
- out[0] = x346;
- out[1] = x345;
- out[2] = x344;
- out[3] = x343;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/femul.v b/src/Specific/montgomery64_2e256m2e32m977/femul.v
deleted file mode 100644
index 5ebb4613b..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.log b/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.log
deleted file mode 100644
index 59bd5d082..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.log
+++ /dev/null
@@ -1,122 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t _ = mulx_u64(x17, 0xd838091dd2253531L);
- uint64_t x44, uint64_t x45 = mulx_u64(x41, 0xfffffffefffffc2fL);
- uint64_t x47, uint64_t x48 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x53, uint64_t x54 = mulx_u64(x41, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(0x0, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x51, x53);
- uint64_t x65, uint8_t _ = addcarryx_u64(0x0, x63, x54);
- uint64_t _, uint8_t x69 = addcarryx_u64(0x0, x17, x44);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x29, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x32, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x35, x62);
- uint64_t x80, uint8_t x81 = addcarryx_u64(x78, x38, x65);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x11);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x13);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x15);
- uint64_t x92, uint64_t x93 = mulx_u64(x7, x14);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x90, x92);
- uint64_t x104, uint8_t _ = addcarryx_u64(0x0, x102, x93);
- uint64_t x107, uint8_t x108 = addcarryx_u64(0x0, x71, x83);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x80, x101);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x81, x104);
- uint64_t x122, uint64_t _ = mulx_u64(x107, 0xd838091dd2253531L);
- uint64_t x125, uint64_t x126 = mulx_u64(x122, 0xfffffffefffffc2fL);
- uint64_t x128, uint64_t x129 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x131, uint64_t x132 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x134, uint64_t x135 = mulx_u64(x122, 0xffffffffffffffffL);
- uint64_t x137, uint8_t x138 = addcarryx_u64(0x0, x126, x128);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x129, x131);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x132, x134);
- uint64_t x146, uint8_t _ = addcarryx_u64(0x0, x144, x135);
- uint64_t _, uint8_t x150 = addcarryx_u64(0x0, x107, x125);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x110, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x113, x140);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x116, x143);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x119, x146);
- uint8_t x163 = (x162 + x120);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x11);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x13);
- uint64_t x171, uint64_t x172 = mulx_u64(x9, x15);
- uint64_t x174, uint64_t x175 = mulx_u64(x9, x14);
- uint64_t x177, uint8_t x178 = addcarryx_u64(0x0, x166, x168);
- uint64_t x180, uint8_t x181 = addcarryx_u64(x178, x169, x171);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x172, x174);
- uint64_t x186, uint8_t _ = addcarryx_u64(0x0, x184, x175);
- uint64_t x189, uint8_t x190 = addcarryx_u64(0x0, x152, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x158, x180);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x161, x183);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x163, x186);
- uint64_t x204, uint64_t _ = mulx_u64(x189, 0xd838091dd2253531L);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xfffffffefffffc2fL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x219, uint8_t x220 = addcarryx_u64(0x0, x208, x210);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x211, x213);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x214, x216);
- uint64_t x228, uint8_t _ = addcarryx_u64(0x0, x226, x217);
- uint64_t _, uint8_t x232 = addcarryx_u64(0x0, x189, x207);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x192, x219);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x195, x222);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x198, x225);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x201, x228);
- uint8_t x245 = (x244 + x202);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x11);
- uint64_t x250, uint64_t x251 = mulx_u64(x8, x13);
- uint64_t x253, uint64_t x254 = mulx_u64(x8, x15);
- uint64_t x256, uint64_t x257 = mulx_u64(x8, x14);
- uint64_t x259, uint8_t x260 = addcarryx_u64(0x0, x248, x250);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x251, x253);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x254, x256);
- uint64_t x268, uint8_t _ = addcarryx_u64(0x0, x266, x257);
- uint64_t x271, uint8_t x272 = addcarryx_u64(0x0, x234, x247);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x237, x259);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x240, x262);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x243, x265);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x245, x268);
- uint64_t x286, uint64_t _ = mulx_u64(x271, 0xd838091dd2253531L);
- uint64_t x289, uint64_t x290 = mulx_u64(x286, 0xfffffffefffffc2fL);
- uint64_t x292, uint64_t x293 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x286, 0xffffffffffffffffL);
- uint64_t x301, uint8_t x302 = addcarryx_u64(0x0, x290, x292);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x293, x295);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x296, x298);
- uint64_t x310, uint8_t _ = addcarryx_u64(0x0, x308, x299);
- uint64_t _, uint8_t x314 = addcarryx_u64(0x0, x271, x289);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x274, x301);
- uint64_t x319, uint8_t x320 = addcarryx_u64(x317, x277, x304);
- uint64_t x322, uint8_t x323 = addcarryx_u64(x320, x280, x307);
- uint64_t x325, uint8_t x326 = addcarryx_u64(x323, x283, x310);
- uint8_t x327 = (x326 + x284);
- uint64_t x329, uint8_t x330 = subborrow_u64(0x0, x316, 0xfffffffefffffc2fL);
- uint64_t x332, uint8_t x333 = subborrow_u64(x330, x319, 0xffffffffffffffffL);
- uint64_t x335, uint8_t x336 = subborrow_u64(x333, x322, 0xffffffffffffffffL);
- uint64_t x338, uint8_t x339 = subborrow_u64(x336, x325, 0xffffffffffffffffL);
- uint64_t _, uint8_t x342 = subborrow_u64(x339, x327, 0x0);
- uint64_t x343 = cmovznz64(x342, x338, x325);
- uint64_t x344 = cmovznz64(x342, x335, x322);
- uint64_t x345 = cmovznz64(x342, x332, x319);
- uint64_t x346 = cmovznz64(x342, x329, x316);
- return (x343, x344, x345, x346))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v
deleted file mode 100644
index 08226bdef..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenz.c b/src/Specific/montgomery64_2e256m2e32m977/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenz.v b/src/Specific/montgomery64_2e256m2e32m977/fenz.v
deleted file mode 100644
index d302721bb..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.log b/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v
deleted file mode 100644
index 83a518771..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feopp.c b/src/Specific/montgomery64_2e256m2e32m977/feopp.c
deleted file mode 100644
index 6461080dc..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffefffffc2fL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xffffffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feopp.v b/src/Specific/montgomery64_2e256m2e32m977/feopp.v
deleted file mode 100644
index 5b0577c2a..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.log b/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.log
deleted file mode 100644
index b89811d28..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffefffffc2fL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xffffffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v
deleted file mode 100644
index 66863fa35..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesquare.c b/src/Specific/montgomery64_2e256m2e32m977/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesub.c b/src/Specific/montgomery64_2e256m2e32m977/fesub.c
deleted file mode 100644
index 7bb6ec2a2..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xfffffffefffffc2fL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xffffffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesub.v b/src/Specific/montgomery64_2e256m2e32m977/fesub.v
deleted file mode 100644
index 564412179..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.log b/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.log
deleted file mode 100644
index fd2507333..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xfffffffefffffc2fL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xffffffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v
deleted file mode 100644
index 9886b49a2..000000000
--- a/src/Specific/montgomery64_2e256m2e32m977/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m2e32m977.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/CurveParameters.v
index 0c0b5f720..0c0b5f720 100644
--- a/src/Specific/montgomery64_2e256m2e32m977/CurveParameters.v
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/Synthesis.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/Synthesis.v
new file mode 100644
index 000000000..c0a8e8529
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/compiler.sh b/src/Specific/montgomery64_2e256m2e32m977_4limbs/compiler.sh
index 124ee8436..124ee8436 100755
--- a/src/Specific/montgomery64_2e256m2e32m977/compiler.sh
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e256m2e32m977/compilerxx.sh b/src/Specific/montgomery64_2e256m2e32m977_4limbs/compilerxx.sh
index 899652288..899652288 100755
--- a/src/Specific/montgomery64_2e256m2e32m977/compilerxx.sh
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/feadd.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feadd.v
new file mode 100644
index 000000000..c466a6925
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..4af4b73d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/femul.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/femul.v
new file mode 100644
index 000000000..ade94b2bc
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/femulDisplay.v
new file mode 100644
index 000000000..b90c1fe4c
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenz.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenz.v
new file mode 100644
index 000000000..0ec4ad9e9
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..46e4d1c5e
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/feopp.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feopp.v
new file mode 100644
index 000000000..bedc6d60b
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..8c83c69c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesub.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesub.v
new file mode 100644
index 000000000..1e773b5aa
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..9c280f42b
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m2e32m977_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e256m2e32m977/py_interpreter.sh b/src/Specific/montgomery64_2e256m2e32m977_4limbs/py_interpreter.sh
index 465dcfb46..465dcfb46 100755
--- a/src/Specific/montgomery64_2e256m2e32m977/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e256m2e32m977_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/CurveParameters.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/CurveParameters.v
new file mode 100644
index 000000000..6e5f55ff1
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 4294968273
+Base: 64
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 64;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 4294968273)];
+ carry_chains := None;
+
+ a24 := None;
+ coef_div_modulus := None;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := true;
+ freeze := Some false;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/Synthesis.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/Synthesis.v
new file mode 100644
index 000000000..41b3e63c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/compiler.sh b/src/Specific/montgomery64_2e256m4294968273_4limbs/compiler.sh
new file mode 100755
index 000000000..8ba29f0e0
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/compilerxx.sh b/src/Specific/montgomery64_2e256m4294968273_4limbs/compilerxx.sh
new file mode 100755
index 000000000..2af98195d
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{64,64,64,64}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/feadd.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/feadd.v
new file mode 100644
index 000000000..369b01033
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..a85921d5c
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/femul.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/femul.v
new file mode 100644
index 000000000..e449959b1
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/femulDisplay.v
new file mode 100644
index 000000000..ecbd96059
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/fenz.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/fenz.v
new file mode 100644
index 000000000..f991f921b
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..95a803b86
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/feopp.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/feopp.v
new file mode 100644
index 000000000..1b9ead4e0
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..0819567d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/fesub.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/fesub.v
new file mode 100644
index 000000000..29dd21063
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e256m4294968273_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..0dd519b2e
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m4294968273_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e256m4294968273_4limbs/py_interpreter.sh b/src/Specific/montgomery64_2e256m4294968273_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..f44b49d86
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m4294968273_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 4294968273' -Dmodulus_bytes='64' -Da24='121665'
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/Synthesis.v b/src/Specific/montgomery64_2e256m88x2e240m1/Synthesis.v
deleted file mode 100644
index 069b57489..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feadd.c b/src/Specific/montgomery64_2e256m88x2e240m1/feadd.c
deleted file mode 100644
index bc65ab093..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feadd.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _addcarryx_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _addcarryx_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _addcarryx_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x24, x8, x14, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u64(0x0, x17, 0xffffffffffffffffL, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u64(x30, x20, 0xffffffffffffffffL, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u64(x33, x23, 0xffffffffffffffffL, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u64(x36, x26, 0xffa7ffffffffffffL, &x38);
- { uint64_t _; uint8_t x42 = _subborrow_u64(x39, x27, 0x0, &_);
- { uint64_t x43 = cmovznz64(x42, x38, x26);
- { uint64_t x44 = cmovznz64(x42, x35, x23);
- { uint64_t x45 = cmovznz64(x42, x32, x20);
- { uint64_t x46 = cmovznz64(x42, x29, x17);
- out[0] = x46;
- out[1] = x45;
- out[2] = x44;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feadd.v b/src/Specific/montgomery64_2e256m88x2e240m1/feadd.v
deleted file mode 100644
index 78de5132f..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.log b/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.log
deleted file mode 100644
index 81d0d6f63..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = addcarryx_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = addcarryx_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = addcarryx_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x24, x8, x14);
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x17, 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x20, 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x23, 0xffffffffffffffffL);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x26, 0xffa7ffffffffffffL);
- uint64_t _, uint8_t x42 = subborrow_u64(x39, x27, 0x0);
- uint64_t x43 = cmovznz64(x42, x38, x26);
- uint64_t x44 = cmovznz64(x42, x35, x23);
- uint64_t x45 = cmovznz64(x42, x32, x20);
- uint64_t x46 = cmovznz64(x42, x29, x17);
- return (x43, x44, x45, x46))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.v
deleted file mode 100644
index 05619777d..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/femul.c b/src/Specific/montgomery64_2e256m88x2e240m1/femul.c
deleted file mode 100644
index 82b06c926..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/femul.c
+++ /dev/null
@@ -1,126 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x18; uint64_t x17 = _mulx_u64(x5, x11, &x18);
- { uint64_t x21; uint64_t x20 = _mulx_u64(x5, x13, &x21);
- { uint64_t x24; uint64_t x23 = _mulx_u64(x5, x15, &x24);
- { uint64_t x27; uint64_t x26 = _mulx_u64(x5, x14, &x27);
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x18, x20, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x21, x23, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x24, x26, &x35);
- { uint64_t x38; uint8_t _ = _addcarryx_u64(0x0, x36, x27, &x38);
- { uint64_t x42; uint64_t x41 = _mulx_u64(x17, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint64_t x44 = _mulx_u64(x17, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint64_t x47 = _mulx_u64(x17, 0xffffffffffffffffL, &x48);
- { uint64_t x51; uint64_t x50 = _mulx_u64(x17, 0xffa7ffffffffffffL, &x51);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(0x0, x42, x44, &x53);
- { uint64_t x56; uint8_t x57 = _addcarryx_u64(x54, x45, x47, &x56);
- { uint64_t x59; uint8_t x60 = _addcarryx_u64(x57, x48, x50, &x59);
- { uint64_t x62; uint8_t _ = _addcarryx_u64(0x0, x60, x51, &x62);
- { uint64_t _; uint8_t x66 = _addcarryx_u64(0x0, x17, x41, &_);
- { uint64_t x68; uint8_t x69 = _addcarryx_u64(x66, x29, x53, &x68);
- { uint64_t x71; uint8_t x72 = _addcarryx_u64(x69, x32, x56, &x71);
- { uint64_t x74; uint8_t x75 = _addcarryx_u64(x72, x35, x59, &x74);
- { uint64_t x77; uint8_t x78 = _addcarryx_u64(x75, x38, x62, &x77);
- { uint64_t x81; uint64_t x80 = _mulx_u64(x7, x11, &x81);
- { uint64_t x84; uint64_t x83 = _mulx_u64(x7, x13, &x84);
- { uint64_t x87; uint64_t x86 = _mulx_u64(x7, x15, &x87);
- { uint64_t x90; uint64_t x89 = _mulx_u64(x7, x14, &x90);
- { uint64_t x92; uint8_t x93 = _addcarryx_u64(0x0, x81, x83, &x92);
- { uint64_t x95; uint8_t x96 = _addcarryx_u64(x93, x84, x86, &x95);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x87, x89, &x98);
- { uint64_t x101; uint8_t _ = _addcarryx_u64(0x0, x99, x90, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(0x0, x68, x80, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x71, x92, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x74, x95, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x77, x98, &x113);
- { uint64_t x116; uint8_t x117 = _addcarryx_u64(x114, x78, x101, &x116);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x104, 0xffffffffffffffffL, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x104, 0xffffffffffffffffL, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x104, 0xffffffffffffffffL, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x104, 0xffa7ffffffffffffL, &x129);
- { uint64_t x131; uint8_t x132 = _addcarryx_u64(0x0, x120, x122, &x131);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(x132, x123, x125, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x126, x128, &x137);
- { uint64_t x140; uint8_t _ = _addcarryx_u64(0x0, x138, x129, &x140);
- { uint64_t _; uint8_t x144 = _addcarryx_u64(0x0, x104, x119, &_);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x107, x131, &x146);
- { uint64_t x149; uint8_t x150 = _addcarryx_u64(x147, x110, x134, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(x150, x113, x137, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x116, x140, &x155);
- { uint8_t x157 = (x156 + x117);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x9, x11, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x9, x13, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x9, x15, &x166);
- { uint64_t x169; uint64_t x168 = _mulx_u64(x9, x14, &x169);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(0x0, x160, x162, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x163, x165, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x166, x168, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x169, &x180);
- { uint64_t x183; uint8_t x184 = _addcarryx_u64(0x0, x146, x159, &x183);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x149, x171, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x152, x174, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x155, x177, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x157, x180, &x195);
- { uint64_t x199; uint64_t x198 = _mulx_u64(x183, 0xffffffffffffffffL, &x199);
- { uint64_t x202; uint64_t x201 = _mulx_u64(x183, 0xffffffffffffffffL, &x202);
- { uint64_t x205; uint64_t x204 = _mulx_u64(x183, 0xffffffffffffffffL, &x205);
- { uint64_t x208; uint64_t x207 = _mulx_u64(x183, 0xffa7ffffffffffffL, &x208);
- { uint64_t x210; uint8_t x211 = _addcarryx_u64(0x0, x199, x201, &x210);
- { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x202, x204, &x213);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x205, x207, &x216);
- { uint64_t x219; uint8_t _ = _addcarryx_u64(0x0, x217, x208, &x219);
- { uint64_t _; uint8_t x223 = _addcarryx_u64(0x0, x183, x198, &_);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x186, x210, &x225);
- { uint64_t x228; uint8_t x229 = _addcarryx_u64(x226, x189, x213, &x228);
- { uint64_t x231; uint8_t x232 = _addcarryx_u64(x229, x192, x216, &x231);
- { uint64_t x234; uint8_t x235 = _addcarryx_u64(x232, x195, x219, &x234);
- { uint8_t x236 = (x235 + x196);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x8, x11, &x239);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x8, x13, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x8, x15, &x245);
- { uint64_t x248; uint64_t x247 = _mulx_u64(x8, x14, &x248);
- { uint64_t x250; uint8_t x251 = _addcarryx_u64(0x0, x239, x241, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x242, x244, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x245, x247, &x256);
- { uint64_t x259; uint8_t _ = _addcarryx_u64(0x0, x257, x248, &x259);
- { uint64_t x262; uint8_t x263 = _addcarryx_u64(0x0, x225, x238, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(x263, x228, x250, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x231, x253, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x234, x256, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x236, x259, &x274);
- { uint64_t x278; uint64_t x277 = _mulx_u64(x262, 0xffffffffffffffffL, &x278);
- { uint64_t x281; uint64_t x280 = _mulx_u64(x262, 0xffffffffffffffffL, &x281);
- { uint64_t x284; uint64_t x283 = _mulx_u64(x262, 0xffffffffffffffffL, &x284);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x262, 0xffa7ffffffffffffL, &x287);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(0x0, x278, x280, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x281, x283, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x284, x286, &x295);
- { uint64_t x298; uint8_t _ = _addcarryx_u64(0x0, x296, x287, &x298);
- { uint64_t _; uint8_t x302 = _addcarryx_u64(0x0, x262, x277, &_);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(x302, x265, x289, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x268, x292, &x307);
- { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x271, x295, &x310);
- { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x274, x298, &x313);
- { uint8_t x315 = (x314 + x275);
- { uint64_t x317; uint8_t x318 = _subborrow_u64(0x0, x304, 0xffffffffffffffffL, &x317);
- { uint64_t x320; uint8_t x321 = _subborrow_u64(x318, x307, 0xffffffffffffffffL, &x320);
- { uint64_t x323; uint8_t x324 = _subborrow_u64(x321, x310, 0xffffffffffffffffL, &x323);
- { uint64_t x326; uint8_t x327 = _subborrow_u64(x324, x313, 0xffa7ffffffffffffL, &x326);
- { uint64_t _; uint8_t x330 = _subborrow_u64(x327, x315, 0x0, &_);
- { uint64_t x331 = cmovznz64(x330, x326, x313);
- { uint64_t x332 = cmovznz64(x330, x323, x310);
- { uint64_t x333 = cmovznz64(x330, x320, x307);
- { uint64_t x334 = cmovznz64(x330, x317, x304);
- out[0] = x334;
- out[1] = x333;
- out[2] = x332;
- out[3] = x331;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/femul.v b/src/Specific/montgomery64_2e256m88x2e240m1/femul.v
deleted file mode 100644
index d45c60a18..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.log b/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.log
deleted file mode 100644
index aff28190a..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.log
+++ /dev/null
@@ -1,118 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint64_t x18 = mulx_u64(x5, x11);
- uint64_t x20, uint64_t x21 = mulx_u64(x5, x13);
- uint64_t x23, uint64_t x24 = mulx_u64(x5, x15);
- uint64_t x26, uint64_t x27 = mulx_u64(x5, x14);
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x18, x20);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x21, x23);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x24, x26);
- uint64_t x38, uint8_t _ = addcarryx_u64(0x0, x36, x27);
- uint64_t x41, uint64_t x42 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x44, uint64_t x45 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x47, uint64_t x48 = mulx_u64(x17, 0xffffffffffffffffL);
- uint64_t x50, uint64_t x51 = mulx_u64(x17, 0xffa7ffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(0x0, x42, x44);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x45, x47);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x48, x50);
- uint64_t x62, uint8_t _ = addcarryx_u64(0x0, x60, x51);
- uint64_t _, uint8_t x66 = addcarryx_u64(0x0, x17, x41);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x66, x29, x53);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x69, x32, x56);
- uint64_t x74, uint8_t x75 = addcarryx_u64(x72, x35, x59);
- uint64_t x77, uint8_t x78 = addcarryx_u64(x75, x38, x62);
- uint64_t x80, uint64_t x81 = mulx_u64(x7, x11);
- uint64_t x83, uint64_t x84 = mulx_u64(x7, x13);
- uint64_t x86, uint64_t x87 = mulx_u64(x7, x15);
- uint64_t x89, uint64_t x90 = mulx_u64(x7, x14);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x81, x83);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x84, x86);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x87, x89);
- uint64_t x101, uint8_t _ = addcarryx_u64(0x0, x99, x90);
- uint64_t x104, uint8_t x105 = addcarryx_u64(0x0, x68, x80);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x71, x92);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x74, x95);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x77, x98);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x78, x101);
- uint64_t x119, uint64_t x120 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x122, uint64_t x123 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x125, uint64_t x126 = mulx_u64(x104, 0xffffffffffffffffL);
- uint64_t x128, uint64_t x129 = mulx_u64(x104, 0xffa7ffffffffffffL);
- uint64_t x131, uint8_t x132 = addcarryx_u64(0x0, x120, x122);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x123, x125);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x126, x128);
- uint64_t x140, uint8_t _ = addcarryx_u64(0x0, x138, x129);
- uint64_t _, uint8_t x144 = addcarryx_u64(0x0, x104, x119);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x107, x131);
- uint64_t x149, uint8_t x150 = addcarryx_u64(x147, x110, x134);
- uint64_t x152, uint8_t x153 = addcarryx_u64(x150, x113, x137);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x116, x140);
- uint8_t x157 = (x156 + x117);
- uint64_t x159, uint64_t x160 = mulx_u64(x9, x11);
- uint64_t x162, uint64_t x163 = mulx_u64(x9, x13);
- uint64_t x165, uint64_t x166 = mulx_u64(x9, x15);
- uint64_t x168, uint64_t x169 = mulx_u64(x9, x14);
- uint64_t x171, uint8_t x172 = addcarryx_u64(0x0, x160, x162);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x163, x165);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x166, x168);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x169);
- uint64_t x183, uint8_t x184 = addcarryx_u64(0x0, x146, x159);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x149, x171);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x152, x174);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x155, x177);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x157, x180);
- uint64_t x198, uint64_t x199 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x201, uint64_t x202 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x204, uint64_t x205 = mulx_u64(x183, 0xffffffffffffffffL);
- uint64_t x207, uint64_t x208 = mulx_u64(x183, 0xffa7ffffffffffffL);
- uint64_t x210, uint8_t x211 = addcarryx_u64(0x0, x199, x201);
- uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x202, x204);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x205, x207);
- uint64_t x219, uint8_t _ = addcarryx_u64(0x0, x217, x208);
- uint64_t _, uint8_t x223 = addcarryx_u64(0x0, x183, x198);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x186, x210);
- uint64_t x228, uint8_t x229 = addcarryx_u64(x226, x189, x213);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x192, x216);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x195, x219);
- uint8_t x236 = (x235 + x196);
- uint64_t x238, uint64_t x239 = mulx_u64(x8, x11);
- uint64_t x241, uint64_t x242 = mulx_u64(x8, x13);
- uint64_t x244, uint64_t x245 = mulx_u64(x8, x15);
- uint64_t x247, uint64_t x248 = mulx_u64(x8, x14);
- uint64_t x250, uint8_t x251 = addcarryx_u64(0x0, x239, x241);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x242, x244);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x245, x247);
- uint64_t x259, uint8_t _ = addcarryx_u64(0x0, x257, x248);
- uint64_t x262, uint8_t x263 = addcarryx_u64(0x0, x225, x238);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x228, x250);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x231, x253);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x234, x256);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x236, x259);
- uint64_t x277, uint64_t x278 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x280, uint64_t x281 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x283, uint64_t x284 = mulx_u64(x262, 0xffffffffffffffffL);
- uint64_t x286, uint64_t x287 = mulx_u64(x262, 0xffa7ffffffffffffL);
- uint64_t x289, uint8_t x290 = addcarryx_u64(0x0, x278, x280);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x281, x283);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x284, x286);
- uint64_t x298, uint8_t _ = addcarryx_u64(0x0, x296, x287);
- uint64_t _, uint8_t x302 = addcarryx_u64(0x0, x262, x277);
- uint64_t x304, uint8_t x305 = addcarryx_u64(x302, x265, x289);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x268, x292);
- uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x271, x295);
- uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x274, x298);
- uint8_t x315 = (x314 + x275);
- uint64_t x317, uint8_t x318 = subborrow_u64(0x0, x304, 0xffffffffffffffffL);
- uint64_t x320, uint8_t x321 = subborrow_u64(x318, x307, 0xffffffffffffffffL);
- uint64_t x323, uint8_t x324 = subborrow_u64(x321, x310, 0xffffffffffffffffL);
- uint64_t x326, uint8_t x327 = subborrow_u64(x324, x313, 0xffa7ffffffffffffL);
- uint64_t _, uint8_t x330 = subborrow_u64(x327, x315, 0x0);
- uint64_t x331 = cmovznz64(x330, x326, x313);
- uint64_t x332 = cmovznz64(x330, x323, x310);
- uint64_t x333 = cmovznz64(x330, x320, x307);
- uint64_t x334 = cmovznz64(x330, x317, x304);
- return (x331, x332, x333, x334))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.v
deleted file mode 100644
index 1ccf63479..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fenz.c b/src/Specific/montgomery64_2e256m88x2e240m1/fenz.c
deleted file mode 100644
index 7541094ff..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fenz.c
+++ /dev/null
@@ -1,11 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x7 = (x6 | x5);
- { uint64_t x8 = (x4 | x7);
- { uint64_t x9 = (x2 | x8);
- out[0] = x9;
- }}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fenz.v b/src/Specific/montgomery64_2e256m88x2e240m1/fenz.v
deleted file mode 100644
index 4cc5e7310..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.log b/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.log
deleted file mode 100644
index 65afbc2d6..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,10 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x7 = (x6 | x5);
- uint64_t x8 = (x4 | x7);
- uint64_t x9 = (x2 | x8);
- return x9)
-x
- : word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.v
deleted file mode 100644
index 1f5b5dfb2..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feopp.c b/src/Specific/montgomery64_2e256m88x2e240m1/feopp.c
deleted file mode 100644
index 80cc7ff84..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feopp.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feopp(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8; uint8_t x9 = _subborrow_u64(0x0, 0x0, x2, &x8);
- { uint64_t x11; uint8_t x12 = _subborrow_u64(x9, 0x0, x4, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u64(x12, 0x0, x6, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u64(x15, 0x0, x5, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffffffL);
- { uint64_t x22; uint8_t x23 = _addcarryx_u64(0x0, x8, x20, &x22);
- { uint64_t x24 = (x19 & 0xffffffffffffffffL);
- { uint64_t x26; uint8_t x27 = _addcarryx_u64(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xffffffffffffffffL);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0xffa7ffffffffffffL);
- { uint64_t x34; uint8_t _ = _addcarryx_u64(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feopp.v b/src/Specific/montgomery64_2e256m88x2e240m1/feopp.v
deleted file mode 100644
index eefd74f09..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.log b/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.log
deleted file mode 100644
index 216af93d4..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x11, uint8_t x12 = subborrow_u64(x9, 0x0, x4);
- uint64_t x14, uint8_t x15 = subborrow_u64(x12, 0x0, x6);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x5);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffffffL);
- uint64_t x22, uint8_t x23 = addcarryx_u64(0x0, x8, x20);
- uint64_t x24 = (x19 & 0xffffffffffffffffL);
- uint64_t x26, uint8_t x27 = addcarryx_u64(x23, x11, x24);
- uint64_t x28 = (x19 & 0xffffffffffffffffL);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x27, x14, x28);
- uint64_t x32 = (x19 & 0xffa7ffffffffffffL);
- uint64_t x34, uint8_t _ = addcarryx_u64(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.v
deleted file mode 100644
index 2a2a21595..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fesquare.c b/src/Specific/montgomery64_2e256m88x2e240m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fesub.c b/src/Specific/montgomery64_2e256m88x2e240m1/fesub.c
deleted file mode 100644
index 974f1cf0d..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fesub.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint64_t x17; uint8_t x18 = _subborrow_u64(0x0, x5, x11, &x17);
- { uint64_t x20; uint8_t x21 = _subborrow_u64(x18, x7, x13, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u64(x21, x9, x15, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u64(x24, x8, x14, &x26);
- { uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- { uint64_t x29 = (x28 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(0x0, x17, x29, &x31);
- { uint64_t x33 = (x28 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x20, x33, &x35);
- { uint64_t x37 = (x28 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x23, x37, &x39);
- { uint64_t x41 = (x28 & 0xffa7ffffffffffffL);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x26, x41, &x43);
- out[0] = x31;
- out[1] = x35;
- out[2] = x39;
- out[3] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fesub.v b/src/Specific/montgomery64_2e256m88x2e240m1/fesub.v
deleted file mode 100644
index d9b9289c3..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.log b/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.log
deleted file mode 100644
index bf22dbebe..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint64_t x17, uint8_t x18 = subborrow_u64(0x0, x5, x11);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, x7, x13);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, x9, x15);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, x8, x14);
- uint64_t x28 = cmovznz64(x27, 0x0, 0xffffffffffffffffL);
- uint64_t x29 = (x28 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(0x0, x17, x29);
- uint64_t x33 = (x28 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x20, x33);
- uint64_t x37 = (x28 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x23, x37);
- uint64_t x41 = (x28 & 0xffa7ffffffffffffL);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x26, x41);
- (Return x43, Return x39, Return x35, Return x31))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.v
deleted file mode 100644
index d6e0dc6c1..000000000
--- a/src/Specific/montgomery64_2e256m88x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/CurveParameters.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/CurveParameters.v
index e0f31c209..e0f31c209 100644
--- a/src/Specific/montgomery64_2e256m88x2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/Synthesis.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..3840e91c2
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/compiler.sh b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/compiler.sh
index 72963d8eb..72963d8eb 100755
--- a/src/Specific/montgomery64_2e256m88x2e240m1/compiler.sh
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/compilerxx.sh b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/compilerxx.sh
index 8693b54f9..8693b54f9 100755
--- a/src/Specific/montgomery64_2e256m88x2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feadd.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feadd.v
new file mode 100644
index 000000000..1e1ac45af
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feaddDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..16a034685
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femul.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femul.v
new file mode 100644
index 000000000..cf302e69e
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femulDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..593735c7f
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenz.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenz.v
new file mode 100644
index 000000000..2840c9231
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenzDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenzDisplay.v
new file mode 100644
index 000000000..c2c51eea6
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feopp.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feopp.v
new file mode 100644
index 000000000..fbbae9059
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feoppDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feoppDisplay.v
new file mode 100644
index 000000000..37e5a9e1b
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesub.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesub.v
new file mode 100644
index 000000000..dc65cf5d1
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesubDisplay.v b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..b3b8fa34f
--- /dev/null
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e256m88x2e240m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e256m88x2e240m1/py_interpreter.sh b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/py_interpreter.sh
index 4df5aee31..4df5aee31 100755
--- a/src/Specific/montgomery64_2e256m88x2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e256m88x2e240m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e266m3/Synthesis.v b/src/Specific/montgomery64_2e266m3/Synthesis.v
deleted file mode 100644
index b14216ef7..000000000
--- a/src/Specific/montgomery64_2e266m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e266m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e266m3/feadd.c b/src/Specific/montgomery64_2e266m3/feadd.c
deleted file mode 100644
index 74e984d17..000000000
--- a/src/Specific/montgomery64_2e266m3/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(x31, x10, x18, &x33);
- { uint64_t x36; uint8_t x37 = _subborrow_u64(0x0, x21, 0xfffffffffffffffdL, &x36);
- { uint64_t x39; uint8_t x40 = _subborrow_u64(x37, x24, 0xffffffffffffffffL, &x39);
- { uint64_t x42; uint8_t x43 = _subborrow_u64(x40, x27, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint8_t x46 = _subborrow_u64(x43, x30, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint8_t x49 = _subborrow_u64(x46, x33, 0x3ff, &x48);
- { uint64_t _; uint8_t x52 = _subborrow_u64(x49, x34, 0x0, &_);
- { uint64_t x53 = cmovznz64(x52, x48, x33);
- { uint64_t x54 = cmovznz64(x52, x45, x30);
- { uint64_t x55 = cmovznz64(x52, x42, x27);
- { uint64_t x56 = cmovznz64(x52, x39, x24);
- { uint64_t x57 = cmovznz64(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e266m3/feadd.v b/src/Specific/montgomery64_2e266m3/feadd.v
deleted file mode 100644
index 2403c8ddb..000000000
--- a/src/Specific/montgomery64_2e266m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e266m3/feaddDisplay.log b/src/Specific/montgomery64_2e266m3/feaddDisplay.log
deleted file mode 100644
index 5a46897ef..000000000
--- a/src/Specific/montgomery64_2e266m3/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = addcarryx_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = addcarryx_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = addcarryx_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = addcarryx_u64(x31, x10, x18);
- uint64_t x36, uint8_t x37 = subborrow_u64(0x0, x21, 0xfffffffffffffffdL);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x24, 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x27, 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x30, 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x33, 0x3ff);
- uint64_t _, uint8_t x52 = subborrow_u64(x49, x34, 0x0);
- uint64_t x53 = cmovznz64(x52, x48, x33);
- uint64_t x54 = cmovznz64(x52, x45, x30);
- uint64_t x55 = cmovznz64(x52, x42, x27);
- uint64_t x56 = cmovznz64(x52, x39, x24);
- uint64_t x57 = cmovznz64(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e266m3/feaddDisplay.v b/src/Specific/montgomery64_2e266m3/feaddDisplay.v
deleted file mode 100644
index d51f20c63..000000000
--- a/src/Specific/montgomery64_2e266m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e266m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e266m3/femul.c b/src/Specific/montgomery64_2e266m3/femul.c
deleted file mode 100644
index fb45d44d2..000000000
--- a/src/Specific/montgomery64_2e266m3/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x22; uint64_t x21 = _mulx_u64(x5, x13, &x22);
- { uint64_t x25; uint64_t x24 = _mulx_u64(x5, x15, &x25);
- { uint64_t x28; uint64_t x27 = _mulx_u64(x5, x17, &x28);
- { uint64_t x31; uint64_t x30 = _mulx_u64(x5, x19, &x31);
- { uint64_t x34; uint64_t x33 = _mulx_u64(x5, x18, &x34);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(0x0, x22, x24, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x25, x27, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x28, x30, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x31, x33, &x45);
- { uint64_t x48; uint8_t _ = _addcarryx_u64(0x0, x46, x34, &x48);
- { uint64_t _; uint64_t x51 = _mulx_u64(x21, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x55; uint64_t x54 = _mulx_u64(x51, 0xfffffffffffffffdL, &x55);
- { uint64_t x58; uint64_t x57 = _mulx_u64(x51, 0xffffffffffffffffL, &x58);
- { uint64_t x61; uint64_t x60 = _mulx_u64(x51, 0xffffffffffffffffL, &x61);
- { uint64_t x64; uint64_t x63 = _mulx_u64(x51, 0xffffffffffffffffL, &x64);
- { uint64_t x67; uint64_t x66 = _mulx_u64(x51, 0x3ff, &x67);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x55, x57, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x58, x60, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x61, x63, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x64, x66, &x78);
- { uint64_t x81; uint8_t _ = _addcarryx_u64(0x0, x79, x67, &x81);
- { uint64_t _; uint8_t x85 = _addcarryx_u64(0x0, x21, x54, &_);
- { uint64_t x87; uint8_t x88 = _addcarryx_u64(x85, x36, x69, &x87);
- { uint64_t x90; uint8_t x91 = _addcarryx_u64(x88, x39, x72, &x90);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(x91, x42, x75, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x45, x78, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x48, x81, &x99);
- { uint64_t x103; uint64_t x102 = _mulx_u64(x7, x13, &x103);
- { uint64_t x106; uint64_t x105 = _mulx_u64(x7, x15, &x106);
- { uint64_t x109; uint64_t x108 = _mulx_u64(x7, x17, &x109);
- { uint64_t x112; uint64_t x111 = _mulx_u64(x7, x19, &x112);
- { uint64_t x115; uint64_t x114 = _mulx_u64(x7, x18, &x115);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(0x0, x103, x105, &x117);
- { uint64_t x120; uint8_t x121 = _addcarryx_u64(x118, x106, x108, &x120);
- { uint64_t x123; uint8_t x124 = _addcarryx_u64(x121, x109, x111, &x123);
- { uint64_t x126; uint8_t x127 = _addcarryx_u64(x124, x112, x114, &x126);
- { uint64_t x129; uint8_t _ = _addcarryx_u64(0x0, x127, x115, &x129);
- { uint64_t x132; uint8_t x133 = _addcarryx_u64(0x0, x87, x102, &x132);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(x133, x90, x117, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x93, x120, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x96, x123, &x141);
- { uint64_t x144; uint8_t x145 = _addcarryx_u64(x142, x99, x126, &x144);
- { uint64_t x147; uint8_t x148 = _addcarryx_u64(x145, x100, x129, &x147);
- { uint64_t _; uint64_t x150 = _mulx_u64(x132, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x154; uint64_t x153 = _mulx_u64(x150, 0xfffffffffffffffdL, &x154);
- { uint64_t x157; uint64_t x156 = _mulx_u64(x150, 0xffffffffffffffffL, &x157);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x150, 0xffffffffffffffffL, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x150, 0xffffffffffffffffL, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x150, 0x3ff, &x166);
- { uint64_t x168; uint8_t x169 = _addcarryx_u64(0x0, x154, x156, &x168);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x157, x159, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x160, x162, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x163, x165, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x166, &x180);
- { uint64_t _; uint8_t x184 = _addcarryx_u64(0x0, x132, x153, &_);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x135, x168, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x138, x171, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x141, x174, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x144, x177, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint64_t x203; uint64_t x202 = _mulx_u64(x9, x13, &x203);
- { uint64_t x206; uint64_t x205 = _mulx_u64(x9, x15, &x206);
- { uint64_t x209; uint64_t x208 = _mulx_u64(x9, x17, &x209);
- { uint64_t x212; uint64_t x211 = _mulx_u64(x9, x19, &x212);
- { uint64_t x215; uint64_t x214 = _mulx_u64(x9, x18, &x215);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(0x0, x203, x205, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x206, x208, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x209, x211, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x212, x214, &x226);
- { uint64_t x229; uint8_t _ = _addcarryx_u64(0x0, x227, x215, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(0x0, x186, x202, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x189, x217, &x235);
- { uint64_t x238; uint8_t x239 = _addcarryx_u64(x236, x192, x220, &x238);
- { uint64_t x241; uint8_t x242 = _addcarryx_u64(x239, x195, x223, &x241);
- { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x198, x226, &x244);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x200, x229, &x247);
- { uint64_t _; uint64_t x250 = _mulx_u64(x232, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x250, 0xfffffffffffffffdL, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x250, 0xffffffffffffffffL, &x257);
- { uint64_t x260; uint64_t x259 = _mulx_u64(x250, 0xffffffffffffffffL, &x260);
- { uint64_t x263; uint64_t x262 = _mulx_u64(x250, 0xffffffffffffffffL, &x263);
- { uint64_t x266; uint64_t x265 = _mulx_u64(x250, 0x3ff, &x266);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(0x0, x254, x256, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x257, x259, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x260, x262, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x263, x265, &x277);
- { uint64_t x280; uint8_t _ = _addcarryx_u64(0x0, x278, x266, &x280);
- { uint64_t _; uint8_t x284 = _addcarryx_u64(0x0, x232, x253, &_);
- { uint64_t x286; uint8_t x287 = _addcarryx_u64(x284, x235, x268, &x286);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(x287, x238, x271, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x241, x274, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x244, x277, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x11, x13, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x11, x15, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x11, x17, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x11, x19, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x11, x18, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x303, x305, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x306, x308, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x309, x311, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x312, x314, &x326);
- { uint64_t x329; uint8_t _ = _addcarryx_u64(0x0, x327, x315, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(0x0, x286, x302, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x289, x317, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x292, x320, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x295, x323, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x298, x326, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x300, x329, &x347);
- { uint64_t _; uint64_t x350 = _mulx_u64(x332, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x354; uint64_t x353 = _mulx_u64(x350, 0xfffffffffffffffdL, &x354);
- { uint64_t x357; uint64_t x356 = _mulx_u64(x350, 0xffffffffffffffffL, &x357);
- { uint64_t x360; uint64_t x359 = _mulx_u64(x350, 0xffffffffffffffffL, &x360);
- { uint64_t x363; uint64_t x362 = _mulx_u64(x350, 0xffffffffffffffffL, &x363);
- { uint64_t x366; uint64_t x365 = _mulx_u64(x350, 0x3ff, &x366);
- { uint64_t x368; uint8_t x369 = _addcarryx_u64(0x0, x354, x356, &x368);
- { uint64_t x371; uint8_t x372 = _addcarryx_u64(x369, x357, x359, &x371);
- { uint64_t x374; uint8_t x375 = _addcarryx_u64(x372, x360, x362, &x374);
- { uint64_t x377; uint8_t x378 = _addcarryx_u64(x375, x363, x365, &x377);
- { uint64_t x380; uint8_t _ = _addcarryx_u64(0x0, x378, x366, &x380);
- { uint64_t _; uint8_t x384 = _addcarryx_u64(0x0, x332, x353, &_);
- { uint64_t x386; uint8_t x387 = _addcarryx_u64(x384, x335, x368, &x386);
- { uint64_t x389; uint8_t x390 = _addcarryx_u64(x387, x338, x371, &x389);
- { uint64_t x392; uint8_t x393 = _addcarryx_u64(x390, x341, x374, &x392);
- { uint64_t x395; uint8_t x396 = _addcarryx_u64(x393, x344, x377, &x395);
- { uint64_t x398; uint8_t x399 = _addcarryx_u64(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint64_t x403; uint64_t x402 = _mulx_u64(x10, x13, &x403);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x10, x15, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x10, x17, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x10, x19, &x412);
- { uint64_t x415; uint64_t x414 = _mulx_u64(x10, x18, &x415);
- { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x403, x405, &x417);
- { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x406, x408, &x420);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x409, x411, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x412, x414, &x426);
- { uint64_t x429; uint8_t _ = _addcarryx_u64(0x0, x427, x415, &x429);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(0x0, x386, x402, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x389, x417, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x392, x420, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x395, x423, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x398, x426, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x400, x429, &x447);
- { uint64_t _; uint64_t x450 = _mulx_u64(x432, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x454; uint64_t x453 = _mulx_u64(x450, 0xfffffffffffffffdL, &x454);
- { uint64_t x457; uint64_t x456 = _mulx_u64(x450, 0xffffffffffffffffL, &x457);
- { uint64_t x460; uint64_t x459 = _mulx_u64(x450, 0xffffffffffffffffL, &x460);
- { uint64_t x463; uint64_t x462 = _mulx_u64(x450, 0xffffffffffffffffL, &x463);
- { uint64_t x466; uint64_t x465 = _mulx_u64(x450, 0x3ff, &x466);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(0x0, x454, x456, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x457, x459, &x471);
- { uint64_t x474; uint8_t x475 = _addcarryx_u64(x472, x460, x462, &x474);
- { uint64_t x477; uint8_t x478 = _addcarryx_u64(x475, x463, x465, &x477);
- { uint64_t x480; uint8_t _ = _addcarryx_u64(0x0, x478, x466, &x480);
- { uint64_t _; uint8_t x484 = _addcarryx_u64(0x0, x432, x453, &_);
- { uint64_t x486; uint8_t x487 = _addcarryx_u64(x484, x435, x468, &x486);
- { uint64_t x489; uint8_t x490 = _addcarryx_u64(x487, x438, x471, &x489);
- { uint64_t x492; uint8_t x493 = _addcarryx_u64(x490, x441, x474, &x492);
- { uint64_t x495; uint8_t x496 = _addcarryx_u64(x493, x444, x477, &x495);
- { uint64_t x498; uint8_t x499 = _addcarryx_u64(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint64_t x502; uint8_t x503 = _subborrow_u64(0x0, x486, 0xfffffffffffffffdL, &x502);
- { uint64_t x505; uint8_t x506 = _subborrow_u64(x503, x489, 0xffffffffffffffffL, &x505);
- { uint64_t x508; uint8_t x509 = _subborrow_u64(x506, x492, 0xffffffffffffffffL, &x508);
- { uint64_t x511; uint8_t x512 = _subborrow_u64(x509, x495, 0xffffffffffffffffL, &x511);
- { uint64_t x514; uint8_t x515 = _subborrow_u64(x512, x498, 0x3ff, &x514);
- { uint64_t _; uint8_t x518 = _subborrow_u64(x515, x500, 0x0, &_);
- { uint64_t x519 = cmovznz64(x518, x514, x498);
- { uint64_t x520 = cmovznz64(x518, x511, x495);
- { uint64_t x521 = cmovznz64(x518, x508, x492);
- { uint64_t x522 = cmovznz64(x518, x505, x489);
- { uint64_t x523 = cmovznz64(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e266m3/femul.v b/src/Specific/montgomery64_2e266m3/femul.v
deleted file mode 100644
index 54c9a104c..000000000
--- a/src/Specific/montgomery64_2e266m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e266m3/femulDisplay.log b/src/Specific/montgomery64_2e266m3/femulDisplay.log
deleted file mode 100644
index d80a655d8..000000000
--- a/src/Specific/montgomery64_2e266m3/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint64_t x22 = mulx_u64(x5, x13);
- uint64_t x24, uint64_t x25 = mulx_u64(x5, x15);
- uint64_t x27, uint64_t x28 = mulx_u64(x5, x17);
- uint64_t x30, uint64_t x31 = mulx_u64(x5, x19);
- uint64_t x33, uint64_t x34 = mulx_u64(x5, x18);
- uint64_t x36, uint8_t x37 = addcarryx_u64(0x0, x22, x24);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x25, x27);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x28, x30);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x31, x33);
- uint64_t x48, uint8_t _ = addcarryx_u64(0x0, x46, x34);
- uint64_t x51, uint64_t _ = mulx_u64(x21, 0xaaaaaaaaaaaaaaabL);
- uint64_t x54, uint64_t x55 = mulx_u64(x51, 0xfffffffffffffffdL);
- uint64_t x57, uint64_t x58 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x60, uint64_t x61 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x63, uint64_t x64 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x66, uint64_t x67 = mulx_u64(x51, 0x3ff);
- uint64_t x69, uint8_t x70 = addcarryx_u64(0x0, x55, x57);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x58, x60);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x61, x63);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x64, x66);
- uint64_t x81, uint8_t _ = addcarryx_u64(0x0, x79, x67);
- uint64_t _, uint8_t x85 = addcarryx_u64(0x0, x21, x54);
- uint64_t x87, uint8_t x88 = addcarryx_u64(x85, x36, x69);
- uint64_t x90, uint8_t x91 = addcarryx_u64(x88, x39, x72);
- uint64_t x93, uint8_t x94 = addcarryx_u64(x91, x42, x75);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x45, x78);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x48, x81);
- uint64_t x102, uint64_t x103 = mulx_u64(x7, x13);
- uint64_t x105, uint64_t x106 = mulx_u64(x7, x15);
- uint64_t x108, uint64_t x109 = mulx_u64(x7, x17);
- uint64_t x111, uint64_t x112 = mulx_u64(x7, x19);
- uint64_t x114, uint64_t x115 = mulx_u64(x7, x18);
- uint64_t x117, uint8_t x118 = addcarryx_u64(0x0, x103, x105);
- uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x106, x108);
- uint64_t x123, uint8_t x124 = addcarryx_u64(x121, x109, x111);
- uint64_t x126, uint8_t x127 = addcarryx_u64(x124, x112, x114);
- uint64_t x129, uint8_t _ = addcarryx_u64(0x0, x127, x115);
- uint64_t x132, uint8_t x133 = addcarryx_u64(0x0, x87, x102);
- uint64_t x135, uint8_t x136 = addcarryx_u64(x133, x90, x117);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x93, x120);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x96, x123);
- uint64_t x144, uint8_t x145 = addcarryx_u64(x142, x99, x126);
- uint64_t x147, uint8_t x148 = addcarryx_u64(x145, x100, x129);
- uint64_t x150, uint64_t _ = mulx_u64(x132, 0xaaaaaaaaaaaaaaabL);
- uint64_t x153, uint64_t x154 = mulx_u64(x150, 0xfffffffffffffffdL);
- uint64_t x156, uint64_t x157 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x159, uint64_t x160 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x162, uint64_t x163 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x165, uint64_t x166 = mulx_u64(x150, 0x3ff);
- uint64_t x168, uint8_t x169 = addcarryx_u64(0x0, x154, x156);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x157, x159);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x160, x162);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x163, x165);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x166);
- uint64_t _, uint8_t x184 = addcarryx_u64(0x0, x132, x153);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x135, x168);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x138, x171);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x141, x174);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x144, x177);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint64_t x202, uint64_t x203 = mulx_u64(x9, x13);
- uint64_t x205, uint64_t x206 = mulx_u64(x9, x15);
- uint64_t x208, uint64_t x209 = mulx_u64(x9, x17);
- uint64_t x211, uint64_t x212 = mulx_u64(x9, x19);
- uint64_t x214, uint64_t x215 = mulx_u64(x9, x18);
- uint64_t x217, uint8_t x218 = addcarryx_u64(0x0, x203, x205);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x206, x208);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x209, x211);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x212, x214);
- uint64_t x229, uint8_t _ = addcarryx_u64(0x0, x227, x215);
- uint64_t x232, uint8_t x233 = addcarryx_u64(0x0, x186, x202);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x189, x217);
- uint64_t x238, uint8_t x239 = addcarryx_u64(x236, x192, x220);
- uint64_t x241, uint8_t x242 = addcarryx_u64(x239, x195, x223);
- uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x198, x226);
- uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x200, x229);
- uint64_t x250, uint64_t _ = mulx_u64(x232, 0xaaaaaaaaaaaaaaabL);
- uint64_t x253, uint64_t x254 = mulx_u64(x250, 0xfffffffffffffffdL);
- uint64_t x256, uint64_t x257 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x259, uint64_t x260 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x262, uint64_t x263 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x265, uint64_t x266 = mulx_u64(x250, 0x3ff);
- uint64_t x268, uint8_t x269 = addcarryx_u64(0x0, x254, x256);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x257, x259);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x260, x262);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x263, x265);
- uint64_t x280, uint8_t _ = addcarryx_u64(0x0, x278, x266);
- uint64_t _, uint8_t x284 = addcarryx_u64(0x0, x232, x253);
- uint64_t x286, uint8_t x287 = addcarryx_u64(x284, x235, x268);
- uint64_t x289, uint8_t x290 = addcarryx_u64(x287, x238, x271);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x241, x274);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x244, x277);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint64_t x302, uint64_t x303 = mulx_u64(x11, x13);
- uint64_t x305, uint64_t x306 = mulx_u64(x11, x15);
- uint64_t x308, uint64_t x309 = mulx_u64(x11, x17);
- uint64_t x311, uint64_t x312 = mulx_u64(x11, x19);
- uint64_t x314, uint64_t x315 = mulx_u64(x11, x18);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x303, x305);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x306, x308);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x309, x311);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x312, x314);
- uint64_t x329, uint8_t _ = addcarryx_u64(0x0, x327, x315);
- uint64_t x332, uint8_t x333 = addcarryx_u64(0x0, x286, x302);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x289, x317);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x292, x320);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x295, x323);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x298, x326);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x300, x329);
- uint64_t x350, uint64_t _ = mulx_u64(x332, 0xaaaaaaaaaaaaaaabL);
- uint64_t x353, uint64_t x354 = mulx_u64(x350, 0xfffffffffffffffdL);
- uint64_t x356, uint64_t x357 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x359, uint64_t x360 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x362, uint64_t x363 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x365, uint64_t x366 = mulx_u64(x350, 0x3ff);
- uint64_t x368, uint8_t x369 = addcarryx_u64(0x0, x354, x356);
- uint64_t x371, uint8_t x372 = addcarryx_u64(x369, x357, x359);
- uint64_t x374, uint8_t x375 = addcarryx_u64(x372, x360, x362);
- uint64_t x377, uint8_t x378 = addcarryx_u64(x375, x363, x365);
- uint64_t x380, uint8_t _ = addcarryx_u64(0x0, x378, x366);
- uint64_t _, uint8_t x384 = addcarryx_u64(0x0, x332, x353);
- uint64_t x386, uint8_t x387 = addcarryx_u64(x384, x335, x368);
- uint64_t x389, uint8_t x390 = addcarryx_u64(x387, x338, x371);
- uint64_t x392, uint8_t x393 = addcarryx_u64(x390, x341, x374);
- uint64_t x395, uint8_t x396 = addcarryx_u64(x393, x344, x377);
- uint64_t x398, uint8_t x399 = addcarryx_u64(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint64_t x402, uint64_t x403 = mulx_u64(x10, x13);
- uint64_t x405, uint64_t x406 = mulx_u64(x10, x15);
- uint64_t x408, uint64_t x409 = mulx_u64(x10, x17);
- uint64_t x411, uint64_t x412 = mulx_u64(x10, x19);
- uint64_t x414, uint64_t x415 = mulx_u64(x10, x18);
- uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x403, x405);
- uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x406, x408);
- uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x409, x411);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x412, x414);
- uint64_t x429, uint8_t _ = addcarryx_u64(0x0, x427, x415);
- uint64_t x432, uint8_t x433 = addcarryx_u64(0x0, x386, x402);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x389, x417);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x392, x420);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x395, x423);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x398, x426);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x400, x429);
- uint64_t x450, uint64_t _ = mulx_u64(x432, 0xaaaaaaaaaaaaaaabL);
- uint64_t x453, uint64_t x454 = mulx_u64(x450, 0xfffffffffffffffdL);
- uint64_t x456, uint64_t x457 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x459, uint64_t x460 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x462, uint64_t x463 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x465, uint64_t x466 = mulx_u64(x450, 0x3ff);
- uint64_t x468, uint8_t x469 = addcarryx_u64(0x0, x454, x456);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x457, x459);
- uint64_t x474, uint8_t x475 = addcarryx_u64(x472, x460, x462);
- uint64_t x477, uint8_t x478 = addcarryx_u64(x475, x463, x465);
- uint64_t x480, uint8_t _ = addcarryx_u64(0x0, x478, x466);
- uint64_t _, uint8_t x484 = addcarryx_u64(0x0, x432, x453);
- uint64_t x486, uint8_t x487 = addcarryx_u64(x484, x435, x468);
- uint64_t x489, uint8_t x490 = addcarryx_u64(x487, x438, x471);
- uint64_t x492, uint8_t x493 = addcarryx_u64(x490, x441, x474);
- uint64_t x495, uint8_t x496 = addcarryx_u64(x493, x444, x477);
- uint64_t x498, uint8_t x499 = addcarryx_u64(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint64_t x502, uint8_t x503 = subborrow_u64(0x0, x486, 0xfffffffffffffffdL);
- uint64_t x505, uint8_t x506 = subborrow_u64(x503, x489, 0xffffffffffffffffL);
- uint64_t x508, uint8_t x509 = subborrow_u64(x506, x492, 0xffffffffffffffffL);
- uint64_t x511, uint8_t x512 = subborrow_u64(x509, x495, 0xffffffffffffffffL);
- uint64_t x514, uint8_t x515 = subborrow_u64(x512, x498, 0x3ff);
- uint64_t _, uint8_t x518 = subborrow_u64(x515, x500, 0x0);
- uint64_t x519 = cmovznz64(x518, x514, x498);
- uint64_t x520 = cmovznz64(x518, x511, x495);
- uint64_t x521 = cmovznz64(x518, x508, x492);
- uint64_t x522 = cmovznz64(x518, x505, x489);
- uint64_t x523 = cmovznz64(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e266m3/femulDisplay.v b/src/Specific/montgomery64_2e266m3/femulDisplay.v
deleted file mode 100644
index cfd88322f..000000000
--- a/src/Specific/montgomery64_2e266m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e266m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e266m3/fenz.c b/src/Specific/montgomery64_2e266m3/fenz.c
deleted file mode 100644
index 0a779af7c..000000000
--- a/src/Specific/montgomery64_2e266m3/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x9 = (x8 | x7);
- { uint64_t x10 = (x6 | x9);
- { uint64_t x11 = (x4 | x10);
- { uint64_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e266m3/fenz.v b/src/Specific/montgomery64_2e266m3/fenz.v
deleted file mode 100644
index 8149b61eb..000000000
--- a/src/Specific/montgomery64_2e266m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e266m3/fenzDisplay.log b/src/Specific/montgomery64_2e266m3/fenzDisplay.log
deleted file mode 100644
index 4f18295b0..000000000
--- a/src/Specific/montgomery64_2e266m3/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x9 = (x8 | x7);
- uint64_t x10 = (x6 | x9);
- uint64_t x11 = (x4 | x10);
- uint64_t x12 = (x2 | x11);
- return x12)
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e266m3/fenzDisplay.v b/src/Specific/montgomery64_2e266m3/fenzDisplay.v
deleted file mode 100644
index 8e5499953..000000000
--- a/src/Specific/montgomery64_2e266m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e266m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e266m3/feopp.c b/src/Specific/montgomery64_2e266m3/feopp.c
deleted file mode 100644
index 73d56aa32..000000000
--- a/src/Specific/montgomery64_2e266m3/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u64(0x0, 0x0, x2, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u64(x11, 0x0, x4, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, 0x0, x6, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, 0x0, x8, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(x20, 0x0, x7, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xfffffffffffffffdL);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x3ff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e266m3/feopp.v b/src/Specific/montgomery64_2e266m3/feopp.v
deleted file mode 100644
index 20d363921..000000000
--- a/src/Specific/montgomery64_2e266m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e266m3/feoppDisplay.log b/src/Specific/montgomery64_2e266m3/feoppDisplay.log
deleted file mode 100644
index fe7f00b63..000000000
--- a/src/Specific/montgomery64_2e266m3/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x13, uint8_t x14 = subborrow_u64(x11, 0x0, x4);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, 0x0, x6);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x8);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x7);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xfffffffffffffffdL);
- uint64_t x27, uint8_t x28 = addcarryx_u64(0x0, x10, x25);
- uint64_t x29 = (x24 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x28, x13, x29);
- uint64_t x33 = (x24 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x16, x33);
- uint64_t x37 = (x24 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x19, x37);
- uint64_t x41 = (x24 & 0x3ff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e266m3/feoppDisplay.v b/src/Specific/montgomery64_2e266m3/feoppDisplay.v
deleted file mode 100644
index 795ddb1ef..000000000
--- a/src/Specific/montgomery64_2e266m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e266m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e266m3/fesquare.c b/src/Specific/montgomery64_2e266m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e266m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e266m3/fesub.c b/src/Specific/montgomery64_2e266m3/fesub.c
deleted file mode 100644
index 17bb0bd90..000000000
--- a/src/Specific/montgomery64_2e266m3/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _subborrow_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _subborrow_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _subborrow_u64(x31, x10, x18, &x33);
- { uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- { uint64_t x36 = (x35 & 0xfffffffffffffffdL);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(0x0, x21, x36, &x38);
- { uint64_t x40 = (x35 & 0xffffffffffffffffL);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x39, x24, x40, &x42);
- { uint64_t x44 = (x35 & 0xffffffffffffffffL);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x43, x27, x44, &x46);
- { uint64_t x48 = (x35 & 0xffffffffffffffffL);
- { uint64_t x50; uint8_t x51 = _addcarryx_u64(x47, x30, x48, &x50);
- { uint64_t x52 = (x35 & 0x3ff);
- { uint64_t x54; uint8_t _ = _addcarryx_u64(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e266m3/fesub.v b/src/Specific/montgomery64_2e266m3/fesub.v
deleted file mode 100644
index 63683411b..000000000
--- a/src/Specific/montgomery64_2e266m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e266m3/fesubDisplay.log b/src/Specific/montgomery64_2e266m3/fesubDisplay.log
deleted file mode 100644
index 695b18f9a..000000000
--- a/src/Specific/montgomery64_2e266m3/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = subborrow_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = subborrow_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = subborrow_u64(x31, x10, x18);
- uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- uint64_t x36 = (x35 & 0xfffffffffffffffdL);
- uint64_t x38, uint8_t x39 = addcarryx_u64(0x0, x21, x36);
- uint64_t x40 = (x35 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x39, x24, x40);
- uint64_t x44 = (x35 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x27, x44);
- uint64_t x48 = (x35 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x30, x48);
- uint64_t x52 = (x35 & 0x3ff);
- uint64_t x54, uint8_t _ = addcarryx_u64(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e266m3/fesubDisplay.v b/src/Specific/montgomery64_2e266m3/fesubDisplay.v
deleted file mode 100644
index 4baea9fd7..000000000
--- a/src/Specific/montgomery64_2e266m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e266m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e266m3/CurveParameters.v b/src/Specific/montgomery64_2e266m3_5limbs/CurveParameters.v
index fb791dd86..fb791dd86 100644
--- a/src/Specific/montgomery64_2e266m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e266m3_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/Synthesis.v b/src/Specific/montgomery64_2e266m3_5limbs/Synthesis.v
new file mode 100644
index 000000000..9e57e20b5
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e266m3/compiler.sh b/src/Specific/montgomery64_2e266m3_5limbs/compiler.sh
index 4258c2dc7..4258c2dc7 100755
--- a/src/Specific/montgomery64_2e266m3/compiler.sh
+++ b/src/Specific/montgomery64_2e266m3_5limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e266m3/compilerxx.sh b/src/Specific/montgomery64_2e266m3_5limbs/compilerxx.sh
index 85cfa292c..85cfa292c 100755
--- a/src/Specific/montgomery64_2e266m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e266m3_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/feadd.v b/src/Specific/montgomery64_2e266m3_5limbs/feadd.v
new file mode 100644
index 000000000..efe84e292
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/feaddDisplay.v b/src/Specific/montgomery64_2e266m3_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..0709cf6d0
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/femul.v b/src/Specific/montgomery64_2e266m3_5limbs/femul.v
new file mode 100644
index 000000000..1975c3afc
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/femulDisplay.v b/src/Specific/montgomery64_2e266m3_5limbs/femulDisplay.v
new file mode 100644
index 000000000..41c7cfa21
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/fenz.v b/src/Specific/montgomery64_2e266m3_5limbs/fenz.v
new file mode 100644
index 000000000..6a7fd8054
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/fenzDisplay.v b/src/Specific/montgomery64_2e266m3_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..b2bf9998f
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/feopp.v b/src/Specific/montgomery64_2e266m3_5limbs/feopp.v
new file mode 100644
index 000000000..7a3ba7eaf
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/feoppDisplay.v b/src/Specific/montgomery64_2e266m3_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..f78a4f0ba
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/fesub.v b/src/Specific/montgomery64_2e266m3_5limbs/fesub.v
new file mode 100644
index 000000000..3bcf49286
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e266m3_5limbs/fesubDisplay.v b/src/Specific/montgomery64_2e266m3_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..b866dff96
--- /dev/null
+++ b/src/Specific/montgomery64_2e266m3_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e266m3_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e266m3/py_interpreter.sh b/src/Specific/montgomery64_2e266m3_5limbs/py_interpreter.sh
index 5a0ea5b68..5a0ea5b68 100755
--- a/src/Specific/montgomery64_2e266m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e266m3_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e285m9/Synthesis.v b/src/Specific/montgomery64_2e285m9/Synthesis.v
deleted file mode 100644
index 9e8ae81e6..000000000
--- a/src/Specific/montgomery64_2e285m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e285m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e285m9/feadd.c b/src/Specific/montgomery64_2e285m9/feadd.c
deleted file mode 100644
index 9ab6448cf..000000000
--- a/src/Specific/montgomery64_2e285m9/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(x31, x10, x18, &x33);
- { uint64_t x36; uint8_t x37 = _subborrow_u64(0x0, x21, 0xfffffffffffffff7L, &x36);
- { uint64_t x39; uint8_t x40 = _subborrow_u64(x37, x24, 0xffffffffffffffffL, &x39);
- { uint64_t x42; uint8_t x43 = _subborrow_u64(x40, x27, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint8_t x46 = _subborrow_u64(x43, x30, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint8_t x49 = _subborrow_u64(x46, x33, 0x1fffffff, &x48);
- { uint64_t _; uint8_t x52 = _subborrow_u64(x49, x34, 0x0, &_);
- { uint64_t x53 = cmovznz64(x52, x48, x33);
- { uint64_t x54 = cmovznz64(x52, x45, x30);
- { uint64_t x55 = cmovznz64(x52, x42, x27);
- { uint64_t x56 = cmovznz64(x52, x39, x24);
- { uint64_t x57 = cmovznz64(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e285m9/feadd.v b/src/Specific/montgomery64_2e285m9/feadd.v
deleted file mode 100644
index 609a34356..000000000
--- a/src/Specific/montgomery64_2e285m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e285m9/feaddDisplay.log b/src/Specific/montgomery64_2e285m9/feaddDisplay.log
deleted file mode 100644
index 5d3ecfdc2..000000000
--- a/src/Specific/montgomery64_2e285m9/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = addcarryx_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = addcarryx_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = addcarryx_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = addcarryx_u64(x31, x10, x18);
- uint64_t x36, uint8_t x37 = subborrow_u64(0x0, x21, 0xfffffffffffffff7L);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x24, 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x27, 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x30, 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x33, 0x1fffffff);
- uint64_t _, uint8_t x52 = subborrow_u64(x49, x34, 0x0);
- uint64_t x53 = cmovznz64(x52, x48, x33);
- uint64_t x54 = cmovznz64(x52, x45, x30);
- uint64_t x55 = cmovznz64(x52, x42, x27);
- uint64_t x56 = cmovznz64(x52, x39, x24);
- uint64_t x57 = cmovznz64(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e285m9/feaddDisplay.v b/src/Specific/montgomery64_2e285m9/feaddDisplay.v
deleted file mode 100644
index 80b13695b..000000000
--- a/src/Specific/montgomery64_2e285m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e285m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e285m9/femul.c b/src/Specific/montgomery64_2e285m9/femul.c
deleted file mode 100644
index 2adf31093..000000000
--- a/src/Specific/montgomery64_2e285m9/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x22; uint64_t x21 = _mulx_u64(x5, x13, &x22);
- { uint64_t x25; uint64_t x24 = _mulx_u64(x5, x15, &x25);
- { uint64_t x28; uint64_t x27 = _mulx_u64(x5, x17, &x28);
- { uint64_t x31; uint64_t x30 = _mulx_u64(x5, x19, &x31);
- { uint64_t x34; uint64_t x33 = _mulx_u64(x5, x18, &x34);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(0x0, x22, x24, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x25, x27, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x28, x30, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x31, x33, &x45);
- { uint64_t x48; uint8_t _ = _addcarryx_u64(0x0, x46, x34, &x48);
- { uint64_t _; uint64_t x51 = _mulx_u64(x21, 0x8e38e38e38e38e39L, &_);
- { uint64_t x55; uint64_t x54 = _mulx_u64(x51, 0xfffffffffffffff7L, &x55);
- { uint64_t x58; uint64_t x57 = _mulx_u64(x51, 0xffffffffffffffffL, &x58);
- { uint64_t x61; uint64_t x60 = _mulx_u64(x51, 0xffffffffffffffffL, &x61);
- { uint64_t x64; uint64_t x63 = _mulx_u64(x51, 0xffffffffffffffffL, &x64);
- { uint64_t x67; uint64_t x66 = _mulx_u64(x51, 0x1fffffff, &x67);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x55, x57, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x58, x60, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x61, x63, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x64, x66, &x78);
- { uint64_t x81; uint8_t _ = _addcarryx_u64(0x0, x79, x67, &x81);
- { uint64_t _; uint8_t x85 = _addcarryx_u64(0x0, x21, x54, &_);
- { uint64_t x87; uint8_t x88 = _addcarryx_u64(x85, x36, x69, &x87);
- { uint64_t x90; uint8_t x91 = _addcarryx_u64(x88, x39, x72, &x90);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(x91, x42, x75, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x45, x78, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x48, x81, &x99);
- { uint64_t x103; uint64_t x102 = _mulx_u64(x7, x13, &x103);
- { uint64_t x106; uint64_t x105 = _mulx_u64(x7, x15, &x106);
- { uint64_t x109; uint64_t x108 = _mulx_u64(x7, x17, &x109);
- { uint64_t x112; uint64_t x111 = _mulx_u64(x7, x19, &x112);
- { uint64_t x115; uint64_t x114 = _mulx_u64(x7, x18, &x115);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(0x0, x103, x105, &x117);
- { uint64_t x120; uint8_t x121 = _addcarryx_u64(x118, x106, x108, &x120);
- { uint64_t x123; uint8_t x124 = _addcarryx_u64(x121, x109, x111, &x123);
- { uint64_t x126; uint8_t x127 = _addcarryx_u64(x124, x112, x114, &x126);
- { uint64_t x129; uint8_t _ = _addcarryx_u64(0x0, x127, x115, &x129);
- { uint64_t x132; uint8_t x133 = _addcarryx_u64(0x0, x87, x102, &x132);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(x133, x90, x117, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x93, x120, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x96, x123, &x141);
- { uint64_t x144; uint8_t x145 = _addcarryx_u64(x142, x99, x126, &x144);
- { uint64_t x147; uint8_t x148 = _addcarryx_u64(x145, x100, x129, &x147);
- { uint64_t _; uint64_t x150 = _mulx_u64(x132, 0x8e38e38e38e38e39L, &_);
- { uint64_t x154; uint64_t x153 = _mulx_u64(x150, 0xfffffffffffffff7L, &x154);
- { uint64_t x157; uint64_t x156 = _mulx_u64(x150, 0xffffffffffffffffL, &x157);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x150, 0xffffffffffffffffL, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x150, 0xffffffffffffffffL, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x150, 0x1fffffff, &x166);
- { uint64_t x168; uint8_t x169 = _addcarryx_u64(0x0, x154, x156, &x168);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x157, x159, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x160, x162, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x163, x165, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x166, &x180);
- { uint64_t _; uint8_t x184 = _addcarryx_u64(0x0, x132, x153, &_);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x135, x168, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x138, x171, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x141, x174, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x144, x177, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint64_t x203; uint64_t x202 = _mulx_u64(x9, x13, &x203);
- { uint64_t x206; uint64_t x205 = _mulx_u64(x9, x15, &x206);
- { uint64_t x209; uint64_t x208 = _mulx_u64(x9, x17, &x209);
- { uint64_t x212; uint64_t x211 = _mulx_u64(x9, x19, &x212);
- { uint64_t x215; uint64_t x214 = _mulx_u64(x9, x18, &x215);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(0x0, x203, x205, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x206, x208, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x209, x211, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x212, x214, &x226);
- { uint64_t x229; uint8_t _ = _addcarryx_u64(0x0, x227, x215, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(0x0, x186, x202, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x189, x217, &x235);
- { uint64_t x238; uint8_t x239 = _addcarryx_u64(x236, x192, x220, &x238);
- { uint64_t x241; uint8_t x242 = _addcarryx_u64(x239, x195, x223, &x241);
- { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x198, x226, &x244);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x200, x229, &x247);
- { uint64_t _; uint64_t x250 = _mulx_u64(x232, 0x8e38e38e38e38e39L, &_);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x250, 0xfffffffffffffff7L, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x250, 0xffffffffffffffffL, &x257);
- { uint64_t x260; uint64_t x259 = _mulx_u64(x250, 0xffffffffffffffffL, &x260);
- { uint64_t x263; uint64_t x262 = _mulx_u64(x250, 0xffffffffffffffffL, &x263);
- { uint64_t x266; uint64_t x265 = _mulx_u64(x250, 0x1fffffff, &x266);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(0x0, x254, x256, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x257, x259, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x260, x262, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x263, x265, &x277);
- { uint64_t x280; uint8_t _ = _addcarryx_u64(0x0, x278, x266, &x280);
- { uint64_t _; uint8_t x284 = _addcarryx_u64(0x0, x232, x253, &_);
- { uint64_t x286; uint8_t x287 = _addcarryx_u64(x284, x235, x268, &x286);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(x287, x238, x271, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x241, x274, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x244, x277, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x11, x13, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x11, x15, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x11, x17, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x11, x19, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x11, x18, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x303, x305, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x306, x308, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x309, x311, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x312, x314, &x326);
- { uint64_t x329; uint8_t _ = _addcarryx_u64(0x0, x327, x315, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(0x0, x286, x302, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x289, x317, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x292, x320, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x295, x323, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x298, x326, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x300, x329, &x347);
- { uint64_t _; uint64_t x350 = _mulx_u64(x332, 0x8e38e38e38e38e39L, &_);
- { uint64_t x354; uint64_t x353 = _mulx_u64(x350, 0xfffffffffffffff7L, &x354);
- { uint64_t x357; uint64_t x356 = _mulx_u64(x350, 0xffffffffffffffffL, &x357);
- { uint64_t x360; uint64_t x359 = _mulx_u64(x350, 0xffffffffffffffffL, &x360);
- { uint64_t x363; uint64_t x362 = _mulx_u64(x350, 0xffffffffffffffffL, &x363);
- { uint64_t x366; uint64_t x365 = _mulx_u64(x350, 0x1fffffff, &x366);
- { uint64_t x368; uint8_t x369 = _addcarryx_u64(0x0, x354, x356, &x368);
- { uint64_t x371; uint8_t x372 = _addcarryx_u64(x369, x357, x359, &x371);
- { uint64_t x374; uint8_t x375 = _addcarryx_u64(x372, x360, x362, &x374);
- { uint64_t x377; uint8_t x378 = _addcarryx_u64(x375, x363, x365, &x377);
- { uint64_t x380; uint8_t _ = _addcarryx_u64(0x0, x378, x366, &x380);
- { uint64_t _; uint8_t x384 = _addcarryx_u64(0x0, x332, x353, &_);
- { uint64_t x386; uint8_t x387 = _addcarryx_u64(x384, x335, x368, &x386);
- { uint64_t x389; uint8_t x390 = _addcarryx_u64(x387, x338, x371, &x389);
- { uint64_t x392; uint8_t x393 = _addcarryx_u64(x390, x341, x374, &x392);
- { uint64_t x395; uint8_t x396 = _addcarryx_u64(x393, x344, x377, &x395);
- { uint64_t x398; uint8_t x399 = _addcarryx_u64(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint64_t x403; uint64_t x402 = _mulx_u64(x10, x13, &x403);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x10, x15, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x10, x17, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x10, x19, &x412);
- { uint64_t x415; uint64_t x414 = _mulx_u64(x10, x18, &x415);
- { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x403, x405, &x417);
- { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x406, x408, &x420);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x409, x411, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x412, x414, &x426);
- { uint64_t x429; uint8_t _ = _addcarryx_u64(0x0, x427, x415, &x429);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(0x0, x386, x402, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x389, x417, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x392, x420, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x395, x423, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x398, x426, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x400, x429, &x447);
- { uint64_t _; uint64_t x450 = _mulx_u64(x432, 0x8e38e38e38e38e39L, &_);
- { uint64_t x454; uint64_t x453 = _mulx_u64(x450, 0xfffffffffffffff7L, &x454);
- { uint64_t x457; uint64_t x456 = _mulx_u64(x450, 0xffffffffffffffffL, &x457);
- { uint64_t x460; uint64_t x459 = _mulx_u64(x450, 0xffffffffffffffffL, &x460);
- { uint64_t x463; uint64_t x462 = _mulx_u64(x450, 0xffffffffffffffffL, &x463);
- { uint64_t x466; uint64_t x465 = _mulx_u64(x450, 0x1fffffff, &x466);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(0x0, x454, x456, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x457, x459, &x471);
- { uint64_t x474; uint8_t x475 = _addcarryx_u64(x472, x460, x462, &x474);
- { uint64_t x477; uint8_t x478 = _addcarryx_u64(x475, x463, x465, &x477);
- { uint64_t x480; uint8_t _ = _addcarryx_u64(0x0, x478, x466, &x480);
- { uint64_t _; uint8_t x484 = _addcarryx_u64(0x0, x432, x453, &_);
- { uint64_t x486; uint8_t x487 = _addcarryx_u64(x484, x435, x468, &x486);
- { uint64_t x489; uint8_t x490 = _addcarryx_u64(x487, x438, x471, &x489);
- { uint64_t x492; uint8_t x493 = _addcarryx_u64(x490, x441, x474, &x492);
- { uint64_t x495; uint8_t x496 = _addcarryx_u64(x493, x444, x477, &x495);
- { uint64_t x498; uint8_t x499 = _addcarryx_u64(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint64_t x502; uint8_t x503 = _subborrow_u64(0x0, x486, 0xfffffffffffffff7L, &x502);
- { uint64_t x505; uint8_t x506 = _subborrow_u64(x503, x489, 0xffffffffffffffffL, &x505);
- { uint64_t x508; uint8_t x509 = _subborrow_u64(x506, x492, 0xffffffffffffffffL, &x508);
- { uint64_t x511; uint8_t x512 = _subborrow_u64(x509, x495, 0xffffffffffffffffL, &x511);
- { uint64_t x514; uint8_t x515 = _subborrow_u64(x512, x498, 0x1fffffff, &x514);
- { uint64_t _; uint8_t x518 = _subborrow_u64(x515, x500, 0x0, &_);
- { uint64_t x519 = cmovznz64(x518, x514, x498);
- { uint64_t x520 = cmovznz64(x518, x511, x495);
- { uint64_t x521 = cmovznz64(x518, x508, x492);
- { uint64_t x522 = cmovznz64(x518, x505, x489);
- { uint64_t x523 = cmovznz64(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e285m9/femul.v b/src/Specific/montgomery64_2e285m9/femul.v
deleted file mode 100644
index 9c5d2b9c9..000000000
--- a/src/Specific/montgomery64_2e285m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e285m9/femulDisplay.log b/src/Specific/montgomery64_2e285m9/femulDisplay.log
deleted file mode 100644
index c6e894c2b..000000000
--- a/src/Specific/montgomery64_2e285m9/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint64_t x22 = mulx_u64(x5, x13);
- uint64_t x24, uint64_t x25 = mulx_u64(x5, x15);
- uint64_t x27, uint64_t x28 = mulx_u64(x5, x17);
- uint64_t x30, uint64_t x31 = mulx_u64(x5, x19);
- uint64_t x33, uint64_t x34 = mulx_u64(x5, x18);
- uint64_t x36, uint8_t x37 = addcarryx_u64(0x0, x22, x24);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x25, x27);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x28, x30);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x31, x33);
- uint64_t x48, uint8_t _ = addcarryx_u64(0x0, x46, x34);
- uint64_t x51, uint64_t _ = mulx_u64(x21, 0x8e38e38e38e38e39L);
- uint64_t x54, uint64_t x55 = mulx_u64(x51, 0xfffffffffffffff7L);
- uint64_t x57, uint64_t x58 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x60, uint64_t x61 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x63, uint64_t x64 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x66, uint64_t x67 = mulx_u64(x51, 0x1fffffff);
- uint64_t x69, uint8_t x70 = addcarryx_u64(0x0, x55, x57);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x58, x60);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x61, x63);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x64, x66);
- uint64_t x81, uint8_t _ = addcarryx_u64(0x0, x79, x67);
- uint64_t _, uint8_t x85 = addcarryx_u64(0x0, x21, x54);
- uint64_t x87, uint8_t x88 = addcarryx_u64(x85, x36, x69);
- uint64_t x90, uint8_t x91 = addcarryx_u64(x88, x39, x72);
- uint64_t x93, uint8_t x94 = addcarryx_u64(x91, x42, x75);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x45, x78);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x48, x81);
- uint64_t x102, uint64_t x103 = mulx_u64(x7, x13);
- uint64_t x105, uint64_t x106 = mulx_u64(x7, x15);
- uint64_t x108, uint64_t x109 = mulx_u64(x7, x17);
- uint64_t x111, uint64_t x112 = mulx_u64(x7, x19);
- uint64_t x114, uint64_t x115 = mulx_u64(x7, x18);
- uint64_t x117, uint8_t x118 = addcarryx_u64(0x0, x103, x105);
- uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x106, x108);
- uint64_t x123, uint8_t x124 = addcarryx_u64(x121, x109, x111);
- uint64_t x126, uint8_t x127 = addcarryx_u64(x124, x112, x114);
- uint64_t x129, uint8_t _ = addcarryx_u64(0x0, x127, x115);
- uint64_t x132, uint8_t x133 = addcarryx_u64(0x0, x87, x102);
- uint64_t x135, uint8_t x136 = addcarryx_u64(x133, x90, x117);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x93, x120);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x96, x123);
- uint64_t x144, uint8_t x145 = addcarryx_u64(x142, x99, x126);
- uint64_t x147, uint8_t x148 = addcarryx_u64(x145, x100, x129);
- uint64_t x150, uint64_t _ = mulx_u64(x132, 0x8e38e38e38e38e39L);
- uint64_t x153, uint64_t x154 = mulx_u64(x150, 0xfffffffffffffff7L);
- uint64_t x156, uint64_t x157 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x159, uint64_t x160 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x162, uint64_t x163 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x165, uint64_t x166 = mulx_u64(x150, 0x1fffffff);
- uint64_t x168, uint8_t x169 = addcarryx_u64(0x0, x154, x156);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x157, x159);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x160, x162);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x163, x165);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x166);
- uint64_t _, uint8_t x184 = addcarryx_u64(0x0, x132, x153);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x135, x168);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x138, x171);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x141, x174);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x144, x177);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint64_t x202, uint64_t x203 = mulx_u64(x9, x13);
- uint64_t x205, uint64_t x206 = mulx_u64(x9, x15);
- uint64_t x208, uint64_t x209 = mulx_u64(x9, x17);
- uint64_t x211, uint64_t x212 = mulx_u64(x9, x19);
- uint64_t x214, uint64_t x215 = mulx_u64(x9, x18);
- uint64_t x217, uint8_t x218 = addcarryx_u64(0x0, x203, x205);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x206, x208);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x209, x211);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x212, x214);
- uint64_t x229, uint8_t _ = addcarryx_u64(0x0, x227, x215);
- uint64_t x232, uint8_t x233 = addcarryx_u64(0x0, x186, x202);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x189, x217);
- uint64_t x238, uint8_t x239 = addcarryx_u64(x236, x192, x220);
- uint64_t x241, uint8_t x242 = addcarryx_u64(x239, x195, x223);
- uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x198, x226);
- uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x200, x229);
- uint64_t x250, uint64_t _ = mulx_u64(x232, 0x8e38e38e38e38e39L);
- uint64_t x253, uint64_t x254 = mulx_u64(x250, 0xfffffffffffffff7L);
- uint64_t x256, uint64_t x257 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x259, uint64_t x260 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x262, uint64_t x263 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x265, uint64_t x266 = mulx_u64(x250, 0x1fffffff);
- uint64_t x268, uint8_t x269 = addcarryx_u64(0x0, x254, x256);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x257, x259);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x260, x262);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x263, x265);
- uint64_t x280, uint8_t _ = addcarryx_u64(0x0, x278, x266);
- uint64_t _, uint8_t x284 = addcarryx_u64(0x0, x232, x253);
- uint64_t x286, uint8_t x287 = addcarryx_u64(x284, x235, x268);
- uint64_t x289, uint8_t x290 = addcarryx_u64(x287, x238, x271);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x241, x274);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x244, x277);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint64_t x302, uint64_t x303 = mulx_u64(x11, x13);
- uint64_t x305, uint64_t x306 = mulx_u64(x11, x15);
- uint64_t x308, uint64_t x309 = mulx_u64(x11, x17);
- uint64_t x311, uint64_t x312 = mulx_u64(x11, x19);
- uint64_t x314, uint64_t x315 = mulx_u64(x11, x18);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x303, x305);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x306, x308);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x309, x311);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x312, x314);
- uint64_t x329, uint8_t _ = addcarryx_u64(0x0, x327, x315);
- uint64_t x332, uint8_t x333 = addcarryx_u64(0x0, x286, x302);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x289, x317);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x292, x320);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x295, x323);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x298, x326);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x300, x329);
- uint64_t x350, uint64_t _ = mulx_u64(x332, 0x8e38e38e38e38e39L);
- uint64_t x353, uint64_t x354 = mulx_u64(x350, 0xfffffffffffffff7L);
- uint64_t x356, uint64_t x357 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x359, uint64_t x360 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x362, uint64_t x363 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x365, uint64_t x366 = mulx_u64(x350, 0x1fffffff);
- uint64_t x368, uint8_t x369 = addcarryx_u64(0x0, x354, x356);
- uint64_t x371, uint8_t x372 = addcarryx_u64(x369, x357, x359);
- uint64_t x374, uint8_t x375 = addcarryx_u64(x372, x360, x362);
- uint64_t x377, uint8_t x378 = addcarryx_u64(x375, x363, x365);
- uint64_t x380, uint8_t _ = addcarryx_u64(0x0, x378, x366);
- uint64_t _, uint8_t x384 = addcarryx_u64(0x0, x332, x353);
- uint64_t x386, uint8_t x387 = addcarryx_u64(x384, x335, x368);
- uint64_t x389, uint8_t x390 = addcarryx_u64(x387, x338, x371);
- uint64_t x392, uint8_t x393 = addcarryx_u64(x390, x341, x374);
- uint64_t x395, uint8_t x396 = addcarryx_u64(x393, x344, x377);
- uint64_t x398, uint8_t x399 = addcarryx_u64(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint64_t x402, uint64_t x403 = mulx_u64(x10, x13);
- uint64_t x405, uint64_t x406 = mulx_u64(x10, x15);
- uint64_t x408, uint64_t x409 = mulx_u64(x10, x17);
- uint64_t x411, uint64_t x412 = mulx_u64(x10, x19);
- uint64_t x414, uint64_t x415 = mulx_u64(x10, x18);
- uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x403, x405);
- uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x406, x408);
- uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x409, x411);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x412, x414);
- uint64_t x429, uint8_t _ = addcarryx_u64(0x0, x427, x415);
- uint64_t x432, uint8_t x433 = addcarryx_u64(0x0, x386, x402);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x389, x417);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x392, x420);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x395, x423);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x398, x426);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x400, x429);
- uint64_t x450, uint64_t _ = mulx_u64(x432, 0x8e38e38e38e38e39L);
- uint64_t x453, uint64_t x454 = mulx_u64(x450, 0xfffffffffffffff7L);
- uint64_t x456, uint64_t x457 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x459, uint64_t x460 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x462, uint64_t x463 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x465, uint64_t x466 = mulx_u64(x450, 0x1fffffff);
- uint64_t x468, uint8_t x469 = addcarryx_u64(0x0, x454, x456);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x457, x459);
- uint64_t x474, uint8_t x475 = addcarryx_u64(x472, x460, x462);
- uint64_t x477, uint8_t x478 = addcarryx_u64(x475, x463, x465);
- uint64_t x480, uint8_t _ = addcarryx_u64(0x0, x478, x466);
- uint64_t _, uint8_t x484 = addcarryx_u64(0x0, x432, x453);
- uint64_t x486, uint8_t x487 = addcarryx_u64(x484, x435, x468);
- uint64_t x489, uint8_t x490 = addcarryx_u64(x487, x438, x471);
- uint64_t x492, uint8_t x493 = addcarryx_u64(x490, x441, x474);
- uint64_t x495, uint8_t x496 = addcarryx_u64(x493, x444, x477);
- uint64_t x498, uint8_t x499 = addcarryx_u64(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint64_t x502, uint8_t x503 = subborrow_u64(0x0, x486, 0xfffffffffffffff7L);
- uint64_t x505, uint8_t x506 = subborrow_u64(x503, x489, 0xffffffffffffffffL);
- uint64_t x508, uint8_t x509 = subborrow_u64(x506, x492, 0xffffffffffffffffL);
- uint64_t x511, uint8_t x512 = subborrow_u64(x509, x495, 0xffffffffffffffffL);
- uint64_t x514, uint8_t x515 = subborrow_u64(x512, x498, 0x1fffffff);
- uint64_t _, uint8_t x518 = subborrow_u64(x515, x500, 0x0);
- uint64_t x519 = cmovznz64(x518, x514, x498);
- uint64_t x520 = cmovznz64(x518, x511, x495);
- uint64_t x521 = cmovznz64(x518, x508, x492);
- uint64_t x522 = cmovznz64(x518, x505, x489);
- uint64_t x523 = cmovznz64(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e285m9/femulDisplay.v b/src/Specific/montgomery64_2e285m9/femulDisplay.v
deleted file mode 100644
index 8d0c35adb..000000000
--- a/src/Specific/montgomery64_2e285m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e285m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e285m9/fenz.c b/src/Specific/montgomery64_2e285m9/fenz.c
deleted file mode 100644
index 0a779af7c..000000000
--- a/src/Specific/montgomery64_2e285m9/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x9 = (x8 | x7);
- { uint64_t x10 = (x6 | x9);
- { uint64_t x11 = (x4 | x10);
- { uint64_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e285m9/fenz.v b/src/Specific/montgomery64_2e285m9/fenz.v
deleted file mode 100644
index 6d6d58784..000000000
--- a/src/Specific/montgomery64_2e285m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e285m9/fenzDisplay.log b/src/Specific/montgomery64_2e285m9/fenzDisplay.log
deleted file mode 100644
index 4f18295b0..000000000
--- a/src/Specific/montgomery64_2e285m9/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x9 = (x8 | x7);
- uint64_t x10 = (x6 | x9);
- uint64_t x11 = (x4 | x10);
- uint64_t x12 = (x2 | x11);
- return x12)
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e285m9/fenzDisplay.v b/src/Specific/montgomery64_2e285m9/fenzDisplay.v
deleted file mode 100644
index 311cc95c7..000000000
--- a/src/Specific/montgomery64_2e285m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e285m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e285m9/feopp.c b/src/Specific/montgomery64_2e285m9/feopp.c
deleted file mode 100644
index 64e1b5bd1..000000000
--- a/src/Specific/montgomery64_2e285m9/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u64(0x0, 0x0, x2, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u64(x11, 0x0, x4, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, 0x0, x6, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, 0x0, x8, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(x20, 0x0, x7, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xfffffffffffffff7L);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x1fffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e285m9/feopp.v b/src/Specific/montgomery64_2e285m9/feopp.v
deleted file mode 100644
index 79a5410af..000000000
--- a/src/Specific/montgomery64_2e285m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e285m9/feoppDisplay.log b/src/Specific/montgomery64_2e285m9/feoppDisplay.log
deleted file mode 100644
index 68ec2f162..000000000
--- a/src/Specific/montgomery64_2e285m9/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x13, uint8_t x14 = subborrow_u64(x11, 0x0, x4);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, 0x0, x6);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x8);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x7);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xfffffffffffffff7L);
- uint64_t x27, uint8_t x28 = addcarryx_u64(0x0, x10, x25);
- uint64_t x29 = (x24 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x28, x13, x29);
- uint64_t x33 = (x24 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x16, x33);
- uint64_t x37 = (x24 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x19, x37);
- uint64_t x41 = (x24 & 0x1fffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e285m9/feoppDisplay.v b/src/Specific/montgomery64_2e285m9/feoppDisplay.v
deleted file mode 100644
index 410accb4e..000000000
--- a/src/Specific/montgomery64_2e285m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e285m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e285m9/fesquare.c b/src/Specific/montgomery64_2e285m9/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e285m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e285m9/fesub.c b/src/Specific/montgomery64_2e285m9/fesub.c
deleted file mode 100644
index 12c16d5f5..000000000
--- a/src/Specific/montgomery64_2e285m9/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _subborrow_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _subborrow_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _subborrow_u64(x31, x10, x18, &x33);
- { uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- { uint64_t x36 = (x35 & 0xfffffffffffffff7L);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(0x0, x21, x36, &x38);
- { uint64_t x40 = (x35 & 0xffffffffffffffffL);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x39, x24, x40, &x42);
- { uint64_t x44 = (x35 & 0xffffffffffffffffL);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x43, x27, x44, &x46);
- { uint64_t x48 = (x35 & 0xffffffffffffffffL);
- { uint64_t x50; uint8_t x51 = _addcarryx_u64(x47, x30, x48, &x50);
- { uint64_t x52 = (x35 & 0x1fffffff);
- { uint64_t x54; uint8_t _ = _addcarryx_u64(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e285m9/fesub.v b/src/Specific/montgomery64_2e285m9/fesub.v
deleted file mode 100644
index 676c31305..000000000
--- a/src/Specific/montgomery64_2e285m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e285m9/fesubDisplay.log b/src/Specific/montgomery64_2e285m9/fesubDisplay.log
deleted file mode 100644
index f6cdb966c..000000000
--- a/src/Specific/montgomery64_2e285m9/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = subborrow_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = subborrow_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = subborrow_u64(x31, x10, x18);
- uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- uint64_t x36 = (x35 & 0xfffffffffffffff7L);
- uint64_t x38, uint8_t x39 = addcarryx_u64(0x0, x21, x36);
- uint64_t x40 = (x35 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x39, x24, x40);
- uint64_t x44 = (x35 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x27, x44);
- uint64_t x48 = (x35 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x30, x48);
- uint64_t x52 = (x35 & 0x1fffffff);
- uint64_t x54, uint8_t _ = addcarryx_u64(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e285m9/fesubDisplay.v b/src/Specific/montgomery64_2e285m9/fesubDisplay.v
deleted file mode 100644
index 197e1fffe..000000000
--- a/src/Specific/montgomery64_2e285m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e285m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e285m9/CurveParameters.v b/src/Specific/montgomery64_2e285m9_5limbs/CurveParameters.v
index 2fa34e17e..2fa34e17e 100644
--- a/src/Specific/montgomery64_2e285m9/CurveParameters.v
+++ b/src/Specific/montgomery64_2e285m9_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/Synthesis.v b/src/Specific/montgomery64_2e285m9_5limbs/Synthesis.v
new file mode 100644
index 000000000..95e54093e
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e285m9/compiler.sh b/src/Specific/montgomery64_2e285m9_5limbs/compiler.sh
index d1bea85c8..d1bea85c8 100755
--- a/src/Specific/montgomery64_2e285m9/compiler.sh
+++ b/src/Specific/montgomery64_2e285m9_5limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e285m9/compilerxx.sh b/src/Specific/montgomery64_2e285m9_5limbs/compilerxx.sh
index bc2c10587..bc2c10587 100755
--- a/src/Specific/montgomery64_2e285m9/compilerxx.sh
+++ b/src/Specific/montgomery64_2e285m9_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/feadd.v b/src/Specific/montgomery64_2e285m9_5limbs/feadd.v
new file mode 100644
index 000000000..0fad18600
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/feaddDisplay.v b/src/Specific/montgomery64_2e285m9_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..60c2ea779
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/femul.v b/src/Specific/montgomery64_2e285m9_5limbs/femul.v
new file mode 100644
index 000000000..7e9c75d66
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/femulDisplay.v b/src/Specific/montgomery64_2e285m9_5limbs/femulDisplay.v
new file mode 100644
index 000000000..c32eb0420
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/fenz.v b/src/Specific/montgomery64_2e285m9_5limbs/fenz.v
new file mode 100644
index 000000000..287d4dd67
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/fenzDisplay.v b/src/Specific/montgomery64_2e285m9_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..f8efe8625
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/feopp.v b/src/Specific/montgomery64_2e285m9_5limbs/feopp.v
new file mode 100644
index 000000000..b1ead836d
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/feoppDisplay.v b/src/Specific/montgomery64_2e285m9_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..91850b52e
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/fesub.v b/src/Specific/montgomery64_2e285m9_5limbs/fesub.v
new file mode 100644
index 000000000..18a2560bf
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e285m9_5limbs/fesubDisplay.v b/src/Specific/montgomery64_2e285m9_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..06b1e8d3e
--- /dev/null
+++ b/src/Specific/montgomery64_2e285m9_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e285m9_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e285m9/py_interpreter.sh b/src/Specific/montgomery64_2e285m9_5limbs/py_interpreter.sh
index 0202a546c..0202a546c 100755
--- a/src/Specific/montgomery64_2e285m9/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e285m9_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e291m19/Synthesis.v b/src/Specific/montgomery64_2e291m19/Synthesis.v
deleted file mode 100644
index 10b0ae8a1..000000000
--- a/src/Specific/montgomery64_2e291m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e291m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e291m19/feadd.c b/src/Specific/montgomery64_2e291m19/feadd.c
deleted file mode 100644
index d7626cf52..000000000
--- a/src/Specific/montgomery64_2e291m19/feadd.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _addcarryx_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _addcarryx_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _addcarryx_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(x31, x10, x18, &x33);
- { uint64_t x36; uint8_t x37 = _subborrow_u64(0x0, x21, 0xffffffffffffffedL, &x36);
- { uint64_t x39; uint8_t x40 = _subborrow_u64(x37, x24, 0xffffffffffffffffL, &x39);
- { uint64_t x42; uint8_t x43 = _subborrow_u64(x40, x27, 0xffffffffffffffffL, &x42);
- { uint64_t x45; uint8_t x46 = _subborrow_u64(x43, x30, 0xffffffffffffffffL, &x45);
- { uint64_t x48; uint8_t x49 = _subborrow_u64(x46, x33, 0x7ffffffff, &x48);
- { uint64_t _; uint8_t x52 = _subborrow_u64(x49, x34, 0x0, &_);
- { uint64_t x53 = cmovznz64(x52, x48, x33);
- { uint64_t x54 = cmovznz64(x52, x45, x30);
- { uint64_t x55 = cmovznz64(x52, x42, x27);
- { uint64_t x56 = cmovznz64(x52, x39, x24);
- { uint64_t x57 = cmovznz64(x52, x36, x21);
- out[0] = x57;
- out[1] = x56;
- out[2] = x55;
- out[3] = x54;
- out[4] = x53;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e291m19/feadd.v b/src/Specific/montgomery64_2e291m19/feadd.v
deleted file mode 100644
index 5de5e7961..000000000
--- a/src/Specific/montgomery64_2e291m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e291m19/feaddDisplay.log b/src/Specific/montgomery64_2e291m19/feaddDisplay.log
deleted file mode 100644
index 0475ac351..000000000
--- a/src/Specific/montgomery64_2e291m19/feaddDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = addcarryx_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = addcarryx_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = addcarryx_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = addcarryx_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = addcarryx_u64(x31, x10, x18);
- uint64_t x36, uint8_t x37 = subborrow_u64(0x0, x21, 0xffffffffffffffedL);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x24, 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x27, 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x30, 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x33, 0x7ffffffff);
- uint64_t _, uint8_t x52 = subborrow_u64(x49, x34, 0x0);
- uint64_t x53 = cmovznz64(x52, x48, x33);
- uint64_t x54 = cmovznz64(x52, x45, x30);
- uint64_t x55 = cmovznz64(x52, x42, x27);
- uint64_t x56 = cmovznz64(x52, x39, x24);
- uint64_t x57 = cmovznz64(x52, x36, x21);
- return (x53, x54, x55, x56, x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e291m19/feaddDisplay.v b/src/Specific/montgomery64_2e291m19/feaddDisplay.v
deleted file mode 100644
index e254acefa..000000000
--- a/src/Specific/montgomery64_2e291m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e291m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e291m19/femul.c b/src/Specific/montgomery64_2e291m19/femul.c
deleted file mode 100644
index 13d0393aa..000000000
--- a/src/Specific/montgomery64_2e291m19/femul.c
+++ /dev/null
@@ -1,192 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x22; uint64_t x21 = _mulx_u64(x5, x13, &x22);
- { uint64_t x25; uint64_t x24 = _mulx_u64(x5, x15, &x25);
- { uint64_t x28; uint64_t x27 = _mulx_u64(x5, x17, &x28);
- { uint64_t x31; uint64_t x30 = _mulx_u64(x5, x19, &x31);
- { uint64_t x34; uint64_t x33 = _mulx_u64(x5, x18, &x34);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(0x0, x22, x24, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x25, x27, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x28, x30, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x31, x33, &x45);
- { uint64_t x48; uint8_t _ = _addcarryx_u64(0x0, x46, x34, &x48);
- { uint64_t _; uint64_t x51 = _mulx_u64(x21, 0x86bca1af286bca1bL, &_);
- { uint64_t x55; uint64_t x54 = _mulx_u64(x51, 0xffffffffffffffedL, &x55);
- { uint64_t x58; uint64_t x57 = _mulx_u64(x51, 0xffffffffffffffffL, &x58);
- { uint64_t x61; uint64_t x60 = _mulx_u64(x51, 0xffffffffffffffffL, &x61);
- { uint64_t x64; uint64_t x63 = _mulx_u64(x51, 0xffffffffffffffffL, &x64);
- { uint64_t x67; uint64_t x66 = _mulx_u64(x51, 0x7ffffffff, &x67);
- { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x55, x57, &x69);
- { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x58, x60, &x72);
- { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x61, x63, &x75);
- { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x64, x66, &x78);
- { uint64_t x81; uint8_t _ = _addcarryx_u64(0x0, x79, x67, &x81);
- { uint64_t _; uint8_t x85 = _addcarryx_u64(0x0, x21, x54, &_);
- { uint64_t x87; uint8_t x88 = _addcarryx_u64(x85, x36, x69, &x87);
- { uint64_t x90; uint8_t x91 = _addcarryx_u64(x88, x39, x72, &x90);
- { uint64_t x93; uint8_t x94 = _addcarryx_u64(x91, x42, x75, &x93);
- { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x45, x78, &x96);
- { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x48, x81, &x99);
- { uint64_t x103; uint64_t x102 = _mulx_u64(x7, x13, &x103);
- { uint64_t x106; uint64_t x105 = _mulx_u64(x7, x15, &x106);
- { uint64_t x109; uint64_t x108 = _mulx_u64(x7, x17, &x109);
- { uint64_t x112; uint64_t x111 = _mulx_u64(x7, x19, &x112);
- { uint64_t x115; uint64_t x114 = _mulx_u64(x7, x18, &x115);
- { uint64_t x117; uint8_t x118 = _addcarryx_u64(0x0, x103, x105, &x117);
- { uint64_t x120; uint8_t x121 = _addcarryx_u64(x118, x106, x108, &x120);
- { uint64_t x123; uint8_t x124 = _addcarryx_u64(x121, x109, x111, &x123);
- { uint64_t x126; uint8_t x127 = _addcarryx_u64(x124, x112, x114, &x126);
- { uint64_t x129; uint8_t _ = _addcarryx_u64(0x0, x127, x115, &x129);
- { uint64_t x132; uint8_t x133 = _addcarryx_u64(0x0, x87, x102, &x132);
- { uint64_t x135; uint8_t x136 = _addcarryx_u64(x133, x90, x117, &x135);
- { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x93, x120, &x138);
- { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x96, x123, &x141);
- { uint64_t x144; uint8_t x145 = _addcarryx_u64(x142, x99, x126, &x144);
- { uint64_t x147; uint8_t x148 = _addcarryx_u64(x145, x100, x129, &x147);
- { uint64_t _; uint64_t x150 = _mulx_u64(x132, 0x86bca1af286bca1bL, &_);
- { uint64_t x154; uint64_t x153 = _mulx_u64(x150, 0xffffffffffffffedL, &x154);
- { uint64_t x157; uint64_t x156 = _mulx_u64(x150, 0xffffffffffffffffL, &x157);
- { uint64_t x160; uint64_t x159 = _mulx_u64(x150, 0xffffffffffffffffL, &x160);
- { uint64_t x163; uint64_t x162 = _mulx_u64(x150, 0xffffffffffffffffL, &x163);
- { uint64_t x166; uint64_t x165 = _mulx_u64(x150, 0x7ffffffff, &x166);
- { uint64_t x168; uint8_t x169 = _addcarryx_u64(0x0, x154, x156, &x168);
- { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x157, x159, &x171);
- { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x160, x162, &x174);
- { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x163, x165, &x177);
- { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x166, &x180);
- { uint64_t _; uint8_t x184 = _addcarryx_u64(0x0, x132, x153, &_);
- { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x135, x168, &x186);
- { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x138, x171, &x189);
- { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x141, x174, &x192);
- { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x144, x177, &x195);
- { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x147, x180, &x198);
- { uint8_t x200 = (x199 + x148);
- { uint64_t x203; uint64_t x202 = _mulx_u64(x9, x13, &x203);
- { uint64_t x206; uint64_t x205 = _mulx_u64(x9, x15, &x206);
- { uint64_t x209; uint64_t x208 = _mulx_u64(x9, x17, &x209);
- { uint64_t x212; uint64_t x211 = _mulx_u64(x9, x19, &x212);
- { uint64_t x215; uint64_t x214 = _mulx_u64(x9, x18, &x215);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(0x0, x203, x205, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x206, x208, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x209, x211, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x212, x214, &x226);
- { uint64_t x229; uint8_t _ = _addcarryx_u64(0x0, x227, x215, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(0x0, x186, x202, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x189, x217, &x235);
- { uint64_t x238; uint8_t x239 = _addcarryx_u64(x236, x192, x220, &x238);
- { uint64_t x241; uint8_t x242 = _addcarryx_u64(x239, x195, x223, &x241);
- { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x198, x226, &x244);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x200, x229, &x247);
- { uint64_t _; uint64_t x250 = _mulx_u64(x232, 0x86bca1af286bca1bL, &_);
- { uint64_t x254; uint64_t x253 = _mulx_u64(x250, 0xffffffffffffffedL, &x254);
- { uint64_t x257; uint64_t x256 = _mulx_u64(x250, 0xffffffffffffffffL, &x257);
- { uint64_t x260; uint64_t x259 = _mulx_u64(x250, 0xffffffffffffffffL, &x260);
- { uint64_t x263; uint64_t x262 = _mulx_u64(x250, 0xffffffffffffffffL, &x263);
- { uint64_t x266; uint64_t x265 = _mulx_u64(x250, 0x7ffffffff, &x266);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(0x0, x254, x256, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x257, x259, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x260, x262, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x263, x265, &x277);
- { uint64_t x280; uint8_t _ = _addcarryx_u64(0x0, x278, x266, &x280);
- { uint64_t _; uint8_t x284 = _addcarryx_u64(0x0, x232, x253, &_);
- { uint64_t x286; uint8_t x287 = _addcarryx_u64(x284, x235, x268, &x286);
- { uint64_t x289; uint8_t x290 = _addcarryx_u64(x287, x238, x271, &x289);
- { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x241, x274, &x292);
- { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x244, x277, &x295);
- { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x247, x280, &x298);
- { uint8_t x300 = (x299 + x248);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x11, x13, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x11, x15, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x11, x17, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x11, x19, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x11, x18, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x303, x305, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x306, x308, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x309, x311, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x312, x314, &x326);
- { uint64_t x329; uint8_t _ = _addcarryx_u64(0x0, x327, x315, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(0x0, x286, x302, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x289, x317, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x292, x320, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x295, x323, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x298, x326, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x300, x329, &x347);
- { uint64_t _; uint64_t x350 = _mulx_u64(x332, 0x86bca1af286bca1bL, &_);
- { uint64_t x354; uint64_t x353 = _mulx_u64(x350, 0xffffffffffffffedL, &x354);
- { uint64_t x357; uint64_t x356 = _mulx_u64(x350, 0xffffffffffffffffL, &x357);
- { uint64_t x360; uint64_t x359 = _mulx_u64(x350, 0xffffffffffffffffL, &x360);
- { uint64_t x363; uint64_t x362 = _mulx_u64(x350, 0xffffffffffffffffL, &x363);
- { uint64_t x366; uint64_t x365 = _mulx_u64(x350, 0x7ffffffff, &x366);
- { uint64_t x368; uint8_t x369 = _addcarryx_u64(0x0, x354, x356, &x368);
- { uint64_t x371; uint8_t x372 = _addcarryx_u64(x369, x357, x359, &x371);
- { uint64_t x374; uint8_t x375 = _addcarryx_u64(x372, x360, x362, &x374);
- { uint64_t x377; uint8_t x378 = _addcarryx_u64(x375, x363, x365, &x377);
- { uint64_t x380; uint8_t _ = _addcarryx_u64(0x0, x378, x366, &x380);
- { uint64_t _; uint8_t x384 = _addcarryx_u64(0x0, x332, x353, &_);
- { uint64_t x386; uint8_t x387 = _addcarryx_u64(x384, x335, x368, &x386);
- { uint64_t x389; uint8_t x390 = _addcarryx_u64(x387, x338, x371, &x389);
- { uint64_t x392; uint8_t x393 = _addcarryx_u64(x390, x341, x374, &x392);
- { uint64_t x395; uint8_t x396 = _addcarryx_u64(x393, x344, x377, &x395);
- { uint64_t x398; uint8_t x399 = _addcarryx_u64(x396, x347, x380, &x398);
- { uint8_t x400 = (x399 + x348);
- { uint64_t x403; uint64_t x402 = _mulx_u64(x10, x13, &x403);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x10, x15, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x10, x17, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x10, x19, &x412);
- { uint64_t x415; uint64_t x414 = _mulx_u64(x10, x18, &x415);
- { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x403, x405, &x417);
- { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x406, x408, &x420);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x409, x411, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x412, x414, &x426);
- { uint64_t x429; uint8_t _ = _addcarryx_u64(0x0, x427, x415, &x429);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(0x0, x386, x402, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x389, x417, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x392, x420, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x395, x423, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x398, x426, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x400, x429, &x447);
- { uint64_t _; uint64_t x450 = _mulx_u64(x432, 0x86bca1af286bca1bL, &_);
- { uint64_t x454; uint64_t x453 = _mulx_u64(x450, 0xffffffffffffffedL, &x454);
- { uint64_t x457; uint64_t x456 = _mulx_u64(x450, 0xffffffffffffffffL, &x457);
- { uint64_t x460; uint64_t x459 = _mulx_u64(x450, 0xffffffffffffffffL, &x460);
- { uint64_t x463; uint64_t x462 = _mulx_u64(x450, 0xffffffffffffffffL, &x463);
- { uint64_t x466; uint64_t x465 = _mulx_u64(x450, 0x7ffffffff, &x466);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(0x0, x454, x456, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x457, x459, &x471);
- { uint64_t x474; uint8_t x475 = _addcarryx_u64(x472, x460, x462, &x474);
- { uint64_t x477; uint8_t x478 = _addcarryx_u64(x475, x463, x465, &x477);
- { uint64_t x480; uint8_t _ = _addcarryx_u64(0x0, x478, x466, &x480);
- { uint64_t _; uint8_t x484 = _addcarryx_u64(0x0, x432, x453, &_);
- { uint64_t x486; uint8_t x487 = _addcarryx_u64(x484, x435, x468, &x486);
- { uint64_t x489; uint8_t x490 = _addcarryx_u64(x487, x438, x471, &x489);
- { uint64_t x492; uint8_t x493 = _addcarryx_u64(x490, x441, x474, &x492);
- { uint64_t x495; uint8_t x496 = _addcarryx_u64(x493, x444, x477, &x495);
- { uint64_t x498; uint8_t x499 = _addcarryx_u64(x496, x447, x480, &x498);
- { uint8_t x500 = (x499 + x448);
- { uint64_t x502; uint8_t x503 = _subborrow_u64(0x0, x486, 0xffffffffffffffedL, &x502);
- { uint64_t x505; uint8_t x506 = _subborrow_u64(x503, x489, 0xffffffffffffffffL, &x505);
- { uint64_t x508; uint8_t x509 = _subborrow_u64(x506, x492, 0xffffffffffffffffL, &x508);
- { uint64_t x511; uint8_t x512 = _subborrow_u64(x509, x495, 0xffffffffffffffffL, &x511);
- { uint64_t x514; uint8_t x515 = _subborrow_u64(x512, x498, 0x7ffffffff, &x514);
- { uint64_t _; uint8_t x518 = _subborrow_u64(x515, x500, 0x0, &_);
- { uint64_t x519 = cmovznz64(x518, x514, x498);
- { uint64_t x520 = cmovznz64(x518, x511, x495);
- { uint64_t x521 = cmovznz64(x518, x508, x492);
- { uint64_t x522 = cmovznz64(x518, x505, x489);
- { uint64_t x523 = cmovznz64(x518, x502, x486);
- out[0] = x523;
- out[1] = x522;
- out[2] = x521;
- out[3] = x520;
- out[4] = x519;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e291m19/femul.v b/src/Specific/montgomery64_2e291m19/femul.v
deleted file mode 100644
index ac338250e..000000000
--- a/src/Specific/montgomery64_2e291m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e291m19/femulDisplay.log b/src/Specific/montgomery64_2e291m19/femulDisplay.log
deleted file mode 100644
index 5cf09abe3..000000000
--- a/src/Specific/montgomery64_2e291m19/femulDisplay.log
+++ /dev/null
@@ -1,181 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint64_t x22 = mulx_u64(x5, x13);
- uint64_t x24, uint64_t x25 = mulx_u64(x5, x15);
- uint64_t x27, uint64_t x28 = mulx_u64(x5, x17);
- uint64_t x30, uint64_t x31 = mulx_u64(x5, x19);
- uint64_t x33, uint64_t x34 = mulx_u64(x5, x18);
- uint64_t x36, uint8_t x37 = addcarryx_u64(0x0, x22, x24);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x25, x27);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x28, x30);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x31, x33);
- uint64_t x48, uint8_t _ = addcarryx_u64(0x0, x46, x34);
- uint64_t x51, uint64_t _ = mulx_u64(x21, 0x86bca1af286bca1bL);
- uint64_t x54, uint64_t x55 = mulx_u64(x51, 0xffffffffffffffedL);
- uint64_t x57, uint64_t x58 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x60, uint64_t x61 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x63, uint64_t x64 = mulx_u64(x51, 0xffffffffffffffffL);
- uint64_t x66, uint64_t x67 = mulx_u64(x51, 0x7ffffffff);
- uint64_t x69, uint8_t x70 = addcarryx_u64(0x0, x55, x57);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x58, x60);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x61, x63);
- uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x64, x66);
- uint64_t x81, uint8_t _ = addcarryx_u64(0x0, x79, x67);
- uint64_t _, uint8_t x85 = addcarryx_u64(0x0, x21, x54);
- uint64_t x87, uint8_t x88 = addcarryx_u64(x85, x36, x69);
- uint64_t x90, uint8_t x91 = addcarryx_u64(x88, x39, x72);
- uint64_t x93, uint8_t x94 = addcarryx_u64(x91, x42, x75);
- uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x45, x78);
- uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x48, x81);
- uint64_t x102, uint64_t x103 = mulx_u64(x7, x13);
- uint64_t x105, uint64_t x106 = mulx_u64(x7, x15);
- uint64_t x108, uint64_t x109 = mulx_u64(x7, x17);
- uint64_t x111, uint64_t x112 = mulx_u64(x7, x19);
- uint64_t x114, uint64_t x115 = mulx_u64(x7, x18);
- uint64_t x117, uint8_t x118 = addcarryx_u64(0x0, x103, x105);
- uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x106, x108);
- uint64_t x123, uint8_t x124 = addcarryx_u64(x121, x109, x111);
- uint64_t x126, uint8_t x127 = addcarryx_u64(x124, x112, x114);
- uint64_t x129, uint8_t _ = addcarryx_u64(0x0, x127, x115);
- uint64_t x132, uint8_t x133 = addcarryx_u64(0x0, x87, x102);
- uint64_t x135, uint8_t x136 = addcarryx_u64(x133, x90, x117);
- uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x93, x120);
- uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x96, x123);
- uint64_t x144, uint8_t x145 = addcarryx_u64(x142, x99, x126);
- uint64_t x147, uint8_t x148 = addcarryx_u64(x145, x100, x129);
- uint64_t x150, uint64_t _ = mulx_u64(x132, 0x86bca1af286bca1bL);
- uint64_t x153, uint64_t x154 = mulx_u64(x150, 0xffffffffffffffedL);
- uint64_t x156, uint64_t x157 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x159, uint64_t x160 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x162, uint64_t x163 = mulx_u64(x150, 0xffffffffffffffffL);
- uint64_t x165, uint64_t x166 = mulx_u64(x150, 0x7ffffffff);
- uint64_t x168, uint8_t x169 = addcarryx_u64(0x0, x154, x156);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x157, x159);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x160, x162);
- uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x163, x165);
- uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x166);
- uint64_t _, uint8_t x184 = addcarryx_u64(0x0, x132, x153);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x135, x168);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x138, x171);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x141, x174);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x144, x177);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x147, x180);
- uint8_t x200 = (x199 + x148);
- uint64_t x202, uint64_t x203 = mulx_u64(x9, x13);
- uint64_t x205, uint64_t x206 = mulx_u64(x9, x15);
- uint64_t x208, uint64_t x209 = mulx_u64(x9, x17);
- uint64_t x211, uint64_t x212 = mulx_u64(x9, x19);
- uint64_t x214, uint64_t x215 = mulx_u64(x9, x18);
- uint64_t x217, uint8_t x218 = addcarryx_u64(0x0, x203, x205);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x206, x208);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x209, x211);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x212, x214);
- uint64_t x229, uint8_t _ = addcarryx_u64(0x0, x227, x215);
- uint64_t x232, uint8_t x233 = addcarryx_u64(0x0, x186, x202);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x189, x217);
- uint64_t x238, uint8_t x239 = addcarryx_u64(x236, x192, x220);
- uint64_t x241, uint8_t x242 = addcarryx_u64(x239, x195, x223);
- uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x198, x226);
- uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x200, x229);
- uint64_t x250, uint64_t _ = mulx_u64(x232, 0x86bca1af286bca1bL);
- uint64_t x253, uint64_t x254 = mulx_u64(x250, 0xffffffffffffffedL);
- uint64_t x256, uint64_t x257 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x259, uint64_t x260 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x262, uint64_t x263 = mulx_u64(x250, 0xffffffffffffffffL);
- uint64_t x265, uint64_t x266 = mulx_u64(x250, 0x7ffffffff);
- uint64_t x268, uint8_t x269 = addcarryx_u64(0x0, x254, x256);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x257, x259);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x260, x262);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x263, x265);
- uint64_t x280, uint8_t _ = addcarryx_u64(0x0, x278, x266);
- uint64_t _, uint8_t x284 = addcarryx_u64(0x0, x232, x253);
- uint64_t x286, uint8_t x287 = addcarryx_u64(x284, x235, x268);
- uint64_t x289, uint8_t x290 = addcarryx_u64(x287, x238, x271);
- uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x241, x274);
- uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x244, x277);
- uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x247, x280);
- uint8_t x300 = (x299 + x248);
- uint64_t x302, uint64_t x303 = mulx_u64(x11, x13);
- uint64_t x305, uint64_t x306 = mulx_u64(x11, x15);
- uint64_t x308, uint64_t x309 = mulx_u64(x11, x17);
- uint64_t x311, uint64_t x312 = mulx_u64(x11, x19);
- uint64_t x314, uint64_t x315 = mulx_u64(x11, x18);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x303, x305);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x306, x308);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x309, x311);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x312, x314);
- uint64_t x329, uint8_t _ = addcarryx_u64(0x0, x327, x315);
- uint64_t x332, uint8_t x333 = addcarryx_u64(0x0, x286, x302);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x289, x317);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x292, x320);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x295, x323);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x298, x326);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x300, x329);
- uint64_t x350, uint64_t _ = mulx_u64(x332, 0x86bca1af286bca1bL);
- uint64_t x353, uint64_t x354 = mulx_u64(x350, 0xffffffffffffffedL);
- uint64_t x356, uint64_t x357 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x359, uint64_t x360 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x362, uint64_t x363 = mulx_u64(x350, 0xffffffffffffffffL);
- uint64_t x365, uint64_t x366 = mulx_u64(x350, 0x7ffffffff);
- uint64_t x368, uint8_t x369 = addcarryx_u64(0x0, x354, x356);
- uint64_t x371, uint8_t x372 = addcarryx_u64(x369, x357, x359);
- uint64_t x374, uint8_t x375 = addcarryx_u64(x372, x360, x362);
- uint64_t x377, uint8_t x378 = addcarryx_u64(x375, x363, x365);
- uint64_t x380, uint8_t _ = addcarryx_u64(0x0, x378, x366);
- uint64_t _, uint8_t x384 = addcarryx_u64(0x0, x332, x353);
- uint64_t x386, uint8_t x387 = addcarryx_u64(x384, x335, x368);
- uint64_t x389, uint8_t x390 = addcarryx_u64(x387, x338, x371);
- uint64_t x392, uint8_t x393 = addcarryx_u64(x390, x341, x374);
- uint64_t x395, uint8_t x396 = addcarryx_u64(x393, x344, x377);
- uint64_t x398, uint8_t x399 = addcarryx_u64(x396, x347, x380);
- uint8_t x400 = (x399 + x348);
- uint64_t x402, uint64_t x403 = mulx_u64(x10, x13);
- uint64_t x405, uint64_t x406 = mulx_u64(x10, x15);
- uint64_t x408, uint64_t x409 = mulx_u64(x10, x17);
- uint64_t x411, uint64_t x412 = mulx_u64(x10, x19);
- uint64_t x414, uint64_t x415 = mulx_u64(x10, x18);
- uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x403, x405);
- uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x406, x408);
- uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x409, x411);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x412, x414);
- uint64_t x429, uint8_t _ = addcarryx_u64(0x0, x427, x415);
- uint64_t x432, uint8_t x433 = addcarryx_u64(0x0, x386, x402);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x389, x417);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x392, x420);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x395, x423);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x398, x426);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x400, x429);
- uint64_t x450, uint64_t _ = mulx_u64(x432, 0x86bca1af286bca1bL);
- uint64_t x453, uint64_t x454 = mulx_u64(x450, 0xffffffffffffffedL);
- uint64_t x456, uint64_t x457 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x459, uint64_t x460 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x462, uint64_t x463 = mulx_u64(x450, 0xffffffffffffffffL);
- uint64_t x465, uint64_t x466 = mulx_u64(x450, 0x7ffffffff);
- uint64_t x468, uint8_t x469 = addcarryx_u64(0x0, x454, x456);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x457, x459);
- uint64_t x474, uint8_t x475 = addcarryx_u64(x472, x460, x462);
- uint64_t x477, uint8_t x478 = addcarryx_u64(x475, x463, x465);
- uint64_t x480, uint8_t _ = addcarryx_u64(0x0, x478, x466);
- uint64_t _, uint8_t x484 = addcarryx_u64(0x0, x432, x453);
- uint64_t x486, uint8_t x487 = addcarryx_u64(x484, x435, x468);
- uint64_t x489, uint8_t x490 = addcarryx_u64(x487, x438, x471);
- uint64_t x492, uint8_t x493 = addcarryx_u64(x490, x441, x474);
- uint64_t x495, uint8_t x496 = addcarryx_u64(x493, x444, x477);
- uint64_t x498, uint8_t x499 = addcarryx_u64(x496, x447, x480);
- uint8_t x500 = (x499 + x448);
- uint64_t x502, uint8_t x503 = subborrow_u64(0x0, x486, 0xffffffffffffffedL);
- uint64_t x505, uint8_t x506 = subborrow_u64(x503, x489, 0xffffffffffffffffL);
- uint64_t x508, uint8_t x509 = subborrow_u64(x506, x492, 0xffffffffffffffffL);
- uint64_t x511, uint8_t x512 = subborrow_u64(x509, x495, 0xffffffffffffffffL);
- uint64_t x514, uint8_t x515 = subborrow_u64(x512, x498, 0x7ffffffff);
- uint64_t _, uint8_t x518 = subborrow_u64(x515, x500, 0x0);
- uint64_t x519 = cmovznz64(x518, x514, x498);
- uint64_t x520 = cmovznz64(x518, x511, x495);
- uint64_t x521 = cmovznz64(x518, x508, x492);
- uint64_t x522 = cmovznz64(x518, x505, x489);
- uint64_t x523 = cmovznz64(x518, x502, x486);
- return (x519, x520, x521, x522, x523))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e291m19/femulDisplay.v b/src/Specific/montgomery64_2e291m19/femulDisplay.v
deleted file mode 100644
index 806ed37c8..000000000
--- a/src/Specific/montgomery64_2e291m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e291m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e291m19/fenz.c b/src/Specific/montgomery64_2e291m19/fenz.c
deleted file mode 100644
index 0a779af7c..000000000
--- a/src/Specific/montgomery64_2e291m19/fenz.c
+++ /dev/null
@@ -1,13 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x9 = (x8 | x7);
- { uint64_t x10 = (x6 | x9);
- { uint64_t x11 = (x4 | x10);
- { uint64_t x12 = (x2 | x11);
- out[0] = x12;
- }}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e291m19/fenz.v b/src/Specific/montgomery64_2e291m19/fenz.v
deleted file mode 100644
index a8967212e..000000000
--- a/src/Specific/montgomery64_2e291m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e291m19/fenzDisplay.log b/src/Specific/montgomery64_2e291m19/fenzDisplay.log
deleted file mode 100644
index 4f18295b0..000000000
--- a/src/Specific/montgomery64_2e291m19/fenzDisplay.log
+++ /dev/null
@@ -1,11 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x9 = (x8 | x7);
- uint64_t x10 = (x6 | x9);
- uint64_t x11 = (x4 | x10);
- uint64_t x12 = (x2 | x11);
- return x12)
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e291m19/fenzDisplay.v b/src/Specific/montgomery64_2e291m19/fenzDisplay.v
deleted file mode 100644
index 36dbdbc97..000000000
--- a/src/Specific/montgomery64_2e291m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e291m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e291m19/feopp.c b/src/Specific/montgomery64_2e291m19/feopp.c
deleted file mode 100644
index 31390ffd8..000000000
--- a/src/Specific/montgomery64_2e291m19/feopp.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void feopp(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u64(0x0, 0x0, x2, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u64(x11, 0x0, x4, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u64(x14, 0x0, x6, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u64(x17, 0x0, x8, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u64(x20, 0x0, x7, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xffffffffffffffedL);
- { uint64_t x27; uint8_t x28 = _addcarryx_u64(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0xffffffffffffffffL);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0xffffffffffffffffL);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0xffffffffffffffffL);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u64(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e291m19/feopp.v b/src/Specific/montgomery64_2e291m19/feopp.v
deleted file mode 100644
index 210c981d8..000000000
--- a/src/Specific/montgomery64_2e291m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e291m19/feoppDisplay.log b/src/Specific/montgomery64_2e291m19/feoppDisplay.log
deleted file mode 100644
index 5c4609742..000000000
--- a/src/Specific/montgomery64_2e291m19/feoppDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x13, uint8_t x14 = subborrow_u64(x11, 0x0, x4);
- uint64_t x16, uint8_t x17 = subborrow_u64(x14, 0x0, x6);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x8);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x7);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xffffffffffffffedL);
- uint64_t x27, uint8_t x28 = addcarryx_u64(0x0, x10, x25);
- uint64_t x29 = (x24 & 0xffffffffffffffffL);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x28, x13, x29);
- uint64_t x33 = (x24 & 0xffffffffffffffffL);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x32, x16, x33);
- uint64_t x37 = (x24 & 0xffffffffffffffffL);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u64(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e291m19/feoppDisplay.v b/src/Specific/montgomery64_2e291m19/feoppDisplay.v
deleted file mode 100644
index 5de645f08..000000000
--- a/src/Specific/montgomery64_2e291m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e291m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e291m19/fesquare.c b/src/Specific/montgomery64_2e291m19/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e291m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e291m19/fesub.c b/src/Specific/montgomery64_2e291m19/fesub.c
deleted file mode 100644
index cfc10c92f..000000000
--- a/src/Specific/montgomery64_2e291m19/fesub.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint64_t x21; uint8_t x22 = _subborrow_u64(0x0, x5, x13, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, x7, x15, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, x9, x17, &x27);
- { uint64_t x30; uint8_t x31 = _subborrow_u64(x28, x11, x19, &x30);
- { uint64_t x33; uint8_t x34 = _subborrow_u64(x31, x10, x18, &x33);
- { uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- { uint64_t x36 = (x35 & 0xffffffffffffffedL);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(0x0, x21, x36, &x38);
- { uint64_t x40 = (x35 & 0xffffffffffffffffL);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x39, x24, x40, &x42);
- { uint64_t x44 = (x35 & 0xffffffffffffffffL);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x43, x27, x44, &x46);
- { uint64_t x48 = (x35 & 0xffffffffffffffffL);
- { uint64_t x50; uint8_t x51 = _addcarryx_u64(x47, x30, x48, &x50);
- { uint64_t x52 = (x35 & 0x7ffffffff);
- { uint64_t x54; uint8_t _ = _addcarryx_u64(x51, x33, x52, &x54);
- out[0] = x38;
- out[1] = x42;
- out[2] = x46;
- out[3] = x50;
- out[4] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e291m19/fesub.v b/src/Specific/montgomery64_2e291m19/fesub.v
deleted file mode 100644
index 88d2c1c3e..000000000
--- a/src/Specific/montgomery64_2e291m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e291m19/fesubDisplay.log b/src/Specific/montgomery64_2e291m19/fesubDisplay.log
deleted file mode 100644
index 75ea81a86..000000000
--- a/src/Specific/montgomery64_2e291m19/fesubDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x21, uint8_t x22 = subborrow_u64(0x0, x5, x13);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, x7, x15);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, x9, x17);
- uint64_t x30, uint8_t x31 = subborrow_u64(x28, x11, x19);
- uint64_t x33, uint8_t x34 = subborrow_u64(x31, x10, x18);
- uint64_t x35 = cmovznz64(x34, 0x0, 0xffffffffffffffffL);
- uint64_t x36 = (x35 & 0xffffffffffffffedL);
- uint64_t x38, uint8_t x39 = addcarryx_u64(0x0, x21, x36);
- uint64_t x40 = (x35 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x39, x24, x40);
- uint64_t x44 = (x35 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x27, x44);
- uint64_t x48 = (x35 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x30, x48);
- uint64_t x52 = (x35 & 0x7ffffffff);
- uint64_t x54, uint8_t _ = addcarryx_u64(x51, x33, x52);
- (Return x54, Return x50, Return x46, Return x42, Return x38))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e291m19/fesubDisplay.v b/src/Specific/montgomery64_2e291m19/fesubDisplay.v
deleted file mode 100644
index 2873b7809..000000000
--- a/src/Specific/montgomery64_2e291m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e291m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e291m19/CurveParameters.v b/src/Specific/montgomery64_2e291m19_5limbs/CurveParameters.v
index 8067dfdd2..8067dfdd2 100644
--- a/src/Specific/montgomery64_2e291m19/CurveParameters.v
+++ b/src/Specific/montgomery64_2e291m19_5limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/Synthesis.v b/src/Specific/montgomery64_2e291m19_5limbs/Synthesis.v
new file mode 100644
index 000000000..671fc7f80
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e291m19/compiler.sh b/src/Specific/montgomery64_2e291m19_5limbs/compiler.sh
index 163317d2b..163317d2b 100755
--- a/src/Specific/montgomery64_2e291m19/compiler.sh
+++ b/src/Specific/montgomery64_2e291m19_5limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e291m19/compilerxx.sh b/src/Specific/montgomery64_2e291m19_5limbs/compilerxx.sh
index 38209c7c5..38209c7c5 100755
--- a/src/Specific/montgomery64_2e291m19/compilerxx.sh
+++ b/src/Specific/montgomery64_2e291m19_5limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/feadd.v b/src/Specific/montgomery64_2e291m19_5limbs/feadd.v
new file mode 100644
index 000000000..0dfaf4578
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/feaddDisplay.v b/src/Specific/montgomery64_2e291m19_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..becefa76d
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/femul.v b/src/Specific/montgomery64_2e291m19_5limbs/femul.v
new file mode 100644
index 000000000..0ac794521
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.v b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.v
new file mode 100644
index 000000000..555e4ba04
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/fenz.v b/src/Specific/montgomery64_2e291m19_5limbs/fenz.v
new file mode 100644
index 000000000..fa3922b93
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/fenzDisplay.v b/src/Specific/montgomery64_2e291m19_5limbs/fenzDisplay.v
new file mode 100644
index 000000000..06f67cb4e
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/feopp.v b/src/Specific/montgomery64_2e291m19_5limbs/feopp.v
new file mode 100644
index 000000000..1b35f18e2
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/feoppDisplay.v b/src/Specific/montgomery64_2e291m19_5limbs/feoppDisplay.v
new file mode 100644
index 000000000..263c48e3f
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/fesub.v b/src/Specific/montgomery64_2e291m19_5limbs/fesub.v
new file mode 100644
index 000000000..d19f6790d
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/fesubDisplay.v b/src/Specific/montgomery64_2e291m19_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..0d79990e5
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e291m19_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e291m19/py_interpreter.sh b/src/Specific/montgomery64_2e291m19_5limbs/py_interpreter.sh
index 3ba9fdbd4..3ba9fdbd4 100755
--- a/src/Specific/montgomery64_2e291m19/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e291m19_5limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e321m9/Synthesis.v b/src/Specific/montgomery64_2e321m9/Synthesis.v
deleted file mode 100644
index 75502e5f6..000000000
--- a/src/Specific/montgomery64_2e321m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e321m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e321m9/feadd.c b/src/Specific/montgomery64_2e321m9/feadd.c
deleted file mode 100644
index a995a347f..000000000
--- a/src/Specific/montgomery64_2e321m9/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xfffffffffffffff7L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x1, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e321m9/feadd.v b/src/Specific/montgomery64_2e321m9/feadd.v
deleted file mode 100644
index 80d3621f6..000000000
--- a/src/Specific/montgomery64_2e321m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e321m9/feaddDisplay.log b/src/Specific/montgomery64_2e321m9/feaddDisplay.log
deleted file mode 100644
index 7af9dbdbc..000000000
--- a/src/Specific/montgomery64_2e321m9/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xfffffffffffffff7L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x1);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e321m9/feaddDisplay.v b/src/Specific/montgomery64_2e321m9/feaddDisplay.v
deleted file mode 100644
index e653ca7ac..000000000
--- a/src/Specific/montgomery64_2e321m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e321m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e321m9/femul.c b/src/Specific/montgomery64_2e321m9/femul.c
deleted file mode 100644
index b56aef734..000000000
--- a/src/Specific/montgomery64_2e321m9/femul.c
+++ /dev/null
@@ -1,254 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x8e38e38e38e38e39L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xfffffffffffffff7L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x65, x67, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x68, x70, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x71, x73, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x74, x76, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x77, x61, &x91);
- { uint64_t _; uint8_t x95 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x97; uint8_t x98 = _addcarryx_u64(x95, x43, x79, &x97);
- { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x46, x82, &x100);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x49, x85, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x52, x88, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x55, x91, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x58, x92, &x112);
- { uint64_t x116; uint64_t x115 = _mulx_u64(x7, x15, &x116);
- { uint64_t x119; uint64_t x118 = _mulx_u64(x7, x17, &x119);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x19, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x21, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x23, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x22, &x131);
- { uint64_t x133; uint8_t x134 = _addcarryx_u64(0x0, x116, x118, &x133);
- { uint64_t x136; uint8_t x137 = _addcarryx_u64(x134, x119, x121, &x136);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(x137, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t _ = _addcarryx_u64(0x0, x146, x131, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(0x0, x97, x115, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(x152, x100, x133, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x103, x136, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x113, x148, &x169);
- { uint64_t _; uint64_t x172 = _mulx_u64(x151, 0x8e38e38e38e38e39L, &_);
- { uint64_t x176; uint64_t x175 = _mulx_u64(x172, 0xfffffffffffffff7L, &x176);
- { uint64_t x179; uint64_t x178 = _mulx_u64(x172, 0xffffffffffffffffL, &x179);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x172, 0xffffffffffffffffL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x172, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x172, 0xffffffffffffffffL, &x188);
- { uint64_t x190; uint8_t x191 = _addcarryx_u64(0x0, x176, x178, &x190);
- { uint64_t x193; uint8_t x194 = _addcarryx_u64(x191, x179, x181, &x193);
- { uint64_t x196; uint8_t x197 = _addcarryx_u64(x194, x182, x184, &x196);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(x197, x185, x187, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x188, x172, &x202);
- { uint64_t _; uint8_t x206 = _addcarryx_u64(0x0, x151, x175, &_);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x154, x190, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x157, x193, &x211);
- { uint64_t x214; uint8_t x215 = _addcarryx_u64(x212, x160, x196, &x214);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(x215, x163, x199, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x166, x202, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x169, x203, &x223);
- { uint8_t x225 = (x224 + x170);
- { uint64_t x228; uint64_t x227 = _mulx_u64(x9, x15, &x228);
- { uint64_t x231; uint64_t x230 = _mulx_u64(x9, x17, &x231);
- { uint64_t x234; uint64_t x233 = _mulx_u64(x9, x19, &x234);
- { uint64_t x237; uint64_t x236 = _mulx_u64(x9, x21, &x237);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x23, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x22, &x243);
- { uint64_t x245; uint8_t x246 = _addcarryx_u64(0x0, x228, x230, &x245);
- { uint64_t x248; uint8_t x249 = _addcarryx_u64(x246, x231, x233, &x248);
- { uint64_t x251; uint8_t x252 = _addcarryx_u64(x249, x234, x236, &x251);
- { uint64_t x254; uint8_t x255 = _addcarryx_u64(x252, x237, x239, &x254);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(x255, x240, x242, &x257);
- { uint64_t x260; uint8_t _ = _addcarryx_u64(0x0, x258, x243, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(0x0, x208, x227, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x211, x245, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x214, x248, &x269);
- { uint64_t x272; uint8_t x273 = _addcarryx_u64(x270, x217, x251, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(x273, x220, x254, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x225, x260, &x281);
- { uint64_t _; uint64_t x284 = _mulx_u64(x263, 0x8e38e38e38e38e39L, &_);
- { uint64_t x288; uint64_t x287 = _mulx_u64(x284, 0xfffffffffffffff7L, &x288);
- { uint64_t x291; uint64_t x290 = _mulx_u64(x284, 0xffffffffffffffffL, &x291);
- { uint64_t x294; uint64_t x293 = _mulx_u64(x284, 0xffffffffffffffffL, &x294);
- { uint64_t x297; uint64_t x296 = _mulx_u64(x284, 0xffffffffffffffffL, &x297);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x284, 0xffffffffffffffffL, &x300);
- { uint64_t x302; uint8_t x303 = _addcarryx_u64(0x0, x288, x290, &x302);
- { uint64_t x305; uint8_t x306 = _addcarryx_u64(x303, x291, x293, &x305);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(x306, x294, x296, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x297, x299, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x300, x284, &x314);
- { uint64_t _; uint8_t x318 = _addcarryx_u64(0x0, x263, x287, &_);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x266, x302, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x269, x305, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x272, x308, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x275, x311, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x278, x314, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x281, x315, &x335);
- { uint8_t x337 = (x336 + x282);
- { uint64_t x340; uint64_t x339 = _mulx_u64(x11, x15, &x340);
- { uint64_t x343; uint64_t x342 = _mulx_u64(x11, x17, &x343);
- { uint64_t x346; uint64_t x345 = _mulx_u64(x11, x19, &x346);
- { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x21, &x349);
- { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x23, &x352);
- { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x22, &x355);
- { uint64_t x357; uint8_t x358 = _addcarryx_u64(0x0, x340, x342, &x357);
- { uint64_t x360; uint8_t x361 = _addcarryx_u64(x358, x343, x345, &x360);
- { uint64_t x363; uint8_t x364 = _addcarryx_u64(x361, x346, x348, &x363);
- { uint64_t x366; uint8_t x367 = _addcarryx_u64(x364, x349, x351, &x366);
- { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
- { uint64_t x372; uint8_t _ = _addcarryx_u64(0x0, x370, x355, &x372);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x320, x339, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x323, x357, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x326, x360, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x329, x363, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
- { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x337, x372, &x393);
- { uint64_t _; uint64_t x396 = _mulx_u64(x375, 0x8e38e38e38e38e39L, &_);
- { uint64_t x400; uint64_t x399 = _mulx_u64(x396, 0xfffffffffffffff7L, &x400);
- { uint64_t x403; uint64_t x402 = _mulx_u64(x396, 0xffffffffffffffffL, &x403);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x396, 0xffffffffffffffffL, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x396, 0xffffffffffffffffL, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x396, 0xffffffffffffffffL, &x412);
- { uint64_t x414; uint8_t x415 = _addcarryx_u64(0x0, x400, x402, &x414);
- { uint64_t x417; uint8_t x418 = _addcarryx_u64(x415, x403, x405, &x417);
- { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x406, x408, &x420);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x409, x411, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x412, x396, &x426);
- { uint64_t _; uint8_t x430 = _addcarryx_u64(0x0, x375, x399, &_);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(x430, x378, x414, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x381, x417, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x384, x420, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x387, x423, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x390, x426, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x393, x427, &x447);
- { uint8_t x449 = (x448 + x394);
- { uint64_t x452; uint64_t x451 = _mulx_u64(x13, x15, &x452);
- { uint64_t x455; uint64_t x454 = _mulx_u64(x13, x17, &x455);
- { uint64_t x458; uint64_t x457 = _mulx_u64(x13, x19, &x458);
- { uint64_t x461; uint64_t x460 = _mulx_u64(x13, x21, &x461);
- { uint64_t x464; uint64_t x463 = _mulx_u64(x13, x23, &x464);
- { uint64_t x467; uint64_t x466 = _mulx_u64(x13, x22, &x467);
- { uint64_t x469; uint8_t x470 = _addcarryx_u64(0x0, x452, x454, &x469);
- { uint64_t x472; uint8_t x473 = _addcarryx_u64(x470, x455, x457, &x472);
- { uint64_t x475; uint8_t x476 = _addcarryx_u64(x473, x458, x460, &x475);
- { uint64_t x478; uint8_t x479 = _addcarryx_u64(x476, x461, x463, &x478);
- { uint64_t x481; uint8_t x482 = _addcarryx_u64(x479, x464, x466, &x481);
- { uint64_t x484; uint8_t _ = _addcarryx_u64(0x0, x482, x467, &x484);
- { uint64_t x487; uint8_t x488 = _addcarryx_u64(0x0, x432, x451, &x487);
- { uint64_t x490; uint8_t x491 = _addcarryx_u64(x488, x435, x469, &x490);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(x491, x438, x472, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x441, x475, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x444, x478, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x447, x481, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x449, x484, &x505);
- { uint64_t _; uint64_t x508 = _mulx_u64(x487, 0x8e38e38e38e38e39L, &_);
- { uint64_t x512; uint64_t x511 = _mulx_u64(x508, 0xfffffffffffffff7L, &x512);
- { uint64_t x515; uint64_t x514 = _mulx_u64(x508, 0xffffffffffffffffL, &x515);
- { uint64_t x518; uint64_t x517 = _mulx_u64(x508, 0xffffffffffffffffL, &x518);
- { uint64_t x521; uint64_t x520 = _mulx_u64(x508, 0xffffffffffffffffL, &x521);
- { uint64_t x524; uint64_t x523 = _mulx_u64(x508, 0xffffffffffffffffL, &x524);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(0x0, x512, x514, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x515, x517, &x529);
- { uint64_t x532; uint8_t x533 = _addcarryx_u64(x530, x518, x520, &x532);
- { uint64_t x535; uint8_t x536 = _addcarryx_u64(x533, x521, x523, &x535);
- { uint64_t x538; uint8_t x539 = _addcarryx_u64(x536, x524, x508, &x538);
- { uint64_t _; uint8_t x542 = _addcarryx_u64(0x0, x487, x511, &_);
- { uint64_t x544; uint8_t x545 = _addcarryx_u64(x542, x490, x526, &x544);
- { uint64_t x547; uint8_t x548 = _addcarryx_u64(x545, x493, x529, &x547);
- { uint64_t x550; uint8_t x551 = _addcarryx_u64(x548, x496, x532, &x550);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(x551, x499, x535, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x502, x538, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x505, x539, &x559);
- { uint8_t x561 = (x560 + x506);
- { uint64_t x564; uint64_t x563 = _mulx_u64(x12, x15, &x564);
- { uint64_t x567; uint64_t x566 = _mulx_u64(x12, x17, &x567);
- { uint64_t x570; uint64_t x569 = _mulx_u64(x12, x19, &x570);
- { uint64_t x573; uint64_t x572 = _mulx_u64(x12, x21, &x573);
- { uint64_t x576; uint64_t x575 = _mulx_u64(x12, x23, &x576);
- { uint64_t x579; uint64_t x578 = _mulx_u64(x12, x22, &x579);
- { uint64_t x581; uint8_t x582 = _addcarryx_u64(0x0, x564, x566, &x581);
- { uint64_t x584; uint8_t x585 = _addcarryx_u64(x582, x567, x569, &x584);
- { uint64_t x587; uint8_t x588 = _addcarryx_u64(x585, x570, x572, &x587);
- { uint64_t x590; uint8_t x591 = _addcarryx_u64(x588, x573, x575, &x590);
- { uint64_t x593; uint8_t x594 = _addcarryx_u64(x591, x576, x578, &x593);
- { uint64_t x596; uint8_t _ = _addcarryx_u64(0x0, x594, x579, &x596);
- { uint64_t x599; uint8_t x600 = _addcarryx_u64(0x0, x544, x563, &x599);
- { uint64_t x602; uint8_t x603 = _addcarryx_u64(x600, x547, x581, &x602);
- { uint64_t x605; uint8_t x606 = _addcarryx_u64(x603, x550, x584, &x605);
- { uint64_t x608; uint8_t x609 = _addcarryx_u64(x606, x553, x587, &x608);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(x609, x556, x590, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x559, x593, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x561, x596, &x617);
- { uint64_t _; uint64_t x620 = _mulx_u64(x599, 0x8e38e38e38e38e39L, &_);
- { uint64_t x624; uint64_t x623 = _mulx_u64(x620, 0xfffffffffffffff7L, &x624);
- { uint64_t x627; uint64_t x626 = _mulx_u64(x620, 0xffffffffffffffffL, &x627);
- { uint64_t x630; uint64_t x629 = _mulx_u64(x620, 0xffffffffffffffffL, &x630);
- { uint64_t x633; uint64_t x632 = _mulx_u64(x620, 0xffffffffffffffffL, &x633);
- { uint64_t x636; uint64_t x635 = _mulx_u64(x620, 0xffffffffffffffffL, &x636);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(0x0, x624, x626, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x627, x629, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x630, x632, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x633, x635, &x647);
- { uint64_t x650; uint8_t x651 = _addcarryx_u64(x648, x636, x620, &x650);
- { uint64_t _; uint8_t x654 = _addcarryx_u64(0x0, x599, x623, &_);
- { uint64_t x656; uint8_t x657 = _addcarryx_u64(x654, x602, x638, &x656);
- { uint64_t x659; uint8_t x660 = _addcarryx_u64(x657, x605, x641, &x659);
- { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x608, x644, &x662);
- { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x611, x647, &x665);
- { uint64_t x668; uint8_t x669 = _addcarryx_u64(x666, x614, x650, &x668);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(x669, x617, x651, &x671);
- { uint8_t x673 = (x672 + x618);
- { uint64_t x675; uint8_t x676 = _subborrow_u64(0x0, x656, 0xfffffffffffffff7L, &x675);
- { uint64_t x678; uint8_t x679 = _subborrow_u64(x676, x659, 0xffffffffffffffffL, &x678);
- { uint64_t x681; uint8_t x682 = _subborrow_u64(x679, x662, 0xffffffffffffffffL, &x681);
- { uint64_t x684; uint8_t x685 = _subborrow_u64(x682, x665, 0xffffffffffffffffL, &x684);
- { uint64_t x687; uint8_t x688 = _subborrow_u64(x685, x668, 0xffffffffffffffffL, &x687);
- { uint64_t x690; uint8_t x691 = _subborrow_u64(x688, x671, 0x1, &x690);
- { uint64_t _; uint8_t x694 = _subborrow_u64(x691, x673, 0x0, &_);
- { uint64_t x695 = cmovznz64(x694, x690, x671);
- { uint64_t x696 = cmovznz64(x694, x687, x668);
- { uint64_t x697 = cmovznz64(x694, x684, x665);
- { uint64_t x698 = cmovznz64(x694, x681, x662);
- { uint64_t x699 = cmovznz64(x694, x678, x659);
- { uint64_t x700 = cmovznz64(x694, x675, x656);
- out[0] = x700;
- out[1] = x699;
- out[2] = x698;
- out[3] = x697;
- out[4] = x696;
- out[5] = x695;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e321m9/femul.v b/src/Specific/montgomery64_2e321m9/femul.v
deleted file mode 100644
index 2ccaf9854..000000000
--- a/src/Specific/montgomery64_2e321m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e321m9/femulDisplay.log b/src/Specific/montgomery64_2e321m9/femulDisplay.log
deleted file mode 100644
index adf3b5b55..000000000
--- a/src/Specific/montgomery64_2e321m9/femulDisplay.log
+++ /dev/null
@@ -1,240 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x8e38e38e38e38e39L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xfffffffffffffff7L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x65, x67);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x68, x70);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x71, x73);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x74, x76);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x77, x61);
- uint64_t _, uint8_t x95 = addcarryx_u64(0x0, x25, x64);
- uint64_t x97, uint8_t x98 = addcarryx_u64(x95, x43, x79);
- uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x46, x82);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x49, x85);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x52, x88);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x55, x91);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x58, x92);
- uint64_t x115, uint64_t x116 = mulx_u64(x7, x15);
- uint64_t x118, uint64_t x119 = mulx_u64(x7, x17);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x19);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x21);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x23);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x22);
- uint64_t x133, uint8_t x134 = addcarryx_u64(0x0, x116, x118);
- uint64_t x136, uint8_t x137 = addcarryx_u64(x134, x119, x121);
- uint64_t x139, uint8_t x140 = addcarryx_u64(x137, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t _ = addcarryx_u64(0x0, x146, x131);
- uint64_t x151, uint8_t x152 = addcarryx_u64(0x0, x97, x115);
- uint64_t x154, uint8_t x155 = addcarryx_u64(x152, x100, x133);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x103, x136);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x113, x148);
- uint64_t x172, uint64_t _ = mulx_u64(x151, 0x8e38e38e38e38e39L);
- uint64_t x175, uint64_t x176 = mulx_u64(x172, 0xfffffffffffffff7L);
- uint64_t x178, uint64_t x179 = mulx_u64(x172, 0xffffffffffffffffL);
- uint64_t x181, uint64_t x182 = mulx_u64(x172, 0xffffffffffffffffL);
- uint64_t x184, uint64_t x185 = mulx_u64(x172, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x172, 0xffffffffffffffffL);
- uint64_t x190, uint8_t x191 = addcarryx_u64(0x0, x176, x178);
- uint64_t x193, uint8_t x194 = addcarryx_u64(x191, x179, x181);
- uint64_t x196, uint8_t x197 = addcarryx_u64(x194, x182, x184);
- uint64_t x199, uint8_t x200 = addcarryx_u64(x197, x185, x187);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x188, x172);
- uint64_t _, uint8_t x206 = addcarryx_u64(0x0, x151, x175);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x154, x190);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x157, x193);
- uint64_t x214, uint8_t x215 = addcarryx_u64(x212, x160, x196);
- uint64_t x217, uint8_t x218 = addcarryx_u64(x215, x163, x199);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x166, x202);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x169, x203);
- uint8_t x225 = (x224 + x170);
- uint64_t x227, uint64_t x228 = mulx_u64(x9, x15);
- uint64_t x230, uint64_t x231 = mulx_u64(x9, x17);
- uint64_t x233, uint64_t x234 = mulx_u64(x9, x19);
- uint64_t x236, uint64_t x237 = mulx_u64(x9, x21);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x23);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x22);
- uint64_t x245, uint8_t x246 = addcarryx_u64(0x0, x228, x230);
- uint64_t x248, uint8_t x249 = addcarryx_u64(x246, x231, x233);
- uint64_t x251, uint8_t x252 = addcarryx_u64(x249, x234, x236);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x237, x239);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x240, x242);
- uint64_t x260, uint8_t _ = addcarryx_u64(0x0, x258, x243);
- uint64_t x263, uint8_t x264 = addcarryx_u64(0x0, x208, x227);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x211, x245);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x214, x248);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x217, x251);
- uint64_t x275, uint8_t x276 = addcarryx_u64(x273, x220, x254);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x225, x260);
- uint64_t x284, uint64_t _ = mulx_u64(x263, 0x8e38e38e38e38e39L);
- uint64_t x287, uint64_t x288 = mulx_u64(x284, 0xfffffffffffffff7L);
- uint64_t x290, uint64_t x291 = mulx_u64(x284, 0xffffffffffffffffL);
- uint64_t x293, uint64_t x294 = mulx_u64(x284, 0xffffffffffffffffL);
- uint64_t x296, uint64_t x297 = mulx_u64(x284, 0xffffffffffffffffL);
- uint64_t x299, uint64_t x300 = mulx_u64(x284, 0xffffffffffffffffL);
- uint64_t x302, uint8_t x303 = addcarryx_u64(0x0, x288, x290);
- uint64_t x305, uint8_t x306 = addcarryx_u64(x303, x291, x293);
- uint64_t x308, uint8_t x309 = addcarryx_u64(x306, x294, x296);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x297, x299);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x300, x284);
- uint64_t _, uint8_t x318 = addcarryx_u64(0x0, x263, x287);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x266, x302);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x269, x305);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x272, x308);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x275, x311);
- uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x278, x314);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x281, x315);
- uint8_t x337 = (x336 + x282);
- uint64_t x339, uint64_t x340 = mulx_u64(x11, x15);
- uint64_t x342, uint64_t x343 = mulx_u64(x11, x17);
- uint64_t x345, uint64_t x346 = mulx_u64(x11, x19);
- uint64_t x348, uint64_t x349 = mulx_u64(x11, x21);
- uint64_t x351, uint64_t x352 = mulx_u64(x11, x23);
- uint64_t x354, uint64_t x355 = mulx_u64(x11, x22);
- uint64_t x357, uint8_t x358 = addcarryx_u64(0x0, x340, x342);
- uint64_t x360, uint8_t x361 = addcarryx_u64(x358, x343, x345);
- uint64_t x363, uint8_t x364 = addcarryx_u64(x361, x346, x348);
- uint64_t x366, uint8_t x367 = addcarryx_u64(x364, x349, x351);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
- uint64_t x372, uint8_t _ = addcarryx_u64(0x0, x370, x355);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x320, x339);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x323, x357);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x326, x360);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x329, x363);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x337, x372);
- uint64_t x396, uint64_t _ = mulx_u64(x375, 0x8e38e38e38e38e39L);
- uint64_t x399, uint64_t x400 = mulx_u64(x396, 0xfffffffffffffff7L);
- uint64_t x402, uint64_t x403 = mulx_u64(x396, 0xffffffffffffffffL);
- uint64_t x405, uint64_t x406 = mulx_u64(x396, 0xffffffffffffffffL);
- uint64_t x408, uint64_t x409 = mulx_u64(x396, 0xffffffffffffffffL);
- uint64_t x411, uint64_t x412 = mulx_u64(x396, 0xffffffffffffffffL);
- uint64_t x414, uint8_t x415 = addcarryx_u64(0x0, x400, x402);
- uint64_t x417, uint8_t x418 = addcarryx_u64(x415, x403, x405);
- uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x406, x408);
- uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x409, x411);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x412, x396);
- uint64_t _, uint8_t x430 = addcarryx_u64(0x0, x375, x399);
- uint64_t x432, uint8_t x433 = addcarryx_u64(x430, x378, x414);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x381, x417);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x384, x420);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x387, x423);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x390, x426);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x393, x427);
- uint8_t x449 = (x448 + x394);
- uint64_t x451, uint64_t x452 = mulx_u64(x13, x15);
- uint64_t x454, uint64_t x455 = mulx_u64(x13, x17);
- uint64_t x457, uint64_t x458 = mulx_u64(x13, x19);
- uint64_t x460, uint64_t x461 = mulx_u64(x13, x21);
- uint64_t x463, uint64_t x464 = mulx_u64(x13, x23);
- uint64_t x466, uint64_t x467 = mulx_u64(x13, x22);
- uint64_t x469, uint8_t x470 = addcarryx_u64(0x0, x452, x454);
- uint64_t x472, uint8_t x473 = addcarryx_u64(x470, x455, x457);
- uint64_t x475, uint8_t x476 = addcarryx_u64(x473, x458, x460);
- uint64_t x478, uint8_t x479 = addcarryx_u64(x476, x461, x463);
- uint64_t x481, uint8_t x482 = addcarryx_u64(x479, x464, x466);
- uint64_t x484, uint8_t _ = addcarryx_u64(0x0, x482, x467);
- uint64_t x487, uint8_t x488 = addcarryx_u64(0x0, x432, x451);
- uint64_t x490, uint8_t x491 = addcarryx_u64(x488, x435, x469);
- uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x438, x472);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x441, x475);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x444, x478);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x447, x481);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x449, x484);
- uint64_t x508, uint64_t _ = mulx_u64(x487, 0x8e38e38e38e38e39L);
- uint64_t x511, uint64_t x512 = mulx_u64(x508, 0xfffffffffffffff7L);
- uint64_t x514, uint64_t x515 = mulx_u64(x508, 0xffffffffffffffffL);
- uint64_t x517, uint64_t x518 = mulx_u64(x508, 0xffffffffffffffffL);
- uint64_t x520, uint64_t x521 = mulx_u64(x508, 0xffffffffffffffffL);
- uint64_t x523, uint64_t x524 = mulx_u64(x508, 0xffffffffffffffffL);
- uint64_t x526, uint8_t x527 = addcarryx_u64(0x0, x512, x514);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x515, x517);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x518, x520);
- uint64_t x535, uint8_t x536 = addcarryx_u64(x533, x521, x523);
- uint64_t x538, uint8_t x539 = addcarryx_u64(x536, x524, x508);
- uint64_t _, uint8_t x542 = addcarryx_u64(0x0, x487, x511);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x490, x526);
- uint64_t x547, uint8_t x548 = addcarryx_u64(x545, x493, x529);
- uint64_t x550, uint8_t x551 = addcarryx_u64(x548, x496, x532);
- uint64_t x553, uint8_t x554 = addcarryx_u64(x551, x499, x535);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x502, x538);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x505, x539);
- uint8_t x561 = (x560 + x506);
- uint64_t x563, uint64_t x564 = mulx_u64(x12, x15);
- uint64_t x566, uint64_t x567 = mulx_u64(x12, x17);
- uint64_t x569, uint64_t x570 = mulx_u64(x12, x19);
- uint64_t x572, uint64_t x573 = mulx_u64(x12, x21);
- uint64_t x575, uint64_t x576 = mulx_u64(x12, x23);
- uint64_t x578, uint64_t x579 = mulx_u64(x12, x22);
- uint64_t x581, uint8_t x582 = addcarryx_u64(0x0, x564, x566);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x567, x569);
- uint64_t x587, uint8_t x588 = addcarryx_u64(x585, x570, x572);
- uint64_t x590, uint8_t x591 = addcarryx_u64(x588, x573, x575);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x576, x578);
- uint64_t x596, uint8_t _ = addcarryx_u64(0x0, x594, x579);
- uint64_t x599, uint8_t x600 = addcarryx_u64(0x0, x544, x563);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x547, x581);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x550, x584);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x553, x587);
- uint64_t x611, uint8_t x612 = addcarryx_u64(x609, x556, x590);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x559, x593);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x561, x596);
- uint64_t x620, uint64_t _ = mulx_u64(x599, 0x8e38e38e38e38e39L);
- uint64_t x623, uint64_t x624 = mulx_u64(x620, 0xfffffffffffffff7L);
- uint64_t x626, uint64_t x627 = mulx_u64(x620, 0xffffffffffffffffL);
- uint64_t x629, uint64_t x630 = mulx_u64(x620, 0xffffffffffffffffL);
- uint64_t x632, uint64_t x633 = mulx_u64(x620, 0xffffffffffffffffL);
- uint64_t x635, uint64_t x636 = mulx_u64(x620, 0xffffffffffffffffL);
- uint64_t x638, uint8_t x639 = addcarryx_u64(0x0, x624, x626);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x627, x629);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x630, x632);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x633, x635);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x636, x620);
- uint64_t _, uint8_t x654 = addcarryx_u64(0x0, x599, x623);
- uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x602, x638);
- uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x605, x641);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x608, x644);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x611, x647);
- uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x614, x650);
- uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x617, x651);
- uint8_t x673 = (x672 + x618);
- uint64_t x675, uint8_t x676 = subborrow_u64(0x0, x656, 0xfffffffffffffff7L);
- uint64_t x678, uint8_t x679 = subborrow_u64(x676, x659, 0xffffffffffffffffL);
- uint64_t x681, uint8_t x682 = subborrow_u64(x679, x662, 0xffffffffffffffffL);
- uint64_t x684, uint8_t x685 = subborrow_u64(x682, x665, 0xffffffffffffffffL);
- uint64_t x687, uint8_t x688 = subborrow_u64(x685, x668, 0xffffffffffffffffL);
- uint64_t x690, uint8_t x691 = subborrow_u64(x688, x671, 0x1);
- uint64_t _, uint8_t x694 = subborrow_u64(x691, x673, 0x0);
- uint64_t x695 = cmovznz64(x694, x690, x671);
- uint64_t x696 = cmovznz64(x694, x687, x668);
- uint64_t x697 = cmovznz64(x694, x684, x665);
- uint64_t x698 = cmovznz64(x694, x681, x662);
- uint64_t x699 = cmovznz64(x694, x678, x659);
- uint64_t x700 = cmovznz64(x694, x675, x656);
- return (x695, x696, x697, x698, x699, x700))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e321m9/femulDisplay.v b/src/Specific/montgomery64_2e321m9/femulDisplay.v
deleted file mode 100644
index bb07e0666..000000000
--- a/src/Specific/montgomery64_2e321m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e321m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e321m9/fenz.c b/src/Specific/montgomery64_2e321m9/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e321m9/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e321m9/fenz.v b/src/Specific/montgomery64_2e321m9/fenz.v
deleted file mode 100644
index bc22d87d6..000000000
--- a/src/Specific/montgomery64_2e321m9/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e321m9/fenzDisplay.log b/src/Specific/montgomery64_2e321m9/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e321m9/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e321m9/fenzDisplay.v b/src/Specific/montgomery64_2e321m9/fenzDisplay.v
deleted file mode 100644
index 22350b1be..000000000
--- a/src/Specific/montgomery64_2e321m9/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e321m9.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e321m9/feopp.c b/src/Specific/montgomery64_2e321m9/feopp.c
deleted file mode 100644
index f0a4603ea..000000000
--- a/src/Specific/montgomery64_2e321m9/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffff7L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint8_t x50 = ((uint8_t)x29 & 0x1);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e321m9/feopp.v b/src/Specific/montgomery64_2e321m9/feopp.v
deleted file mode 100644
index ecbb94b6d..000000000
--- a/src/Specific/montgomery64_2e321m9/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e321m9/feoppDisplay.log b/src/Specific/montgomery64_2e321m9/feoppDisplay.log
deleted file mode 100644
index 07d8bfd39..000000000
--- a/src/Specific/montgomery64_2e321m9/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffff7L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint8_t x50 = ((uint8_t)x29 & 0x1);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e321m9/feoppDisplay.v b/src/Specific/montgomery64_2e321m9/feoppDisplay.v
deleted file mode 100644
index e790342d9..000000000
--- a/src/Specific/montgomery64_2e321m9/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e321m9.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e321m9/fesquare.c b/src/Specific/montgomery64_2e321m9/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e321m9/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e321m9/fesub.c b/src/Specific/montgomery64_2e321m9/fesub.c
deleted file mode 100644
index 5bb8fc37b..000000000
--- a/src/Specific/montgomery64_2e321m9/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xfffffffffffffff7L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint8_t x63 = ((uint8_t)x42 & 0x1);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e321m9/fesub.v b/src/Specific/montgomery64_2e321m9/fesub.v
deleted file mode 100644
index a20636429..000000000
--- a/src/Specific/montgomery64_2e321m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e321m9/fesubDisplay.log b/src/Specific/montgomery64_2e321m9/fesubDisplay.log
deleted file mode 100644
index 482ae2c09..000000000
--- a/src/Specific/montgomery64_2e321m9/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xfffffffffffffff7L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint8_t x63 = ((uint8_t)x42 & 0x1);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e321m9/fesubDisplay.v b/src/Specific/montgomery64_2e321m9/fesubDisplay.v
deleted file mode 100644
index 05afc5ec8..000000000
--- a/src/Specific/montgomery64_2e321m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e321m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e321m9/CurveParameters.v b/src/Specific/montgomery64_2e321m9_6limbs/CurveParameters.v
index 040e23d2d..040e23d2d 100644
--- a/src/Specific/montgomery64_2e321m9/CurveParameters.v
+++ b/src/Specific/montgomery64_2e321m9_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/Synthesis.v b/src/Specific/montgomery64_2e321m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..f085b9d5d
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e321m9/compiler.sh b/src/Specific/montgomery64_2e321m9_6limbs/compiler.sh
index b32f1ab21..b32f1ab21 100755
--- a/src/Specific/montgomery64_2e321m9/compiler.sh
+++ b/src/Specific/montgomery64_2e321m9_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e321m9/compilerxx.sh b/src/Specific/montgomery64_2e321m9_6limbs/compilerxx.sh
index f1584a58e..f1584a58e 100755
--- a/src/Specific/montgomery64_2e321m9/compilerxx.sh
+++ b/src/Specific/montgomery64_2e321m9_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/feadd.v b/src/Specific/montgomery64_2e321m9_6limbs/feadd.v
new file mode 100644
index 000000000..f40c6c43b
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e321m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..f72c54942
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/femul.v b/src/Specific/montgomery64_2e321m9_6limbs/femul.v
new file mode 100644
index 000000000..4b75e66ff
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e321m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..66a1d87e9
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/fenz.v b/src/Specific/montgomery64_2e321m9_6limbs/fenz.v
new file mode 100644
index 000000000..a6a081c6b
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e321m9_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..c6254b2eb
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/feopp.v b/src/Specific/montgomery64_2e321m9_6limbs/feopp.v
new file mode 100644
index 000000000..d7d19fbc2
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e321m9_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..6a052f147
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/fesub.v b/src/Specific/montgomery64_2e321m9_6limbs/fesub.v
new file mode 100644
index 000000000..54be69609
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e321m9_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e321m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..5b27aece0
--- /dev/null
+++ b/src/Specific/montgomery64_2e321m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e321m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e321m9/py_interpreter.sh b/src/Specific/montgomery64_2e321m9_6limbs/py_interpreter.sh
index 568a64ea0..568a64ea0 100755
--- a/src/Specific/montgomery64_2e321m9/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e321m9_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v b/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v
deleted file mode 100644
index 6aae95f32..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feadd.c b/src/Specific/montgomery64_2e322m2e161m1/feadd.c
deleted file mode 100644
index 44531fadd..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffffL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xfffffffdffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x3, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feadd.v b/src/Specific/montgomery64_2e322m2e161m1/feadd.v
deleted file mode 100644
index 633b3d944..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.log b/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.log
deleted file mode 100644
index 407fc8bb8..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xfffffffdffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x3);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v
deleted file mode 100644
index 2878f2a43..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/femul.c b/src/Specific/montgomery64_2e322m2e161m1/femul.c
deleted file mode 100644
index 21650b616..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/femul.c
+++ /dev/null
@@ -1,260 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xfffffffdffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
- { uint8_t x77; uint64_t x76 = _mulx_u64_out_u8(x25, 0x3, &x77);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint8_t x93 = (x92 + x77);
- { uint64_t _; uint8_t x96 = _addcarryx_u64(0x0, x25, x61, &_);
- { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x43, x79, &x98);
- { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x46, x82, &x101);
- { uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x49, x85, &x104);
- { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x52, x88, &x107);
- { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x55, x91, &x110);
- { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x58, x93, &x113);
- { uint64_t x117; uint64_t x116 = _mulx_u64(x7, x15, &x117);
- { uint64_t x120; uint64_t x119 = _mulx_u64(x7, x17, &x120);
- { uint64_t x123; uint64_t x122 = _mulx_u64(x7, x19, &x123);
- { uint64_t x126; uint64_t x125 = _mulx_u64(x7, x21, &x126);
- { uint64_t x129; uint64_t x128 = _mulx_u64(x7, x23, &x129);
- { uint64_t x132; uint64_t x131 = _mulx_u64(x7, x22, &x132);
- { uint64_t x134; uint8_t x135 = _addcarryx_u64(0x0, x117, x119, &x134);
- { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x120, x122, &x137);
- { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x123, x125, &x140);
- { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x126, x128, &x143);
- { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x129, x131, &x146);
- { uint64_t x149; uint8_t _ = _addcarryx_u64(0x0, x147, x132, &x149);
- { uint64_t x152; uint8_t x153 = _addcarryx_u64(0x0, x98, x116, &x152);
- { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x101, x134, &x155);
- { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x104, x137, &x158);
- { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x107, x140, &x161);
- { uint64_t x164; uint8_t x165 = _addcarryx_u64(x162, x110, x143, &x164);
- { uint64_t x167; uint8_t x168 = _addcarryx_u64(x165, x113, x146, &x167);
- { uint64_t x170; uint8_t x171 = _addcarryx_u64(x168, x114, x149, &x170);
- { uint64_t x174; uint64_t x173 = _mulx_u64(x152, 0xffffffffffffffffL, &x174);
- { uint64_t x177; uint64_t x176 = _mulx_u64(x152, 0xffffffffffffffffL, &x177);
- { uint64_t x180; uint64_t x179 = _mulx_u64(x152, 0xfffffffdffffffffL, &x180);
- { uint64_t x183; uint64_t x182 = _mulx_u64(x152, 0xffffffffffffffffL, &x183);
- { uint64_t x186; uint64_t x185 = _mulx_u64(x152, 0xffffffffffffffffL, &x186);
- { uint8_t x189; uint64_t x188 = _mulx_u64_out_u8(x152, 0x3, &x189);
- { uint64_t x191; uint8_t x192 = _addcarryx_u64(0x0, x174, x176, &x191);
- { uint64_t x194; uint8_t x195 = _addcarryx_u64(x192, x177, x179, &x194);
- { uint64_t x197; uint8_t x198 = _addcarryx_u64(x195, x180, x182, &x197);
- { uint64_t x200; uint8_t x201 = _addcarryx_u64(x198, x183, x185, &x200);
- { uint64_t x203; uint8_t x204 = _addcarryx_u64(x201, x186, x188, &x203);
- { uint8_t x205 = (x204 + x189);
- { uint64_t _; uint8_t x208 = _addcarryx_u64(0x0, x152, x173, &_);
- { uint64_t x210; uint8_t x211 = _addcarryx_u64(x208, x155, x191, &x210);
- { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x158, x194, &x213);
- { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x161, x197, &x216);
- { uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x164, x200, &x219);
- { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x167, x203, &x222);
- { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x170, x205, &x225);
- { uint8_t x227 = (x226 + x171);
- { uint64_t x230; uint64_t x229 = _mulx_u64(x9, x15, &x230);
- { uint64_t x233; uint64_t x232 = _mulx_u64(x9, x17, &x233);
- { uint64_t x236; uint64_t x235 = _mulx_u64(x9, x19, &x236);
- { uint64_t x239; uint64_t x238 = _mulx_u64(x9, x21, &x239);
- { uint64_t x242; uint64_t x241 = _mulx_u64(x9, x23, &x242);
- { uint64_t x245; uint64_t x244 = _mulx_u64(x9, x22, &x245);
- { uint64_t x247; uint8_t x248 = _addcarryx_u64(0x0, x230, x232, &x247);
- { uint64_t x250; uint8_t x251 = _addcarryx_u64(x248, x233, x235, &x250);
- { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x236, x238, &x253);
- { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x239, x241, &x256);
- { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x242, x244, &x259);
- { uint64_t x262; uint8_t _ = _addcarryx_u64(0x0, x260, x245, &x262);
- { uint64_t x265; uint8_t x266 = _addcarryx_u64(0x0, x210, x229, &x265);
- { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x213, x247, &x268);
- { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x216, x250, &x271);
- { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x219, x253, &x274);
- { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x222, x256, &x277);
- { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x225, x259, &x280);
- { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x227, x262, &x283);
- { uint64_t x287; uint64_t x286 = _mulx_u64(x265, 0xffffffffffffffffL, &x287);
- { uint64_t x290; uint64_t x289 = _mulx_u64(x265, 0xffffffffffffffffL, &x290);
- { uint64_t x293; uint64_t x292 = _mulx_u64(x265, 0xfffffffdffffffffL, &x293);
- { uint64_t x296; uint64_t x295 = _mulx_u64(x265, 0xffffffffffffffffL, &x296);
- { uint64_t x299; uint64_t x298 = _mulx_u64(x265, 0xffffffffffffffffL, &x299);
- { uint8_t x302; uint64_t x301 = _mulx_u64_out_u8(x265, 0x3, &x302);
- { uint64_t x304; uint8_t x305 = _addcarryx_u64(0x0, x287, x289, &x304);
- { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x290, x292, &x307);
- { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x293, x295, &x310);
- { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x296, x298, &x313);
- { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x299, x301, &x316);
- { uint8_t x318 = (x317 + x302);
- { uint64_t _; uint8_t x321 = _addcarryx_u64(0x0, x265, x286, &_);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x268, x304, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x271, x307, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x274, x310, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x277, x313, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x280, x316, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x283, x318, &x338);
- { uint8_t x340 = (x339 + x284);
- { uint64_t x343; uint64_t x342 = _mulx_u64(x11, x15, &x343);
- { uint64_t x346; uint64_t x345 = _mulx_u64(x11, x17, &x346);
- { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x19, &x349);
- { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x21, &x352);
- { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x23, &x355);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x22, &x358);
- { uint64_t x360; uint8_t x361 = _addcarryx_u64(0x0, x343, x345, &x360);
- { uint64_t x363; uint8_t x364 = _addcarryx_u64(x361, x346, x348, &x363);
- { uint64_t x366; uint8_t x367 = _addcarryx_u64(x364, x349, x351, &x366);
- { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
- { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
- { uint64_t x375; uint8_t _ = _addcarryx_u64(0x0, x373, x358, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(0x0, x323, x342, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x326, x360, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x329, x363, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
- { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x340, x375, &x396);
- { uint64_t x400; uint64_t x399 = _mulx_u64(x378, 0xffffffffffffffffL, &x400);
- { uint64_t x403; uint64_t x402 = _mulx_u64(x378, 0xffffffffffffffffL, &x403);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x378, 0xfffffffdffffffffL, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x378, 0xffffffffffffffffL, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x378, 0xffffffffffffffffL, &x412);
- { uint8_t x415; uint64_t x414 = _mulx_u64_out_u8(x378, 0x3, &x415);
- { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x400, x402, &x417);
- { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x403, x405, &x420);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x406, x408, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
- { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
- { uint8_t x431 = (x430 + x415);
- { uint64_t _; uint8_t x434 = _addcarryx_u64(0x0, x378, x399, &_);
- { uint64_t x436; uint8_t x437 = _addcarryx_u64(x434, x381, x417, &x436);
- { uint64_t x439; uint8_t x440 = _addcarryx_u64(x437, x384, x420, &x439);
- { uint64_t x442; uint8_t x443 = _addcarryx_u64(x440, x387, x423, &x442);
- { uint64_t x445; uint8_t x446 = _addcarryx_u64(x443, x390, x426, &x445);
- { uint64_t x448; uint8_t x449 = _addcarryx_u64(x446, x393, x429, &x448);
- { uint64_t x451; uint8_t x452 = _addcarryx_u64(x449, x396, x431, &x451);
- { uint8_t x453 = (x452 + x397);
- { uint64_t x456; uint64_t x455 = _mulx_u64(x13, x15, &x456);
- { uint64_t x459; uint64_t x458 = _mulx_u64(x13, x17, &x459);
- { uint64_t x462; uint64_t x461 = _mulx_u64(x13, x19, &x462);
- { uint64_t x465; uint64_t x464 = _mulx_u64(x13, x21, &x465);
- { uint64_t x468; uint64_t x467 = _mulx_u64(x13, x23, &x468);
- { uint64_t x471; uint64_t x470 = _mulx_u64(x13, x22, &x471);
- { uint64_t x473; uint8_t x474 = _addcarryx_u64(0x0, x456, x458, &x473);
- { uint64_t x476; uint8_t x477 = _addcarryx_u64(x474, x459, x461, &x476);
- { uint64_t x479; uint8_t x480 = _addcarryx_u64(x477, x462, x464, &x479);
- { uint64_t x482; uint8_t x483 = _addcarryx_u64(x480, x465, x467, &x482);
- { uint64_t x485; uint8_t x486 = _addcarryx_u64(x483, x468, x470, &x485);
- { uint64_t x488; uint8_t _ = _addcarryx_u64(0x0, x486, x471, &x488);
- { uint64_t x491; uint8_t x492 = _addcarryx_u64(0x0, x436, x455, &x491);
- { uint64_t x494; uint8_t x495 = _addcarryx_u64(x492, x439, x473, &x494);
- { uint64_t x497; uint8_t x498 = _addcarryx_u64(x495, x442, x476, &x497);
- { uint64_t x500; uint8_t x501 = _addcarryx_u64(x498, x445, x479, &x500);
- { uint64_t x503; uint8_t x504 = _addcarryx_u64(x501, x448, x482, &x503);
- { uint64_t x506; uint8_t x507 = _addcarryx_u64(x504, x451, x485, &x506);
- { uint64_t x509; uint8_t x510 = _addcarryx_u64(x507, x453, x488, &x509);
- { uint64_t x513; uint64_t x512 = _mulx_u64(x491, 0xffffffffffffffffL, &x513);
- { uint64_t x516; uint64_t x515 = _mulx_u64(x491, 0xffffffffffffffffL, &x516);
- { uint64_t x519; uint64_t x518 = _mulx_u64(x491, 0xfffffffdffffffffL, &x519);
- { uint64_t x522; uint64_t x521 = _mulx_u64(x491, 0xffffffffffffffffL, &x522);
- { uint64_t x525; uint64_t x524 = _mulx_u64(x491, 0xffffffffffffffffL, &x525);
- { uint8_t x528; uint64_t x527 = _mulx_u64_out_u8(x491, 0x3, &x528);
- { uint64_t x530; uint8_t x531 = _addcarryx_u64(0x0, x513, x515, &x530);
- { uint64_t x533; uint8_t x534 = _addcarryx_u64(x531, x516, x518, &x533);
- { uint64_t x536; uint8_t x537 = _addcarryx_u64(x534, x519, x521, &x536);
- { uint64_t x539; uint8_t x540 = _addcarryx_u64(x537, x522, x524, &x539);
- { uint64_t x542; uint8_t x543 = _addcarryx_u64(x540, x525, x527, &x542);
- { uint8_t x544 = (x543 + x528);
- { uint64_t _; uint8_t x547 = _addcarryx_u64(0x0, x491, x512, &_);
- { uint64_t x549; uint8_t x550 = _addcarryx_u64(x547, x494, x530, &x549);
- { uint64_t x552; uint8_t x553 = _addcarryx_u64(x550, x497, x533, &x552);
- { uint64_t x555; uint8_t x556 = _addcarryx_u64(x553, x500, x536, &x555);
- { uint64_t x558; uint8_t x559 = _addcarryx_u64(x556, x503, x539, &x558);
- { uint64_t x561; uint8_t x562 = _addcarryx_u64(x559, x506, x542, &x561);
- { uint64_t x564; uint8_t x565 = _addcarryx_u64(x562, x509, x544, &x564);
- { uint8_t x566 = (x565 + x510);
- { uint64_t x569; uint64_t x568 = _mulx_u64(x12, x15, &x569);
- { uint64_t x572; uint64_t x571 = _mulx_u64(x12, x17, &x572);
- { uint64_t x575; uint64_t x574 = _mulx_u64(x12, x19, &x575);
- { uint64_t x578; uint64_t x577 = _mulx_u64(x12, x21, &x578);
- { uint64_t x581; uint64_t x580 = _mulx_u64(x12, x23, &x581);
- { uint64_t x584; uint64_t x583 = _mulx_u64(x12, x22, &x584);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(0x0, x569, x571, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x572, x574, &x589);
- { uint64_t x592; uint8_t x593 = _addcarryx_u64(x590, x575, x577, &x592);
- { uint64_t x595; uint8_t x596 = _addcarryx_u64(x593, x578, x580, &x595);
- { uint64_t x598; uint8_t x599 = _addcarryx_u64(x596, x581, x583, &x598);
- { uint64_t x601; uint8_t _ = _addcarryx_u64(0x0, x599, x584, &x601);
- { uint64_t x604; uint8_t x605 = _addcarryx_u64(0x0, x549, x568, &x604);
- { uint64_t x607; uint8_t x608 = _addcarryx_u64(x605, x552, x586, &x607);
- { uint64_t x610; uint8_t x611 = _addcarryx_u64(x608, x555, x589, &x610);
- { uint64_t x613; uint8_t x614 = _addcarryx_u64(x611, x558, x592, &x613);
- { uint64_t x616; uint8_t x617 = _addcarryx_u64(x614, x561, x595, &x616);
- { uint64_t x619; uint8_t x620 = _addcarryx_u64(x617, x564, x598, &x619);
- { uint64_t x622; uint8_t x623 = _addcarryx_u64(x620, x566, x601, &x622);
- { uint64_t x626; uint64_t x625 = _mulx_u64(x604, 0xffffffffffffffffL, &x626);
- { uint64_t x629; uint64_t x628 = _mulx_u64(x604, 0xffffffffffffffffL, &x629);
- { uint64_t x632; uint64_t x631 = _mulx_u64(x604, 0xfffffffdffffffffL, &x632);
- { uint64_t x635; uint64_t x634 = _mulx_u64(x604, 0xffffffffffffffffL, &x635);
- { uint64_t x638; uint64_t x637 = _mulx_u64(x604, 0xffffffffffffffffL, &x638);
- { uint8_t x641; uint64_t x640 = _mulx_u64_out_u8(x604, 0x3, &x641);
- { uint64_t x643; uint8_t x644 = _addcarryx_u64(0x0, x626, x628, &x643);
- { uint64_t x646; uint8_t x647 = _addcarryx_u64(x644, x629, x631, &x646);
- { uint64_t x649; uint8_t x650 = _addcarryx_u64(x647, x632, x634, &x649);
- { uint64_t x652; uint8_t x653 = _addcarryx_u64(x650, x635, x637, &x652);
- { uint64_t x655; uint8_t x656 = _addcarryx_u64(x653, x638, x640, &x655);
- { uint8_t x657 = (x656 + x641);
- { uint64_t _; uint8_t x660 = _addcarryx_u64(0x0, x604, x625, &_);
- { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x607, x643, &x662);
- { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x610, x646, &x665);
- { uint64_t x668; uint8_t x669 = _addcarryx_u64(x666, x613, x649, &x668);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(x669, x616, x652, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x619, x655, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x622, x657, &x677);
- { uint8_t x679 = (x678 + x623);
- { uint64_t x681; uint8_t x682 = _subborrow_u64(0x0, x662, 0xffffffffffffffffL, &x681);
- { uint64_t x684; uint8_t x685 = _subborrow_u64(x682, x665, 0xffffffffffffffffL, &x684);
- { uint64_t x687; uint8_t x688 = _subborrow_u64(x685, x668, 0xfffffffdffffffffL, &x687);
- { uint64_t x690; uint8_t x691 = _subborrow_u64(x688, x671, 0xffffffffffffffffL, &x690);
- { uint64_t x693; uint8_t x694 = _subborrow_u64(x691, x674, 0xffffffffffffffffL, &x693);
- { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0x3, &x696);
- { uint64_t _; uint8_t x700 = _subborrow_u64(x697, x679, 0x0, &_);
- { uint64_t x701 = cmovznz64(x700, x696, x677);
- { uint64_t x702 = cmovznz64(x700, x693, x674);
- { uint64_t x703 = cmovznz64(x700, x690, x671);
- { uint64_t x704 = cmovznz64(x700, x687, x668);
- { uint64_t x705 = cmovznz64(x700, x684, x665);
- { uint64_t x706 = cmovznz64(x700, x681, x662);
- out[0] = x706;
- out[1] = x705;
- out[2] = x704;
- out[3] = x703;
- out[4] = x702;
- out[5] = x701;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/femul.v b/src/Specific/montgomery64_2e322m2e161m1/femul.v
deleted file mode 100644
index 83474eab3..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.log b/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.log
deleted file mode 100644
index bd69c25d5..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.log
+++ /dev/null
@@ -1,246 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xfffffffdffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x76, uint8_t x77 = mulx_u64_out_u8(x25, 0x3);
- uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint8_t x93 = (x92 + x77);
- uint64_t _, uint8_t x96 = addcarryx_u64(0x0, x25, x61);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x43, x79);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x46, x82);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x49, x85);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x52, x88);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x55, x91);
- uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x58, x93);
- uint64_t x116, uint64_t x117 = mulx_u64(x7, x15);
- uint64_t x119, uint64_t x120 = mulx_u64(x7, x17);
- uint64_t x122, uint64_t x123 = mulx_u64(x7, x19);
- uint64_t x125, uint64_t x126 = mulx_u64(x7, x21);
- uint64_t x128, uint64_t x129 = mulx_u64(x7, x23);
- uint64_t x131, uint64_t x132 = mulx_u64(x7, x22);
- uint64_t x134, uint8_t x135 = addcarryx_u64(0x0, x117, x119);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x120, x122);
- uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x123, x125);
- uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x126, x128);
- uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x129, x131);
- uint64_t x149, uint8_t _ = addcarryx_u64(0x0, x147, x132);
- uint64_t x152, uint8_t x153 = addcarryx_u64(0x0, x98, x116);
- uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x101, x134);
- uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x104, x137);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x107, x140);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x110, x143);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x113, x146);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x114, x149);
- uint64_t x173, uint64_t x174 = mulx_u64(x152, 0xffffffffffffffffL);
- uint64_t x176, uint64_t x177 = mulx_u64(x152, 0xffffffffffffffffL);
- uint64_t x179, uint64_t x180 = mulx_u64(x152, 0xfffffffdffffffffL);
- uint64_t x182, uint64_t x183 = mulx_u64(x152, 0xffffffffffffffffL);
- uint64_t x185, uint64_t x186 = mulx_u64(x152, 0xffffffffffffffffL);
- uint64_t x188, uint8_t x189 = mulx_u64_out_u8(x152, 0x3);
- uint64_t x191, uint8_t x192 = addcarryx_u64(0x0, x174, x176);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x177, x179);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x180, x182);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x183, x185);
- uint64_t x203, uint8_t x204 = addcarryx_u64(x201, x186, x188);
- uint8_t x205 = (x204 + x189);
- uint64_t _, uint8_t x208 = addcarryx_u64(0x0, x152, x173);
- uint64_t x210, uint8_t x211 = addcarryx_u64(x208, x155, x191);
- uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x158, x194);
- uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x161, x197);
- uint64_t x219, uint8_t x220 = addcarryx_u64(x217, x164, x200);
- uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x167, x203);
- uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x170, x205);
- uint8_t x227 = (x226 + x171);
- uint64_t x229, uint64_t x230 = mulx_u64(x9, x15);
- uint64_t x232, uint64_t x233 = mulx_u64(x9, x17);
- uint64_t x235, uint64_t x236 = mulx_u64(x9, x19);
- uint64_t x238, uint64_t x239 = mulx_u64(x9, x21);
- uint64_t x241, uint64_t x242 = mulx_u64(x9, x23);
- uint64_t x244, uint64_t x245 = mulx_u64(x9, x22);
- uint64_t x247, uint8_t x248 = addcarryx_u64(0x0, x230, x232);
- uint64_t x250, uint8_t x251 = addcarryx_u64(x248, x233, x235);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x236, x238);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x239, x241);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x242, x244);
- uint64_t x262, uint8_t _ = addcarryx_u64(0x0, x260, x245);
- uint64_t x265, uint8_t x266 = addcarryx_u64(0x0, x210, x229);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x213, x247);
- uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x216, x250);
- uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x219, x253);
- uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x222, x256);
- uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x225, x259);
- uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x227, x262);
- uint64_t x286, uint64_t x287 = mulx_u64(x265, 0xffffffffffffffffL);
- uint64_t x289, uint64_t x290 = mulx_u64(x265, 0xffffffffffffffffL);
- uint64_t x292, uint64_t x293 = mulx_u64(x265, 0xfffffffdffffffffL);
- uint64_t x295, uint64_t x296 = mulx_u64(x265, 0xffffffffffffffffL);
- uint64_t x298, uint64_t x299 = mulx_u64(x265, 0xffffffffffffffffL);
- uint64_t x301, uint8_t x302 = mulx_u64_out_u8(x265, 0x3);
- uint64_t x304, uint8_t x305 = addcarryx_u64(0x0, x287, x289);
- uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x290, x292);
- uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x293, x295);
- uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x296, x298);
- uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x299, x301);
- uint8_t x318 = (x317 + x302);
- uint64_t _, uint8_t x321 = addcarryx_u64(0x0, x265, x286);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x268, x304);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x271, x307);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x274, x310);
- uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x277, x313);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x280, x316);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x283, x318);
- uint8_t x340 = (x339 + x284);
- uint64_t x342, uint64_t x343 = mulx_u64(x11, x15);
- uint64_t x345, uint64_t x346 = mulx_u64(x11, x17);
- uint64_t x348, uint64_t x349 = mulx_u64(x11, x19);
- uint64_t x351, uint64_t x352 = mulx_u64(x11, x21);
- uint64_t x354, uint64_t x355 = mulx_u64(x11, x23);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x22);
- uint64_t x360, uint8_t x361 = addcarryx_u64(0x0, x343, x345);
- uint64_t x363, uint8_t x364 = addcarryx_u64(x361, x346, x348);
- uint64_t x366, uint8_t x367 = addcarryx_u64(x364, x349, x351);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
- uint64_t x375, uint8_t _ = addcarryx_u64(0x0, x373, x358);
- uint64_t x378, uint8_t x379 = addcarryx_u64(0x0, x323, x342);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x326, x360);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x329, x363);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x340, x375);
- uint64_t x399, uint64_t x400 = mulx_u64(x378, 0xffffffffffffffffL);
- uint64_t x402, uint64_t x403 = mulx_u64(x378, 0xffffffffffffffffL);
- uint64_t x405, uint64_t x406 = mulx_u64(x378, 0xfffffffdffffffffL);
- uint64_t x408, uint64_t x409 = mulx_u64(x378, 0xffffffffffffffffL);
- uint64_t x411, uint64_t x412 = mulx_u64(x378, 0xffffffffffffffffL);
- uint64_t x414, uint8_t x415 = mulx_u64_out_u8(x378, 0x3);
- uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x400, x402);
- uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x403, x405);
- uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x406, x408);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
- uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
- uint8_t x431 = (x430 + x415);
- uint64_t _, uint8_t x434 = addcarryx_u64(0x0, x378, x399);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x381, x417);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x384, x420);
- uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x387, x423);
- uint64_t x445, uint8_t x446 = addcarryx_u64(x443, x390, x426);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x393, x429);
- uint64_t x451, uint8_t x452 = addcarryx_u64(x449, x396, x431);
- uint8_t x453 = (x452 + x397);
- uint64_t x455, uint64_t x456 = mulx_u64(x13, x15);
- uint64_t x458, uint64_t x459 = mulx_u64(x13, x17);
- uint64_t x461, uint64_t x462 = mulx_u64(x13, x19);
- uint64_t x464, uint64_t x465 = mulx_u64(x13, x21);
- uint64_t x467, uint64_t x468 = mulx_u64(x13, x23);
- uint64_t x470, uint64_t x471 = mulx_u64(x13, x22);
- uint64_t x473, uint8_t x474 = addcarryx_u64(0x0, x456, x458);
- uint64_t x476, uint8_t x477 = addcarryx_u64(x474, x459, x461);
- uint64_t x479, uint8_t x480 = addcarryx_u64(x477, x462, x464);
- uint64_t x482, uint8_t x483 = addcarryx_u64(x480, x465, x467);
- uint64_t x485, uint8_t x486 = addcarryx_u64(x483, x468, x470);
- uint64_t x488, uint8_t _ = addcarryx_u64(0x0, x486, x471);
- uint64_t x491, uint8_t x492 = addcarryx_u64(0x0, x436, x455);
- uint64_t x494, uint8_t x495 = addcarryx_u64(x492, x439, x473);
- uint64_t x497, uint8_t x498 = addcarryx_u64(x495, x442, x476);
- uint64_t x500, uint8_t x501 = addcarryx_u64(x498, x445, x479);
- uint64_t x503, uint8_t x504 = addcarryx_u64(x501, x448, x482);
- uint64_t x506, uint8_t x507 = addcarryx_u64(x504, x451, x485);
- uint64_t x509, uint8_t x510 = addcarryx_u64(x507, x453, x488);
- uint64_t x512, uint64_t x513 = mulx_u64(x491, 0xffffffffffffffffL);
- uint64_t x515, uint64_t x516 = mulx_u64(x491, 0xffffffffffffffffL);
- uint64_t x518, uint64_t x519 = mulx_u64(x491, 0xfffffffdffffffffL);
- uint64_t x521, uint64_t x522 = mulx_u64(x491, 0xffffffffffffffffL);
- uint64_t x524, uint64_t x525 = mulx_u64(x491, 0xffffffffffffffffL);
- uint64_t x527, uint8_t x528 = mulx_u64_out_u8(x491, 0x3);
- uint64_t x530, uint8_t x531 = addcarryx_u64(0x0, x513, x515);
- uint64_t x533, uint8_t x534 = addcarryx_u64(x531, x516, x518);
- uint64_t x536, uint8_t x537 = addcarryx_u64(x534, x519, x521);
- uint64_t x539, uint8_t x540 = addcarryx_u64(x537, x522, x524);
- uint64_t x542, uint8_t x543 = addcarryx_u64(x540, x525, x527);
- uint8_t x544 = (x543 + x528);
- uint64_t _, uint8_t x547 = addcarryx_u64(0x0, x491, x512);
- uint64_t x549, uint8_t x550 = addcarryx_u64(x547, x494, x530);
- uint64_t x552, uint8_t x553 = addcarryx_u64(x550, x497, x533);
- uint64_t x555, uint8_t x556 = addcarryx_u64(x553, x500, x536);
- uint64_t x558, uint8_t x559 = addcarryx_u64(x556, x503, x539);
- uint64_t x561, uint8_t x562 = addcarryx_u64(x559, x506, x542);
- uint64_t x564, uint8_t x565 = addcarryx_u64(x562, x509, x544);
- uint8_t x566 = (x565 + x510);
- uint64_t x568, uint64_t x569 = mulx_u64(x12, x15);
- uint64_t x571, uint64_t x572 = mulx_u64(x12, x17);
- uint64_t x574, uint64_t x575 = mulx_u64(x12, x19);
- uint64_t x577, uint64_t x578 = mulx_u64(x12, x21);
- uint64_t x580, uint64_t x581 = mulx_u64(x12, x23);
- uint64_t x583, uint64_t x584 = mulx_u64(x12, x22);
- uint64_t x586, uint8_t x587 = addcarryx_u64(0x0, x569, x571);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x572, x574);
- uint64_t x592, uint8_t x593 = addcarryx_u64(x590, x575, x577);
- uint64_t x595, uint8_t x596 = addcarryx_u64(x593, x578, x580);
- uint64_t x598, uint8_t x599 = addcarryx_u64(x596, x581, x583);
- uint64_t x601, uint8_t _ = addcarryx_u64(0x0, x599, x584);
- uint64_t x604, uint8_t x605 = addcarryx_u64(0x0, x549, x568);
- uint64_t x607, uint8_t x608 = addcarryx_u64(x605, x552, x586);
- uint64_t x610, uint8_t x611 = addcarryx_u64(x608, x555, x589);
- uint64_t x613, uint8_t x614 = addcarryx_u64(x611, x558, x592);
- uint64_t x616, uint8_t x617 = addcarryx_u64(x614, x561, x595);
- uint64_t x619, uint8_t x620 = addcarryx_u64(x617, x564, x598);
- uint64_t x622, uint8_t x623 = addcarryx_u64(x620, x566, x601);
- uint64_t x625, uint64_t x626 = mulx_u64(x604, 0xffffffffffffffffL);
- uint64_t x628, uint64_t x629 = mulx_u64(x604, 0xffffffffffffffffL);
- uint64_t x631, uint64_t x632 = mulx_u64(x604, 0xfffffffdffffffffL);
- uint64_t x634, uint64_t x635 = mulx_u64(x604, 0xffffffffffffffffL);
- uint64_t x637, uint64_t x638 = mulx_u64(x604, 0xffffffffffffffffL);
- uint64_t x640, uint8_t x641 = mulx_u64_out_u8(x604, 0x3);
- uint64_t x643, uint8_t x644 = addcarryx_u64(0x0, x626, x628);
- uint64_t x646, uint8_t x647 = addcarryx_u64(x644, x629, x631);
- uint64_t x649, uint8_t x650 = addcarryx_u64(x647, x632, x634);
- uint64_t x652, uint8_t x653 = addcarryx_u64(x650, x635, x637);
- uint64_t x655, uint8_t x656 = addcarryx_u64(x653, x638, x640);
- uint8_t x657 = (x656 + x641);
- uint64_t _, uint8_t x660 = addcarryx_u64(0x0, x604, x625);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x607, x643);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x610, x646);
- uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x613, x649);
- uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x616, x652);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x619, x655);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x622, x657);
- uint8_t x679 = (x678 + x623);
- uint64_t x681, uint8_t x682 = subborrow_u64(0x0, x662, 0xffffffffffffffffL);
- uint64_t x684, uint8_t x685 = subborrow_u64(x682, x665, 0xffffffffffffffffL);
- uint64_t x687, uint8_t x688 = subborrow_u64(x685, x668, 0xfffffffdffffffffL);
- uint64_t x690, uint8_t x691 = subborrow_u64(x688, x671, 0xffffffffffffffffL);
- uint64_t x693, uint8_t x694 = subborrow_u64(x691, x674, 0xffffffffffffffffL);
- uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0x3);
- uint64_t _, uint8_t x700 = subborrow_u64(x697, x679, 0x0);
- uint64_t x701 = cmovznz64(x700, x696, x677);
- uint64_t x702 = cmovznz64(x700, x693, x674);
- uint64_t x703 = cmovznz64(x700, x690, x671);
- uint64_t x704 = cmovznz64(x700, x687, x668);
- uint64_t x705 = cmovznz64(x700, x684, x665);
- uint64_t x706 = cmovznz64(x700, x681, x662);
- return (x701, x702, x703, x704, x705, x706))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v
deleted file mode 100644
index f571e1a0a..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenz.c b/src/Specific/montgomery64_2e322m2e161m1/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenz.v b/src/Specific/montgomery64_2e322m2e161m1/fenz.v
deleted file mode 100644
index 8e0ce2259..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.log b/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v
deleted file mode 100644
index 42f8beda0..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feopp.c b/src/Specific/montgomery64_2e322m2e161m1/feopp.c
deleted file mode 100644
index 7445311c5..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffffL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xfffffffdffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint8_t x50 = ((uint8_t)x29 & 0x3);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feopp.v b/src/Specific/montgomery64_2e322m2e161m1/feopp.v
deleted file mode 100644
index 17eb220bf..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.log b/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.log
deleted file mode 100644
index 2dee04d64..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xfffffffdffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint8_t x50 = ((uint8_t)x29 & 0x3);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v
deleted file mode 100644
index 229c1c6f8..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesquare.c b/src/Specific/montgomery64_2e322m2e161m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesub.c b/src/Specific/montgomery64_2e322m2e161m1/fesub.c
deleted file mode 100644
index 587de6e27..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffffL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xfffffffdffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint8_t x63 = ((uint8_t)x42 & 0x3);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesub.v b/src/Specific/montgomery64_2e322m2e161m1/fesub.v
deleted file mode 100644
index 59faba08c..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.log b/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.log
deleted file mode 100644
index 3068ccc4e..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xfffffffdffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint8_t x63 = ((uint8_t)x42 & 0x3);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v b/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v
deleted file mode 100644
index 7c49fd5ff..000000000
--- a/src/Specific/montgomery64_2e322m2e161m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e322m2e161m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/CurveParameters.v
index 340e7f55a..340e7f55a 100644
--- a/src/Specific/montgomery64_2e322m2e161m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/Synthesis.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..414b2efaf
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/compiler.sh b/src/Specific/montgomery64_2e322m2e161m1_6limbs/compiler.sh
index 3c572a50c..3c572a50c 100755
--- a/src/Specific/montgomery64_2e322m2e161m1/compiler.sh
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e322m2e161m1/compilerxx.sh b/src/Specific/montgomery64_2e322m2e161m1_6limbs/compilerxx.sh
index d62948ee1..d62948ee1 100755
--- a/src/Specific/montgomery64_2e322m2e161m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feadd.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feadd.v
new file mode 100644
index 000000000..ff6d282d2
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..963e5e0a3
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.v
new file mode 100644
index 000000000..2c8b34a65
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..c8a68a640
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenz.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenz.v
new file mode 100644
index 000000000..2dae98686
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..7bcfc415e
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.v
new file mode 100644
index 000000000..c8ec1aa08
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..0b82855e5
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.v
new file mode 100644
index 000000000..de8d97b91
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..18b8f014d
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e322m2e161m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e322m2e161m1/py_interpreter.sh b/src/Specific/montgomery64_2e322m2e161m1_6limbs/py_interpreter.sh
index ec91a5000..ec91a5000 100755
--- a/src/Specific/montgomery64_2e322m2e161m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e336m17/Synthesis.v b/src/Specific/montgomery64_2e336m17/Synthesis.v
deleted file mode 100644
index 609b4e47e..000000000
--- a/src/Specific/montgomery64_2e336m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e336m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e336m17/feadd.c b/src/Specific/montgomery64_2e336m17/feadd.c
deleted file mode 100644
index 3d3730fc9..000000000
--- a/src/Specific/montgomery64_2e336m17/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffefL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m17/feadd.v b/src/Specific/montgomery64_2e336m17/feadd.v
deleted file mode 100644
index 5c58f9611..000000000
--- a/src/Specific/montgomery64_2e336m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e336m17/feaddDisplay.log b/src/Specific/montgomery64_2e336m17/feaddDisplay.log
deleted file mode 100644
index 12075332c..000000000
--- a/src/Specific/montgomery64_2e336m17/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffefL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m17/feaddDisplay.v b/src/Specific/montgomery64_2e336m17/feaddDisplay.v
deleted file mode 100644
index baeb5c9c7..000000000
--- a/src/Specific/montgomery64_2e336m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e336m17/femul.c b/src/Specific/montgomery64_2e336m17/femul.c
deleted file mode 100644
index fdc0e2bd4..000000000
--- a/src/Specific/montgomery64_2e336m17/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffffefL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0xffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffffefL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0xffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffffefL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0xffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffffefL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0xffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffffefL, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0xffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xf0f0f0f0f0f0f0f1L, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffffefL, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0xffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffffefL, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0xffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m17/femul.v b/src/Specific/montgomery64_2e336m17/femul.v
deleted file mode 100644
index 5bbd048f8..000000000
--- a/src/Specific/montgomery64_2e336m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e336m17/femulDisplay.log b/src/Specific/montgomery64_2e336m17/femulDisplay.log
deleted file mode 100644
index 491804734..000000000
--- a/src/Specific/montgomery64_2e336m17/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffffefL);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0xffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffffefL);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0xffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffffefL);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0xffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffffefL);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0xffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffffefL);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0xffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffffefL);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0xffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffffefL);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0xffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m17/femulDisplay.v b/src/Specific/montgomery64_2e336m17/femulDisplay.v
deleted file mode 100644
index f1629583c..000000000
--- a/src/Specific/montgomery64_2e336m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e336m17/fenz.c b/src/Specific/montgomery64_2e336m17/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e336m17/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m17/fenz.v b/src/Specific/montgomery64_2e336m17/fenz.v
deleted file mode 100644
index 64bbd970e..000000000
--- a/src/Specific/montgomery64_2e336m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e336m17/fenzDisplay.log b/src/Specific/montgomery64_2e336m17/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e336m17/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e336m17/fenzDisplay.v b/src/Specific/montgomery64_2e336m17/fenzDisplay.v
deleted file mode 100644
index e59286d73..000000000
--- a/src/Specific/montgomery64_2e336m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e336m17/feopp.c b/src/Specific/montgomery64_2e336m17/feopp.c
deleted file mode 100644
index c3255daf6..000000000
--- a/src/Specific/montgomery64_2e336m17/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffefL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m17/feopp.v b/src/Specific/montgomery64_2e336m17/feopp.v
deleted file mode 100644
index c14494e32..000000000
--- a/src/Specific/montgomery64_2e336m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e336m17/feoppDisplay.log b/src/Specific/montgomery64_2e336m17/feoppDisplay.log
deleted file mode 100644
index 272ed2bf5..000000000
--- a/src/Specific/montgomery64_2e336m17/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffefL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m17/feoppDisplay.v b/src/Specific/montgomery64_2e336m17/feoppDisplay.v
deleted file mode 100644
index db2f2557b..000000000
--- a/src/Specific/montgomery64_2e336m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e336m17/fesquare.c b/src/Specific/montgomery64_2e336m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e336m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e336m17/fesub.c b/src/Specific/montgomery64_2e336m17/fesub.c
deleted file mode 100644
index a0b2a3273..000000000
--- a/src/Specific/montgomery64_2e336m17/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffefL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m17/fesub.v b/src/Specific/montgomery64_2e336m17/fesub.v
deleted file mode 100644
index 5c2ee1cd6..000000000
--- a/src/Specific/montgomery64_2e336m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e336m17/fesubDisplay.log b/src/Specific/montgomery64_2e336m17/fesubDisplay.log
deleted file mode 100644
index 1c36f7753..000000000
--- a/src/Specific/montgomery64_2e336m17/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffefL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m17/fesubDisplay.v b/src/Specific/montgomery64_2e336m17/fesubDisplay.v
deleted file mode 100644
index 23a812d8c..000000000
--- a/src/Specific/montgomery64_2e336m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e336m17/CurveParameters.v b/src/Specific/montgomery64_2e336m17_6limbs/CurveParameters.v
index b0d15fb57..b0d15fb57 100644
--- a/src/Specific/montgomery64_2e336m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e336m17_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/Synthesis.v b/src/Specific/montgomery64_2e336m17_6limbs/Synthesis.v
new file mode 100644
index 000000000..1fd9783bf
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e336m17/compiler.sh b/src/Specific/montgomery64_2e336m17_6limbs/compiler.sh
index 111ac0ba3..111ac0ba3 100755
--- a/src/Specific/montgomery64_2e336m17/compiler.sh
+++ b/src/Specific/montgomery64_2e336m17_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e336m17/compilerxx.sh b/src/Specific/montgomery64_2e336m17_6limbs/compilerxx.sh
index e75ba425a..e75ba425a 100755
--- a/src/Specific/montgomery64_2e336m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e336m17_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/feadd.v b/src/Specific/montgomery64_2e336m17_6limbs/feadd.v
new file mode 100644
index 000000000..d2fda5116
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e336m17_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..2c16a1bfa
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/femul.v b/src/Specific/montgomery64_2e336m17_6limbs/femul.v
new file mode 100644
index 000000000..d5efc0842
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e336m17_6limbs/femulDisplay.v
new file mode 100644
index 000000000..7d4aa4e50
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/fenz.v b/src/Specific/montgomery64_2e336m17_6limbs/fenz.v
new file mode 100644
index 000000000..e1bfc11d7
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e336m17_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..1fa6d318c
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/feopp.v b/src/Specific/montgomery64_2e336m17_6limbs/feopp.v
new file mode 100644
index 000000000..14bfc46d8
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e336m17_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..2bb2ab58d
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/fesub.v b/src/Specific/montgomery64_2e336m17_6limbs/fesub.v
new file mode 100644
index 000000000..3407b2615
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e336m17_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e336m17_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..d568858aa
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m17_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m17_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e336m17/py_interpreter.sh b/src/Specific/montgomery64_2e336m17_6limbs/py_interpreter.sh
index 553c015ba..553c015ba 100755
--- a/src/Specific/montgomery64_2e336m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e336m17_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e336m3/Synthesis.v b/src/Specific/montgomery64_2e336m3/Synthesis.v
deleted file mode 100644
index b955d1dbe..000000000
--- a/src/Specific/montgomery64_2e336m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e336m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e336m3/feadd.c b/src/Specific/montgomery64_2e336m3/feadd.c
deleted file mode 100644
index f9e5f21b7..000000000
--- a/src/Specific/montgomery64_2e336m3/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xfffffffffffffffdL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m3/feadd.v b/src/Specific/montgomery64_2e336m3/feadd.v
deleted file mode 100644
index 5bcc2a371..000000000
--- a/src/Specific/montgomery64_2e336m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e336m3/feaddDisplay.log b/src/Specific/montgomery64_2e336m3/feaddDisplay.log
deleted file mode 100644
index bba653e9a..000000000
--- a/src/Specific/montgomery64_2e336m3/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xfffffffffffffffdL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m3/feaddDisplay.v b/src/Specific/montgomery64_2e336m3/feaddDisplay.v
deleted file mode 100644
index d08afab85..000000000
--- a/src/Specific/montgomery64_2e336m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e336m3/femul.c b/src/Specific/montgomery64_2e336m3/femul.c
deleted file mode 100644
index ef7679b78..000000000
--- a/src/Specific/montgomery64_2e336m3/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xfffffffffffffffdL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0xffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xfffffffffffffffdL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0xffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xfffffffffffffffdL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0xffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xfffffffffffffffdL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0xffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xfffffffffffffffdL, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0xffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xaaaaaaaaaaaaaaabL, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xfffffffffffffffdL, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0xffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xfffffffffffffffdL, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0xffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m3/femul.v b/src/Specific/montgomery64_2e336m3/femul.v
deleted file mode 100644
index a3d2cbda2..000000000
--- a/src/Specific/montgomery64_2e336m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e336m3/femulDisplay.log b/src/Specific/montgomery64_2e336m3/femulDisplay.log
deleted file mode 100644
index 329612ea5..000000000
--- a/src/Specific/montgomery64_2e336m3/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xaaaaaaaaaaaaaaabL);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xfffffffffffffffdL);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0xffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xaaaaaaaaaaaaaaabL);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xfffffffffffffffdL);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0xffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xaaaaaaaaaaaaaaabL);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xfffffffffffffffdL);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0xffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xaaaaaaaaaaaaaaabL);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xfffffffffffffffdL);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0xffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xaaaaaaaaaaaaaaabL);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xfffffffffffffffdL);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0xffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xaaaaaaaaaaaaaaabL);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xfffffffffffffffdL);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0xffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xfffffffffffffffdL);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0xffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m3/femulDisplay.v b/src/Specific/montgomery64_2e336m3/femulDisplay.v
deleted file mode 100644
index a339d1d03..000000000
--- a/src/Specific/montgomery64_2e336m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e336m3/fenz.c b/src/Specific/montgomery64_2e336m3/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e336m3/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m3/fenz.v b/src/Specific/montgomery64_2e336m3/fenz.v
deleted file mode 100644
index 2a55c67d2..000000000
--- a/src/Specific/montgomery64_2e336m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e336m3/fenzDisplay.log b/src/Specific/montgomery64_2e336m3/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e336m3/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e336m3/fenzDisplay.v b/src/Specific/montgomery64_2e336m3/fenzDisplay.v
deleted file mode 100644
index 4765ba239..000000000
--- a/src/Specific/montgomery64_2e336m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e336m3/feopp.c b/src/Specific/montgomery64_2e336m3/feopp.c
deleted file mode 100644
index 17bbd7bd0..000000000
--- a/src/Specific/montgomery64_2e336m3/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffffdL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m3/feopp.v b/src/Specific/montgomery64_2e336m3/feopp.v
deleted file mode 100644
index 123a66615..000000000
--- a/src/Specific/montgomery64_2e336m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e336m3/feoppDisplay.log b/src/Specific/montgomery64_2e336m3/feoppDisplay.log
deleted file mode 100644
index 1591801df..000000000
--- a/src/Specific/montgomery64_2e336m3/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffffdL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m3/feoppDisplay.v b/src/Specific/montgomery64_2e336m3/feoppDisplay.v
deleted file mode 100644
index ee0af9765..000000000
--- a/src/Specific/montgomery64_2e336m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e336m3/fesquare.c b/src/Specific/montgomery64_2e336m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e336m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e336m3/fesub.c b/src/Specific/montgomery64_2e336m3/fesub.c
deleted file mode 100644
index a765dc44e..000000000
--- a/src/Specific/montgomery64_2e336m3/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xfffffffffffffffdL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e336m3/fesub.v b/src/Specific/montgomery64_2e336m3/fesub.v
deleted file mode 100644
index 4b2f1fb26..000000000
--- a/src/Specific/montgomery64_2e336m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e336m3/fesubDisplay.log b/src/Specific/montgomery64_2e336m3/fesubDisplay.log
deleted file mode 100644
index ca77cd145..000000000
--- a/src/Specific/montgomery64_2e336m3/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xfffffffffffffffdL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e336m3/fesubDisplay.v b/src/Specific/montgomery64_2e336m3/fesubDisplay.v
deleted file mode 100644
index a14824ba5..000000000
--- a/src/Specific/montgomery64_2e336m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e336m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e336m3/CurveParameters.v b/src/Specific/montgomery64_2e336m3_6limbs/CurveParameters.v
index eb90a6f99..eb90a6f99 100644
--- a/src/Specific/montgomery64_2e336m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e336m3_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/Synthesis.v b/src/Specific/montgomery64_2e336m3_6limbs/Synthesis.v
new file mode 100644
index 000000000..a006a946a
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e336m3/compiler.sh b/src/Specific/montgomery64_2e336m3_6limbs/compiler.sh
index 34d3a8b0d..34d3a8b0d 100755
--- a/src/Specific/montgomery64_2e336m3/compiler.sh
+++ b/src/Specific/montgomery64_2e336m3_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e336m3/compilerxx.sh b/src/Specific/montgomery64_2e336m3_6limbs/compilerxx.sh
index bec8691e9..bec8691e9 100755
--- a/src/Specific/montgomery64_2e336m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e336m3_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/feadd.v b/src/Specific/montgomery64_2e336m3_6limbs/feadd.v
new file mode 100644
index 000000000..9d646bae3
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e336m3_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..c52f98147
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/femul.v b/src/Specific/montgomery64_2e336m3_6limbs/femul.v
new file mode 100644
index 000000000..2d87f54f2
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e336m3_6limbs/femulDisplay.v
new file mode 100644
index 000000000..e6e5755ee
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/fenz.v b/src/Specific/montgomery64_2e336m3_6limbs/fenz.v
new file mode 100644
index 000000000..c1380cc71
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e336m3_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..c914f46d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/feopp.v b/src/Specific/montgomery64_2e336m3_6limbs/feopp.v
new file mode 100644
index 000000000..d7e0acaa0
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e336m3_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..8050722a8
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/fesub.v b/src/Specific/montgomery64_2e336m3_6limbs/fesub.v
new file mode 100644
index 000000000..686c84bc5
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e336m3_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e336m3_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..bbb417cc5
--- /dev/null
+++ b/src/Specific/montgomery64_2e336m3_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e336m3_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e336m3/py_interpreter.sh b/src/Specific/montgomery64_2e336m3_6limbs/py_interpreter.sh
index 3b939c233..3b939c233 100755
--- a/src/Specific/montgomery64_2e336m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e336m3_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e338m15/Synthesis.v b/src/Specific/montgomery64_2e338m15/Synthesis.v
deleted file mode 100644
index ca8c098ff..000000000
--- a/src/Specific/montgomery64_2e338m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e338m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e338m15/feadd.c b/src/Specific/montgomery64_2e338m15/feadd.c
deleted file mode 100644
index 32e3e705b..000000000
--- a/src/Specific/montgomery64_2e338m15/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xfffffffffffffff1L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x3ffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e338m15/feadd.v b/src/Specific/montgomery64_2e338m15/feadd.v
deleted file mode 100644
index f8e165b1a..000000000
--- a/src/Specific/montgomery64_2e338m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e338m15/feaddDisplay.log b/src/Specific/montgomery64_2e338m15/feaddDisplay.log
deleted file mode 100644
index 5336bcf27..000000000
--- a/src/Specific/montgomery64_2e338m15/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xfffffffffffffff1L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x3ffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e338m15/feaddDisplay.v b/src/Specific/montgomery64_2e338m15/feaddDisplay.v
deleted file mode 100644
index 47ff20d43..000000000
--- a/src/Specific/montgomery64_2e338m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e338m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e338m15/femul.c b/src/Specific/montgomery64_2e338m15/femul.c
deleted file mode 100644
index 90a1d477d..000000000
--- a/src/Specific/montgomery64_2e338m15/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xfffffffffffffff1L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x3ffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xfffffffffffffff1L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x3ffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xfffffffffffffff1L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x3ffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xfffffffffffffff1L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x3ffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xfffffffffffffff1L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x3ffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xeeeeeeeeeeeeeeefL, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xfffffffffffffff1L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x3ffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xfffffffffffffff1L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x3ffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e338m15/femul.v b/src/Specific/montgomery64_2e338m15/femul.v
deleted file mode 100644
index db8789ff7..000000000
--- a/src/Specific/montgomery64_2e338m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e338m15/femulDisplay.log b/src/Specific/montgomery64_2e338m15/femulDisplay.log
deleted file mode 100644
index fda5a2d0a..000000000
--- a/src/Specific/montgomery64_2e338m15/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xeeeeeeeeeeeeeeefL);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xfffffffffffffff1L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x3ffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xeeeeeeeeeeeeeeefL);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xfffffffffffffff1L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x3ffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xeeeeeeeeeeeeeeefL);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xfffffffffffffff1L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x3ffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xeeeeeeeeeeeeeeefL);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xfffffffffffffff1L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x3ffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xeeeeeeeeeeeeeeefL);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xfffffffffffffff1L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x3ffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xeeeeeeeeeeeeeeefL);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xfffffffffffffff1L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x3ffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xfffffffffffffff1L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x3ffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e338m15/femulDisplay.v b/src/Specific/montgomery64_2e338m15/femulDisplay.v
deleted file mode 100644
index e7afecd38..000000000
--- a/src/Specific/montgomery64_2e338m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e338m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e338m15/fenz.c b/src/Specific/montgomery64_2e338m15/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e338m15/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e338m15/fenz.v b/src/Specific/montgomery64_2e338m15/fenz.v
deleted file mode 100644
index c06cca77d..000000000
--- a/src/Specific/montgomery64_2e338m15/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e338m15/fenzDisplay.log b/src/Specific/montgomery64_2e338m15/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e338m15/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e338m15/fenzDisplay.v b/src/Specific/montgomery64_2e338m15/fenzDisplay.v
deleted file mode 100644
index ca802b60c..000000000
--- a/src/Specific/montgomery64_2e338m15/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e338m15.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e338m15/feopp.c b/src/Specific/montgomery64_2e338m15/feopp.c
deleted file mode 100644
index 0ded68efb..000000000
--- a/src/Specific/montgomery64_2e338m15/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffff1L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x3ffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e338m15/feopp.v b/src/Specific/montgomery64_2e338m15/feopp.v
deleted file mode 100644
index 06713df34..000000000
--- a/src/Specific/montgomery64_2e338m15/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e338m15/feoppDisplay.log b/src/Specific/montgomery64_2e338m15/feoppDisplay.log
deleted file mode 100644
index eadb1d5a3..000000000
--- a/src/Specific/montgomery64_2e338m15/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffff1L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x3ffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e338m15/feoppDisplay.v b/src/Specific/montgomery64_2e338m15/feoppDisplay.v
deleted file mode 100644
index 9d629a548..000000000
--- a/src/Specific/montgomery64_2e338m15/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e338m15.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e338m15/fesquare.c b/src/Specific/montgomery64_2e338m15/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e338m15/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e338m15/fesub.c b/src/Specific/montgomery64_2e338m15/fesub.c
deleted file mode 100644
index 5fbb3bd1e..000000000
--- a/src/Specific/montgomery64_2e338m15/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xfffffffffffffff1L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x3ffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e338m15/fesub.v b/src/Specific/montgomery64_2e338m15/fesub.v
deleted file mode 100644
index 62271c3ac..000000000
--- a/src/Specific/montgomery64_2e338m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e338m15/fesubDisplay.log b/src/Specific/montgomery64_2e338m15/fesubDisplay.log
deleted file mode 100644
index 1a34e9483..000000000
--- a/src/Specific/montgomery64_2e338m15/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xfffffffffffffff1L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x3ffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e338m15/fesubDisplay.v b/src/Specific/montgomery64_2e338m15/fesubDisplay.v
deleted file mode 100644
index 8edb4c761..000000000
--- a/src/Specific/montgomery64_2e338m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e338m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e338m15/CurveParameters.v b/src/Specific/montgomery64_2e338m15_6limbs/CurveParameters.v
index 2aca237b6..2aca237b6 100644
--- a/src/Specific/montgomery64_2e338m15/CurveParameters.v
+++ b/src/Specific/montgomery64_2e338m15_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/Synthesis.v b/src/Specific/montgomery64_2e338m15_6limbs/Synthesis.v
new file mode 100644
index 000000000..cb1dae8df
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e338m15/compiler.sh b/src/Specific/montgomery64_2e338m15_6limbs/compiler.sh
index f79c4aae2..f79c4aae2 100755
--- a/src/Specific/montgomery64_2e338m15/compiler.sh
+++ b/src/Specific/montgomery64_2e338m15_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e338m15/compilerxx.sh b/src/Specific/montgomery64_2e338m15_6limbs/compilerxx.sh
index cb0403194..cb0403194 100755
--- a/src/Specific/montgomery64_2e338m15/compilerxx.sh
+++ b/src/Specific/montgomery64_2e338m15_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/feadd.v b/src/Specific/montgomery64_2e338m15_6limbs/feadd.v
new file mode 100644
index 000000000..38cc76f2a
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e338m15_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..851a9efb1
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/femul.v b/src/Specific/montgomery64_2e338m15_6limbs/femul.v
new file mode 100644
index 000000000..1261fa7ce
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e338m15_6limbs/femulDisplay.v
new file mode 100644
index 000000000..7859aab29
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/fenz.v b/src/Specific/montgomery64_2e338m15_6limbs/fenz.v
new file mode 100644
index 000000000..7d51939bd
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e338m15_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..5342b4d9a
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/feopp.v b/src/Specific/montgomery64_2e338m15_6limbs/feopp.v
new file mode 100644
index 000000000..2ef0bcf8a
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e338m15_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..4ae43c87b
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/fesub.v b/src/Specific/montgomery64_2e338m15_6limbs/fesub.v
new file mode 100644
index 000000000..8a750d9d2
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e338m15_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e338m15_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..01ad028a6
--- /dev/null
+++ b/src/Specific/montgomery64_2e338m15_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e338m15_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e338m15/py_interpreter.sh b/src/Specific/montgomery64_2e338m15_6limbs/py_interpreter.sh
index b1c53f325..b1c53f325 100755
--- a/src/Specific/montgomery64_2e338m15/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e338m15_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e369m25/Synthesis.v b/src/Specific/montgomery64_2e369m25/Synthesis.v
deleted file mode 100644
index a4cce3b42..000000000
--- a/src/Specific/montgomery64_2e369m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e369m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e369m25/feadd.c b/src/Specific/montgomery64_2e369m25/feadd.c
deleted file mode 100644
index 45754f978..000000000
--- a/src/Specific/montgomery64_2e369m25/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffe7L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x1ffffffffffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e369m25/feadd.v b/src/Specific/montgomery64_2e369m25/feadd.v
deleted file mode 100644
index 84e528f49..000000000
--- a/src/Specific/montgomery64_2e369m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e369m25/feaddDisplay.log b/src/Specific/montgomery64_2e369m25/feaddDisplay.log
deleted file mode 100644
index cacc80702..000000000
--- a/src/Specific/montgomery64_2e369m25/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffe7L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x1ffffffffffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e369m25/feaddDisplay.v b/src/Specific/montgomery64_2e369m25/feaddDisplay.v
deleted file mode 100644
index d45422e04..000000000
--- a/src/Specific/montgomery64_2e369m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e369m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e369m25/femul.c b/src/Specific/montgomery64_2e369m25/femul.c
deleted file mode 100644
index 5ab804164..000000000
--- a/src/Specific/montgomery64_2e369m25/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffffe7L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x1ffffffffffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffffe7L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x1ffffffffffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffffe7L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x1ffffffffffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffffe7L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x1ffffffffffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffffe7L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x1ffffffffffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x8f5c28f5c28f5c29L, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffffe7L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x1ffffffffffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffffe7L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x1ffffffffffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e369m25/femul.v b/src/Specific/montgomery64_2e369m25/femul.v
deleted file mode 100644
index 0f3eb76c3..000000000
--- a/src/Specific/montgomery64_2e369m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e369m25/femulDisplay.log b/src/Specific/montgomery64_2e369m25/femulDisplay.log
deleted file mode 100644
index c0898b04c..000000000
--- a/src/Specific/montgomery64_2e369m25/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x8f5c28f5c28f5c29L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffffe7L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x1ffffffffffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0x8f5c28f5c28f5c29L);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffffe7L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x1ffffffffffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0x8f5c28f5c28f5c29L);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffffe7L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x1ffffffffffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0x8f5c28f5c28f5c29L);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffffe7L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x1ffffffffffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0x8f5c28f5c28f5c29L);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffffe7L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x1ffffffffffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0x8f5c28f5c28f5c29L);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffffe7L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x1ffffffffffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffffe7L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x1ffffffffffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e369m25/femulDisplay.v b/src/Specific/montgomery64_2e369m25/femulDisplay.v
deleted file mode 100644
index 07837925a..000000000
--- a/src/Specific/montgomery64_2e369m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e369m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e369m25/fenz.c b/src/Specific/montgomery64_2e369m25/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e369m25/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e369m25/fenz.v b/src/Specific/montgomery64_2e369m25/fenz.v
deleted file mode 100644
index f654a97fb..000000000
--- a/src/Specific/montgomery64_2e369m25/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e369m25/fenzDisplay.log b/src/Specific/montgomery64_2e369m25/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e369m25/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e369m25/fenzDisplay.v b/src/Specific/montgomery64_2e369m25/fenzDisplay.v
deleted file mode 100644
index 0e800f3e9..000000000
--- a/src/Specific/montgomery64_2e369m25/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e369m25.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e369m25/feopp.c b/src/Specific/montgomery64_2e369m25/feopp.c
deleted file mode 100644
index 894e0aa8a..000000000
--- a/src/Specific/montgomery64_2e369m25/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffe7L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x1ffffffffffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e369m25/feopp.v b/src/Specific/montgomery64_2e369m25/feopp.v
deleted file mode 100644
index 75b5da31b..000000000
--- a/src/Specific/montgomery64_2e369m25/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e369m25/feoppDisplay.log b/src/Specific/montgomery64_2e369m25/feoppDisplay.log
deleted file mode 100644
index b026fa121..000000000
--- a/src/Specific/montgomery64_2e369m25/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffe7L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x1ffffffffffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e369m25/feoppDisplay.v b/src/Specific/montgomery64_2e369m25/feoppDisplay.v
deleted file mode 100644
index 8ef0497aa..000000000
--- a/src/Specific/montgomery64_2e369m25/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e369m25.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e369m25/fesquare.c b/src/Specific/montgomery64_2e369m25/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e369m25/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e369m25/fesub.c b/src/Specific/montgomery64_2e369m25/fesub.c
deleted file mode 100644
index f1c7b6a7b..000000000
--- a/src/Specific/montgomery64_2e369m25/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffe7L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x1ffffffffffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e369m25/fesub.v b/src/Specific/montgomery64_2e369m25/fesub.v
deleted file mode 100644
index d927a4514..000000000
--- a/src/Specific/montgomery64_2e369m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e369m25/fesubDisplay.log b/src/Specific/montgomery64_2e369m25/fesubDisplay.log
deleted file mode 100644
index 4b3eaa015..000000000
--- a/src/Specific/montgomery64_2e369m25/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffe7L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x1ffffffffffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e369m25/fesubDisplay.v b/src/Specific/montgomery64_2e369m25/fesubDisplay.v
deleted file mode 100644
index 3b2376533..000000000
--- a/src/Specific/montgomery64_2e369m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e369m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e369m25/CurveParameters.v b/src/Specific/montgomery64_2e369m25_6limbs/CurveParameters.v
index 5cddeef19..5cddeef19 100644
--- a/src/Specific/montgomery64_2e369m25/CurveParameters.v
+++ b/src/Specific/montgomery64_2e369m25_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/Synthesis.v b/src/Specific/montgomery64_2e369m25_6limbs/Synthesis.v
new file mode 100644
index 000000000..e6e41bb51
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e369m25/compiler.sh b/src/Specific/montgomery64_2e369m25_6limbs/compiler.sh
index a43aa2770..a43aa2770 100755
--- a/src/Specific/montgomery64_2e369m25/compiler.sh
+++ b/src/Specific/montgomery64_2e369m25_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e369m25/compilerxx.sh b/src/Specific/montgomery64_2e369m25_6limbs/compilerxx.sh
index 0da399c57..0da399c57 100755
--- a/src/Specific/montgomery64_2e369m25/compilerxx.sh
+++ b/src/Specific/montgomery64_2e369m25_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/feadd.v b/src/Specific/montgomery64_2e369m25_6limbs/feadd.v
new file mode 100644
index 000000000..d4b7a3ec8
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e369m25_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..c0d1571c2
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/femul.v b/src/Specific/montgomery64_2e369m25_6limbs/femul.v
new file mode 100644
index 000000000..081ad3654
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e369m25_6limbs/femulDisplay.v
new file mode 100644
index 000000000..f78c4a083
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/fenz.v b/src/Specific/montgomery64_2e369m25_6limbs/fenz.v
new file mode 100644
index 000000000..0126b8fd1
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e369m25_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..87fa839a0
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/feopp.v b/src/Specific/montgomery64_2e369m25_6limbs/feopp.v
new file mode 100644
index 000000000..aca02740b
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e369m25_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..3a870069d
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/fesub.v b/src/Specific/montgomery64_2e369m25_6limbs/fesub.v
new file mode 100644
index 000000000..c3902efc8
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e369m25_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e369m25_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..d7819d83b
--- /dev/null
+++ b/src/Specific/montgomery64_2e369m25_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e369m25_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e369m25/py_interpreter.sh b/src/Specific/montgomery64_2e369m25_6limbs/py_interpreter.sh
index ac96489c7..ac96489c7 100755
--- a/src/Specific/montgomery64_2e369m25/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e369m25_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e379m19/Synthesis.v b/src/Specific/montgomery64_2e379m19/Synthesis.v
deleted file mode 100644
index f2fd8bce0..000000000
--- a/src/Specific/montgomery64_2e379m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e379m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e379m19/feadd.c b/src/Specific/montgomery64_2e379m19/feadd.c
deleted file mode 100644
index cd9f98c5f..000000000
--- a/src/Specific/montgomery64_2e379m19/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffedL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x7ffffffffffffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e379m19/feadd.v b/src/Specific/montgomery64_2e379m19/feadd.v
deleted file mode 100644
index 0bcd0e02e..000000000
--- a/src/Specific/montgomery64_2e379m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e379m19/feaddDisplay.log b/src/Specific/montgomery64_2e379m19/feaddDisplay.log
deleted file mode 100644
index 5c48f68c5..000000000
--- a/src/Specific/montgomery64_2e379m19/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffedL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x7ffffffffffffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e379m19/feaddDisplay.v b/src/Specific/montgomery64_2e379m19/feaddDisplay.v
deleted file mode 100644
index 76342dbe4..000000000
--- a/src/Specific/montgomery64_2e379m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e379m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e379m19/femul.c b/src/Specific/montgomery64_2e379m19/femul.c
deleted file mode 100644
index cdf5ff0fc..000000000
--- a/src/Specific/montgomery64_2e379m19/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x86bca1af286bca1bL, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffffedL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x7ffffffffffffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x86bca1af286bca1bL, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffffedL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x7ffffffffffffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x86bca1af286bca1bL, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffffedL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x7ffffffffffffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x86bca1af286bca1bL, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffffedL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x7ffffffffffffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x86bca1af286bca1bL, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffffedL, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x7ffffffffffffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x86bca1af286bca1bL, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffffedL, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x7ffffffffffffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffffedL, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x7ffffffffffffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e379m19/femul.v b/src/Specific/montgomery64_2e379m19/femul.v
deleted file mode 100644
index cf709a717..000000000
--- a/src/Specific/montgomery64_2e379m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e379m19/femulDisplay.log b/src/Specific/montgomery64_2e379m19/femulDisplay.log
deleted file mode 100644
index 5154ce6bd..000000000
--- a/src/Specific/montgomery64_2e379m19/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x86bca1af286bca1bL);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffffedL);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x7ffffffffffffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0x86bca1af286bca1bL);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffffedL);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x7ffffffffffffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0x86bca1af286bca1bL);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffffedL);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x7ffffffffffffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0x86bca1af286bca1bL);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffffedL);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x7ffffffffffffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0x86bca1af286bca1bL);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffffedL);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x7ffffffffffffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0x86bca1af286bca1bL);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffffedL);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x7ffffffffffffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffffedL);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x7ffffffffffffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e379m19/femulDisplay.v b/src/Specific/montgomery64_2e379m19/femulDisplay.v
deleted file mode 100644
index addc7b614..000000000
--- a/src/Specific/montgomery64_2e379m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e379m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e379m19/fenz.c b/src/Specific/montgomery64_2e379m19/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e379m19/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e379m19/fenz.v b/src/Specific/montgomery64_2e379m19/fenz.v
deleted file mode 100644
index 38bb484dc..000000000
--- a/src/Specific/montgomery64_2e379m19/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e379m19/fenzDisplay.log b/src/Specific/montgomery64_2e379m19/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e379m19/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e379m19/fenzDisplay.v b/src/Specific/montgomery64_2e379m19/fenzDisplay.v
deleted file mode 100644
index 097d11716..000000000
--- a/src/Specific/montgomery64_2e379m19/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e379m19.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e379m19/feopp.c b/src/Specific/montgomery64_2e379m19/feopp.c
deleted file mode 100644
index 27f51512a..000000000
--- a/src/Specific/montgomery64_2e379m19/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffedL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x7ffffffffffffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e379m19/feopp.v b/src/Specific/montgomery64_2e379m19/feopp.v
deleted file mode 100644
index 0cd04ddc1..000000000
--- a/src/Specific/montgomery64_2e379m19/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e379m19/feoppDisplay.log b/src/Specific/montgomery64_2e379m19/feoppDisplay.log
deleted file mode 100644
index cf97d003d..000000000
--- a/src/Specific/montgomery64_2e379m19/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffedL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x7ffffffffffffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e379m19/feoppDisplay.v b/src/Specific/montgomery64_2e379m19/feoppDisplay.v
deleted file mode 100644
index 74b6fecf1..000000000
--- a/src/Specific/montgomery64_2e379m19/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e379m19.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e379m19/fesquare.c b/src/Specific/montgomery64_2e379m19/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e379m19/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e379m19/fesub.c b/src/Specific/montgomery64_2e379m19/fesub.c
deleted file mode 100644
index a3e301761..000000000
--- a/src/Specific/montgomery64_2e379m19/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffedL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x7ffffffffffffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e379m19/fesub.v b/src/Specific/montgomery64_2e379m19/fesub.v
deleted file mode 100644
index 813781ce8..000000000
--- a/src/Specific/montgomery64_2e379m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e379m19/fesubDisplay.log b/src/Specific/montgomery64_2e379m19/fesubDisplay.log
deleted file mode 100644
index c242d0109..000000000
--- a/src/Specific/montgomery64_2e379m19/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffedL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x7ffffffffffffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e379m19/fesubDisplay.v b/src/Specific/montgomery64_2e379m19/fesubDisplay.v
deleted file mode 100644
index 077904d7d..000000000
--- a/src/Specific/montgomery64_2e379m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e379m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e379m19/CurveParameters.v b/src/Specific/montgomery64_2e379m19_6limbs/CurveParameters.v
index 47dad6280..47dad6280 100644
--- a/src/Specific/montgomery64_2e379m19/CurveParameters.v
+++ b/src/Specific/montgomery64_2e379m19_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/Synthesis.v b/src/Specific/montgomery64_2e379m19_6limbs/Synthesis.v
new file mode 100644
index 000000000..307ac87c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e379m19/compiler.sh b/src/Specific/montgomery64_2e379m19_6limbs/compiler.sh
index 57c490530..57c490530 100755
--- a/src/Specific/montgomery64_2e379m19/compiler.sh
+++ b/src/Specific/montgomery64_2e379m19_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e379m19/compilerxx.sh b/src/Specific/montgomery64_2e379m19_6limbs/compilerxx.sh
index ed48cc9c4..ed48cc9c4 100755
--- a/src/Specific/montgomery64_2e379m19/compilerxx.sh
+++ b/src/Specific/montgomery64_2e379m19_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/feadd.v b/src/Specific/montgomery64_2e379m19_6limbs/feadd.v
new file mode 100644
index 000000000..d2e4243ed
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e379m19_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..52be7bff7
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/femul.v b/src/Specific/montgomery64_2e379m19_6limbs/femul.v
new file mode 100644
index 000000000..3bf9fed05
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e379m19_6limbs/femulDisplay.v
new file mode 100644
index 000000000..9faed2f1c
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/fenz.v b/src/Specific/montgomery64_2e379m19_6limbs/fenz.v
new file mode 100644
index 000000000..adc795c4d
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e379m19_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..8535ad120
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/feopp.v b/src/Specific/montgomery64_2e379m19_6limbs/feopp.v
new file mode 100644
index 000000000..e56046afb
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e379m19_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..a8a14e428
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/fesub.v b/src/Specific/montgomery64_2e379m19_6limbs/fesub.v
new file mode 100644
index 000000000..95fdc36cf
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e379m19_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e379m19_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..86df9b001
--- /dev/null
+++ b/src/Specific/montgomery64_2e379m19_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e379m19_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e379m19/py_interpreter.sh b/src/Specific/montgomery64_2e379m19_6limbs/py_interpreter.sh
index a12fc0ea5..a12fc0ea5 100755
--- a/src/Specific/montgomery64_2e379m19/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e379m19_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e382m105/Synthesis.v b/src/Specific/montgomery64_2e382m105/Synthesis.v
deleted file mode 100644
index 78128e63a..000000000
--- a/src/Specific/montgomery64_2e382m105/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e382m105.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e382m105/feadd.c b/src/Specific/montgomery64_2e382m105/feadd.c
deleted file mode 100644
index d153cc986..000000000
--- a/src/Specific/montgomery64_2e382m105/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffff97L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x3fffffffffffffff, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e382m105/feadd.v b/src/Specific/montgomery64_2e382m105/feadd.v
deleted file mode 100644
index bbd98c54b..000000000
--- a/src/Specific/montgomery64_2e382m105/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e382m105/feaddDisplay.log b/src/Specific/montgomery64_2e382m105/feaddDisplay.log
deleted file mode 100644
index ca32ff087..000000000
--- a/src/Specific/montgomery64_2e382m105/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffff97L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x3fffffffffffffff);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e382m105/feaddDisplay.v b/src/Specific/montgomery64_2e382m105/feaddDisplay.v
deleted file mode 100644
index 27995c584..000000000
--- a/src/Specific/montgomery64_2e382m105/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e382m105.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e382m105/femul.c b/src/Specific/montgomery64_2e382m105/femul.c
deleted file mode 100644
index c18796dcb..000000000
--- a/src/Specific/montgomery64_2e382m105/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffff97L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x3fffffffffffffff, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffff97L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x3fffffffffffffff, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffff97L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x3fffffffffffffff, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffff97L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x3fffffffffffffff, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffff97L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x3fffffffffffffff, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x8fd8fd8fd8fd8fd9L, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffff97L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x3fffffffffffffff, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffff97L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x3fffffffffffffff, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e382m105/femul.v b/src/Specific/montgomery64_2e382m105/femul.v
deleted file mode 100644
index fad8e7fec..000000000
--- a/src/Specific/montgomery64_2e382m105/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e382m105/femulDisplay.log b/src/Specific/montgomery64_2e382m105/femulDisplay.log
deleted file mode 100644
index 473609891..000000000
--- a/src/Specific/montgomery64_2e382m105/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffff97L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x3fffffffffffffff);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffff97L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x3fffffffffffffff);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffff97L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x3fffffffffffffff);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffff97L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x3fffffffffffffff);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffff97L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x3fffffffffffffff);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0x8fd8fd8fd8fd8fd9L);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffff97L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x3fffffffffffffff);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffff97L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x3fffffffffffffff);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e382m105/femulDisplay.v b/src/Specific/montgomery64_2e382m105/femulDisplay.v
deleted file mode 100644
index 696487420..000000000
--- a/src/Specific/montgomery64_2e382m105/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e382m105.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e382m105/fenz.c b/src/Specific/montgomery64_2e382m105/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e382m105/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e382m105/fenz.v b/src/Specific/montgomery64_2e382m105/fenz.v
deleted file mode 100644
index 3b41a8701..000000000
--- a/src/Specific/montgomery64_2e382m105/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e382m105/fenzDisplay.log b/src/Specific/montgomery64_2e382m105/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e382m105/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e382m105/fenzDisplay.v b/src/Specific/montgomery64_2e382m105/fenzDisplay.v
deleted file mode 100644
index 9449ed727..000000000
--- a/src/Specific/montgomery64_2e382m105/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e382m105.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e382m105/feopp.c b/src/Specific/montgomery64_2e382m105/feopp.c
deleted file mode 100644
index 8c3f46737..000000000
--- a/src/Specific/montgomery64_2e382m105/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffff97L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x3fffffffffffffff);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e382m105/feopp.v b/src/Specific/montgomery64_2e382m105/feopp.v
deleted file mode 100644
index 272836734..000000000
--- a/src/Specific/montgomery64_2e382m105/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e382m105/feoppDisplay.log b/src/Specific/montgomery64_2e382m105/feoppDisplay.log
deleted file mode 100644
index a9d8ca2d7..000000000
--- a/src/Specific/montgomery64_2e382m105/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffff97L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x3fffffffffffffff);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e382m105/feoppDisplay.v b/src/Specific/montgomery64_2e382m105/feoppDisplay.v
deleted file mode 100644
index 47d29b50a..000000000
--- a/src/Specific/montgomery64_2e382m105/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e382m105.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e382m105/fesquare.c b/src/Specific/montgomery64_2e382m105/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e382m105/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e382m105/fesub.c b/src/Specific/montgomery64_2e382m105/fesub.c
deleted file mode 100644
index d4902b9b9..000000000
--- a/src/Specific/montgomery64_2e382m105/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffff97L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x3fffffffffffffff);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e382m105/fesub.v b/src/Specific/montgomery64_2e382m105/fesub.v
deleted file mode 100644
index 80b4b1ae3..000000000
--- a/src/Specific/montgomery64_2e382m105/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e382m105/fesubDisplay.log b/src/Specific/montgomery64_2e382m105/fesubDisplay.log
deleted file mode 100644
index 9669d06c8..000000000
--- a/src/Specific/montgomery64_2e382m105/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffff97L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x3fffffffffffffff);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e382m105/fesubDisplay.v b/src/Specific/montgomery64_2e382m105/fesubDisplay.v
deleted file mode 100644
index 09ef67956..000000000
--- a/src/Specific/montgomery64_2e382m105/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e382m105.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e382m105/CurveParameters.v b/src/Specific/montgomery64_2e382m105_6limbs/CurveParameters.v
index 3a16d34a1..3a16d34a1 100644
--- a/src/Specific/montgomery64_2e382m105/CurveParameters.v
+++ b/src/Specific/montgomery64_2e382m105_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/Synthesis.v b/src/Specific/montgomery64_2e382m105_6limbs/Synthesis.v
new file mode 100644
index 000000000..c34ff4ad8
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e382m105/compiler.sh b/src/Specific/montgomery64_2e382m105_6limbs/compiler.sh
index 12a288410..12a288410 100755
--- a/src/Specific/montgomery64_2e382m105/compiler.sh
+++ b/src/Specific/montgomery64_2e382m105_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e382m105/compilerxx.sh b/src/Specific/montgomery64_2e382m105_6limbs/compilerxx.sh
index 2dfda44f9..2dfda44f9 100755
--- a/src/Specific/montgomery64_2e382m105/compilerxx.sh
+++ b/src/Specific/montgomery64_2e382m105_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/feadd.v b/src/Specific/montgomery64_2e382m105_6limbs/feadd.v
new file mode 100644
index 000000000..255f7be00
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e382m105_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..13a071768
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/femul.v b/src/Specific/montgomery64_2e382m105_6limbs/femul.v
new file mode 100644
index 000000000..7b95bb62a
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e382m105_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1652a3102
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/fenz.v b/src/Specific/montgomery64_2e382m105_6limbs/fenz.v
new file mode 100644
index 000000000..289b666cb
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e382m105_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..732add0fd
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/feopp.v b/src/Specific/montgomery64_2e382m105_6limbs/feopp.v
new file mode 100644
index 000000000..ee6434f80
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e382m105_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..989fe9a06
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/fesub.v b/src/Specific/montgomery64_2e382m105_6limbs/fesub.v
new file mode 100644
index 000000000..4b7dd1105
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e382m105_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e382m105_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..6d7605d7b
--- /dev/null
+++ b/src/Specific/montgomery64_2e382m105_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e382m105_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e382m105/py_interpreter.sh b/src/Specific/montgomery64_2e382m105_6limbs/py_interpreter.sh
index 04dd71243..04dd71243 100755
--- a/src/Specific/montgomery64_2e382m105/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e382m105_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e383m187/Synthesis.v b/src/Specific/montgomery64_2e383m187/Synthesis.v
deleted file mode 100644
index 812c0a6f7..000000000
--- a/src/Specific/montgomery64_2e383m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e383m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m187/feadd.c b/src/Specific/montgomery64_2e383m187/feadd.c
deleted file mode 100644
index eced0e029..000000000
--- a/src/Specific/montgomery64_2e383m187/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffff45L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x7fffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m187/feadd.v b/src/Specific/montgomery64_2e383m187/feadd.v
deleted file mode 100644
index e6ceab1a8..000000000
--- a/src/Specific/montgomery64_2e383m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m187/feaddDisplay.log b/src/Specific/montgomery64_2e383m187/feaddDisplay.log
deleted file mode 100644
index f29301fe6..000000000
--- a/src/Specific/montgomery64_2e383m187/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffff45L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m187/feaddDisplay.v b/src/Specific/montgomery64_2e383m187/feaddDisplay.v
deleted file mode 100644
index d4bbb78b1..000000000
--- a/src/Specific/montgomery64_2e383m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e383m187/femul.c b/src/Specific/montgomery64_2e383m187/femul.c
deleted file mode 100644
index 9f87a6997..000000000
--- a/src/Specific/montgomery64_2e383m187/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x8a4472fea18a4473L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffff45L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x7fffffffffffffffL, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x8a4472fea18a4473L, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffff45L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x7fffffffffffffffL, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x8a4472fea18a4473L, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffff45L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x7fffffffffffffffL, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x8a4472fea18a4473L, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffff45L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x7fffffffffffffffL, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x8a4472fea18a4473L, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffff45L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x7fffffffffffffffL, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x8a4472fea18a4473L, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffff45L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x7fffffffffffffffL, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffff45L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x7fffffffffffffffL, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m187/femul.v b/src/Specific/montgomery64_2e383m187/femul.v
deleted file mode 100644
index e1ff1745f..000000000
--- a/src/Specific/montgomery64_2e383m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m187/femulDisplay.log b/src/Specific/montgomery64_2e383m187/femulDisplay.log
deleted file mode 100644
index 9e36aea47..000000000
--- a/src/Specific/montgomery64_2e383m187/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x8a4472fea18a4473L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffff45L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x7fffffffffffffffL);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0x8a4472fea18a4473L);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffff45L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x7fffffffffffffffL);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0x8a4472fea18a4473L);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffff45L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x7fffffffffffffffL);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0x8a4472fea18a4473L);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffff45L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x7fffffffffffffffL);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0x8a4472fea18a4473L);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffff45L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x7fffffffffffffffL);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0x8a4472fea18a4473L);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffff45L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x7fffffffffffffffL);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffff45L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m187/femulDisplay.v b/src/Specific/montgomery64_2e383m187/femulDisplay.v
deleted file mode 100644
index 0d3602e9b..000000000
--- a/src/Specific/montgomery64_2e383m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e383m187/fenz.c b/src/Specific/montgomery64_2e383m187/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e383m187/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m187/fenz.v b/src/Specific/montgomery64_2e383m187/fenz.v
deleted file mode 100644
index 555fd7bba..000000000
--- a/src/Specific/montgomery64_2e383m187/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m187/fenzDisplay.log b/src/Specific/montgomery64_2e383m187/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e383m187/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e383m187/fenzDisplay.v b/src/Specific/montgomery64_2e383m187/fenzDisplay.v
deleted file mode 100644
index 5fa00b7c3..000000000
--- a/src/Specific/montgomery64_2e383m187/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m187.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m187/feopp.c b/src/Specific/montgomery64_2e383m187/feopp.c
deleted file mode 100644
index ee38728fa..000000000
--- a/src/Specific/montgomery64_2e383m187/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffff45L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m187/feopp.v b/src/Specific/montgomery64_2e383m187/feopp.v
deleted file mode 100644
index 37c90bbab..000000000
--- a/src/Specific/montgomery64_2e383m187/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m187/feoppDisplay.log b/src/Specific/montgomery64_2e383m187/feoppDisplay.log
deleted file mode 100644
index 89b5bb87b..000000000
--- a/src/Specific/montgomery64_2e383m187/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffff45L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m187/feoppDisplay.v b/src/Specific/montgomery64_2e383m187/feoppDisplay.v
deleted file mode 100644
index 75af86a6b..000000000
--- a/src/Specific/montgomery64_2e383m187/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m187.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e383m187/fesquare.c b/src/Specific/montgomery64_2e383m187/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e383m187/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e383m187/fesub.c b/src/Specific/montgomery64_2e383m187/fesub.c
deleted file mode 100644
index c92fe3d39..000000000
--- a/src/Specific/montgomery64_2e383m187/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffff45L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m187/fesub.v b/src/Specific/montgomery64_2e383m187/fesub.v
deleted file mode 100644
index a5326cffa..000000000
--- a/src/Specific/montgomery64_2e383m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m187/fesubDisplay.log b/src/Specific/montgomery64_2e383m187/fesubDisplay.log
deleted file mode 100644
index 08c1e5b26..000000000
--- a/src/Specific/montgomery64_2e383m187/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffff45L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m187/fesubDisplay.v b/src/Specific/montgomery64_2e383m187/fesubDisplay.v
deleted file mode 100644
index 7520f9f8b..000000000
--- a/src/Specific/montgomery64_2e383m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e383m187/CurveParameters.v b/src/Specific/montgomery64_2e383m187_6limbs/CurveParameters.v
index cc4e4efae..cc4e4efae 100644
--- a/src/Specific/montgomery64_2e383m187/CurveParameters.v
+++ b/src/Specific/montgomery64_2e383m187_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/Synthesis.v b/src/Specific/montgomery64_2e383m187_6limbs/Synthesis.v
new file mode 100644
index 000000000..13e8bc2eb
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m187/compiler.sh b/src/Specific/montgomery64_2e383m187_6limbs/compiler.sh
index bde4ab252..bde4ab252 100755
--- a/src/Specific/montgomery64_2e383m187/compiler.sh
+++ b/src/Specific/montgomery64_2e383m187_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e383m187/compilerxx.sh b/src/Specific/montgomery64_2e383m187_6limbs/compilerxx.sh
index 79bb53f92..79bb53f92 100755
--- a/src/Specific/montgomery64_2e383m187/compilerxx.sh
+++ b/src/Specific/montgomery64_2e383m187_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/feadd.v b/src/Specific/montgomery64_2e383m187_6limbs/feadd.v
new file mode 100644
index 000000000..b989ba32e
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e383m187_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..c46fc78ff
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/femul.v b/src/Specific/montgomery64_2e383m187_6limbs/femul.v
new file mode 100644
index 000000000..d3afb8360
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e383m187_6limbs/femulDisplay.v
new file mode 100644
index 000000000..295809b26
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/fenz.v b/src/Specific/montgomery64_2e383m187_6limbs/fenz.v
new file mode 100644
index 000000000..1646d4d4a
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e383m187_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..3a4db400d
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/feopp.v b/src/Specific/montgomery64_2e383m187_6limbs/feopp.v
new file mode 100644
index 000000000..8f9732300
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e383m187_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..a9f0b61e5
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/fesub.v b/src/Specific/montgomery64_2e383m187_6limbs/fesub.v
new file mode 100644
index 000000000..a70f23825
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m187_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e383m187_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..11726cf1a
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m187_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m187_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e383m187/py_interpreter.sh b/src/Specific/montgomery64_2e383m187_6limbs/py_interpreter.sh
index 48c948770..48c948770 100755
--- a/src/Specific/montgomery64_2e383m187/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e383m187_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e383m31/Synthesis.v b/src/Specific/montgomery64_2e383m31/Synthesis.v
deleted file mode 100644
index b63326ee7..000000000
--- a/src/Specific/montgomery64_2e383m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e383m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m31/feadd.c b/src/Specific/montgomery64_2e383m31/feadd.c
deleted file mode 100644
index 5b393973b..000000000
--- a/src/Specific/montgomery64_2e383m31/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffe1L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x7fffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m31/feadd.v b/src/Specific/montgomery64_2e383m31/feadd.v
deleted file mode 100644
index 068688f7a..000000000
--- a/src/Specific/montgomery64_2e383m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m31/feaddDisplay.log b/src/Specific/montgomery64_2e383m31/feaddDisplay.log
deleted file mode 100644
index de4ad4faf..000000000
--- a/src/Specific/montgomery64_2e383m31/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffe1L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m31/feaddDisplay.v b/src/Specific/montgomery64_2e383m31/feaddDisplay.v
deleted file mode 100644
index c786ae13f..000000000
--- a/src/Specific/montgomery64_2e383m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e383m31/femul.c b/src/Specific/montgomery64_2e383m31/femul.c
deleted file mode 100644
index 04a4c08bd..000000000
--- a/src/Specific/montgomery64_2e383m31/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffffffffffe1L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x7fffffffffffffffL, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffffffffffe1L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x7fffffffffffffffL, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffffffffffe1L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x7fffffffffffffffL, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffffffffffe1L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x7fffffffffffffffL, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffffffffffe1L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x7fffffffffffffffL, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xef7bdef7bdef7bdfL, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffffffffffe1L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x7fffffffffffffffL, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffffffffffe1L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x7fffffffffffffffL, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m31/femul.v b/src/Specific/montgomery64_2e383m31/femul.v
deleted file mode 100644
index 3c4712e57..000000000
--- a/src/Specific/montgomery64_2e383m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m31/femulDisplay.log b/src/Specific/montgomery64_2e383m31/femulDisplay.log
deleted file mode 100644
index 73e05e2f9..000000000
--- a/src/Specific/montgomery64_2e383m31/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xef7bdef7bdef7bdfL);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffffffffffe1L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x7fffffffffffffffL);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xef7bdef7bdef7bdfL);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffffffffffe1L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x7fffffffffffffffL);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xef7bdef7bdef7bdfL);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffffffffffe1L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x7fffffffffffffffL);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xef7bdef7bdef7bdfL);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffffffffffe1L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x7fffffffffffffffL);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xef7bdef7bdef7bdfL);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffffffffffe1L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x7fffffffffffffffL);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xef7bdef7bdef7bdfL);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffffffffffe1L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x7fffffffffffffffL);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffffffffffe1L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m31/femulDisplay.v b/src/Specific/montgomery64_2e383m31/femulDisplay.v
deleted file mode 100644
index 437a0a934..000000000
--- a/src/Specific/montgomery64_2e383m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e383m31/fenz.c b/src/Specific/montgomery64_2e383m31/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e383m31/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m31/fenz.v b/src/Specific/montgomery64_2e383m31/fenz.v
deleted file mode 100644
index b2093aa58..000000000
--- a/src/Specific/montgomery64_2e383m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m31/fenzDisplay.log b/src/Specific/montgomery64_2e383m31/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e383m31/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e383m31/fenzDisplay.v b/src/Specific/montgomery64_2e383m31/fenzDisplay.v
deleted file mode 100644
index ef2c48559..000000000
--- a/src/Specific/montgomery64_2e383m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m31/feopp.c b/src/Specific/montgomery64_2e383m31/feopp.c
deleted file mode 100644
index f5e2debdb..000000000
--- a/src/Specific/montgomery64_2e383m31/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffe1L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m31/feopp.v b/src/Specific/montgomery64_2e383m31/feopp.v
deleted file mode 100644
index 9fdda4a6e..000000000
--- a/src/Specific/montgomery64_2e383m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m31/feoppDisplay.log b/src/Specific/montgomery64_2e383m31/feoppDisplay.log
deleted file mode 100644
index f906c81b3..000000000
--- a/src/Specific/montgomery64_2e383m31/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffe1L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m31/feoppDisplay.v b/src/Specific/montgomery64_2e383m31/feoppDisplay.v
deleted file mode 100644
index 0bd76f0a0..000000000
--- a/src/Specific/montgomery64_2e383m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e383m31/fesquare.c b/src/Specific/montgomery64_2e383m31/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e383m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e383m31/fesub.c b/src/Specific/montgomery64_2e383m31/fesub.c
deleted file mode 100644
index d759ffa5a..000000000
--- a/src/Specific/montgomery64_2e383m31/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffe1L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m31/fesub.v b/src/Specific/montgomery64_2e383m31/fesub.v
deleted file mode 100644
index 0da7e1c74..000000000
--- a/src/Specific/montgomery64_2e383m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m31/fesubDisplay.log b/src/Specific/montgomery64_2e383m31/fesubDisplay.log
deleted file mode 100644
index be101216c..000000000
--- a/src/Specific/montgomery64_2e383m31/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffe1L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m31/fesubDisplay.v b/src/Specific/montgomery64_2e383m31/fesubDisplay.v
deleted file mode 100644
index 0e038cac5..000000000
--- a/src/Specific/montgomery64_2e383m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e383m31/CurveParameters.v b/src/Specific/montgomery64_2e383m31_6limbs/CurveParameters.v
index da9efc880..da9efc880 100644
--- a/src/Specific/montgomery64_2e383m31/CurveParameters.v
+++ b/src/Specific/montgomery64_2e383m31_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/Synthesis.v b/src/Specific/montgomery64_2e383m31_6limbs/Synthesis.v
new file mode 100644
index 000000000..89bd970fa
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m31/compiler.sh b/src/Specific/montgomery64_2e383m31_6limbs/compiler.sh
index b8e16a5cd..b8e16a5cd 100755
--- a/src/Specific/montgomery64_2e383m31/compiler.sh
+++ b/src/Specific/montgomery64_2e383m31_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e383m31/compilerxx.sh b/src/Specific/montgomery64_2e383m31_6limbs/compilerxx.sh
index 86d46331d..86d46331d 100755
--- a/src/Specific/montgomery64_2e383m31/compilerxx.sh
+++ b/src/Specific/montgomery64_2e383m31_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/feadd.v b/src/Specific/montgomery64_2e383m31_6limbs/feadd.v
new file mode 100644
index 000000000..a3160536b
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e383m31_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..ff69e9f60
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/femul.v b/src/Specific/montgomery64_2e383m31_6limbs/femul.v
new file mode 100644
index 000000000..2b0cdaf86
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e383m31_6limbs/femulDisplay.v
new file mode 100644
index 000000000..b06781896
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/fenz.v b/src/Specific/montgomery64_2e383m31_6limbs/fenz.v
new file mode 100644
index 000000000..52676b5bb
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e383m31_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..5f0dfec98
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/feopp.v b/src/Specific/montgomery64_2e383m31_6limbs/feopp.v
new file mode 100644
index 000000000..16d17cfb1
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e383m31_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..4c4e06342
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/fesub.v b/src/Specific/montgomery64_2e383m31_6limbs/fesub.v
new file mode 100644
index 000000000..a74a89a01
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m31_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e383m31_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..18ce569d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m31_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m31_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e383m31/py_interpreter.sh b/src/Specific/montgomery64_2e383m31_6limbs/py_interpreter.sh
index a453e9812..a453e9812 100755
--- a/src/Specific/montgomery64_2e383m31/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e383m31_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e383m421/Synthesis.v b/src/Specific/montgomery64_2e383m421/Synthesis.v
deleted file mode 100644
index 3f544aa1b..000000000
--- a/src/Specific/montgomery64_2e383m421/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e383m421.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m421/feadd.c b/src/Specific/montgomery64_2e383m421/feadd.c
deleted file mode 100644
index 244b4e633..000000000
--- a/src/Specific/montgomery64_2e383m421/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xfffffffffffffe5bL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0x7fffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m421/feadd.v b/src/Specific/montgomery64_2e383m421/feadd.v
deleted file mode 100644
index a3f5df724..000000000
--- a/src/Specific/montgomery64_2e383m421/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m421/feaddDisplay.log b/src/Specific/montgomery64_2e383m421/feaddDisplay.log
deleted file mode 100644
index 4e71e5e9c..000000000
--- a/src/Specific/montgomery64_2e383m421/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xfffffffffffffe5bL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m421/feaddDisplay.v b/src/Specific/montgomery64_2e383m421/feaddDisplay.v
deleted file mode 100644
index 22d8278ba..000000000
--- a/src/Specific/montgomery64_2e383m421/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m421.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e383m421/femul.c b/src/Specific/montgomery64_2e383m421/femul.c
deleted file mode 100644
index b8ab8b2c6..000000000
--- a/src/Specific/montgomery64_2e383m421/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xfffffffffffffe5bL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0x7fffffffffffffffL, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xfffffffffffffe5bL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0x7fffffffffffffffL, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xfffffffffffffe5bL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0x7fffffffffffffffL, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xfffffffffffffe5bL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0x7fffffffffffffffL, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xfffffffffffffe5bL, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0x7fffffffffffffffL, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xcebeef94fa86fe2dL, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xfffffffffffffe5bL, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0x7fffffffffffffffL, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xfffffffffffffe5bL, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0x7fffffffffffffffL, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m421/femul.v b/src/Specific/montgomery64_2e383m421/femul.v
deleted file mode 100644
index 4975fa416..000000000
--- a/src/Specific/montgomery64_2e383m421/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m421/femulDisplay.log b/src/Specific/montgomery64_2e383m421/femulDisplay.log
deleted file mode 100644
index 74ffddec5..000000000
--- a/src/Specific/montgomery64_2e383m421/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xcebeef94fa86fe2dL);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xfffffffffffffe5bL);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0x7fffffffffffffffL);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xcebeef94fa86fe2dL);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xfffffffffffffe5bL);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0x7fffffffffffffffL);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xcebeef94fa86fe2dL);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xfffffffffffffe5bL);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0x7fffffffffffffffL);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xcebeef94fa86fe2dL);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xfffffffffffffe5bL);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0x7fffffffffffffffL);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xcebeef94fa86fe2dL);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xfffffffffffffe5bL);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0x7fffffffffffffffL);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xcebeef94fa86fe2dL);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xfffffffffffffe5bL);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0x7fffffffffffffffL);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xfffffffffffffe5bL);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m421/femulDisplay.v b/src/Specific/montgomery64_2e383m421/femulDisplay.v
deleted file mode 100644
index a32e5f0ca..000000000
--- a/src/Specific/montgomery64_2e383m421/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m421.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e383m421/fenz.c b/src/Specific/montgomery64_2e383m421/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e383m421/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m421/fenz.v b/src/Specific/montgomery64_2e383m421/fenz.v
deleted file mode 100644
index 1b8fed592..000000000
--- a/src/Specific/montgomery64_2e383m421/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m421/fenzDisplay.log b/src/Specific/montgomery64_2e383m421/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e383m421/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e383m421/fenzDisplay.v b/src/Specific/montgomery64_2e383m421/fenzDisplay.v
deleted file mode 100644
index ab5f8c520..000000000
--- a/src/Specific/montgomery64_2e383m421/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m421.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m421/feopp.c b/src/Specific/montgomery64_2e383m421/feopp.c
deleted file mode 100644
index 0139d56bd..000000000
--- a/src/Specific/montgomery64_2e383m421/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffe5bL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m421/feopp.v b/src/Specific/montgomery64_2e383m421/feopp.v
deleted file mode 100644
index 760728a05..000000000
--- a/src/Specific/montgomery64_2e383m421/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m421/feoppDisplay.log b/src/Specific/montgomery64_2e383m421/feoppDisplay.log
deleted file mode 100644
index 53b451dbb..000000000
--- a/src/Specific/montgomery64_2e383m421/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffe5bL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0x7fffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m421/feoppDisplay.v b/src/Specific/montgomery64_2e383m421/feoppDisplay.v
deleted file mode 100644
index 6d69832fe..000000000
--- a/src/Specific/montgomery64_2e383m421/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m421.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e383m421/fesquare.c b/src/Specific/montgomery64_2e383m421/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e383m421/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e383m421/fesub.c b/src/Specific/montgomery64_2e383m421/fesub.c
deleted file mode 100644
index 6d05dc19e..000000000
--- a/src/Specific/montgomery64_2e383m421/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xfffffffffffffe5bL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e383m421/fesub.v b/src/Specific/montgomery64_2e383m421/fesub.v
deleted file mode 100644
index 2a20b22f9..000000000
--- a/src/Specific/montgomery64_2e383m421/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e383m421.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m421/fesubDisplay.log b/src/Specific/montgomery64_2e383m421/fesubDisplay.log
deleted file mode 100644
index f6d3bd616..000000000
--- a/src/Specific/montgomery64_2e383m421/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xfffffffffffffe5bL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0x7fffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e383m421/fesubDisplay.v b/src/Specific/montgomery64_2e383m421/fesubDisplay.v
deleted file mode 100644
index 6a2455147..000000000
--- a/src/Specific/montgomery64_2e383m421/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e383m421.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e383m421/CurveParameters.v b/src/Specific/montgomery64_2e383m421_6limbs/CurveParameters.v
index 65b26ddae..65b26ddae 100644
--- a/src/Specific/montgomery64_2e383m421/CurveParameters.v
+++ b/src/Specific/montgomery64_2e383m421_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/Synthesis.v b/src/Specific/montgomery64_2e383m421_6limbs/Synthesis.v
new file mode 100644
index 000000000..5554094a3
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e383m421/compiler.sh b/src/Specific/montgomery64_2e383m421_6limbs/compiler.sh
index 22ac5866e..22ac5866e 100755
--- a/src/Specific/montgomery64_2e383m421/compiler.sh
+++ b/src/Specific/montgomery64_2e383m421_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e383m421/compilerxx.sh b/src/Specific/montgomery64_2e383m421_6limbs/compilerxx.sh
index 6a847988c..6a847988c 100755
--- a/src/Specific/montgomery64_2e383m421/compilerxx.sh
+++ b/src/Specific/montgomery64_2e383m421_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/feadd.v b/src/Specific/montgomery64_2e383m421_6limbs/feadd.v
new file mode 100644
index 000000000..c45dcaf3d
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e383m421_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..f77f3834a
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/femul.v b/src/Specific/montgomery64_2e383m421_6limbs/femul.v
new file mode 100644
index 000000000..d8b72a7c7
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e383m421_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1ad3cec4b
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/fenz.v b/src/Specific/montgomery64_2e383m421_6limbs/fenz.v
new file mode 100644
index 000000000..7a27a012f
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e383m421_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..e18170690
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/feopp.v b/src/Specific/montgomery64_2e383m421_6limbs/feopp.v
new file mode 100644
index 000000000..11d9c9cf3
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e383m421_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..26b045ec6
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/fesub.v b/src/Specific/montgomery64_2e383m421_6limbs/fesub.v
new file mode 100644
index 000000000..2e59a4263
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e383m421_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e383m421_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..c38b2eaff
--- /dev/null
+++ b/src/Specific/montgomery64_2e383m421_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e383m421_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e383m421/py_interpreter.sh b/src/Specific/montgomery64_2e383m421_6limbs/py_interpreter.sh
index 7a586c0db..7a586c0db 100755
--- a/src/Specific/montgomery64_2e383m421/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e383m421_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v
deleted file mode 100644
index 818f8b35c..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.c
deleted file mode 100644
index ac69883a5..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffff, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffff00000000L, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xfffffffffffffffeL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xffffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v
deleted file mode 100644
index c1f3139ac..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.log
deleted file mode 100644
index 82253f65f..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffff);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffff00000000L);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xfffffffffffffffeL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xffffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v
deleted file mode 100644
index 59130e182..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.c
deleted file mode 100644
index 77fcb4861..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x100000001, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffff, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffff00000000L, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xfffffffffffffffeL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0xffffffffffffffffL, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x100000001, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffff, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffff00000000L, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xfffffffffffffffeL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0xffffffffffffffffL, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x100000001, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffff, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffff00000000L, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xfffffffffffffffeL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0xffffffffffffffffL, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x100000001, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffff, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffff00000000L, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xfffffffffffffffeL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0xffffffffffffffffL, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x100000001, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffff, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffff00000000L, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xfffffffffffffffeL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0xffffffffffffffffL, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x100000001, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffff, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffff00000000L, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xfffffffffffffffeL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0xffffffffffffffffL, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffff, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffff00000000L, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xfffffffffffffffeL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0xffffffffffffffffL, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v
deleted file mode 100644
index 8df271d59..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.log
deleted file mode 100644
index bda309185..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0x100000001);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffff);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffff00000000L);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xfffffffffffffffeL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0x100000001);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffff);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffff00000000L);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xfffffffffffffffeL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0x100000001);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffff);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffff00000000L);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xfffffffffffffffeL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0x100000001);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffff);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffff00000000L);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xfffffffffffffffeL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0x100000001);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffff);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffff00000000L);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xfffffffffffffffeL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0x100000001);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffff);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffff00000000L);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xfffffffffffffffeL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffff);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffff00000000L);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xfffffffffffffffeL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0xffffffffffffffffL);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v
deleted file mode 100644
index 06fa7e2d5..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v
deleted file mode 100644
index 6f448ed5e..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v
deleted file mode 100644
index f8fa26022..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.c
deleted file mode 100644
index 51a571f4d..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffff);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffff00000000L);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xfffffffffffffffeL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xffffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v
deleted file mode 100644
index cc7983c5f..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.log
deleted file mode 100644
index ab3378641..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffff);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffff00000000L);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xfffffffffffffffeL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xffffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v
deleted file mode 100644
index 84dd38ff1..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesquare.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.c
deleted file mode 100644
index f14f24207..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffff);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffff00000000L);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xfffffffffffffffeL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xffffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v
deleted file mode 100644
index cabcb237c..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.log
deleted file mode 100644
index 63da9b2f5..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffff);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffff00000000L);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xfffffffffffffffeL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xffffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v
deleted file mode 100644
index 76a023234..000000000
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/CurveParameters.v
index 406a8de00..406a8de00 100644
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/Synthesis.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..92b98a050
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compiler.sh
index 1ba4354ce..1ba4354ce 100755
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compiler.sh
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compilerxx.sh b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compilerxx.sh
index 8d1582cc5..8d1582cc5 100755
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.v
new file mode 100644
index 000000000..92d74f4df
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..7bb6a9648
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.v
new file mode 100644
index 000000000..d0c12b483
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..9b74c4039
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.v
new file mode 100644
index 000000000..be98c5c31
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..8ebbc12c6
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.v
new file mode 100644
index 000000000..10b84eab0
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..16f4125ed
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.v
new file mode 100644
index 000000000..de7c490e7
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..53541241f
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m2e128m2e96p2e32m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/py_interpreter.sh b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/py_interpreter.sh
index 4b6905b2a..4b6905b2a 100755
--- a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e384m317/Synthesis.v b/src/Specific/montgomery64_2e384m317/Synthesis.v
deleted file mode 100644
index cff97867b..000000000
--- a/src/Specific/montgomery64_2e384m317/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e384m317.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m317/feadd.c b/src/Specific/montgomery64_2e384m317/feadd.c
deleted file mode 100644
index a73e2c353..000000000
--- a/src/Specific/montgomery64_2e384m317/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xfffffffffffffec3L, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xffffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m317/feadd.v b/src/Specific/montgomery64_2e384m317/feadd.v
deleted file mode 100644
index 6a6ff94ad..000000000
--- a/src/Specific/montgomery64_2e384m317/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m317/feaddDisplay.log b/src/Specific/montgomery64_2e384m317/feaddDisplay.log
deleted file mode 100644
index fe11d57ba..000000000
--- a/src/Specific/montgomery64_2e384m317/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xfffffffffffffec3L);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xffffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m317/feaddDisplay.v b/src/Specific/montgomery64_2e384m317/feaddDisplay.v
deleted file mode 100644
index 4e5d670f3..000000000
--- a/src/Specific/montgomery64_2e384m317/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m317.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e384m317/femul.c b/src/Specific/montgomery64_2e384m317/femul.c
deleted file mode 100644
index ef9dec8be..000000000
--- a/src/Specific/montgomery64_2e384m317/femul.c
+++ /dev/null
@@ -1,266 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0xec9e48ae6f71de15L, &_);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xfffffffffffffec3L, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
- { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0xffffffffffffffffL, &x80);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
- { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
- { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
- { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
- { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
- { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
- { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
- { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0xec9e48ae6f71de15L, &_);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xfffffffffffffec3L, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
- { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
- { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0xffffffffffffffffL, &x197);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
- { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
- { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
- { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
- { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
- { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
- { uint8_t x237 = (x236 + x176);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
- { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
- { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
- { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
- { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
- { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
- { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0xec9e48ae6f71de15L, &_);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xfffffffffffffec3L, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xffffffffffffffffL, &x306);
- { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
- { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
- { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0xffffffffffffffffL, &x315);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
- { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
- { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
- { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
- { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
- { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
- { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
- { uint8_t x355 = (x354 + x294);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
- { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
- { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
- { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
- { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
- { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
- { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
- { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
- { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0xec9e48ae6f71de15L, &_);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xfffffffffffffec3L, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffffffffffffL, &x421);
- { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xffffffffffffffffL, &x424);
- { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
- { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
- { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0xffffffffffffffffL, &x433);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
- { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
- { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
- { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
- { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
- { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
- { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
- { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
- { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
- { uint8_t x473 = (x472 + x412);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
- { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
- { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
- { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
- { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
- { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
- { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
- { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
- { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
- { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
- { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
- { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0xec9e48ae6f71de15L, &_);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xfffffffffffffec3L, &x536);
- { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffffffffffffL, &x539);
- { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xffffffffffffffffL, &x542);
- { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
- { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
- { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0xffffffffffffffffL, &x551);
- { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
- { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
- { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
- { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
- { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
- { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
- { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
- { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
- { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
- { uint8_t x591 = (x590 + x530);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
- { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
- { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
- { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
- { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
- { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
- { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
- { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
- { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
- { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
- { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
- { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
- { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
- { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0xec9e48ae6f71de15L, &_);
- { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xfffffffffffffec3L, &x654);
- { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffffffffffffL, &x657);
- { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xffffffffffffffffL, &x660);
- { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
- { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
- { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0xffffffffffffffffL, &x669);
- { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
- { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
- { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
- { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
- { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
- { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
- { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
- { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
- { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
- { uint8_t x709 = (x708 + x648);
- { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xfffffffffffffec3L, &x711);
- { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffffffffffffL, &x714);
- { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xffffffffffffffffL, &x717);
- { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
- { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
- { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0xffffffffffffffffL, &x726);
- { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
- { uint64_t x731 = cmovznz64(x730, x726, x707);
- { uint64_t x732 = cmovznz64(x730, x723, x704);
- { uint64_t x733 = cmovznz64(x730, x720, x701);
- { uint64_t x734 = cmovznz64(x730, x717, x698);
- { uint64_t x735 = cmovznz64(x730, x714, x695);
- { uint64_t x736 = cmovznz64(x730, x711, x692);
- out[0] = x736;
- out[1] = x735;
- out[2] = x734;
- out[3] = x733;
- out[4] = x732;
- out[5] = x731;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m317/femul.v b/src/Specific/montgomery64_2e384m317/femul.v
deleted file mode 100644
index 35788c786..000000000
--- a/src/Specific/montgomery64_2e384m317/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m317/femulDisplay.log b/src/Specific/montgomery64_2e384m317/femulDisplay.log
deleted file mode 100644
index eadcc1c62..000000000
--- a/src/Specific/montgomery64_2e384m317/femulDisplay.log
+++ /dev/null
@@ -1,252 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t _ = mulx_u64(x25, 0xec9e48ae6f71de15L);
- uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xfffffffffffffec3L);
- uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x79, uint64_t x80 = mulx_u64(x61, 0xffffffffffffffffL);
- uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
- uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
- uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
- uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
- uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
- uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
- uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
- uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
- uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
- uint64_t x178, uint64_t _ = mulx_u64(x157, 0xec9e48ae6f71de15L);
- uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xfffffffffffffec3L);
- uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x196, uint64_t x197 = mulx_u64(x178, 0xffffffffffffffffL);
- uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
- uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
- uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
- uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
- uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
- uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
- uint8_t x237 = (x236 + x176);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
- uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
- uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
- uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
- uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
- uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
- uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
- uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
- uint64_t x296, uint64_t _ = mulx_u64(x275, 0xec9e48ae6f71de15L);
- uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xfffffffffffffec3L);
- uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x314, uint64_t x315 = mulx_u64(x296, 0xffffffffffffffffL);
- uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
- uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
- uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
- uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
- uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
- uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
- uint8_t x355 = (x354 + x294);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
- uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
- uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
- uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
- uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
- uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
- uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
- uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
- uint64_t x414, uint64_t _ = mulx_u64(x393, 0xec9e48ae6f71de15L);
- uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xfffffffffffffec3L);
- uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x432, uint64_t x433 = mulx_u64(x414, 0xffffffffffffffffL);
- uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
- uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
- uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
- uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
- uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
- uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
- uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
- uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
- uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
- uint8_t x473 = (x472 + x412);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
- uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
- uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
- uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
- uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
- uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
- uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
- uint64_t x532, uint64_t _ = mulx_u64(x511, 0xec9e48ae6f71de15L);
- uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xfffffffffffffec3L);
- uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x550, uint64_t x551 = mulx_u64(x532, 0xffffffffffffffffL);
- uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
- uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
- uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
- uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
- uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
- uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
- uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
- uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
- uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
- uint8_t x591 = (x590 + x530);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
- uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
- uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
- uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
- uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
- uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
- uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
- uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
- uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
- uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
- uint64_t x650, uint64_t _ = mulx_u64(x629, 0xec9e48ae6f71de15L);
- uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xfffffffffffffec3L);
- uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x668, uint64_t x669 = mulx_u64(x650, 0xffffffffffffffffL);
- uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
- uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
- uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
- uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
- uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
- uint8_t x709 = (x708 + x648);
- uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xfffffffffffffec3L);
- uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffffffffffffL);
- uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xffffffffffffffffL);
- uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
- uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
- uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0xffffffffffffffffL);
- uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
- uint64_t x731 = cmovznz64(x730, x726, x707);
- uint64_t x732 = cmovznz64(x730, x723, x704);
- uint64_t x733 = cmovznz64(x730, x720, x701);
- uint64_t x734 = cmovznz64(x730, x717, x698);
- uint64_t x735 = cmovznz64(x730, x714, x695);
- uint64_t x736 = cmovznz64(x730, x711, x692);
- return (x731, x732, x733, x734, x735, x736))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m317/femulDisplay.v b/src/Specific/montgomery64_2e384m317/femulDisplay.v
deleted file mode 100644
index cbfc74e4a..000000000
--- a/src/Specific/montgomery64_2e384m317/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m317.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e384m317/fenz.c b/src/Specific/montgomery64_2e384m317/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e384m317/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m317/fenz.v b/src/Specific/montgomery64_2e384m317/fenz.v
deleted file mode 100644
index 7fec7de60..000000000
--- a/src/Specific/montgomery64_2e384m317/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m317/fenzDisplay.log b/src/Specific/montgomery64_2e384m317/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e384m317/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m317/fenzDisplay.v b/src/Specific/montgomery64_2e384m317/fenzDisplay.v
deleted file mode 100644
index 9308deda7..000000000
--- a/src/Specific/montgomery64_2e384m317/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m317.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m317/feopp.c b/src/Specific/montgomery64_2e384m317/feopp.c
deleted file mode 100644
index 1e3821350..000000000
--- a/src/Specific/montgomery64_2e384m317/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffec3L);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xffffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m317/feopp.v b/src/Specific/montgomery64_2e384m317/feopp.v
deleted file mode 100644
index 1dcf4ebb1..000000000
--- a/src/Specific/montgomery64_2e384m317/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m317/feoppDisplay.log b/src/Specific/montgomery64_2e384m317/feoppDisplay.log
deleted file mode 100644
index 096edacb8..000000000
--- a/src/Specific/montgomery64_2e384m317/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffec3L);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xffffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m317/feoppDisplay.v b/src/Specific/montgomery64_2e384m317/feoppDisplay.v
deleted file mode 100644
index 94c00bad4..000000000
--- a/src/Specific/montgomery64_2e384m317/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m317.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e384m317/fesquare.c b/src/Specific/montgomery64_2e384m317/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e384m317/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e384m317/fesub.c b/src/Specific/montgomery64_2e384m317/fesub.c
deleted file mode 100644
index 600d8f46f..000000000
--- a/src/Specific/montgomery64_2e384m317/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xfffffffffffffec3L);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xffffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m317/fesub.v b/src/Specific/montgomery64_2e384m317/fesub.v
deleted file mode 100644
index 005567a30..000000000
--- a/src/Specific/montgomery64_2e384m317/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m317/fesubDisplay.log b/src/Specific/montgomery64_2e384m317/fesubDisplay.log
deleted file mode 100644
index f66a7568e..000000000
--- a/src/Specific/montgomery64_2e384m317/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xfffffffffffffec3L);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xffffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m317/fesubDisplay.v b/src/Specific/montgomery64_2e384m317/fesubDisplay.v
deleted file mode 100644
index c3f1c2c3a..000000000
--- a/src/Specific/montgomery64_2e384m317/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m317.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e384m317/CurveParameters.v b/src/Specific/montgomery64_2e384m317_6limbs/CurveParameters.v
index 9616800d3..9616800d3 100644
--- a/src/Specific/montgomery64_2e384m317/CurveParameters.v
+++ b/src/Specific/montgomery64_2e384m317_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/Synthesis.v b/src/Specific/montgomery64_2e384m317_6limbs/Synthesis.v
new file mode 100644
index 000000000..4bbd7bd60
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m317/compiler.sh b/src/Specific/montgomery64_2e384m317_6limbs/compiler.sh
index 94feb1403..94feb1403 100755
--- a/src/Specific/montgomery64_2e384m317/compiler.sh
+++ b/src/Specific/montgomery64_2e384m317_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e384m317/compilerxx.sh b/src/Specific/montgomery64_2e384m317_6limbs/compilerxx.sh
index 6f82d5500..6f82d5500 100755
--- a/src/Specific/montgomery64_2e384m317/compilerxx.sh
+++ b/src/Specific/montgomery64_2e384m317_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/feadd.v b/src/Specific/montgomery64_2e384m317_6limbs/feadd.v
new file mode 100644
index 000000000..e4476d5bc
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e384m317_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..1956f08b9
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/femul.v b/src/Specific/montgomery64_2e384m317_6limbs/femul.v
new file mode 100644
index 000000000..5fafa981a
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e384m317_6limbs/femulDisplay.v
new file mode 100644
index 000000000..e50dbcf16
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fenz.v b/src/Specific/montgomery64_2e384m317_6limbs/fenz.v
new file mode 100644
index 000000000..b18aee6c7
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e384m317_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..577a48502
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/feopp.v b/src/Specific/montgomery64_2e384m317_6limbs/feopp.v
new file mode 100644
index 000000000..1397f11e0
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e384m317_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..302f7d604
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fesub.v b/src/Specific/montgomery64_2e384m317_6limbs/fesub.v
new file mode 100644
index 000000000..8e5c971b5
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..ace83fedb
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m317_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e384m317/py_interpreter.sh b/src/Specific/montgomery64_2e384m317_6limbs/py_interpreter.sh
index b209001ee..b209001ee 100755
--- a/src/Specific/montgomery64_2e384m317/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e384m317_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/Synthesis.v b/src/Specific/montgomery64_2e384m5x2e368m1/Synthesis.v
deleted file mode 100644
index aff981f36..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feadd.c b/src/Specific/montgomery64_2e384m5x2e368m1/feadd.c
deleted file mode 100644
index f7bc3c4f8..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffffL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xfffaffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feadd.v b/src/Specific/montgomery64_2e384m5x2e368m1/feadd.v
deleted file mode 100644
index 283b4049f..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.log
deleted file mode 100644
index 222cf00b2..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xfffaffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.v
deleted file mode 100644
index 4926c4125..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/femul.c b/src/Specific/montgomery64_2e384m5x2e368m1/femul.c
deleted file mode 100644
index 1df4cfe62..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/femul.c
+++ /dev/null
@@ -1,260 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x25, 0xfffaffffffffffffL, &x77);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t _ = _addcarryx_u64(0x0, x92, x77, &x94);
- { uint64_t _; uint8_t x98 = _addcarryx_u64(0x0, x25, x61, &_);
- { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x43, x79, &x100);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x46, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x49, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x52, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x55, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x58, x94, &x115);
- { uint64_t x119; uint64_t x118 = _mulx_u64(x7, x15, &x119);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x17, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x19, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x21, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x23, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x22, &x134);
- { uint64_t x136; uint8_t x137 = _addcarryx_u64(0x0, x119, x121, &x136);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(x137, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t _ = _addcarryx_u64(0x0, x149, x134, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(0x0, x100, x118, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x103, x136, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x116, x151, &x172);
- { uint64_t x176; uint64_t x175 = _mulx_u64(x154, 0xffffffffffffffffL, &x176);
- { uint64_t x179; uint64_t x178 = _mulx_u64(x154, 0xffffffffffffffffL, &x179);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x154, 0xffffffffffffffffL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x154, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x154, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x154, 0xfffaffffffffffffL, &x191);
- { uint64_t x193; uint8_t x194 = _addcarryx_u64(0x0, x176, x178, &x193);
- { uint64_t x196; uint8_t x197 = _addcarryx_u64(x194, x179, x181, &x196);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(x197, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t _ = _addcarryx_u64(0x0, x206, x191, &x208);
- { uint64_t _; uint8_t x212 = _addcarryx_u64(0x0, x154, x175, &_);
- { uint64_t x214; uint8_t x215 = _addcarryx_u64(x212, x157, x193, &x214);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(x215, x160, x196, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x163, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x166, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x169, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x172, x208, &x229);
- { uint8_t x231 = (x230 + x173);
- { uint64_t x234; uint64_t x233 = _mulx_u64(x9, x15, &x234);
- { uint64_t x237; uint64_t x236 = _mulx_u64(x9, x17, &x237);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x19, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x21, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x23, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x22, &x249);
- { uint64_t x251; uint8_t x252 = _addcarryx_u64(0x0, x234, x236, &x251);
- { uint64_t x254; uint8_t x255 = _addcarryx_u64(x252, x237, x239, &x254);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(x255, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t _ = _addcarryx_u64(0x0, x264, x249, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(0x0, x214, x233, &x269);
- { uint64_t x272; uint8_t x273 = _addcarryx_u64(x270, x217, x251, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(x273, x220, x254, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x231, x266, &x287);
- { uint64_t x291; uint64_t x290 = _mulx_u64(x269, 0xffffffffffffffffL, &x291);
- { uint64_t x294; uint64_t x293 = _mulx_u64(x269, 0xffffffffffffffffL, &x294);
- { uint64_t x297; uint64_t x296 = _mulx_u64(x269, 0xffffffffffffffffL, &x297);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x269, 0xffffffffffffffffL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x269, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x269, 0xfffaffffffffffffL, &x306);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(0x0, x291, x293, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x294, x296, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x297, x299, &x314);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t _ = _addcarryx_u64(0x0, x321, x306, &x323);
- { uint64_t _; uint8_t x327 = _addcarryx_u64(0x0, x269, x290, &_);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x272, x308, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x275, x311, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x278, x314, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x281, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x284, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x287, x323, &x344);
- { uint8_t x346 = (x345 + x288);
- { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x15, &x349);
- { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x17, &x352);
- { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x19, &x355);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x21, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x23, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x22, &x364);
- { uint64_t x366; uint8_t x367 = _addcarryx_u64(0x0, x349, x351, &x366);
- { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
- { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(x373, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t _ = _addcarryx_u64(0x0, x379, x364, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(0x0, x329, x348, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
- { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x346, x381, &x402);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x384, 0xffffffffffffffffL, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x384, 0xffffffffffffffffL, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x384, 0xffffffffffffffffL, &x412);
- { uint64_t x415; uint64_t x414 = _mulx_u64(x384, 0xffffffffffffffffL, &x415);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x384, 0xffffffffffffffffL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x384, 0xfffaffffffffffffL, &x421);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(0x0, x406, x408, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
- { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(x430, x415, x417, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x418, x420, &x435);
- { uint64_t x438; uint8_t _ = _addcarryx_u64(0x0, x436, x421, &x438);
- { uint64_t _; uint8_t x442 = _addcarryx_u64(0x0, x384, x405, &_);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x387, x423, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x390, x426, &x447);
- { uint64_t x450; uint8_t x451 = _addcarryx_u64(x448, x393, x429, &x450);
- { uint64_t x453; uint8_t x454 = _addcarryx_u64(x451, x396, x432, &x453);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x399, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x402, x438, &x459);
- { uint8_t x461 = (x460 + x403);
- { uint64_t x464; uint64_t x463 = _mulx_u64(x13, x15, &x464);
- { uint64_t x467; uint64_t x466 = _mulx_u64(x13, x17, &x467);
- { uint64_t x470; uint64_t x469 = _mulx_u64(x13, x19, &x470);
- { uint64_t x473; uint64_t x472 = _mulx_u64(x13, x21, &x473);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x23, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x22, &x479);
- { uint64_t x481; uint8_t x482 = _addcarryx_u64(0x0, x464, x466, &x481);
- { uint64_t x484; uint8_t x485 = _addcarryx_u64(x482, x467, x469, &x484);
- { uint64_t x487; uint8_t x488 = _addcarryx_u64(x485, x470, x472, &x487);
- { uint64_t x490; uint8_t x491 = _addcarryx_u64(x488, x473, x475, &x490);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(x491, x476, x478, &x493);
- { uint64_t x496; uint8_t _ = _addcarryx_u64(0x0, x494, x479, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(0x0, x444, x463, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x447, x481, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x450, x484, &x505);
- { uint64_t x508; uint8_t x509 = _addcarryx_u64(x506, x453, x487, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(x509, x456, x490, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x461, x496, &x517);
- { uint64_t x521; uint64_t x520 = _mulx_u64(x499, 0xffffffffffffffffL, &x521);
- { uint64_t x524; uint64_t x523 = _mulx_u64(x499, 0xffffffffffffffffL, &x524);
- { uint64_t x527; uint64_t x526 = _mulx_u64(x499, 0xffffffffffffffffL, &x527);
- { uint64_t x530; uint64_t x529 = _mulx_u64(x499, 0xffffffffffffffffL, &x530);
- { uint64_t x533; uint64_t x532 = _mulx_u64(x499, 0xffffffffffffffffL, &x533);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x499, 0xfffaffffffffffffL, &x536);
- { uint64_t x538; uint8_t x539 = _addcarryx_u64(0x0, x521, x523, &x538);
- { uint64_t x541; uint8_t x542 = _addcarryx_u64(x539, x524, x526, &x541);
- { uint64_t x544; uint8_t x545 = _addcarryx_u64(x542, x527, x529, &x544);
- { uint64_t x547; uint8_t x548 = _addcarryx_u64(x545, x530, x532, &x547);
- { uint64_t x550; uint8_t x551 = _addcarryx_u64(x548, x533, x535, &x550);
- { uint64_t x553; uint8_t _ = _addcarryx_u64(0x0, x551, x536, &x553);
- { uint64_t _; uint8_t x557 = _addcarryx_u64(0x0, x499, x520, &_);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x502, x538, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x505, x541, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x508, x544, &x565);
- { uint64_t x568; uint8_t x569 = _addcarryx_u64(x566, x511, x547, &x568);
- { uint64_t x571; uint8_t x572 = _addcarryx_u64(x569, x514, x550, &x571);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x517, x553, &x574);
- { uint8_t x576 = (x575 + x518);
- { uint64_t x579; uint64_t x578 = _mulx_u64(x12, x15, &x579);
- { uint64_t x582; uint64_t x581 = _mulx_u64(x12, x17, &x582);
- { uint64_t x585; uint64_t x584 = _mulx_u64(x12, x19, &x585);
- { uint64_t x588; uint64_t x587 = _mulx_u64(x12, x21, &x588);
- { uint64_t x591; uint64_t x590 = _mulx_u64(x12, x23, &x591);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x22, &x594);
- { uint64_t x596; uint8_t x597 = _addcarryx_u64(0x0, x579, x581, &x596);
- { uint64_t x599; uint8_t x600 = _addcarryx_u64(x597, x582, x584, &x599);
- { uint64_t x602; uint8_t x603 = _addcarryx_u64(x600, x585, x587, &x602);
- { uint64_t x605; uint8_t x606 = _addcarryx_u64(x603, x588, x590, &x605);
- { uint64_t x608; uint8_t x609 = _addcarryx_u64(x606, x591, x593, &x608);
- { uint64_t x611; uint8_t _ = _addcarryx_u64(0x0, x609, x594, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(0x0, x559, x578, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x562, x596, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x565, x599, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x568, x602, &x623);
- { uint64_t x626; uint8_t x627 = _addcarryx_u64(x624, x571, x605, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(x627, x574, x608, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x576, x611, &x632);
- { uint64_t x636; uint64_t x635 = _mulx_u64(x614, 0xffffffffffffffffL, &x636);
- { uint64_t x639; uint64_t x638 = _mulx_u64(x614, 0xffffffffffffffffL, &x639);
- { uint64_t x642; uint64_t x641 = _mulx_u64(x614, 0xffffffffffffffffL, &x642);
- { uint64_t x645; uint64_t x644 = _mulx_u64(x614, 0xffffffffffffffffL, &x645);
- { uint64_t x648; uint64_t x647 = _mulx_u64(x614, 0xffffffffffffffffL, &x648);
- { uint64_t x651; uint64_t x650 = _mulx_u64(x614, 0xfffaffffffffffffL, &x651);
- { uint64_t x653; uint8_t x654 = _addcarryx_u64(0x0, x636, x638, &x653);
- { uint64_t x656; uint8_t x657 = _addcarryx_u64(x654, x639, x641, &x656);
- { uint64_t x659; uint8_t x660 = _addcarryx_u64(x657, x642, x644, &x659);
- { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x645, x647, &x662);
- { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x648, x650, &x665);
- { uint64_t x668; uint8_t _ = _addcarryx_u64(0x0, x666, x651, &x668);
- { uint64_t _; uint8_t x672 = _addcarryx_u64(0x0, x614, x635, &_);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x617, x653, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x620, x656, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x623, x659, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x626, x662, &x683);
- { uint64_t x686; uint8_t x687 = _addcarryx_u64(x684, x629, x665, &x686);
- { uint64_t x689; uint8_t x690 = _addcarryx_u64(x687, x632, x668, &x689);
- { uint8_t x691 = (x690 + x633);
- { uint64_t x693; uint8_t x694 = _subborrow_u64(0x0, x674, 0xffffffffffffffffL, &x693);
- { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0xffffffffffffffffL, &x696);
- { uint64_t x699; uint8_t x700 = _subborrow_u64(x697, x680, 0xffffffffffffffffL, &x699);
- { uint64_t x702; uint8_t x703 = _subborrow_u64(x700, x683, 0xffffffffffffffffL, &x702);
- { uint64_t x705; uint8_t x706 = _subborrow_u64(x703, x686, 0xffffffffffffffffL, &x705);
- { uint64_t x708; uint8_t x709 = _subborrow_u64(x706, x689, 0xfffaffffffffffffL, &x708);
- { uint64_t _; uint8_t x712 = _subborrow_u64(x709, x691, 0x0, &_);
- { uint64_t x713 = cmovznz64(x712, x708, x689);
- { uint64_t x714 = cmovznz64(x712, x705, x686);
- { uint64_t x715 = cmovznz64(x712, x702, x683);
- { uint64_t x716 = cmovznz64(x712, x699, x680);
- { uint64_t x717 = cmovznz64(x712, x696, x677);
- { uint64_t x718 = cmovznz64(x712, x693, x674);
- out[0] = x718;
- out[1] = x717;
- out[2] = x716;
- out[3] = x715;
- out[4] = x714;
- out[5] = x713;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/femul.v b/src/Specific/montgomery64_2e384m5x2e368m1/femul.v
deleted file mode 100644
index e107f9f55..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.log
deleted file mode 100644
index 1e07e0934..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.log
+++ /dev/null
@@ -1,246 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x25, 0xfffaffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t _ = addcarryx_u64(0x0, x92, x77);
- uint64_t _, uint8_t x98 = addcarryx_u64(0x0, x25, x61);
- uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x43, x79);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x46, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x49, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x52, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x55, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x58, x94);
- uint64_t x118, uint64_t x119 = mulx_u64(x7, x15);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x17);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x19);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x21);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x23);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x22);
- uint64_t x136, uint8_t x137 = addcarryx_u64(0x0, x119, x121);
- uint64_t x139, uint8_t x140 = addcarryx_u64(x137, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t _ = addcarryx_u64(0x0, x149, x134);
- uint64_t x154, uint8_t x155 = addcarryx_u64(0x0, x100, x118);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x103, x136);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x116, x151);
- uint64_t x175, uint64_t x176 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x178, uint64_t x179 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x181, uint64_t x182 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x184, uint64_t x185 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x154, 0xfffaffffffffffffL);
- uint64_t x193, uint8_t x194 = addcarryx_u64(0x0, x176, x178);
- uint64_t x196, uint8_t x197 = addcarryx_u64(x194, x179, x181);
- uint64_t x199, uint8_t x200 = addcarryx_u64(x197, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t _ = addcarryx_u64(0x0, x206, x191);
- uint64_t _, uint8_t x212 = addcarryx_u64(0x0, x154, x175);
- uint64_t x214, uint8_t x215 = addcarryx_u64(x212, x157, x193);
- uint64_t x217, uint8_t x218 = addcarryx_u64(x215, x160, x196);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x163, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x166, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x169, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x172, x208);
- uint8_t x231 = (x230 + x173);
- uint64_t x233, uint64_t x234 = mulx_u64(x9, x15);
- uint64_t x236, uint64_t x237 = mulx_u64(x9, x17);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x19);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x21);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x23);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x22);
- uint64_t x251, uint8_t x252 = addcarryx_u64(0x0, x234, x236);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x237, x239);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t _ = addcarryx_u64(0x0, x264, x249);
- uint64_t x269, uint8_t x270 = addcarryx_u64(0x0, x214, x233);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x217, x251);
- uint64_t x275, uint8_t x276 = addcarryx_u64(x273, x220, x254);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x231, x266);
- uint64_t x290, uint64_t x291 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x293, uint64_t x294 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x296, uint64_t x297 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x299, uint64_t x300 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x302, uint64_t x303 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x269, 0xfffaffffffffffffL);
- uint64_t x308, uint8_t x309 = addcarryx_u64(0x0, x291, x293);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x294, x296);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x297, x299);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t _ = addcarryx_u64(0x0, x321, x306);
- uint64_t _, uint8_t x327 = addcarryx_u64(0x0, x269, x290);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x272, x308);
- uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x275, x311);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x278, x314);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x281, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x284, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x287, x323);
- uint8_t x346 = (x345 + x288);
- uint64_t x348, uint64_t x349 = mulx_u64(x11, x15);
- uint64_t x351, uint64_t x352 = mulx_u64(x11, x17);
- uint64_t x354, uint64_t x355 = mulx_u64(x11, x19);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x21);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x23);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x22);
- uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x349, x351);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
- uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t _ = addcarryx_u64(0x0, x379, x364);
- uint64_t x384, uint8_t x385 = addcarryx_u64(0x0, x329, x348);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x346, x381);
- uint64_t x405, uint64_t x406 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x408, uint64_t x409 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x411, uint64_t x412 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x414, uint64_t x415 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x417, uint64_t x418 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x420, uint64_t x421 = mulx_u64(x384, 0xfffaffffffffffffL);
- uint64_t x423, uint8_t x424 = addcarryx_u64(0x0, x406, x408);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
- uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
- uint64_t x432, uint8_t x433 = addcarryx_u64(x430, x415, x417);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x418, x420);
- uint64_t x438, uint8_t _ = addcarryx_u64(0x0, x436, x421);
- uint64_t _, uint8_t x442 = addcarryx_u64(0x0, x384, x405);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x387, x423);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x390, x426);
- uint64_t x450, uint8_t x451 = addcarryx_u64(x448, x393, x429);
- uint64_t x453, uint8_t x454 = addcarryx_u64(x451, x396, x432);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x399, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x402, x438);
- uint8_t x461 = (x460 + x403);
- uint64_t x463, uint64_t x464 = mulx_u64(x13, x15);
- uint64_t x466, uint64_t x467 = mulx_u64(x13, x17);
- uint64_t x469, uint64_t x470 = mulx_u64(x13, x19);
- uint64_t x472, uint64_t x473 = mulx_u64(x13, x21);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x23);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x22);
- uint64_t x481, uint8_t x482 = addcarryx_u64(0x0, x464, x466);
- uint64_t x484, uint8_t x485 = addcarryx_u64(x482, x467, x469);
- uint64_t x487, uint8_t x488 = addcarryx_u64(x485, x470, x472);
- uint64_t x490, uint8_t x491 = addcarryx_u64(x488, x473, x475);
- uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x476, x478);
- uint64_t x496, uint8_t _ = addcarryx_u64(0x0, x494, x479);
- uint64_t x499, uint8_t x500 = addcarryx_u64(0x0, x444, x463);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x447, x481);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x450, x484);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x453, x487);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x456, x490);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x461, x496);
- uint64_t x520, uint64_t x521 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x523, uint64_t x524 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x526, uint64_t x527 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x529, uint64_t x530 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x532, uint64_t x533 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x535, uint64_t x536 = mulx_u64(x499, 0xfffaffffffffffffL);
- uint64_t x538, uint8_t x539 = addcarryx_u64(0x0, x521, x523);
- uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x524, x526);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x527, x529);
- uint64_t x547, uint8_t x548 = addcarryx_u64(x545, x530, x532);
- uint64_t x550, uint8_t x551 = addcarryx_u64(x548, x533, x535);
- uint64_t x553, uint8_t _ = addcarryx_u64(0x0, x551, x536);
- uint64_t _, uint8_t x557 = addcarryx_u64(0x0, x499, x520);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x502, x538);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x505, x541);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x508, x544);
- uint64_t x568, uint8_t x569 = addcarryx_u64(x566, x511, x547);
- uint64_t x571, uint8_t x572 = addcarryx_u64(x569, x514, x550);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x517, x553);
- uint8_t x576 = (x575 + x518);
- uint64_t x578, uint64_t x579 = mulx_u64(x12, x15);
- uint64_t x581, uint64_t x582 = mulx_u64(x12, x17);
- uint64_t x584, uint64_t x585 = mulx_u64(x12, x19);
- uint64_t x587, uint64_t x588 = mulx_u64(x12, x21);
- uint64_t x590, uint64_t x591 = mulx_u64(x12, x23);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x22);
- uint64_t x596, uint8_t x597 = addcarryx_u64(0x0, x579, x581);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x582, x584);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x585, x587);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x588, x590);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x591, x593);
- uint64_t x611, uint8_t _ = addcarryx_u64(0x0, x609, x594);
- uint64_t x614, uint8_t x615 = addcarryx_u64(0x0, x559, x578);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x562, x596);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x565, x599);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x568, x602);
- uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x571, x605);
- uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x574, x608);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x576, x611);
- uint64_t x635, uint64_t x636 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x638, uint64_t x639 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x641, uint64_t x642 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x644, uint64_t x645 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x647, uint64_t x648 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x650, uint64_t x651 = mulx_u64(x614, 0xfffaffffffffffffL);
- uint64_t x653, uint8_t x654 = addcarryx_u64(0x0, x636, x638);
- uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x639, x641);
- uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x642, x644);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x645, x647);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x648, x650);
- uint64_t x668, uint8_t _ = addcarryx_u64(0x0, x666, x651);
- uint64_t _, uint8_t x672 = addcarryx_u64(0x0, x614, x635);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x617, x653);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x620, x656);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x623, x659);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x626, x662);
- uint64_t x686, uint8_t x687 = addcarryx_u64(x684, x629, x665);
- uint64_t x689, uint8_t x690 = addcarryx_u64(x687, x632, x668);
- uint8_t x691 = (x690 + x633);
- uint64_t x693, uint8_t x694 = subborrow_u64(0x0, x674, 0xffffffffffffffffL);
- uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0xffffffffffffffffL);
- uint64_t x699, uint8_t x700 = subborrow_u64(x697, x680, 0xffffffffffffffffL);
- uint64_t x702, uint8_t x703 = subborrow_u64(x700, x683, 0xffffffffffffffffL);
- uint64_t x705, uint8_t x706 = subborrow_u64(x703, x686, 0xffffffffffffffffL);
- uint64_t x708, uint8_t x709 = subborrow_u64(x706, x689, 0xfffaffffffffffffL);
- uint64_t _, uint8_t x712 = subborrow_u64(x709, x691, 0x0);
- uint64_t x713 = cmovznz64(x712, x708, x689);
- uint64_t x714 = cmovznz64(x712, x705, x686);
- uint64_t x715 = cmovznz64(x712, x702, x683);
- uint64_t x716 = cmovznz64(x712, x699, x680);
- uint64_t x717 = cmovznz64(x712, x696, x677);
- uint64_t x718 = cmovznz64(x712, x693, x674);
- return (x713, x714, x715, x716, x717, x718))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.v
deleted file mode 100644
index dfb3a2883..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fenz.c b/src/Specific/montgomery64_2e384m5x2e368m1/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fenz.v b/src/Specific/montgomery64_2e384m5x2e368m1/fenz.v
deleted file mode 100644
index 7b2dfe9eb..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.v
deleted file mode 100644
index 3e3c53e96..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feopp.c b/src/Specific/montgomery64_2e384m5x2e368m1/feopp.c
deleted file mode 100644
index 666ec0ad1..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffffL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xfffaffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feopp.v b/src/Specific/montgomery64_2e384m5x2e368m1/feopp.v
deleted file mode 100644
index b5ca84620..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.log
deleted file mode 100644
index 625c3e169..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xfffaffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.v
deleted file mode 100644
index 70b12d647..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fesquare.c b/src/Specific/montgomery64_2e384m5x2e368m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fesub.c b/src/Specific/montgomery64_2e384m5x2e368m1/fesub.c
deleted file mode 100644
index 8e5943404..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffffL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xfffaffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fesub.v b/src/Specific/montgomery64_2e384m5x2e368m1/fesub.v
deleted file mode 100644
index 24f3efce1..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.log
deleted file mode 100644
index 2787b77d5..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xfffaffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.v
deleted file mode 100644
index 3e4cfd661..000000000
--- a/src/Specific/montgomery64_2e384m5x2e368m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/CurveParameters.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/CurveParameters.v
index 6642c8a5b..6642c8a5b 100644
--- a/src/Specific/montgomery64_2e384m5x2e368m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/Synthesis.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..6ff233bdb
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/compiler.sh b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/compiler.sh
index bd9da09cc..bd9da09cc 100755
--- a/src/Specific/montgomery64_2e384m5x2e368m1/compiler.sh
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/compilerxx.sh b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/compilerxx.sh
index f36f252ee..f36f252ee 100755
--- a/src/Specific/montgomery64_2e384m5x2e368m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.v
new file mode 100644
index 000000000..c1e435b4e
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..b405d92ab
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.v
new file mode 100644
index 000000000..6b6b602f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..babd0a93e
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.v
new file mode 100644
index 000000000..7ff722693
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..f665f19a5
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.v
new file mode 100644
index 000000000..7d93fdca8
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..5ce8d1487
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.v
new file mode 100644
index 000000000..980c15f82
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..e9bdd3242
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m5x2e368m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1/py_interpreter.sh b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/py_interpreter.sh
index e960ac224..e960ac224 100755
--- a/src/Specific/montgomery64_2e384m5x2e368m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/Synthesis.v b/src/Specific/montgomery64_2e384m79x2e376m1/Synthesis.v
deleted file mode 100644
index bef48e512..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feadd.c b/src/Specific/montgomery64_2e384m79x2e376m1/feadd.c
deleted file mode 100644
index 1bc58a70d..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feadd.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
- { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffffL, &x43);
- { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
- { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
- { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
- { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
- { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xb0ffffffffffffffL, &x58);
- { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
- { uint64_t x63 = cmovznz64(x62, x58, x40);
- { uint64_t x64 = cmovznz64(x62, x55, x37);
- { uint64_t x65 = cmovznz64(x62, x52, x34);
- { uint64_t x66 = cmovznz64(x62, x49, x31);
- { uint64_t x67 = cmovznz64(x62, x46, x28);
- { uint64_t x68 = cmovznz64(x62, x43, x25);
- out[0] = x68;
- out[1] = x67;
- out[2] = x66;
- out[3] = x65;
- out[4] = x64;
- out[5] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feadd.v b/src/Specific/montgomery64_2e384m79x2e376m1/feadd.v
deleted file mode 100644
index 234d44a05..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.log
deleted file mode 100644
index d44abf137..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
- uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
- uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xb0ffffffffffffffL);
- uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
- uint64_t x63 = cmovznz64(x62, x58, x40);
- uint64_t x64 = cmovznz64(x62, x55, x37);
- uint64_t x65 = cmovznz64(x62, x52, x34);
- uint64_t x66 = cmovznz64(x62, x49, x31);
- uint64_t x67 = cmovznz64(x62, x46, x28);
- uint64_t x68 = cmovznz64(x62, x43, x25);
- return (x63, x64, x65, x66, x67, x68))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.v
deleted file mode 100644
index 38fa66b7a..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/femul.c b/src/Specific/montgomery64_2e384m79x2e376m1/femul.c
deleted file mode 100644
index 65495b82a..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/femul.c
+++ /dev/null
@@ -1,260 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
- { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
- { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
- { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
- { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
- { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
- { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
- { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xffffffffffffffffL, &x68);
- { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
- { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
- { uint64_t x77; uint64_t x76 = _mulx_u64(x25, 0xb0ffffffffffffffL, &x77);
- { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
- { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
- { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
- { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
- { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
- { uint64_t x94; uint8_t _ = _addcarryx_u64(0x0, x92, x77, &x94);
- { uint64_t _; uint8_t x98 = _addcarryx_u64(0x0, x25, x61, &_);
- { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x43, x79, &x100);
- { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x46, x82, &x103);
- { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x49, x85, &x106);
- { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x52, x88, &x109);
- { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x55, x91, &x112);
- { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x58, x94, &x115);
- { uint64_t x119; uint64_t x118 = _mulx_u64(x7, x15, &x119);
- { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x17, &x122);
- { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x19, &x125);
- { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x21, &x128);
- { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x23, &x131);
- { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x22, &x134);
- { uint64_t x136; uint8_t x137 = _addcarryx_u64(0x0, x119, x121, &x136);
- { uint64_t x139; uint8_t x140 = _addcarryx_u64(x137, x122, x124, &x139);
- { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
- { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
- { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
- { uint64_t x151; uint8_t _ = _addcarryx_u64(0x0, x149, x134, &x151);
- { uint64_t x154; uint8_t x155 = _addcarryx_u64(0x0, x100, x118, &x154);
- { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x103, x136, &x157);
- { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
- { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
- { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
- { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
- { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x116, x151, &x172);
- { uint64_t x176; uint64_t x175 = _mulx_u64(x154, 0xffffffffffffffffL, &x176);
- { uint64_t x179; uint64_t x178 = _mulx_u64(x154, 0xffffffffffffffffL, &x179);
- { uint64_t x182; uint64_t x181 = _mulx_u64(x154, 0xffffffffffffffffL, &x182);
- { uint64_t x185; uint64_t x184 = _mulx_u64(x154, 0xffffffffffffffffL, &x185);
- { uint64_t x188; uint64_t x187 = _mulx_u64(x154, 0xffffffffffffffffL, &x188);
- { uint64_t x191; uint64_t x190 = _mulx_u64(x154, 0xb0ffffffffffffffL, &x191);
- { uint64_t x193; uint8_t x194 = _addcarryx_u64(0x0, x176, x178, &x193);
- { uint64_t x196; uint8_t x197 = _addcarryx_u64(x194, x179, x181, &x196);
- { uint64_t x199; uint8_t x200 = _addcarryx_u64(x197, x182, x184, &x199);
- { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
- { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
- { uint64_t x208; uint8_t _ = _addcarryx_u64(0x0, x206, x191, &x208);
- { uint64_t _; uint8_t x212 = _addcarryx_u64(0x0, x154, x175, &_);
- { uint64_t x214; uint8_t x215 = _addcarryx_u64(x212, x157, x193, &x214);
- { uint64_t x217; uint8_t x218 = _addcarryx_u64(x215, x160, x196, &x217);
- { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x163, x199, &x220);
- { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x166, x202, &x223);
- { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x169, x205, &x226);
- { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x172, x208, &x229);
- { uint8_t x231 = (x230 + x173);
- { uint64_t x234; uint64_t x233 = _mulx_u64(x9, x15, &x234);
- { uint64_t x237; uint64_t x236 = _mulx_u64(x9, x17, &x237);
- { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x19, &x240);
- { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x21, &x243);
- { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x23, &x246);
- { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x22, &x249);
- { uint64_t x251; uint8_t x252 = _addcarryx_u64(0x0, x234, x236, &x251);
- { uint64_t x254; uint8_t x255 = _addcarryx_u64(x252, x237, x239, &x254);
- { uint64_t x257; uint8_t x258 = _addcarryx_u64(x255, x240, x242, &x257);
- { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
- { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
- { uint64_t x266; uint8_t _ = _addcarryx_u64(0x0, x264, x249, &x266);
- { uint64_t x269; uint8_t x270 = _addcarryx_u64(0x0, x214, x233, &x269);
- { uint64_t x272; uint8_t x273 = _addcarryx_u64(x270, x217, x251, &x272);
- { uint64_t x275; uint8_t x276 = _addcarryx_u64(x273, x220, x254, &x275);
- { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
- { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
- { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
- { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x231, x266, &x287);
- { uint64_t x291; uint64_t x290 = _mulx_u64(x269, 0xffffffffffffffffL, &x291);
- { uint64_t x294; uint64_t x293 = _mulx_u64(x269, 0xffffffffffffffffL, &x294);
- { uint64_t x297; uint64_t x296 = _mulx_u64(x269, 0xffffffffffffffffL, &x297);
- { uint64_t x300; uint64_t x299 = _mulx_u64(x269, 0xffffffffffffffffL, &x300);
- { uint64_t x303; uint64_t x302 = _mulx_u64(x269, 0xffffffffffffffffL, &x303);
- { uint64_t x306; uint64_t x305 = _mulx_u64(x269, 0xb0ffffffffffffffL, &x306);
- { uint64_t x308; uint8_t x309 = _addcarryx_u64(0x0, x291, x293, &x308);
- { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x294, x296, &x311);
- { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x297, x299, &x314);
- { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x300, x302, &x317);
- { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
- { uint64_t x323; uint8_t _ = _addcarryx_u64(0x0, x321, x306, &x323);
- { uint64_t _; uint8_t x327 = _addcarryx_u64(0x0, x269, x290, &_);
- { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x272, x308, &x329);
- { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x275, x311, &x332);
- { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x278, x314, &x335);
- { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x281, x317, &x338);
- { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x284, x320, &x341);
- { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x287, x323, &x344);
- { uint8_t x346 = (x345 + x288);
- { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x15, &x349);
- { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x17, &x352);
- { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x19, &x355);
- { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x21, &x358);
- { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x23, &x361);
- { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x22, &x364);
- { uint64_t x366; uint8_t x367 = _addcarryx_u64(0x0, x349, x351, &x366);
- { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
- { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
- { uint64_t x375; uint8_t x376 = _addcarryx_u64(x373, x358, x360, &x375);
- { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
- { uint64_t x381; uint8_t _ = _addcarryx_u64(0x0, x379, x364, &x381);
- { uint64_t x384; uint8_t x385 = _addcarryx_u64(0x0, x329, x348, &x384);
- { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
- { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
- { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
- { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
- { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
- { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x346, x381, &x402);
- { uint64_t x406; uint64_t x405 = _mulx_u64(x384, 0xffffffffffffffffL, &x406);
- { uint64_t x409; uint64_t x408 = _mulx_u64(x384, 0xffffffffffffffffL, &x409);
- { uint64_t x412; uint64_t x411 = _mulx_u64(x384, 0xffffffffffffffffL, &x412);
- { uint64_t x415; uint64_t x414 = _mulx_u64(x384, 0xffffffffffffffffL, &x415);
- { uint64_t x418; uint64_t x417 = _mulx_u64(x384, 0xffffffffffffffffL, &x418);
- { uint64_t x421; uint64_t x420 = _mulx_u64(x384, 0xb0ffffffffffffffL, &x421);
- { uint64_t x423; uint8_t x424 = _addcarryx_u64(0x0, x406, x408, &x423);
- { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
- { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
- { uint64_t x432; uint8_t x433 = _addcarryx_u64(x430, x415, x417, &x432);
- { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x418, x420, &x435);
- { uint64_t x438; uint8_t _ = _addcarryx_u64(0x0, x436, x421, &x438);
- { uint64_t _; uint8_t x442 = _addcarryx_u64(0x0, x384, x405, &_);
- { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x387, x423, &x444);
- { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x390, x426, &x447);
- { uint64_t x450; uint8_t x451 = _addcarryx_u64(x448, x393, x429, &x450);
- { uint64_t x453; uint8_t x454 = _addcarryx_u64(x451, x396, x432, &x453);
- { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x399, x435, &x456);
- { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x402, x438, &x459);
- { uint8_t x461 = (x460 + x403);
- { uint64_t x464; uint64_t x463 = _mulx_u64(x13, x15, &x464);
- { uint64_t x467; uint64_t x466 = _mulx_u64(x13, x17, &x467);
- { uint64_t x470; uint64_t x469 = _mulx_u64(x13, x19, &x470);
- { uint64_t x473; uint64_t x472 = _mulx_u64(x13, x21, &x473);
- { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x23, &x476);
- { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x22, &x479);
- { uint64_t x481; uint8_t x482 = _addcarryx_u64(0x0, x464, x466, &x481);
- { uint64_t x484; uint8_t x485 = _addcarryx_u64(x482, x467, x469, &x484);
- { uint64_t x487; uint8_t x488 = _addcarryx_u64(x485, x470, x472, &x487);
- { uint64_t x490; uint8_t x491 = _addcarryx_u64(x488, x473, x475, &x490);
- { uint64_t x493; uint8_t x494 = _addcarryx_u64(x491, x476, x478, &x493);
- { uint64_t x496; uint8_t _ = _addcarryx_u64(0x0, x494, x479, &x496);
- { uint64_t x499; uint8_t x500 = _addcarryx_u64(0x0, x444, x463, &x499);
- { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x447, x481, &x502);
- { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x450, x484, &x505);
- { uint64_t x508; uint8_t x509 = _addcarryx_u64(x506, x453, x487, &x508);
- { uint64_t x511; uint8_t x512 = _addcarryx_u64(x509, x456, x490, &x511);
- { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
- { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x461, x496, &x517);
- { uint64_t x521; uint64_t x520 = _mulx_u64(x499, 0xffffffffffffffffL, &x521);
- { uint64_t x524; uint64_t x523 = _mulx_u64(x499, 0xffffffffffffffffL, &x524);
- { uint64_t x527; uint64_t x526 = _mulx_u64(x499, 0xffffffffffffffffL, &x527);
- { uint64_t x530; uint64_t x529 = _mulx_u64(x499, 0xffffffffffffffffL, &x530);
- { uint64_t x533; uint64_t x532 = _mulx_u64(x499, 0xffffffffffffffffL, &x533);
- { uint64_t x536; uint64_t x535 = _mulx_u64(x499, 0xb0ffffffffffffffL, &x536);
- { uint64_t x538; uint8_t x539 = _addcarryx_u64(0x0, x521, x523, &x538);
- { uint64_t x541; uint8_t x542 = _addcarryx_u64(x539, x524, x526, &x541);
- { uint64_t x544; uint8_t x545 = _addcarryx_u64(x542, x527, x529, &x544);
- { uint64_t x547; uint8_t x548 = _addcarryx_u64(x545, x530, x532, &x547);
- { uint64_t x550; uint8_t x551 = _addcarryx_u64(x548, x533, x535, &x550);
- { uint64_t x553; uint8_t _ = _addcarryx_u64(0x0, x551, x536, &x553);
- { uint64_t _; uint8_t x557 = _addcarryx_u64(0x0, x499, x520, &_);
- { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x502, x538, &x559);
- { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x505, x541, &x562);
- { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x508, x544, &x565);
- { uint64_t x568; uint8_t x569 = _addcarryx_u64(x566, x511, x547, &x568);
- { uint64_t x571; uint8_t x572 = _addcarryx_u64(x569, x514, x550, &x571);
- { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x517, x553, &x574);
- { uint8_t x576 = (x575 + x518);
- { uint64_t x579; uint64_t x578 = _mulx_u64(x12, x15, &x579);
- { uint64_t x582; uint64_t x581 = _mulx_u64(x12, x17, &x582);
- { uint64_t x585; uint64_t x584 = _mulx_u64(x12, x19, &x585);
- { uint64_t x588; uint64_t x587 = _mulx_u64(x12, x21, &x588);
- { uint64_t x591; uint64_t x590 = _mulx_u64(x12, x23, &x591);
- { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x22, &x594);
- { uint64_t x596; uint8_t x597 = _addcarryx_u64(0x0, x579, x581, &x596);
- { uint64_t x599; uint8_t x600 = _addcarryx_u64(x597, x582, x584, &x599);
- { uint64_t x602; uint8_t x603 = _addcarryx_u64(x600, x585, x587, &x602);
- { uint64_t x605; uint8_t x606 = _addcarryx_u64(x603, x588, x590, &x605);
- { uint64_t x608; uint8_t x609 = _addcarryx_u64(x606, x591, x593, &x608);
- { uint64_t x611; uint8_t _ = _addcarryx_u64(0x0, x609, x594, &x611);
- { uint64_t x614; uint8_t x615 = _addcarryx_u64(0x0, x559, x578, &x614);
- { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x562, x596, &x617);
- { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x565, x599, &x620);
- { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x568, x602, &x623);
- { uint64_t x626; uint8_t x627 = _addcarryx_u64(x624, x571, x605, &x626);
- { uint64_t x629; uint8_t x630 = _addcarryx_u64(x627, x574, x608, &x629);
- { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x576, x611, &x632);
- { uint64_t x636; uint64_t x635 = _mulx_u64(x614, 0xffffffffffffffffL, &x636);
- { uint64_t x639; uint64_t x638 = _mulx_u64(x614, 0xffffffffffffffffL, &x639);
- { uint64_t x642; uint64_t x641 = _mulx_u64(x614, 0xffffffffffffffffL, &x642);
- { uint64_t x645; uint64_t x644 = _mulx_u64(x614, 0xffffffffffffffffL, &x645);
- { uint64_t x648; uint64_t x647 = _mulx_u64(x614, 0xffffffffffffffffL, &x648);
- { uint64_t x651; uint64_t x650 = _mulx_u64(x614, 0xb0ffffffffffffffL, &x651);
- { uint64_t x653; uint8_t x654 = _addcarryx_u64(0x0, x636, x638, &x653);
- { uint64_t x656; uint8_t x657 = _addcarryx_u64(x654, x639, x641, &x656);
- { uint64_t x659; uint8_t x660 = _addcarryx_u64(x657, x642, x644, &x659);
- { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x645, x647, &x662);
- { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x648, x650, &x665);
- { uint64_t x668; uint8_t _ = _addcarryx_u64(0x0, x666, x651, &x668);
- { uint64_t _; uint8_t x672 = _addcarryx_u64(0x0, x614, x635, &_);
- { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x617, x653, &x674);
- { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x620, x656, &x677);
- { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x623, x659, &x680);
- { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x626, x662, &x683);
- { uint64_t x686; uint8_t x687 = _addcarryx_u64(x684, x629, x665, &x686);
- { uint64_t x689; uint8_t x690 = _addcarryx_u64(x687, x632, x668, &x689);
- { uint8_t x691 = (x690 + x633);
- { uint64_t x693; uint8_t x694 = _subborrow_u64(0x0, x674, 0xffffffffffffffffL, &x693);
- { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0xffffffffffffffffL, &x696);
- { uint64_t x699; uint8_t x700 = _subborrow_u64(x697, x680, 0xffffffffffffffffL, &x699);
- { uint64_t x702; uint8_t x703 = _subborrow_u64(x700, x683, 0xffffffffffffffffL, &x702);
- { uint64_t x705; uint8_t x706 = _subborrow_u64(x703, x686, 0xffffffffffffffffL, &x705);
- { uint64_t x708; uint8_t x709 = _subborrow_u64(x706, x689, 0xb0ffffffffffffffL, &x708);
- { uint64_t _; uint8_t x712 = _subborrow_u64(x709, x691, 0x0, &_);
- { uint64_t x713 = cmovznz64(x712, x708, x689);
- { uint64_t x714 = cmovznz64(x712, x705, x686);
- { uint64_t x715 = cmovznz64(x712, x702, x683);
- { uint64_t x716 = cmovznz64(x712, x699, x680);
- { uint64_t x717 = cmovznz64(x712, x696, x677);
- { uint64_t x718 = cmovznz64(x712, x693, x674);
- out[0] = x718;
- out[1] = x717;
- out[2] = x716;
- out[3] = x715;
- out[4] = x714;
- out[5] = x713;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/femul.v b/src/Specific/montgomery64_2e384m79x2e376m1/femul.v
deleted file mode 100644
index 8523fc2d6..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.log
deleted file mode 100644
index f6fad76a0..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.log
+++ /dev/null
@@ -1,246 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
- uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
- uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
- uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
- uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
- uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
- uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
- uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
- uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
- uint64_t x76, uint64_t x77 = mulx_u64(x25, 0xb0ffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
- uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
- uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
- uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
- uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
- uint64_t x94, uint8_t _ = addcarryx_u64(0x0, x92, x77);
- uint64_t _, uint8_t x98 = addcarryx_u64(0x0, x25, x61);
- uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x43, x79);
- uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x46, x82);
- uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x49, x85);
- uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x52, x88);
- uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x55, x91);
- uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x58, x94);
- uint64_t x118, uint64_t x119 = mulx_u64(x7, x15);
- uint64_t x121, uint64_t x122 = mulx_u64(x7, x17);
- uint64_t x124, uint64_t x125 = mulx_u64(x7, x19);
- uint64_t x127, uint64_t x128 = mulx_u64(x7, x21);
- uint64_t x130, uint64_t x131 = mulx_u64(x7, x23);
- uint64_t x133, uint64_t x134 = mulx_u64(x7, x22);
- uint64_t x136, uint8_t x137 = addcarryx_u64(0x0, x119, x121);
- uint64_t x139, uint8_t x140 = addcarryx_u64(x137, x122, x124);
- uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
- uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
- uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
- uint64_t x151, uint8_t _ = addcarryx_u64(0x0, x149, x134);
- uint64_t x154, uint8_t x155 = addcarryx_u64(0x0, x100, x118);
- uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x103, x136);
- uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
- uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
- uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
- uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
- uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x116, x151);
- uint64_t x175, uint64_t x176 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x178, uint64_t x179 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x181, uint64_t x182 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x184, uint64_t x185 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x187, uint64_t x188 = mulx_u64(x154, 0xffffffffffffffffL);
- uint64_t x190, uint64_t x191 = mulx_u64(x154, 0xb0ffffffffffffffL);
- uint64_t x193, uint8_t x194 = addcarryx_u64(0x0, x176, x178);
- uint64_t x196, uint8_t x197 = addcarryx_u64(x194, x179, x181);
- uint64_t x199, uint8_t x200 = addcarryx_u64(x197, x182, x184);
- uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
- uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
- uint64_t x208, uint8_t _ = addcarryx_u64(0x0, x206, x191);
- uint64_t _, uint8_t x212 = addcarryx_u64(0x0, x154, x175);
- uint64_t x214, uint8_t x215 = addcarryx_u64(x212, x157, x193);
- uint64_t x217, uint8_t x218 = addcarryx_u64(x215, x160, x196);
- uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x163, x199);
- uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x166, x202);
- uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x169, x205);
- uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x172, x208);
- uint8_t x231 = (x230 + x173);
- uint64_t x233, uint64_t x234 = mulx_u64(x9, x15);
- uint64_t x236, uint64_t x237 = mulx_u64(x9, x17);
- uint64_t x239, uint64_t x240 = mulx_u64(x9, x19);
- uint64_t x242, uint64_t x243 = mulx_u64(x9, x21);
- uint64_t x245, uint64_t x246 = mulx_u64(x9, x23);
- uint64_t x248, uint64_t x249 = mulx_u64(x9, x22);
- uint64_t x251, uint8_t x252 = addcarryx_u64(0x0, x234, x236);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x237, x239);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x240, x242);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
- uint64_t x266, uint8_t _ = addcarryx_u64(0x0, x264, x249);
- uint64_t x269, uint8_t x270 = addcarryx_u64(0x0, x214, x233);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x217, x251);
- uint64_t x275, uint8_t x276 = addcarryx_u64(x273, x220, x254);
- uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
- uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
- uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
- uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x231, x266);
- uint64_t x290, uint64_t x291 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x293, uint64_t x294 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x296, uint64_t x297 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x299, uint64_t x300 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x302, uint64_t x303 = mulx_u64(x269, 0xffffffffffffffffL);
- uint64_t x305, uint64_t x306 = mulx_u64(x269, 0xb0ffffffffffffffL);
- uint64_t x308, uint8_t x309 = addcarryx_u64(0x0, x291, x293);
- uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x294, x296);
- uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x297, x299);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x300, x302);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
- uint64_t x323, uint8_t _ = addcarryx_u64(0x0, x321, x306);
- uint64_t _, uint8_t x327 = addcarryx_u64(0x0, x269, x290);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x272, x308);
- uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x275, x311);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x278, x314);
- uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x281, x317);
- uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x284, x320);
- uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x287, x323);
- uint8_t x346 = (x345 + x288);
- uint64_t x348, uint64_t x349 = mulx_u64(x11, x15);
- uint64_t x351, uint64_t x352 = mulx_u64(x11, x17);
- uint64_t x354, uint64_t x355 = mulx_u64(x11, x19);
- uint64_t x357, uint64_t x358 = mulx_u64(x11, x21);
- uint64_t x360, uint64_t x361 = mulx_u64(x11, x23);
- uint64_t x363, uint64_t x364 = mulx_u64(x11, x22);
- uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x349, x351);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
- uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x358, x360);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
- uint64_t x381, uint8_t _ = addcarryx_u64(0x0, x379, x364);
- uint64_t x384, uint8_t x385 = addcarryx_u64(0x0, x329, x348);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x346, x381);
- uint64_t x405, uint64_t x406 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x408, uint64_t x409 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x411, uint64_t x412 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x414, uint64_t x415 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x417, uint64_t x418 = mulx_u64(x384, 0xffffffffffffffffL);
- uint64_t x420, uint64_t x421 = mulx_u64(x384, 0xb0ffffffffffffffL);
- uint64_t x423, uint8_t x424 = addcarryx_u64(0x0, x406, x408);
- uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
- uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
- uint64_t x432, uint8_t x433 = addcarryx_u64(x430, x415, x417);
- uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x418, x420);
- uint64_t x438, uint8_t _ = addcarryx_u64(0x0, x436, x421);
- uint64_t _, uint8_t x442 = addcarryx_u64(0x0, x384, x405);
- uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x387, x423);
- uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x390, x426);
- uint64_t x450, uint8_t x451 = addcarryx_u64(x448, x393, x429);
- uint64_t x453, uint8_t x454 = addcarryx_u64(x451, x396, x432);
- uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x399, x435);
- uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x402, x438);
- uint8_t x461 = (x460 + x403);
- uint64_t x463, uint64_t x464 = mulx_u64(x13, x15);
- uint64_t x466, uint64_t x467 = mulx_u64(x13, x17);
- uint64_t x469, uint64_t x470 = mulx_u64(x13, x19);
- uint64_t x472, uint64_t x473 = mulx_u64(x13, x21);
- uint64_t x475, uint64_t x476 = mulx_u64(x13, x23);
- uint64_t x478, uint64_t x479 = mulx_u64(x13, x22);
- uint64_t x481, uint8_t x482 = addcarryx_u64(0x0, x464, x466);
- uint64_t x484, uint8_t x485 = addcarryx_u64(x482, x467, x469);
- uint64_t x487, uint8_t x488 = addcarryx_u64(x485, x470, x472);
- uint64_t x490, uint8_t x491 = addcarryx_u64(x488, x473, x475);
- uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x476, x478);
- uint64_t x496, uint8_t _ = addcarryx_u64(0x0, x494, x479);
- uint64_t x499, uint8_t x500 = addcarryx_u64(0x0, x444, x463);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x447, x481);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x450, x484);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x453, x487);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x456, x490);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x461, x496);
- uint64_t x520, uint64_t x521 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x523, uint64_t x524 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x526, uint64_t x527 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x529, uint64_t x530 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x532, uint64_t x533 = mulx_u64(x499, 0xffffffffffffffffL);
- uint64_t x535, uint64_t x536 = mulx_u64(x499, 0xb0ffffffffffffffL);
- uint64_t x538, uint8_t x539 = addcarryx_u64(0x0, x521, x523);
- uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x524, x526);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x527, x529);
- uint64_t x547, uint8_t x548 = addcarryx_u64(x545, x530, x532);
- uint64_t x550, uint8_t x551 = addcarryx_u64(x548, x533, x535);
- uint64_t x553, uint8_t _ = addcarryx_u64(0x0, x551, x536);
- uint64_t _, uint8_t x557 = addcarryx_u64(0x0, x499, x520);
- uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x502, x538);
- uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x505, x541);
- uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x508, x544);
- uint64_t x568, uint8_t x569 = addcarryx_u64(x566, x511, x547);
- uint64_t x571, uint8_t x572 = addcarryx_u64(x569, x514, x550);
- uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x517, x553);
- uint8_t x576 = (x575 + x518);
- uint64_t x578, uint64_t x579 = mulx_u64(x12, x15);
- uint64_t x581, uint64_t x582 = mulx_u64(x12, x17);
- uint64_t x584, uint64_t x585 = mulx_u64(x12, x19);
- uint64_t x587, uint64_t x588 = mulx_u64(x12, x21);
- uint64_t x590, uint64_t x591 = mulx_u64(x12, x23);
- uint64_t x593, uint64_t x594 = mulx_u64(x12, x22);
- uint64_t x596, uint8_t x597 = addcarryx_u64(0x0, x579, x581);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x582, x584);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x585, x587);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x588, x590);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x591, x593);
- uint64_t x611, uint8_t _ = addcarryx_u64(0x0, x609, x594);
- uint64_t x614, uint8_t x615 = addcarryx_u64(0x0, x559, x578);
- uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x562, x596);
- uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x565, x599);
- uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x568, x602);
- uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x571, x605);
- uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x574, x608);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x576, x611);
- uint64_t x635, uint64_t x636 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x638, uint64_t x639 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x641, uint64_t x642 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x644, uint64_t x645 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x647, uint64_t x648 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x650, uint64_t x651 = mulx_u64(x614, 0xb0ffffffffffffffL);
- uint64_t x653, uint8_t x654 = addcarryx_u64(0x0, x636, x638);
- uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x639, x641);
- uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x642, x644);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x645, x647);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x648, x650);
- uint64_t x668, uint8_t _ = addcarryx_u64(0x0, x666, x651);
- uint64_t _, uint8_t x672 = addcarryx_u64(0x0, x614, x635);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x617, x653);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x620, x656);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x623, x659);
- uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x626, x662);
- uint64_t x686, uint8_t x687 = addcarryx_u64(x684, x629, x665);
- uint64_t x689, uint8_t x690 = addcarryx_u64(x687, x632, x668);
- uint8_t x691 = (x690 + x633);
- uint64_t x693, uint8_t x694 = subborrow_u64(0x0, x674, 0xffffffffffffffffL);
- uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0xffffffffffffffffL);
- uint64_t x699, uint8_t x700 = subborrow_u64(x697, x680, 0xffffffffffffffffL);
- uint64_t x702, uint8_t x703 = subborrow_u64(x700, x683, 0xffffffffffffffffL);
- uint64_t x705, uint8_t x706 = subborrow_u64(x703, x686, 0xffffffffffffffffL);
- uint64_t x708, uint8_t x709 = subborrow_u64(x706, x689, 0xb0ffffffffffffffL);
- uint64_t _, uint8_t x712 = subborrow_u64(x709, x691, 0x0);
- uint64_t x713 = cmovznz64(x712, x708, x689);
- uint64_t x714 = cmovznz64(x712, x705, x686);
- uint64_t x715 = cmovznz64(x712, x702, x683);
- uint64_t x716 = cmovznz64(x712, x699, x680);
- uint64_t x717 = cmovznz64(x712, x696, x677);
- uint64_t x718 = cmovznz64(x712, x693, x674);
- return (x713, x714, x715, x716, x717, x718))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.v
deleted file mode 100644
index 17d62c310..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fenz.c b/src/Specific/montgomery64_2e384m79x2e376m1/fenz.c
deleted file mode 100644
index c93f74257..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fenz.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x11 = (x10 | x9);
- { uint64_t x12 = (x8 | x11);
- { uint64_t x13 = (x6 | x12);
- { uint64_t x14 = (x4 | x13);
- { uint64_t x15 = (x2 | x14);
- out[0] = x15;
- }}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fenz.v b/src/Specific/montgomery64_2e384m79x2e376m1/fenz.v
deleted file mode 100644
index 6f00c01c8..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.log
deleted file mode 100644
index f39f1d91b..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.log
+++ /dev/null
@@ -1,12 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (x10 | x9);
- uint64_t x12 = (x8 | x11);
- uint64_t x13 = (x6 | x12);
- uint64_t x14 = (x4 | x13);
- uint64_t x15 = (x2 | x14);
- return x15)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.v
deleted file mode 100644
index 866b43ecb..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feopp.c b/src/Specific/montgomery64_2e384m79x2e376m1/feopp.c
deleted file mode 100644
index 1e2fad524..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feopp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void feopp(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
- { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
- { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
- { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
- { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
- { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffffffL);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
- { uint64_t x34 = (x29 & 0xffffffffffffffffL);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
- { uint64_t x38 = (x29 & 0xffffffffffffffffL);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
- { uint64_t x42 = (x29 & 0xffffffffffffffffL);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
- { uint64_t x46 = (x29 & 0xffffffffffffffffL);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
- { uint64_t x50 = (x29 & 0xb0ffffffffffffffL);
- { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feopp.v b/src/Specific/montgomery64_2e384m79x2e376m1/feopp.v
deleted file mode 100644
index e341413f3..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.log
deleted file mode 100644
index 72e96d79d..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
- uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
- uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
- uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
- uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffffffL);
- uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
- uint64_t x34 = (x29 & 0xffffffffffffffffL);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
- uint64_t x38 = (x29 & 0xffffffffffffffffL);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
- uint64_t x42 = (x29 & 0xffffffffffffffffL);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
- uint64_t x46 = (x29 & 0xffffffffffffffffL);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
- uint64_t x50 = (x29 & 0xb0ffffffffffffffL);
- uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.v
deleted file mode 100644
index 87d700198..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fesquare.c b/src/Specific/montgomery64_2e384m79x2e376m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fesub.c b/src/Specific/montgomery64_2e384m79x2e376m1/fesub.c
deleted file mode 100644
index 4a8b7c7dd..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fesub.c
+++ /dev/null
@@ -1,40 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
- { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
- { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
- { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
- { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
- { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
- { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- { uint64_t x43 = (x42 & 0xffffffffffffffffL);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
- { uint64_t x47 = (x42 & 0xffffffffffffffffL);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
- { uint64_t x51 = (x42 & 0xffffffffffffffffL);
- { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
- { uint64_t x55 = (x42 & 0xffffffffffffffffL);
- { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
- { uint64_t x59 = (x42 & 0xffffffffffffffffL);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
- { uint64_t x63 = (x42 & 0xb0ffffffffffffffL);
- { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
- out[0] = x45;
- out[1] = x49;
- out[2] = x53;
- out[3] = x57;
- out[4] = x61;
- out[5] = x65;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fesub.v b/src/Specific/montgomery64_2e384m79x2e376m1/fesub.v
deleted file mode 100644
index 54ce86613..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.log
deleted file mode 100644
index 4d416958a..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
- uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
- uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
- uint64_t x43 = (x42 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
- uint64_t x47 = (x42 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
- uint64_t x51 = (x42 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
- uint64_t x55 = (x42 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
- uint64_t x59 = (x42 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
- uint64_t x63 = (x42 & 0xb0ffffffffffffffL);
- uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
- (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.v
deleted file mode 100644
index 765908e48..000000000
--- a/src/Specific/montgomery64_2e384m79x2e376m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/CurveParameters.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/CurveParameters.v
index 67ec75679..67ec75679 100644
--- a/src/Specific/montgomery64_2e384m79x2e376m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/Synthesis.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..9929ba1e0
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/compiler.sh b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/compiler.sh
index e93f1a31d..e93f1a31d 100755
--- a/src/Specific/montgomery64_2e384m79x2e376m1/compiler.sh
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/compilerxx.sh b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/compilerxx.sh
index f24d4b55f..f24d4b55f 100755
--- a/src/Specific/montgomery64_2e384m79x2e376m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.v
new file mode 100644
index 000000000..772d0f206
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..7b38a59cb
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.v
new file mode 100644
index 000000000..981dcfb23
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1d0ae177e
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.v
new file mode 100644
index 000000000..93a7518ea
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.v
new file mode 100644
index 000000000..ce0b57b92
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.v
new file mode 100644
index 000000000..808a52be8
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.v
new file mode 100644
index 000000000..780930f90
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.v
new file mode 100644
index 000000000..f0424330b
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.v b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..7327fcdeb
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e384m79x2e376m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1/py_interpreter.sh b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/py_interpreter.sh
index ecb46830f..ecb46830f 100755
--- a/src/Specific/montgomery64_2e384m79x2e376m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e389m21/Synthesis.v b/src/Specific/montgomery64_2e389m21/Synthesis.v
deleted file mode 100644
index 67be0b308..000000000
--- a/src/Specific/montgomery64_2e389m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e389m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e389m21/feadd.c b/src/Specific/montgomery64_2e389m21/feadd.c
deleted file mode 100644
index 6e359760a..000000000
--- a/src/Specific/montgomery64_2e389m21/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffebL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xffffffffffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0x1f, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e389m21/feadd.v b/src/Specific/montgomery64_2e389m21/feadd.v
deleted file mode 100644
index 0896dcd4d..000000000
--- a/src/Specific/montgomery64_2e389m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e389m21/feaddDisplay.log b/src/Specific/montgomery64_2e389m21/feaddDisplay.log
deleted file mode 100644
index cb7dd7090..000000000
--- a/src/Specific/montgomery64_2e389m21/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffebL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0x1f);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e389m21/feaddDisplay.v b/src/Specific/montgomery64_2e389m21/feaddDisplay.v
deleted file mode 100644
index d80ef3f04..000000000
--- a/src/Specific/montgomery64_2e389m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e389m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e389m21/femul.v b/src/Specific/montgomery64_2e389m21/femul.v
deleted file mode 100644
index ed4b210cc..000000000
--- a/src/Specific/montgomery64_2e389m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e389m21/femulDisplay.log b/src/Specific/montgomery64_2e389m21/femulDisplay.log
deleted file mode 100644
index e85f8a75f..000000000
--- a/src/Specific/montgomery64_2e389m21/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t _ = mulx_u64(x29, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x74, uint64_t x75 = mulx_u64(x71, 0xffffffffffffffebL);
- uint64_t x77, uint64_t x78 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x92, uint8_t x93 = mulx_u64_out_u8(x71, 0x1f);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x90, x92);
- uint8_t x112 = (x111 + x93);
- uint64_t _, uint8_t x115 = addcarryx_u64(0x0, x29, x74);
- uint64_t x117, uint8_t x118 = addcarryx_u64(x115, x50, x95);
- uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x53, x98);
- uint64_t x123, uint8_t x124 = addcarryx_u64(x121, x56, x101);
- uint64_t x126, uint8_t x127 = addcarryx_u64(x124, x59, x104);
- uint64_t x129, uint8_t x130 = addcarryx_u64(x127, x62, x107);
- uint64_t x132, uint8_t x133 = addcarryx_u64(x130, x65, x110);
- uint64_t x135, uint8_t x136 = addcarryx_u64(x133, x68, x112);
- uint64_t x138, uint64_t x139 = mulx_u64(x7, x17);
- uint64_t x141, uint64_t x142 = mulx_u64(x7, x19);
- uint64_t x144, uint64_t x145 = mulx_u64(x7, x21);
- uint64_t x147, uint64_t x148 = mulx_u64(x7, x23);
- uint64_t x150, uint64_t x151 = mulx_u64(x7, x25);
- uint64_t x153, uint64_t x154 = mulx_u64(x7, x27);
- uint64_t x156, uint64_t x157 = mulx_u64(x7, x26);
- uint64_t x159, uint8_t x160 = addcarryx_u64(0x0, x139, x141);
- uint64_t x162, uint8_t x163 = addcarryx_u64(x160, x142, x144);
- uint64_t x165, uint8_t x166 = addcarryx_u64(x163, x145, x147);
- uint64_t x168, uint8_t x169 = addcarryx_u64(x166, x148, x150);
- uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x151, x153);
- uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x154, x156);
- uint64_t x177, uint8_t _ = addcarryx_u64(0x0, x175, x157);
- uint64_t x180, uint8_t x181 = addcarryx_u64(0x0, x117, x138);
- uint64_t x183, uint8_t x184 = addcarryx_u64(x181, x120, x159);
- uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x123, x162);
- uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x126, x165);
- uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x129, x168);
- uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x132, x171);
- uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x135, x174);
- uint64_t x201, uint8_t x202 = addcarryx_u64(x199, x136, x177);
- uint64_t x204, uint64_t _ = mulx_u64(x180, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x207, uint64_t x208 = mulx_u64(x204, 0xffffffffffffffebL);
- uint64_t x210, uint64_t x211 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x213, uint64_t x214 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x216, uint64_t x217 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x219, uint64_t x220 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x222, uint64_t x223 = mulx_u64(x204, 0xffffffffffffffffL);
- uint64_t x225, uint8_t x226 = mulx_u64_out_u8(x204, 0x1f);
- uint64_t x228, uint8_t x229 = addcarryx_u64(0x0, x208, x210);
- uint64_t x231, uint8_t x232 = addcarryx_u64(x229, x211, x213);
- uint64_t x234, uint8_t x235 = addcarryx_u64(x232, x214, x216);
- uint64_t x237, uint8_t x238 = addcarryx_u64(x235, x217, x219);
- uint64_t x240, uint8_t x241 = addcarryx_u64(x238, x220, x222);
- uint64_t x243, uint8_t x244 = addcarryx_u64(x241, x223, x225);
- uint8_t x245 = (x244 + x226);
- uint64_t _, uint8_t x248 = addcarryx_u64(0x0, x180, x207);
- uint64_t x250, uint8_t x251 = addcarryx_u64(x248, x183, x228);
- uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x186, x231);
- uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x189, x234);
- uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x192, x237);
- uint64_t x262, uint8_t x263 = addcarryx_u64(x260, x195, x240);
- uint64_t x265, uint8_t x266 = addcarryx_u64(x263, x198, x243);
- uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x201, x245);
- uint8_t x270 = (x269 + x202);
- uint64_t x272, uint64_t x273 = mulx_u64(x9, x17);
- uint64_t x275, uint64_t x276 = mulx_u64(x9, x19);
- uint64_t x278, uint64_t x279 = mulx_u64(x9, x21);
- uint64_t x281, uint64_t x282 = mulx_u64(x9, x23);
- uint64_t x284, uint64_t x285 = mulx_u64(x9, x25);
- uint64_t x287, uint64_t x288 = mulx_u64(x9, x27);
- uint64_t x290, uint64_t x291 = mulx_u64(x9, x26);
- uint64_t x293, uint8_t x294 = addcarryx_u64(0x0, x273, x275);
- uint64_t x296, uint8_t x297 = addcarryx_u64(x294, x276, x278);
- uint64_t x299, uint8_t x300 = addcarryx_u64(x297, x279, x281);
- uint64_t x302, uint8_t x303 = addcarryx_u64(x300, x282, x284);
- uint64_t x305, uint8_t x306 = addcarryx_u64(x303, x285, x287);
- uint64_t x308, uint8_t x309 = addcarryx_u64(x306, x288, x290);
- uint64_t x311, uint8_t _ = addcarryx_u64(0x0, x309, x291);
- uint64_t x314, uint8_t x315 = addcarryx_u64(0x0, x250, x272);
- uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x253, x293);
- uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x256, x296);
- uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x259, x299);
- uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x262, x302);
- uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x265, x305);
- uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x268, x308);
- uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x270, x311);
- uint64_t x338, uint64_t _ = mulx_u64(x314, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x341, uint64_t x342 = mulx_u64(x338, 0xffffffffffffffebL);
- uint64_t x344, uint64_t x345 = mulx_u64(x338, 0xffffffffffffffffL);
- uint64_t x347, uint64_t x348 = mulx_u64(x338, 0xffffffffffffffffL);
- uint64_t x350, uint64_t x351 = mulx_u64(x338, 0xffffffffffffffffL);
- uint64_t x353, uint64_t x354 = mulx_u64(x338, 0xffffffffffffffffL);
- uint64_t x356, uint64_t x357 = mulx_u64(x338, 0xffffffffffffffffL);
- uint64_t x359, uint8_t x360 = mulx_u64_out_u8(x338, 0x1f);
- uint64_t x362, uint8_t x363 = addcarryx_u64(0x0, x342, x344);
- uint64_t x365, uint8_t x366 = addcarryx_u64(x363, x345, x347);
- uint64_t x368, uint8_t x369 = addcarryx_u64(x366, x348, x350);
- uint64_t x371, uint8_t x372 = addcarryx_u64(x369, x351, x353);
- uint64_t x374, uint8_t x375 = addcarryx_u64(x372, x354, x356);
- uint64_t x377, uint8_t x378 = addcarryx_u64(x375, x357, x359);
- uint8_t x379 = (x378 + x360);
- uint64_t _, uint8_t x382 = addcarryx_u64(0x0, x314, x341);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x317, x362);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x320, x365);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x323, x368);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x326, x371);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x329, x374);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x332, x377);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x335, x379);
- uint8_t x404 = (x403 + x336);
- uint64_t x406, uint64_t x407 = mulx_u64(x11, x17);
- uint64_t x409, uint64_t x410 = mulx_u64(x11, x19);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x21);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x23);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x25);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x27);
- uint64_t x424, uint64_t x425 = mulx_u64(x11, x26);
- uint64_t x427, uint8_t x428 = addcarryx_u64(0x0, x407, x409);
- uint64_t x430, uint8_t x431 = addcarryx_u64(x428, x410, x412);
- uint64_t x433, uint8_t x434 = addcarryx_u64(x431, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x422, x424);
- uint64_t x445, uint8_t _ = addcarryx_u64(0x0, x443, x425);
- uint64_t x448, uint8_t x449 = addcarryx_u64(0x0, x384, x406);
- uint64_t x451, uint8_t x452 = addcarryx_u64(x449, x387, x427);
- uint64_t x454, uint8_t x455 = addcarryx_u64(x452, x390, x430);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x402, x442);
- uint64_t x469, uint8_t x470 = addcarryx_u64(x467, x404, x445);
- uint64_t x472, uint64_t _ = mulx_u64(x448, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x475, uint64_t x476 = mulx_u64(x472, 0xffffffffffffffebL);
- uint64_t x478, uint64_t x479 = mulx_u64(x472, 0xffffffffffffffffL);
- uint64_t x481, uint64_t x482 = mulx_u64(x472, 0xffffffffffffffffL);
- uint64_t x484, uint64_t x485 = mulx_u64(x472, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x472, 0xffffffffffffffffL);
- uint64_t x490, uint64_t x491 = mulx_u64(x472, 0xffffffffffffffffL);
- uint64_t x493, uint8_t x494 = mulx_u64_out_u8(x472, 0x1f);
- uint64_t x496, uint8_t x497 = addcarryx_u64(0x0, x476, x478);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x479, x481);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x488, x490);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x491, x493);
- uint8_t x513 = (x512 + x494);
- uint64_t _, uint8_t x516 = addcarryx_u64(0x0, x448, x475);
- uint64_t x518, uint8_t x519 = addcarryx_u64(x516, x451, x496);
- uint64_t x521, uint8_t x522 = addcarryx_u64(x519, x454, x499);
- uint64_t x524, uint8_t x525 = addcarryx_u64(x522, x457, x502);
- uint64_t x527, uint8_t x528 = addcarryx_u64(x525, x460, x505);
- uint64_t x530, uint8_t x531 = addcarryx_u64(x528, x463, x508);
- uint64_t x533, uint8_t x534 = addcarryx_u64(x531, x466, x511);
- uint64_t x536, uint8_t x537 = addcarryx_u64(x534, x469, x513);
- uint8_t x538 = (x537 + x470);
- uint64_t x540, uint64_t x541 = mulx_u64(x13, x17);
- uint64_t x543, uint64_t x544 = mulx_u64(x13, x19);
- uint64_t x546, uint64_t x547 = mulx_u64(x13, x21);
- uint64_t x549, uint64_t x550 = mulx_u64(x13, x23);
- uint64_t x552, uint64_t x553 = mulx_u64(x13, x25);
- uint64_t x555, uint64_t x556 = mulx_u64(x13, x27);
- uint64_t x558, uint64_t x559 = mulx_u64(x13, x26);
- uint64_t x561, uint8_t x562 = addcarryx_u64(0x0, x541, x543);
- uint64_t x564, uint8_t x565 = addcarryx_u64(x562, x544, x546);
- uint64_t x567, uint8_t x568 = addcarryx_u64(x565, x547, x549);
- uint64_t x570, uint8_t x571 = addcarryx_u64(x568, x550, x552);
- uint64_t x573, uint8_t x574 = addcarryx_u64(x571, x553, x555);
- uint64_t x576, uint8_t x577 = addcarryx_u64(x574, x556, x558);
- uint64_t x579, uint8_t _ = addcarryx_u64(0x0, x577, x559);
- uint64_t x582, uint8_t x583 = addcarryx_u64(0x0, x518, x540);
- uint64_t x585, uint8_t x586 = addcarryx_u64(x583, x521, x561);
- uint64_t x588, uint8_t x589 = addcarryx_u64(x586, x524, x564);
- uint64_t x591, uint8_t x592 = addcarryx_u64(x589, x527, x567);
- uint64_t x594, uint8_t x595 = addcarryx_u64(x592, x530, x570);
- uint64_t x597, uint8_t x598 = addcarryx_u64(x595, x533, x573);
- uint64_t x600, uint8_t x601 = addcarryx_u64(x598, x536, x576);
- uint64_t x603, uint8_t x604 = addcarryx_u64(x601, x538, x579);
- uint64_t x606, uint64_t _ = mulx_u64(x582, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x609, uint64_t x610 = mulx_u64(x606, 0xffffffffffffffebL);
- uint64_t x612, uint64_t x613 = mulx_u64(x606, 0xffffffffffffffffL);
- uint64_t x615, uint64_t x616 = mulx_u64(x606, 0xffffffffffffffffL);
- uint64_t x618, uint64_t x619 = mulx_u64(x606, 0xffffffffffffffffL);
- uint64_t x621, uint64_t x622 = mulx_u64(x606, 0xffffffffffffffffL);
- uint64_t x624, uint64_t x625 = mulx_u64(x606, 0xffffffffffffffffL);
- uint64_t x627, uint8_t x628 = mulx_u64_out_u8(x606, 0x1f);
- uint64_t x630, uint8_t x631 = addcarryx_u64(0x0, x610, x612);
- uint64_t x633, uint8_t x634 = addcarryx_u64(x631, x613, x615);
- uint64_t x636, uint8_t x637 = addcarryx_u64(x634, x616, x618);
- uint64_t x639, uint8_t x640 = addcarryx_u64(x637, x619, x621);
- uint64_t x642, uint8_t x643 = addcarryx_u64(x640, x622, x624);
- uint64_t x645, uint8_t x646 = addcarryx_u64(x643, x625, x627);
- uint8_t x647 = (x646 + x628);
- uint64_t _, uint8_t x650 = addcarryx_u64(0x0, x582, x609);
- uint64_t x652, uint8_t x653 = addcarryx_u64(x650, x585, x630);
- uint64_t x655, uint8_t x656 = addcarryx_u64(x653, x588, x633);
- uint64_t x658, uint8_t x659 = addcarryx_u64(x656, x591, x636);
- uint64_t x661, uint8_t x662 = addcarryx_u64(x659, x594, x639);
- uint64_t x664, uint8_t x665 = addcarryx_u64(x662, x597, x642);
- uint64_t x667, uint8_t x668 = addcarryx_u64(x665, x600, x645);
- uint64_t x670, uint8_t x671 = addcarryx_u64(x668, x603, x647);
- uint8_t x672 = (x671 + x604);
- uint64_t x674, uint64_t x675 = mulx_u64(x15, x17);
- uint64_t x677, uint64_t x678 = mulx_u64(x15, x19);
- uint64_t x680, uint64_t x681 = mulx_u64(x15, x21);
- uint64_t x683, uint64_t x684 = mulx_u64(x15, x23);
- uint64_t x686, uint64_t x687 = mulx_u64(x15, x25);
- uint64_t x689, uint64_t x690 = mulx_u64(x15, x27);
- uint64_t x692, uint64_t x693 = mulx_u64(x15, x26);
- uint64_t x695, uint8_t x696 = addcarryx_u64(0x0, x675, x677);
- uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x678, x680);
- uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x681, x683);
- uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x684, x686);
- uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x687, x689);
- uint64_t x710, uint8_t x711 = addcarryx_u64(x708, x690, x692);
- uint64_t x713, uint8_t _ = addcarryx_u64(0x0, x711, x693);
- uint64_t x716, uint8_t x717 = addcarryx_u64(0x0, x652, x674);
- uint64_t x719, uint8_t x720 = addcarryx_u64(x717, x655, x695);
- uint64_t x722, uint8_t x723 = addcarryx_u64(x720, x658, x698);
- uint64_t x725, uint8_t x726 = addcarryx_u64(x723, x661, x701);
- uint64_t x728, uint8_t x729 = addcarryx_u64(x726, x664, x704);
- uint64_t x731, uint8_t x732 = addcarryx_u64(x729, x667, x707);
- uint64_t x734, uint8_t x735 = addcarryx_u64(x732, x670, x710);
- uint64_t x737, uint8_t x738 = addcarryx_u64(x735, x672, x713);
- uint64_t x740, uint64_t _ = mulx_u64(x716, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x743, uint64_t x744 = mulx_u64(x740, 0xffffffffffffffebL);
- uint64_t x746, uint64_t x747 = mulx_u64(x740, 0xffffffffffffffffL);
- uint64_t x749, uint64_t x750 = mulx_u64(x740, 0xffffffffffffffffL);
- uint64_t x752, uint64_t x753 = mulx_u64(x740, 0xffffffffffffffffL);
- uint64_t x755, uint64_t x756 = mulx_u64(x740, 0xffffffffffffffffL);
- uint64_t x758, uint64_t x759 = mulx_u64(x740, 0xffffffffffffffffL);
- uint64_t x761, uint8_t x762 = mulx_u64_out_u8(x740, 0x1f);
- uint64_t x764, uint8_t x765 = addcarryx_u64(0x0, x744, x746);
- uint64_t x767, uint8_t x768 = addcarryx_u64(x765, x747, x749);
- uint64_t x770, uint8_t x771 = addcarryx_u64(x768, x750, x752);
- uint64_t x773, uint8_t x774 = addcarryx_u64(x771, x753, x755);
- uint64_t x776, uint8_t x777 = addcarryx_u64(x774, x756, x758);
- uint64_t x779, uint8_t x780 = addcarryx_u64(x777, x759, x761);
- uint8_t x781 = (x780 + x762);
- uint64_t _, uint8_t x784 = addcarryx_u64(0x0, x716, x743);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x719, x764);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x722, x767);
- uint64_t x792, uint8_t x793 = addcarryx_u64(x790, x725, x770);
- uint64_t x795, uint8_t x796 = addcarryx_u64(x793, x728, x773);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x731, x776);
- uint64_t x801, uint8_t x802 = addcarryx_u64(x799, x734, x779);
- uint64_t x804, uint8_t x805 = addcarryx_u64(x802, x737, x781);
- uint8_t x806 = (x805 + x738);
- uint64_t x808, uint64_t x809 = mulx_u64(x14, x17);
- uint64_t x811, uint64_t x812 = mulx_u64(x14, x19);
- uint64_t x814, uint64_t x815 = mulx_u64(x14, x21);
- uint64_t x817, uint64_t x818 = mulx_u64(x14, x23);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x25);
- uint64_t x823, uint64_t x824 = mulx_u64(x14, x27);
- uint64_t x826, uint64_t x827 = mulx_u64(x14, x26);
- uint64_t x829, uint8_t x830 = addcarryx_u64(0x0, x809, x811);
- uint64_t x832, uint8_t x833 = addcarryx_u64(x830, x812, x814);
- uint64_t x835, uint8_t x836 = addcarryx_u64(x833, x815, x817);
- uint64_t x838, uint8_t x839 = addcarryx_u64(x836, x818, x820);
- uint64_t x841, uint8_t x842 = addcarryx_u64(x839, x821, x823);
- uint64_t x844, uint8_t x845 = addcarryx_u64(x842, x824, x826);
- uint64_t x847, uint8_t _ = addcarryx_u64(0x0, x845, x827);
- uint64_t x850, uint8_t x851 = addcarryx_u64(0x0, x786, x808);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x789, x829);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x792, x832);
- uint64_t x859, uint8_t x860 = addcarryx_u64(x857, x795, x835);
- uint64_t x862, uint8_t x863 = addcarryx_u64(x860, x798, x838);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x801, x841);
- uint64_t x868, uint8_t x869 = addcarryx_u64(x866, x804, x844);
- uint64_t x871, uint8_t x872 = addcarryx_u64(x869, x806, x847);
- uint64_t x874, uint64_t _ = mulx_u64(x850, 0xcf3cf3cf3cf3cf3dL);
- uint64_t x877, uint64_t x878 = mulx_u64(x874, 0xffffffffffffffebL);
- uint64_t x880, uint64_t x881 = mulx_u64(x874, 0xffffffffffffffffL);
- uint64_t x883, uint64_t x884 = mulx_u64(x874, 0xffffffffffffffffL);
- uint64_t x886, uint64_t x887 = mulx_u64(x874, 0xffffffffffffffffL);
- uint64_t x889, uint64_t x890 = mulx_u64(x874, 0xffffffffffffffffL);
- uint64_t x892, uint64_t x893 = mulx_u64(x874, 0xffffffffffffffffL);
- uint64_t x895, uint8_t x896 = mulx_u64_out_u8(x874, 0x1f);
- uint64_t x898, uint8_t x899 = addcarryx_u64(0x0, x878, x880);
- uint64_t x901, uint8_t x902 = addcarryx_u64(x899, x881, x883);
- uint64_t x904, uint8_t x905 = addcarryx_u64(x902, x884, x886);
- uint64_t x907, uint8_t x908 = addcarryx_u64(x905, x887, x889);
- uint64_t x910, uint8_t x911 = addcarryx_u64(x908, x890, x892);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x893, x895);
- uint8_t x915 = (x914 + x896);
- uint64_t _, uint8_t x918 = addcarryx_u64(0x0, x850, x877);
- uint64_t x920, uint8_t x921 = addcarryx_u64(x918, x853, x898);
- uint64_t x923, uint8_t x924 = addcarryx_u64(x921, x856, x901);
- uint64_t x926, uint8_t x927 = addcarryx_u64(x924, x859, x904);
- uint64_t x929, uint8_t x930 = addcarryx_u64(x927, x862, x907);
- uint64_t x932, uint8_t x933 = addcarryx_u64(x930, x865, x910);
- uint64_t x935, uint8_t x936 = addcarryx_u64(x933, x868, x913);
- uint64_t x938, uint8_t x939 = addcarryx_u64(x936, x871, x915);
- uint8_t x940 = (x939 + x872);
- uint64_t x942, uint8_t x943 = subborrow_u64(0x0, x920, 0xffffffffffffffebL);
- uint64_t x945, uint8_t x946 = subborrow_u64(x943, x923, 0xffffffffffffffffL);
- uint64_t x948, uint8_t x949 = subborrow_u64(x946, x926, 0xffffffffffffffffL);
- uint64_t x951, uint8_t x952 = subborrow_u64(x949, x929, 0xffffffffffffffffL);
- uint64_t x954, uint8_t x955 = subborrow_u64(x952, x932, 0xffffffffffffffffL);
- uint64_t x957, uint8_t x958 = subborrow_u64(x955, x935, 0xffffffffffffffffL);
- uint64_t x960, uint8_t x961 = subborrow_u64(x958, x938, 0x1f);
- uint64_t _, uint8_t x964 = subborrow_u64(x961, x940, 0x0);
- uint64_t x965 = cmovznz(x964, x960, x938);
- uint64_t x966 = cmovznz(x964, x957, x935);
- uint64_t x967 = cmovznz(x964, x954, x932);
- uint64_t x968 = cmovznz(x964, x951, x929);
- uint64_t x969 = cmovznz(x964, x948, x926);
- uint64_t x970 = cmovznz(x964, x945, x923);
- uint64_t x971 = cmovznz(x964, x942, x920);
- return (x965, x966, x967, x968, x969, x970, x971))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e389m21/femulDisplay.v b/src/Specific/montgomery64_2e389m21/femulDisplay.v
deleted file mode 100644
index 44ad358bc..000000000
--- a/src/Specific/montgomery64_2e389m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e389m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e389m21/fenz.c b/src/Specific/montgomery64_2e389m21/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e389m21/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e389m21/fenz.v b/src/Specific/montgomery64_2e389m21/fenz.v
deleted file mode 100644
index 72caab4b7..000000000
--- a/src/Specific/montgomery64_2e389m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e389m21/fenzDisplay.log b/src/Specific/montgomery64_2e389m21/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e389m21/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e389m21/fenzDisplay.v b/src/Specific/montgomery64_2e389m21/fenzDisplay.v
deleted file mode 100644
index fcf74bd10..000000000
--- a/src/Specific/montgomery64_2e389m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e389m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e389m21/feopp.v b/src/Specific/montgomery64_2e389m21/feopp.v
deleted file mode 100644
index dd7348f6b..000000000
--- a/src/Specific/montgomery64_2e389m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e389m21/feoppDisplay.log b/src/Specific/montgomery64_2e389m21/feoppDisplay.log
deleted file mode 100644
index 4838eabff..000000000
--- a/src/Specific/montgomery64_2e389m21/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffebL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint8_t x59 = ((uint8_t)x34 & 0x1f);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e389m21/feoppDisplay.v b/src/Specific/montgomery64_2e389m21/feoppDisplay.v
deleted file mode 100644
index 0670cdf9f..000000000
--- a/src/Specific/montgomery64_2e389m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e389m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e389m21/fesquare.c b/src/Specific/montgomery64_2e389m21/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e389m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e389m21/fesub.v b/src/Specific/montgomery64_2e389m21/fesub.v
deleted file mode 100644
index 25d2ae32c..000000000
--- a/src/Specific/montgomery64_2e389m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e389m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e389m21/fesubDisplay.log b/src/Specific/montgomery64_2e389m21/fesubDisplay.log
deleted file mode 100644
index 4f96203a4..000000000
--- a/src/Specific/montgomery64_2e389m21/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffebL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xffffffffffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint8_t x74 = ((uint8_t)x49 & 0x1f);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e389m21/fesubDisplay.v b/src/Specific/montgomery64_2e389m21/fesubDisplay.v
deleted file mode 100644
index 1eb6c803b..000000000
--- a/src/Specific/montgomery64_2e389m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e389m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e389m21/CurveParameters.v b/src/Specific/montgomery64_2e389m21_7limbs/CurveParameters.v
index a7a960cdf..a7a960cdf 100644
--- a/src/Specific/montgomery64_2e389m21/CurveParameters.v
+++ b/src/Specific/montgomery64_2e389m21_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/Synthesis.v b/src/Specific/montgomery64_2e389m21_7limbs/Synthesis.v
new file mode 100644
index 000000000..1986e7517
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e389m21/compiler.sh b/src/Specific/montgomery64_2e389m21_7limbs/compiler.sh
index be53d2348..be53d2348 100755
--- a/src/Specific/montgomery64_2e389m21/compiler.sh
+++ b/src/Specific/montgomery64_2e389m21_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e389m21/compilerxx.sh b/src/Specific/montgomery64_2e389m21_7limbs/compilerxx.sh
index fc029a30c..fc029a30c 100755
--- a/src/Specific/montgomery64_2e389m21/compilerxx.sh
+++ b/src/Specific/montgomery64_2e389m21_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/feadd.v b/src/Specific/montgomery64_2e389m21_7limbs/feadd.v
new file mode 100644
index 000000000..6236ce5a5
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e389m21_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..ba7d5f66e
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/femul.v b/src/Specific/montgomery64_2e389m21_7limbs/femul.v
new file mode 100644
index 000000000..f5af4d6a4
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e389m21_7limbs/femulDisplay.v
new file mode 100644
index 000000000..02be243c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/fenz.v b/src/Specific/montgomery64_2e389m21_7limbs/fenz.v
new file mode 100644
index 000000000..5e40a190a
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e389m21_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..91660be19
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/feopp.v b/src/Specific/montgomery64_2e389m21_7limbs/feopp.v
new file mode 100644
index 000000000..e36a5a83f
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e389m21_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..55e9a71f9
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/fesub.v b/src/Specific/montgomery64_2e389m21_7limbs/fesub.v
new file mode 100644
index 000000000..8a53bbd98
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e389m21_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e389m21_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..ee4c02e11
--- /dev/null
+++ b/src/Specific/montgomery64_2e389m21_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e389m21_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e389m21/py_interpreter.sh b/src/Specific/montgomery64_2e389m21_7limbs/py_interpreter.sh
index 0711e414c..0711e414c 100755
--- a/src/Specific/montgomery64_2e389m21/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e389m21_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e401m31/Synthesis.v b/src/Specific/montgomery64_2e401m31/Synthesis.v
deleted file mode 100644
index 29d9e4496..000000000
--- a/src/Specific/montgomery64_2e401m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e401m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e401m31/feadd.c b/src/Specific/montgomery64_2e401m31/feadd.c
deleted file mode 100644
index 01c0bc6b7..000000000
--- a/src/Specific/montgomery64_2e401m31/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffe1L, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xffffffffffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0x1ffff, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e401m31/feadd.v b/src/Specific/montgomery64_2e401m31/feadd.v
deleted file mode 100644
index 54c89278a..000000000
--- a/src/Specific/montgomery64_2e401m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e401m31/feaddDisplay.log b/src/Specific/montgomery64_2e401m31/feaddDisplay.log
deleted file mode 100644
index 9bffb37fb..000000000
--- a/src/Specific/montgomery64_2e401m31/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffe1L);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0x1ffff);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e401m31/feaddDisplay.v b/src/Specific/montgomery64_2e401m31/feaddDisplay.v
deleted file mode 100644
index e13fdde6f..000000000
--- a/src/Specific/montgomery64_2e401m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e401m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e401m31/femul.v b/src/Specific/montgomery64_2e401m31/femul.v
deleted file mode 100644
index 2a36a5533..000000000
--- a/src/Specific/montgomery64_2e401m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e401m31/femulDisplay.log b/src/Specific/montgomery64_2e401m31/femulDisplay.log
deleted file mode 100644
index c325ddb44..000000000
--- a/src/Specific/montgomery64_2e401m31/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t _ = mulx_u64(x29, 0xef7bdef7bdef7bdfL);
- uint64_t x74, uint64_t x75 = mulx_u64(x71, 0xffffffffffffffe1L);
- uint64_t x77, uint64_t x78 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x92, uint64_t x93 = mulx_u64(x71, 0x1ffff);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x90, x92);
- uint64_t x113, uint8_t _ = addcarryx_u64(0x0, x111, x93);
- uint64_t _, uint8_t x117 = addcarryx_u64(0x0, x29, x74);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x50, x95);
- uint64_t x122, uint8_t x123 = addcarryx_u64(x120, x53, x98);
- uint64_t x125, uint8_t x126 = addcarryx_u64(x123, x56, x101);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x59, x104);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x62, x107);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x65, x110);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x68, x113);
- uint64_t x140, uint64_t x141 = mulx_u64(x7, x17);
- uint64_t x143, uint64_t x144 = mulx_u64(x7, x19);
- uint64_t x146, uint64_t x147 = mulx_u64(x7, x21);
- uint64_t x149, uint64_t x150 = mulx_u64(x7, x23);
- uint64_t x152, uint64_t x153 = mulx_u64(x7, x25);
- uint64_t x155, uint64_t x156 = mulx_u64(x7, x27);
- uint64_t x158, uint64_t x159 = mulx_u64(x7, x26);
- uint64_t x161, uint8_t x162 = addcarryx_u64(0x0, x141, x143);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x144, x146);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x147, x149);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x150, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x153, x155);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x156, x158);
- uint64_t x179, uint8_t _ = addcarryx_u64(0x0, x177, x159);
- uint64_t x182, uint8_t x183 = addcarryx_u64(0x0, x119, x140);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x122, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x125, x164);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x128, x167);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x131, x170);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x134, x173);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x137, x176);
- uint64_t x203, uint8_t x204 = addcarryx_u64(x201, x138, x179);
- uint64_t x206, uint64_t _ = mulx_u64(x182, 0xef7bdef7bdef7bdfL);
- uint64_t x209, uint64_t x210 = mulx_u64(x206, 0xffffffffffffffe1L);
- uint64_t x212, uint64_t x213 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x215, uint64_t x216 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x218, uint64_t x219 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x221, uint64_t x222 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x224, uint64_t x225 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x227, uint64_t x228 = mulx_u64(x206, 0x1ffff);
- uint64_t x230, uint8_t x231 = addcarryx_u64(0x0, x210, x212);
- uint64_t x233, uint8_t x234 = addcarryx_u64(x231, x213, x215);
- uint64_t x236, uint8_t x237 = addcarryx_u64(x234, x216, x218);
- uint64_t x239, uint8_t x240 = addcarryx_u64(x237, x219, x221);
- uint64_t x242, uint8_t x243 = addcarryx_u64(x240, x222, x224);
- uint64_t x245, uint8_t x246 = addcarryx_u64(x243, x225, x227);
- uint64_t x248, uint8_t _ = addcarryx_u64(0x0, x246, x228);
- uint64_t _, uint8_t x252 = addcarryx_u64(0x0, x182, x209);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x185, x230);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x188, x233);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x191, x236);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x194, x239);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x197, x242);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x200, x245);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint64_t x276, uint64_t x277 = mulx_u64(x9, x17);
- uint64_t x279, uint64_t x280 = mulx_u64(x9, x19);
- uint64_t x282, uint64_t x283 = mulx_u64(x9, x21);
- uint64_t x285, uint64_t x286 = mulx_u64(x9, x23);
- uint64_t x288, uint64_t x289 = mulx_u64(x9, x25);
- uint64_t x291, uint64_t x292 = mulx_u64(x9, x27);
- uint64_t x294, uint64_t x295 = mulx_u64(x9, x26);
- uint64_t x297, uint8_t x298 = addcarryx_u64(0x0, x277, x279);
- uint64_t x300, uint8_t x301 = addcarryx_u64(x298, x280, x282);
- uint64_t x303, uint8_t x304 = addcarryx_u64(x301, x283, x285);
- uint64_t x306, uint8_t x307 = addcarryx_u64(x304, x286, x288);
- uint64_t x309, uint8_t x310 = addcarryx_u64(x307, x289, x291);
- uint64_t x312, uint8_t x313 = addcarryx_u64(x310, x292, x294);
- uint64_t x315, uint8_t _ = addcarryx_u64(0x0, x313, x295);
- uint64_t x318, uint8_t x319 = addcarryx_u64(0x0, x254, x276);
- uint64_t x321, uint8_t x322 = addcarryx_u64(x319, x257, x297);
- uint64_t x324, uint8_t x325 = addcarryx_u64(x322, x260, x300);
- uint64_t x327, uint8_t x328 = addcarryx_u64(x325, x263, x303);
- uint64_t x330, uint8_t x331 = addcarryx_u64(x328, x266, x306);
- uint64_t x333, uint8_t x334 = addcarryx_u64(x331, x269, x309);
- uint64_t x336, uint8_t x337 = addcarryx_u64(x334, x272, x312);
- uint64_t x339, uint8_t x340 = addcarryx_u64(x337, x274, x315);
- uint64_t x342, uint64_t _ = mulx_u64(x318, 0xef7bdef7bdef7bdfL);
- uint64_t x345, uint64_t x346 = mulx_u64(x342, 0xffffffffffffffe1L);
- uint64_t x348, uint64_t x349 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x351, uint64_t x352 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x354, uint64_t x355 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x357, uint64_t x358 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x360, uint64_t x361 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x363, uint64_t x364 = mulx_u64(x342, 0x1ffff);
- uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x346, x348);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x349, x351);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x352, x354);
- uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x355, x357);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x358, x360);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x361, x363);
- uint64_t x384, uint8_t _ = addcarryx_u64(0x0, x382, x364);
- uint64_t _, uint8_t x388 = addcarryx_u64(0x0, x318, x345);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x321, x366);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x324, x369);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x327, x372);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x330, x375);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x333, x378);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x336, x381);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x17);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x19);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x21);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x23);
- uint64_t x424, uint64_t x425 = mulx_u64(x11, x25);
- uint64_t x427, uint64_t x428 = mulx_u64(x11, x27);
- uint64_t x430, uint64_t x431 = mulx_u64(x11, x26);
- uint64_t x433, uint8_t x434 = addcarryx_u64(0x0, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x422, x424);
- uint64_t x445, uint8_t x446 = addcarryx_u64(x443, x425, x427);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x428, x430);
- uint64_t x451, uint8_t _ = addcarryx_u64(0x0, x449, x431);
- uint64_t x454, uint8_t x455 = addcarryx_u64(0x0, x390, x412);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x402, x442);
- uint64_t x469, uint8_t x470 = addcarryx_u64(x467, x405, x445);
- uint64_t x472, uint8_t x473 = addcarryx_u64(x470, x408, x448);
- uint64_t x475, uint8_t x476 = addcarryx_u64(x473, x410, x451);
- uint64_t x478, uint64_t _ = mulx_u64(x454, 0xef7bdef7bdef7bdfL);
- uint64_t x481, uint64_t x482 = mulx_u64(x478, 0xffffffffffffffe1L);
- uint64_t x484, uint64_t x485 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x490, uint64_t x491 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x493, uint64_t x494 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x496, uint64_t x497 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x499, uint64_t x500 = mulx_u64(x478, 0x1ffff);
- uint64_t x502, uint8_t x503 = addcarryx_u64(0x0, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x488, x490);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x491, x493);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x494, x496);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x497, x499);
- uint64_t x520, uint8_t _ = addcarryx_u64(0x0, x518, x500);
- uint64_t _, uint8_t x524 = addcarryx_u64(0x0, x454, x481);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x457, x502);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x460, x505);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x463, x508);
- uint64_t x535, uint8_t x536 = addcarryx_u64(x533, x466, x511);
- uint64_t x538, uint8_t x539 = addcarryx_u64(x536, x469, x514);
- uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x472, x517);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint64_t x548, uint64_t x549 = mulx_u64(x13, x17);
- uint64_t x551, uint64_t x552 = mulx_u64(x13, x19);
- uint64_t x554, uint64_t x555 = mulx_u64(x13, x21);
- uint64_t x557, uint64_t x558 = mulx_u64(x13, x23);
- uint64_t x560, uint64_t x561 = mulx_u64(x13, x25);
- uint64_t x563, uint64_t x564 = mulx_u64(x13, x27);
- uint64_t x566, uint64_t x567 = mulx_u64(x13, x26);
- uint64_t x569, uint8_t x570 = addcarryx_u64(0x0, x549, x551);
- uint64_t x572, uint8_t x573 = addcarryx_u64(x570, x552, x554);
- uint64_t x575, uint8_t x576 = addcarryx_u64(x573, x555, x557);
- uint64_t x578, uint8_t x579 = addcarryx_u64(x576, x558, x560);
- uint64_t x581, uint8_t x582 = addcarryx_u64(x579, x561, x563);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x564, x566);
- uint64_t x587, uint8_t _ = addcarryx_u64(0x0, x585, x567);
- uint64_t x590, uint8_t x591 = addcarryx_u64(0x0, x526, x548);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x529, x569);
- uint64_t x596, uint8_t x597 = addcarryx_u64(x594, x532, x572);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x535, x575);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x538, x578);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x541, x581);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x544, x584);
- uint64_t x611, uint8_t x612 = addcarryx_u64(x609, x546, x587);
- uint64_t x614, uint64_t _ = mulx_u64(x590, 0xef7bdef7bdef7bdfL);
- uint64_t x617, uint64_t x618 = mulx_u64(x614, 0xffffffffffffffe1L);
- uint64_t x620, uint64_t x621 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x623, uint64_t x624 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x626, uint64_t x627 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x629, uint64_t x630 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x632, uint64_t x633 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x635, uint64_t x636 = mulx_u64(x614, 0x1ffff);
- uint64_t x638, uint8_t x639 = addcarryx_u64(0x0, x618, x620);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x621, x623);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x624, x626);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x627, x629);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x630, x632);
- uint64_t x653, uint8_t x654 = addcarryx_u64(x651, x633, x635);
- uint64_t x656, uint8_t _ = addcarryx_u64(0x0, x654, x636);
- uint64_t _, uint8_t x660 = addcarryx_u64(0x0, x590, x617);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x593, x638);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x596, x641);
- uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x599, x644);
- uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x602, x647);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x605, x650);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x608, x653);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint64_t x684, uint64_t x685 = mulx_u64(x15, x17);
- uint64_t x687, uint64_t x688 = mulx_u64(x15, x19);
- uint64_t x690, uint64_t x691 = mulx_u64(x15, x21);
- uint64_t x693, uint64_t x694 = mulx_u64(x15, x23);
- uint64_t x696, uint64_t x697 = mulx_u64(x15, x25);
- uint64_t x699, uint64_t x700 = mulx_u64(x15, x27);
- uint64_t x702, uint64_t x703 = mulx_u64(x15, x26);
- uint64_t x705, uint8_t x706 = addcarryx_u64(0x0, x685, x687);
- uint64_t x708, uint8_t x709 = addcarryx_u64(x706, x688, x690);
- uint64_t x711, uint8_t x712 = addcarryx_u64(x709, x691, x693);
- uint64_t x714, uint8_t x715 = addcarryx_u64(x712, x694, x696);
- uint64_t x717, uint8_t x718 = addcarryx_u64(x715, x697, x699);
- uint64_t x720, uint8_t x721 = addcarryx_u64(x718, x700, x702);
- uint64_t x723, uint8_t _ = addcarryx_u64(0x0, x721, x703);
- uint64_t x726, uint8_t x727 = addcarryx_u64(0x0, x662, x684);
- uint64_t x729, uint8_t x730 = addcarryx_u64(x727, x665, x705);
- uint64_t x732, uint8_t x733 = addcarryx_u64(x730, x668, x708);
- uint64_t x735, uint8_t x736 = addcarryx_u64(x733, x671, x711);
- uint64_t x738, uint8_t x739 = addcarryx_u64(x736, x674, x714);
- uint64_t x741, uint8_t x742 = addcarryx_u64(x739, x677, x717);
- uint64_t x744, uint8_t x745 = addcarryx_u64(x742, x680, x720);
- uint64_t x747, uint8_t x748 = addcarryx_u64(x745, x682, x723);
- uint64_t x750, uint64_t _ = mulx_u64(x726, 0xef7bdef7bdef7bdfL);
- uint64_t x753, uint64_t x754 = mulx_u64(x750, 0xffffffffffffffe1L);
- uint64_t x756, uint64_t x757 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x759, uint64_t x760 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x762, uint64_t x763 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x765, uint64_t x766 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x768, uint64_t x769 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x771, uint64_t x772 = mulx_u64(x750, 0x1ffff);
- uint64_t x774, uint8_t x775 = addcarryx_u64(0x0, x754, x756);
- uint64_t x777, uint8_t x778 = addcarryx_u64(x775, x757, x759);
- uint64_t x780, uint8_t x781 = addcarryx_u64(x778, x760, x762);
- uint64_t x783, uint8_t x784 = addcarryx_u64(x781, x763, x765);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x766, x768);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x769, x771);
- uint64_t x792, uint8_t _ = addcarryx_u64(0x0, x790, x772);
- uint64_t _, uint8_t x796 = addcarryx_u64(0x0, x726, x753);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x729, x774);
- uint64_t x801, uint8_t x802 = addcarryx_u64(x799, x732, x777);
- uint64_t x804, uint8_t x805 = addcarryx_u64(x802, x735, x780);
- uint64_t x807, uint8_t x808 = addcarryx_u64(x805, x738, x783);
- uint64_t x810, uint8_t x811 = addcarryx_u64(x808, x741, x786);
- uint64_t x813, uint8_t x814 = addcarryx_u64(x811, x744, x789);
- uint64_t x816, uint8_t x817 = addcarryx_u64(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x17);
- uint64_t x823, uint64_t x824 = mulx_u64(x14, x19);
- uint64_t x826, uint64_t x827 = mulx_u64(x14, x21);
- uint64_t x829, uint64_t x830 = mulx_u64(x14, x23);
- uint64_t x832, uint64_t x833 = mulx_u64(x14, x25);
- uint64_t x835, uint64_t x836 = mulx_u64(x14, x27);
- uint64_t x838, uint64_t x839 = mulx_u64(x14, x26);
- uint64_t x841, uint8_t x842 = addcarryx_u64(0x0, x821, x823);
- uint64_t x844, uint8_t x845 = addcarryx_u64(x842, x824, x826);
- uint64_t x847, uint8_t x848 = addcarryx_u64(x845, x827, x829);
- uint64_t x850, uint8_t x851 = addcarryx_u64(x848, x830, x832);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x833, x835);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x836, x838);
- uint64_t x859, uint8_t _ = addcarryx_u64(0x0, x857, x839);
- uint64_t x862, uint8_t x863 = addcarryx_u64(0x0, x798, x820);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x801, x841);
- uint64_t x868, uint8_t x869 = addcarryx_u64(x866, x804, x844);
- uint64_t x871, uint8_t x872 = addcarryx_u64(x869, x807, x847);
- uint64_t x874, uint8_t x875 = addcarryx_u64(x872, x810, x850);
- uint64_t x877, uint8_t x878 = addcarryx_u64(x875, x813, x853);
- uint64_t x880, uint8_t x881 = addcarryx_u64(x878, x816, x856);
- uint64_t x883, uint8_t x884 = addcarryx_u64(x881, x818, x859);
- uint64_t x886, uint64_t _ = mulx_u64(x862, 0xef7bdef7bdef7bdfL);
- uint64_t x889, uint64_t x890 = mulx_u64(x886, 0xffffffffffffffe1L);
- uint64_t x892, uint64_t x893 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x895, uint64_t x896 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x898, uint64_t x899 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x901, uint64_t x902 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x904, uint64_t x905 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x907, uint64_t x908 = mulx_u64(x886, 0x1ffff);
- uint64_t x910, uint8_t x911 = addcarryx_u64(0x0, x890, x892);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x893, x895);
- uint64_t x916, uint8_t x917 = addcarryx_u64(x914, x896, x898);
- uint64_t x919, uint8_t x920 = addcarryx_u64(x917, x899, x901);
- uint64_t x922, uint8_t x923 = addcarryx_u64(x920, x902, x904);
- uint64_t x925, uint8_t x926 = addcarryx_u64(x923, x905, x907);
- uint64_t x928, uint8_t _ = addcarryx_u64(0x0, x926, x908);
- uint64_t _, uint8_t x932 = addcarryx_u64(0x0, x862, x889);
- uint64_t x934, uint8_t x935 = addcarryx_u64(x932, x865, x910);
- uint64_t x937, uint8_t x938 = addcarryx_u64(x935, x868, x913);
- uint64_t x940, uint8_t x941 = addcarryx_u64(x938, x871, x916);
- uint64_t x943, uint8_t x944 = addcarryx_u64(x941, x874, x919);
- uint64_t x946, uint8_t x947 = addcarryx_u64(x944, x877, x922);
- uint64_t x949, uint8_t x950 = addcarryx_u64(x947, x880, x925);
- uint64_t x952, uint8_t x953 = addcarryx_u64(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint64_t x956, uint8_t x957 = subborrow_u64(0x0, x934, 0xffffffffffffffe1L);
- uint64_t x959, uint8_t x960 = subborrow_u64(x957, x937, 0xffffffffffffffffL);
- uint64_t x962, uint8_t x963 = subborrow_u64(x960, x940, 0xffffffffffffffffL);
- uint64_t x965, uint8_t x966 = subborrow_u64(x963, x943, 0xffffffffffffffffL);
- uint64_t x968, uint8_t x969 = subborrow_u64(x966, x946, 0xffffffffffffffffL);
- uint64_t x971, uint8_t x972 = subborrow_u64(x969, x949, 0xffffffffffffffffL);
- uint64_t x974, uint8_t x975 = subborrow_u64(x972, x952, 0x1ffff);
- uint64_t _, uint8_t x978 = subborrow_u64(x975, x954, 0x0);
- uint64_t x979 = cmovznz(x978, x974, x952);
- uint64_t x980 = cmovznz(x978, x971, x949);
- uint64_t x981 = cmovznz(x978, x968, x946);
- uint64_t x982 = cmovznz(x978, x965, x943);
- uint64_t x983 = cmovznz(x978, x962, x940);
- uint64_t x984 = cmovznz(x978, x959, x937);
- uint64_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e401m31/femulDisplay.v b/src/Specific/montgomery64_2e401m31/femulDisplay.v
deleted file mode 100644
index f6b1329f1..000000000
--- a/src/Specific/montgomery64_2e401m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e401m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e401m31/fenz.c b/src/Specific/montgomery64_2e401m31/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e401m31/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e401m31/fenz.v b/src/Specific/montgomery64_2e401m31/fenz.v
deleted file mode 100644
index d311e1772..000000000
--- a/src/Specific/montgomery64_2e401m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e401m31/fenzDisplay.log b/src/Specific/montgomery64_2e401m31/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e401m31/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e401m31/fenzDisplay.v b/src/Specific/montgomery64_2e401m31/fenzDisplay.v
deleted file mode 100644
index ff8f3285b..000000000
--- a/src/Specific/montgomery64_2e401m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e401m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e401m31/feopp.v b/src/Specific/montgomery64_2e401m31/feopp.v
deleted file mode 100644
index bf635d43e..000000000
--- a/src/Specific/montgomery64_2e401m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e401m31/feoppDisplay.log b/src/Specific/montgomery64_2e401m31/feoppDisplay.log
deleted file mode 100644
index 4f2dceeb6..000000000
--- a/src/Specific/montgomery64_2e401m31/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffe1L);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0x1ffff);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e401m31/feoppDisplay.v b/src/Specific/montgomery64_2e401m31/feoppDisplay.v
deleted file mode 100644
index efbe139c1..000000000
--- a/src/Specific/montgomery64_2e401m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e401m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e401m31/fesquare.c b/src/Specific/montgomery64_2e401m31/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e401m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e401m31/fesub.v b/src/Specific/montgomery64_2e401m31/fesub.v
deleted file mode 100644
index cd21ff5ef..000000000
--- a/src/Specific/montgomery64_2e401m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e401m31/fesubDisplay.log b/src/Specific/montgomery64_2e401m31/fesubDisplay.log
deleted file mode 100644
index 570647ac0..000000000
--- a/src/Specific/montgomery64_2e401m31/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffe1L);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xffffffffffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0x1ffff);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e401m31/fesubDisplay.v b/src/Specific/montgomery64_2e401m31/fesubDisplay.v
deleted file mode 100644
index 20ce336eb..000000000
--- a/src/Specific/montgomery64_2e401m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e401m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e401m31/CurveParameters.v b/src/Specific/montgomery64_2e401m31_7limbs/CurveParameters.v
index 1f1900525..1f1900525 100644
--- a/src/Specific/montgomery64_2e401m31/CurveParameters.v
+++ b/src/Specific/montgomery64_2e401m31_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/Synthesis.v b/src/Specific/montgomery64_2e401m31_7limbs/Synthesis.v
new file mode 100644
index 000000000..1c5155764
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e401m31/compiler.sh b/src/Specific/montgomery64_2e401m31_7limbs/compiler.sh
index 4f05fcb89..4f05fcb89 100755
--- a/src/Specific/montgomery64_2e401m31/compiler.sh
+++ b/src/Specific/montgomery64_2e401m31_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e401m31/compilerxx.sh b/src/Specific/montgomery64_2e401m31_7limbs/compilerxx.sh
index 42bbcad39..42bbcad39 100755
--- a/src/Specific/montgomery64_2e401m31/compilerxx.sh
+++ b/src/Specific/montgomery64_2e401m31_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/feadd.v b/src/Specific/montgomery64_2e401m31_7limbs/feadd.v
new file mode 100644
index 000000000..b0cb069e9
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e401m31_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..6551d8c38
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/femul.v b/src/Specific/montgomery64_2e401m31_7limbs/femul.v
new file mode 100644
index 000000000..2f5a1a3a9
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e401m31_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f4ce6c5bd
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/fenz.v b/src/Specific/montgomery64_2e401m31_7limbs/fenz.v
new file mode 100644
index 000000000..c49ceb86a
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e401m31_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..1a5eaca6a
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/feopp.v b/src/Specific/montgomery64_2e401m31_7limbs/feopp.v
new file mode 100644
index 000000000..eed3d21ce
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e401m31_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..45c6fcc94
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/fesub.v b/src/Specific/montgomery64_2e401m31_7limbs/fesub.v
new file mode 100644
index 000000000..384b6bb08
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e401m31_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e401m31_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..d28491620
--- /dev/null
+++ b/src/Specific/montgomery64_2e401m31_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e401m31_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e401m31/py_interpreter.sh b/src/Specific/montgomery64_2e401m31_7limbs/py_interpreter.sh
index 18f2c7bd8..18f2c7bd8 100755
--- a/src/Specific/montgomery64_2e401m31/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e401m31_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e413m21/Synthesis.v b/src/Specific/montgomery64_2e413m21/Synthesis.v
deleted file mode 100644
index 18c4d0efc..000000000
--- a/src/Specific/montgomery64_2e413m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e413m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e413m21/feadd.c b/src/Specific/montgomery64_2e413m21/feadd.c
deleted file mode 100644
index 1978027e3..000000000
--- a/src/Specific/montgomery64_2e413m21/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffebL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xffffffffffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0x1fffffff, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e413m21/feadd.v b/src/Specific/montgomery64_2e413m21/feadd.v
deleted file mode 100644
index 82574c5ee..000000000
--- a/src/Specific/montgomery64_2e413m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e413m21/feaddDisplay.log b/src/Specific/montgomery64_2e413m21/feaddDisplay.log
deleted file mode 100644
index 0e539add9..000000000
--- a/src/Specific/montgomery64_2e413m21/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffebL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0x1fffffff);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e413m21/feaddDisplay.v b/src/Specific/montgomery64_2e413m21/feaddDisplay.v
deleted file mode 100644
index eb3011ecc..000000000
--- a/src/Specific/montgomery64_2e413m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e413m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e413m21/femul.v b/src/Specific/montgomery64_2e413m21/femul.v
deleted file mode 100644
index 083b9e7ac..000000000
--- a/src/Specific/montgomery64_2e413m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e413m21/femulDisplay.v b/src/Specific/montgomery64_2e413m21/femulDisplay.v
deleted file mode 100644
index 51312dcc6..000000000
--- a/src/Specific/montgomery64_2e413m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e413m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e413m21/fenz.c b/src/Specific/montgomery64_2e413m21/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e413m21/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e413m21/fenz.v b/src/Specific/montgomery64_2e413m21/fenz.v
deleted file mode 100644
index 03d2feac5..000000000
--- a/src/Specific/montgomery64_2e413m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e413m21/fenzDisplay.log b/src/Specific/montgomery64_2e413m21/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e413m21/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e413m21/fenzDisplay.v b/src/Specific/montgomery64_2e413m21/fenzDisplay.v
deleted file mode 100644
index 19e66eeb8..000000000
--- a/src/Specific/montgomery64_2e413m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e413m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e413m21/feopp.v b/src/Specific/montgomery64_2e413m21/feopp.v
deleted file mode 100644
index 6bc18e3e4..000000000
--- a/src/Specific/montgomery64_2e413m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e413m21/feoppDisplay.log b/src/Specific/montgomery64_2e413m21/feoppDisplay.log
deleted file mode 100644
index 09dc52a59..000000000
--- a/src/Specific/montgomery64_2e413m21/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffebL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0x1fffffff);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e413m21/feoppDisplay.v b/src/Specific/montgomery64_2e413m21/feoppDisplay.v
deleted file mode 100644
index 660be7c7e..000000000
--- a/src/Specific/montgomery64_2e413m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e413m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e413m21/fesquare.c b/src/Specific/montgomery64_2e413m21/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e413m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e413m21/fesub.v b/src/Specific/montgomery64_2e413m21/fesub.v
deleted file mode 100644
index ef8a3798f..000000000
--- a/src/Specific/montgomery64_2e413m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e413m21/fesubDisplay.log b/src/Specific/montgomery64_2e413m21/fesubDisplay.log
deleted file mode 100644
index c4f0083b3..000000000
--- a/src/Specific/montgomery64_2e413m21/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffebL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xffffffffffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0x1fffffff);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e413m21/fesubDisplay.v b/src/Specific/montgomery64_2e413m21/fesubDisplay.v
deleted file mode 100644
index 242d11ef8..000000000
--- a/src/Specific/montgomery64_2e413m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e413m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e413m21/CurveParameters.v b/src/Specific/montgomery64_2e413m21_7limbs/CurveParameters.v
index 072b07875..072b07875 100644
--- a/src/Specific/montgomery64_2e413m21/CurveParameters.v
+++ b/src/Specific/montgomery64_2e413m21_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/Synthesis.v b/src/Specific/montgomery64_2e413m21_7limbs/Synthesis.v
new file mode 100644
index 000000000..6e1f63661
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e413m21/compiler.sh b/src/Specific/montgomery64_2e413m21_7limbs/compiler.sh
index 404f82538..404f82538 100755
--- a/src/Specific/montgomery64_2e413m21/compiler.sh
+++ b/src/Specific/montgomery64_2e413m21_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e413m21/compilerxx.sh b/src/Specific/montgomery64_2e413m21_7limbs/compilerxx.sh
index 934a9dfbe..934a9dfbe 100755
--- a/src/Specific/montgomery64_2e413m21/compilerxx.sh
+++ b/src/Specific/montgomery64_2e413m21_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/feadd.v b/src/Specific/montgomery64_2e413m21_7limbs/feadd.v
new file mode 100644
index 000000000..8cb127d43
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e413m21_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..cdd899cb1
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/femul.v b/src/Specific/montgomery64_2e413m21_7limbs/femul.v
new file mode 100644
index 000000000..cdad0d00e
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e413m21_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f55c9c649
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/fenz.v b/src/Specific/montgomery64_2e413m21_7limbs/fenz.v
new file mode 100644
index 000000000..ef30f537d
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e413m21_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..b94d72a55
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/feopp.v b/src/Specific/montgomery64_2e413m21_7limbs/feopp.v
new file mode 100644
index 000000000..45dd48d6f
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e413m21_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..44cf585c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/fesub.v b/src/Specific/montgomery64_2e413m21_7limbs/fesub.v
new file mode 100644
index 000000000..4f94daa7d
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e413m21_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e413m21_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..4ffc415f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e413m21_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e413m21_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e413m21/py_interpreter.sh b/src/Specific/montgomery64_2e413m21_7limbs/py_interpreter.sh
index 8be5e5a3b..8be5e5a3b 100755
--- a/src/Specific/montgomery64_2e413m21/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e413m21_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e414m17/Synthesis.v b/src/Specific/montgomery64_2e414m17/Synthesis.v
deleted file mode 100644
index 19341762b..000000000
--- a/src/Specific/montgomery64_2e414m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e414m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e414m17/feadd.c b/src/Specific/montgomery64_2e414m17/feadd.c
deleted file mode 100644
index ec76fd473..000000000
--- a/src/Specific/montgomery64_2e414m17/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffefL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xffffffffffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0x3fffffff, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e414m17/feadd.v b/src/Specific/montgomery64_2e414m17/feadd.v
deleted file mode 100644
index df66f8cb6..000000000
--- a/src/Specific/montgomery64_2e414m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e414m17/feaddDisplay.log b/src/Specific/montgomery64_2e414m17/feaddDisplay.log
deleted file mode 100644
index d7510c664..000000000
--- a/src/Specific/montgomery64_2e414m17/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffefL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0x3fffffff);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e414m17/feaddDisplay.v b/src/Specific/montgomery64_2e414m17/feaddDisplay.v
deleted file mode 100644
index c09396ab5..000000000
--- a/src/Specific/montgomery64_2e414m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e414m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e414m17/femul.v b/src/Specific/montgomery64_2e414m17/femul.v
deleted file mode 100644
index be6546adf..000000000
--- a/src/Specific/montgomery64_2e414m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e414m17/femulDisplay.log b/src/Specific/montgomery64_2e414m17/femulDisplay.log
deleted file mode 100644
index a2258ff07..000000000
--- a/src/Specific/montgomery64_2e414m17/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t _ = mulx_u64(x29, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x74, uint64_t x75 = mulx_u64(x71, 0xffffffffffffffefL);
- uint64_t x77, uint64_t x78 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x92, uint64_t x93 = mulx_u64(x71, 0x3fffffff);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x90, x92);
- uint64_t x113, uint8_t _ = addcarryx_u64(0x0, x111, x93);
- uint64_t _, uint8_t x117 = addcarryx_u64(0x0, x29, x74);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x50, x95);
- uint64_t x122, uint8_t x123 = addcarryx_u64(x120, x53, x98);
- uint64_t x125, uint8_t x126 = addcarryx_u64(x123, x56, x101);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x59, x104);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x62, x107);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x65, x110);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x68, x113);
- uint64_t x140, uint64_t x141 = mulx_u64(x7, x17);
- uint64_t x143, uint64_t x144 = mulx_u64(x7, x19);
- uint64_t x146, uint64_t x147 = mulx_u64(x7, x21);
- uint64_t x149, uint64_t x150 = mulx_u64(x7, x23);
- uint64_t x152, uint64_t x153 = mulx_u64(x7, x25);
- uint64_t x155, uint64_t x156 = mulx_u64(x7, x27);
- uint64_t x158, uint64_t x159 = mulx_u64(x7, x26);
- uint64_t x161, uint8_t x162 = addcarryx_u64(0x0, x141, x143);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x144, x146);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x147, x149);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x150, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x153, x155);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x156, x158);
- uint64_t x179, uint8_t _ = addcarryx_u64(0x0, x177, x159);
- uint64_t x182, uint8_t x183 = addcarryx_u64(0x0, x119, x140);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x122, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x125, x164);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x128, x167);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x131, x170);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x134, x173);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x137, x176);
- uint64_t x203, uint8_t x204 = addcarryx_u64(x201, x138, x179);
- uint64_t x206, uint64_t _ = mulx_u64(x182, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x209, uint64_t x210 = mulx_u64(x206, 0xffffffffffffffefL);
- uint64_t x212, uint64_t x213 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x215, uint64_t x216 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x218, uint64_t x219 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x221, uint64_t x222 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x224, uint64_t x225 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x227, uint64_t x228 = mulx_u64(x206, 0x3fffffff);
- uint64_t x230, uint8_t x231 = addcarryx_u64(0x0, x210, x212);
- uint64_t x233, uint8_t x234 = addcarryx_u64(x231, x213, x215);
- uint64_t x236, uint8_t x237 = addcarryx_u64(x234, x216, x218);
- uint64_t x239, uint8_t x240 = addcarryx_u64(x237, x219, x221);
- uint64_t x242, uint8_t x243 = addcarryx_u64(x240, x222, x224);
- uint64_t x245, uint8_t x246 = addcarryx_u64(x243, x225, x227);
- uint64_t x248, uint8_t _ = addcarryx_u64(0x0, x246, x228);
- uint64_t _, uint8_t x252 = addcarryx_u64(0x0, x182, x209);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x185, x230);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x188, x233);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x191, x236);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x194, x239);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x197, x242);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x200, x245);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint64_t x276, uint64_t x277 = mulx_u64(x9, x17);
- uint64_t x279, uint64_t x280 = mulx_u64(x9, x19);
- uint64_t x282, uint64_t x283 = mulx_u64(x9, x21);
- uint64_t x285, uint64_t x286 = mulx_u64(x9, x23);
- uint64_t x288, uint64_t x289 = mulx_u64(x9, x25);
- uint64_t x291, uint64_t x292 = mulx_u64(x9, x27);
- uint64_t x294, uint64_t x295 = mulx_u64(x9, x26);
- uint64_t x297, uint8_t x298 = addcarryx_u64(0x0, x277, x279);
- uint64_t x300, uint8_t x301 = addcarryx_u64(x298, x280, x282);
- uint64_t x303, uint8_t x304 = addcarryx_u64(x301, x283, x285);
- uint64_t x306, uint8_t x307 = addcarryx_u64(x304, x286, x288);
- uint64_t x309, uint8_t x310 = addcarryx_u64(x307, x289, x291);
- uint64_t x312, uint8_t x313 = addcarryx_u64(x310, x292, x294);
- uint64_t x315, uint8_t _ = addcarryx_u64(0x0, x313, x295);
- uint64_t x318, uint8_t x319 = addcarryx_u64(0x0, x254, x276);
- uint64_t x321, uint8_t x322 = addcarryx_u64(x319, x257, x297);
- uint64_t x324, uint8_t x325 = addcarryx_u64(x322, x260, x300);
- uint64_t x327, uint8_t x328 = addcarryx_u64(x325, x263, x303);
- uint64_t x330, uint8_t x331 = addcarryx_u64(x328, x266, x306);
- uint64_t x333, uint8_t x334 = addcarryx_u64(x331, x269, x309);
- uint64_t x336, uint8_t x337 = addcarryx_u64(x334, x272, x312);
- uint64_t x339, uint8_t x340 = addcarryx_u64(x337, x274, x315);
- uint64_t x342, uint64_t _ = mulx_u64(x318, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x345, uint64_t x346 = mulx_u64(x342, 0xffffffffffffffefL);
- uint64_t x348, uint64_t x349 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x351, uint64_t x352 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x354, uint64_t x355 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x357, uint64_t x358 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x360, uint64_t x361 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x363, uint64_t x364 = mulx_u64(x342, 0x3fffffff);
- uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x346, x348);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x349, x351);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x352, x354);
- uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x355, x357);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x358, x360);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x361, x363);
- uint64_t x384, uint8_t _ = addcarryx_u64(0x0, x382, x364);
- uint64_t _, uint8_t x388 = addcarryx_u64(0x0, x318, x345);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x321, x366);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x324, x369);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x327, x372);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x330, x375);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x333, x378);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x336, x381);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x17);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x19);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x21);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x23);
- uint64_t x424, uint64_t x425 = mulx_u64(x11, x25);
- uint64_t x427, uint64_t x428 = mulx_u64(x11, x27);
- uint64_t x430, uint64_t x431 = mulx_u64(x11, x26);
- uint64_t x433, uint8_t x434 = addcarryx_u64(0x0, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x422, x424);
- uint64_t x445, uint8_t x446 = addcarryx_u64(x443, x425, x427);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x428, x430);
- uint64_t x451, uint8_t _ = addcarryx_u64(0x0, x449, x431);
- uint64_t x454, uint8_t x455 = addcarryx_u64(0x0, x390, x412);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x402, x442);
- uint64_t x469, uint8_t x470 = addcarryx_u64(x467, x405, x445);
- uint64_t x472, uint8_t x473 = addcarryx_u64(x470, x408, x448);
- uint64_t x475, uint8_t x476 = addcarryx_u64(x473, x410, x451);
- uint64_t x478, uint64_t _ = mulx_u64(x454, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x481, uint64_t x482 = mulx_u64(x478, 0xffffffffffffffefL);
- uint64_t x484, uint64_t x485 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x490, uint64_t x491 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x493, uint64_t x494 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x496, uint64_t x497 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x499, uint64_t x500 = mulx_u64(x478, 0x3fffffff);
- uint64_t x502, uint8_t x503 = addcarryx_u64(0x0, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x488, x490);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x491, x493);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x494, x496);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x497, x499);
- uint64_t x520, uint8_t _ = addcarryx_u64(0x0, x518, x500);
- uint64_t _, uint8_t x524 = addcarryx_u64(0x0, x454, x481);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x457, x502);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x460, x505);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x463, x508);
- uint64_t x535, uint8_t x536 = addcarryx_u64(x533, x466, x511);
- uint64_t x538, uint8_t x539 = addcarryx_u64(x536, x469, x514);
- uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x472, x517);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint64_t x548, uint64_t x549 = mulx_u64(x13, x17);
- uint64_t x551, uint64_t x552 = mulx_u64(x13, x19);
- uint64_t x554, uint64_t x555 = mulx_u64(x13, x21);
- uint64_t x557, uint64_t x558 = mulx_u64(x13, x23);
- uint64_t x560, uint64_t x561 = mulx_u64(x13, x25);
- uint64_t x563, uint64_t x564 = mulx_u64(x13, x27);
- uint64_t x566, uint64_t x567 = mulx_u64(x13, x26);
- uint64_t x569, uint8_t x570 = addcarryx_u64(0x0, x549, x551);
- uint64_t x572, uint8_t x573 = addcarryx_u64(x570, x552, x554);
- uint64_t x575, uint8_t x576 = addcarryx_u64(x573, x555, x557);
- uint64_t x578, uint8_t x579 = addcarryx_u64(x576, x558, x560);
- uint64_t x581, uint8_t x582 = addcarryx_u64(x579, x561, x563);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x564, x566);
- uint64_t x587, uint8_t _ = addcarryx_u64(0x0, x585, x567);
- uint64_t x590, uint8_t x591 = addcarryx_u64(0x0, x526, x548);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x529, x569);
- uint64_t x596, uint8_t x597 = addcarryx_u64(x594, x532, x572);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x535, x575);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x538, x578);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x541, x581);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x544, x584);
- uint64_t x611, uint8_t x612 = addcarryx_u64(x609, x546, x587);
- uint64_t x614, uint64_t _ = mulx_u64(x590, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x617, uint64_t x618 = mulx_u64(x614, 0xffffffffffffffefL);
- uint64_t x620, uint64_t x621 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x623, uint64_t x624 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x626, uint64_t x627 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x629, uint64_t x630 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x632, uint64_t x633 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x635, uint64_t x636 = mulx_u64(x614, 0x3fffffff);
- uint64_t x638, uint8_t x639 = addcarryx_u64(0x0, x618, x620);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x621, x623);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x624, x626);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x627, x629);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x630, x632);
- uint64_t x653, uint8_t x654 = addcarryx_u64(x651, x633, x635);
- uint64_t x656, uint8_t _ = addcarryx_u64(0x0, x654, x636);
- uint64_t _, uint8_t x660 = addcarryx_u64(0x0, x590, x617);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x593, x638);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x596, x641);
- uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x599, x644);
- uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x602, x647);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x605, x650);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x608, x653);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint64_t x684, uint64_t x685 = mulx_u64(x15, x17);
- uint64_t x687, uint64_t x688 = mulx_u64(x15, x19);
- uint64_t x690, uint64_t x691 = mulx_u64(x15, x21);
- uint64_t x693, uint64_t x694 = mulx_u64(x15, x23);
- uint64_t x696, uint64_t x697 = mulx_u64(x15, x25);
- uint64_t x699, uint64_t x700 = mulx_u64(x15, x27);
- uint64_t x702, uint64_t x703 = mulx_u64(x15, x26);
- uint64_t x705, uint8_t x706 = addcarryx_u64(0x0, x685, x687);
- uint64_t x708, uint8_t x709 = addcarryx_u64(x706, x688, x690);
- uint64_t x711, uint8_t x712 = addcarryx_u64(x709, x691, x693);
- uint64_t x714, uint8_t x715 = addcarryx_u64(x712, x694, x696);
- uint64_t x717, uint8_t x718 = addcarryx_u64(x715, x697, x699);
- uint64_t x720, uint8_t x721 = addcarryx_u64(x718, x700, x702);
- uint64_t x723, uint8_t _ = addcarryx_u64(0x0, x721, x703);
- uint64_t x726, uint8_t x727 = addcarryx_u64(0x0, x662, x684);
- uint64_t x729, uint8_t x730 = addcarryx_u64(x727, x665, x705);
- uint64_t x732, uint8_t x733 = addcarryx_u64(x730, x668, x708);
- uint64_t x735, uint8_t x736 = addcarryx_u64(x733, x671, x711);
- uint64_t x738, uint8_t x739 = addcarryx_u64(x736, x674, x714);
- uint64_t x741, uint8_t x742 = addcarryx_u64(x739, x677, x717);
- uint64_t x744, uint8_t x745 = addcarryx_u64(x742, x680, x720);
- uint64_t x747, uint8_t x748 = addcarryx_u64(x745, x682, x723);
- uint64_t x750, uint64_t _ = mulx_u64(x726, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x753, uint64_t x754 = mulx_u64(x750, 0xffffffffffffffefL);
- uint64_t x756, uint64_t x757 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x759, uint64_t x760 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x762, uint64_t x763 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x765, uint64_t x766 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x768, uint64_t x769 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x771, uint64_t x772 = mulx_u64(x750, 0x3fffffff);
- uint64_t x774, uint8_t x775 = addcarryx_u64(0x0, x754, x756);
- uint64_t x777, uint8_t x778 = addcarryx_u64(x775, x757, x759);
- uint64_t x780, uint8_t x781 = addcarryx_u64(x778, x760, x762);
- uint64_t x783, uint8_t x784 = addcarryx_u64(x781, x763, x765);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x766, x768);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x769, x771);
- uint64_t x792, uint8_t _ = addcarryx_u64(0x0, x790, x772);
- uint64_t _, uint8_t x796 = addcarryx_u64(0x0, x726, x753);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x729, x774);
- uint64_t x801, uint8_t x802 = addcarryx_u64(x799, x732, x777);
- uint64_t x804, uint8_t x805 = addcarryx_u64(x802, x735, x780);
- uint64_t x807, uint8_t x808 = addcarryx_u64(x805, x738, x783);
- uint64_t x810, uint8_t x811 = addcarryx_u64(x808, x741, x786);
- uint64_t x813, uint8_t x814 = addcarryx_u64(x811, x744, x789);
- uint64_t x816, uint8_t x817 = addcarryx_u64(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x17);
- uint64_t x823, uint64_t x824 = mulx_u64(x14, x19);
- uint64_t x826, uint64_t x827 = mulx_u64(x14, x21);
- uint64_t x829, uint64_t x830 = mulx_u64(x14, x23);
- uint64_t x832, uint64_t x833 = mulx_u64(x14, x25);
- uint64_t x835, uint64_t x836 = mulx_u64(x14, x27);
- uint64_t x838, uint64_t x839 = mulx_u64(x14, x26);
- uint64_t x841, uint8_t x842 = addcarryx_u64(0x0, x821, x823);
- uint64_t x844, uint8_t x845 = addcarryx_u64(x842, x824, x826);
- uint64_t x847, uint8_t x848 = addcarryx_u64(x845, x827, x829);
- uint64_t x850, uint8_t x851 = addcarryx_u64(x848, x830, x832);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x833, x835);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x836, x838);
- uint64_t x859, uint8_t _ = addcarryx_u64(0x0, x857, x839);
- uint64_t x862, uint8_t x863 = addcarryx_u64(0x0, x798, x820);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x801, x841);
- uint64_t x868, uint8_t x869 = addcarryx_u64(x866, x804, x844);
- uint64_t x871, uint8_t x872 = addcarryx_u64(x869, x807, x847);
- uint64_t x874, uint8_t x875 = addcarryx_u64(x872, x810, x850);
- uint64_t x877, uint8_t x878 = addcarryx_u64(x875, x813, x853);
- uint64_t x880, uint8_t x881 = addcarryx_u64(x878, x816, x856);
- uint64_t x883, uint8_t x884 = addcarryx_u64(x881, x818, x859);
- uint64_t x886, uint64_t _ = mulx_u64(x862, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x889, uint64_t x890 = mulx_u64(x886, 0xffffffffffffffefL);
- uint64_t x892, uint64_t x893 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x895, uint64_t x896 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x898, uint64_t x899 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x901, uint64_t x902 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x904, uint64_t x905 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x907, uint64_t x908 = mulx_u64(x886, 0x3fffffff);
- uint64_t x910, uint8_t x911 = addcarryx_u64(0x0, x890, x892);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x893, x895);
- uint64_t x916, uint8_t x917 = addcarryx_u64(x914, x896, x898);
- uint64_t x919, uint8_t x920 = addcarryx_u64(x917, x899, x901);
- uint64_t x922, uint8_t x923 = addcarryx_u64(x920, x902, x904);
- uint64_t x925, uint8_t x926 = addcarryx_u64(x923, x905, x907);
- uint64_t x928, uint8_t _ = addcarryx_u64(0x0, x926, x908);
- uint64_t _, uint8_t x932 = addcarryx_u64(0x0, x862, x889);
- uint64_t x934, uint8_t x935 = addcarryx_u64(x932, x865, x910);
- uint64_t x937, uint8_t x938 = addcarryx_u64(x935, x868, x913);
- uint64_t x940, uint8_t x941 = addcarryx_u64(x938, x871, x916);
- uint64_t x943, uint8_t x944 = addcarryx_u64(x941, x874, x919);
- uint64_t x946, uint8_t x947 = addcarryx_u64(x944, x877, x922);
- uint64_t x949, uint8_t x950 = addcarryx_u64(x947, x880, x925);
- uint64_t x952, uint8_t x953 = addcarryx_u64(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint64_t x956, uint8_t x957 = subborrow_u64(0x0, x934, 0xffffffffffffffefL);
- uint64_t x959, uint8_t x960 = subborrow_u64(x957, x937, 0xffffffffffffffffL);
- uint64_t x962, uint8_t x963 = subborrow_u64(x960, x940, 0xffffffffffffffffL);
- uint64_t x965, uint8_t x966 = subborrow_u64(x963, x943, 0xffffffffffffffffL);
- uint64_t x968, uint8_t x969 = subborrow_u64(x966, x946, 0xffffffffffffffffL);
- uint64_t x971, uint8_t x972 = subborrow_u64(x969, x949, 0xffffffffffffffffL);
- uint64_t x974, uint8_t x975 = subborrow_u64(x972, x952, 0x3fffffff);
- uint64_t _, uint8_t x978 = subborrow_u64(x975, x954, 0x0);
- uint64_t x979 = cmovznz(x978, x974, x952);
- uint64_t x980 = cmovznz(x978, x971, x949);
- uint64_t x981 = cmovznz(x978, x968, x946);
- uint64_t x982 = cmovznz(x978, x965, x943);
- uint64_t x983 = cmovznz(x978, x962, x940);
- uint64_t x984 = cmovznz(x978, x959, x937);
- uint64_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e414m17/femulDisplay.v b/src/Specific/montgomery64_2e414m17/femulDisplay.v
deleted file mode 100644
index d9f6424d4..000000000
--- a/src/Specific/montgomery64_2e414m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e414m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e414m17/fenz.c b/src/Specific/montgomery64_2e414m17/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e414m17/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e414m17/fenz.v b/src/Specific/montgomery64_2e414m17/fenz.v
deleted file mode 100644
index 955d590d3..000000000
--- a/src/Specific/montgomery64_2e414m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e414m17/fenzDisplay.log b/src/Specific/montgomery64_2e414m17/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e414m17/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e414m17/fenzDisplay.v b/src/Specific/montgomery64_2e414m17/fenzDisplay.v
deleted file mode 100644
index 2071731fa..000000000
--- a/src/Specific/montgomery64_2e414m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e414m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e414m17/feopp.v b/src/Specific/montgomery64_2e414m17/feopp.v
deleted file mode 100644
index 3e5b46ed1..000000000
--- a/src/Specific/montgomery64_2e414m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e414m17/feoppDisplay.log b/src/Specific/montgomery64_2e414m17/feoppDisplay.log
deleted file mode 100644
index 6295b4ba4..000000000
--- a/src/Specific/montgomery64_2e414m17/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffefL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0x3fffffff);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e414m17/feoppDisplay.v b/src/Specific/montgomery64_2e414m17/feoppDisplay.v
deleted file mode 100644
index d3fadb16e..000000000
--- a/src/Specific/montgomery64_2e414m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e414m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e414m17/fesquare.c b/src/Specific/montgomery64_2e414m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e414m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e414m17/fesub.v b/src/Specific/montgomery64_2e414m17/fesub.v
deleted file mode 100644
index 4eb3a279a..000000000
--- a/src/Specific/montgomery64_2e414m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e414m17/fesubDisplay.log b/src/Specific/montgomery64_2e414m17/fesubDisplay.log
deleted file mode 100644
index 4fffd0d76..000000000
--- a/src/Specific/montgomery64_2e414m17/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffefL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xffffffffffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0x3fffffff);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e414m17/fesubDisplay.v b/src/Specific/montgomery64_2e414m17/fesubDisplay.v
deleted file mode 100644
index 396aac682..000000000
--- a/src/Specific/montgomery64_2e414m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e414m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e414m17/CurveParameters.v b/src/Specific/montgomery64_2e414m17_7limbs/CurveParameters.v
index cd6d8ee68..cd6d8ee68 100644
--- a/src/Specific/montgomery64_2e414m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e414m17_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/Synthesis.v b/src/Specific/montgomery64_2e414m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..b52600fb6
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e414m17/compiler.sh b/src/Specific/montgomery64_2e414m17_7limbs/compiler.sh
index 3c192716b..3c192716b 100755
--- a/src/Specific/montgomery64_2e414m17/compiler.sh
+++ b/src/Specific/montgomery64_2e414m17_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e414m17/compilerxx.sh b/src/Specific/montgomery64_2e414m17_7limbs/compilerxx.sh
index 88d864c45..88d864c45 100755
--- a/src/Specific/montgomery64_2e414m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e414m17_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/feadd.v b/src/Specific/montgomery64_2e414m17_7limbs/feadd.v
new file mode 100644
index 000000000..641a16b2c
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e414m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..e8d726e17
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/femul.v b/src/Specific/montgomery64_2e414m17_7limbs/femul.v
new file mode 100644
index 000000000..89b6f10a6
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e414m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f2ff4c6d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/fenz.v b/src/Specific/montgomery64_2e414m17_7limbs/fenz.v
new file mode 100644
index 000000000..46395f98b
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e414m17_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..706c1bb7f
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/feopp.v b/src/Specific/montgomery64_2e414m17_7limbs/feopp.v
new file mode 100644
index 000000000..b73150d4f
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e414m17_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..9e1528f54
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/fesub.v b/src/Specific/montgomery64_2e414m17_7limbs/fesub.v
new file mode 100644
index 000000000..999377403
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e414m17_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e414m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..7914eb7dc
--- /dev/null
+++ b/src/Specific/montgomery64_2e414m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e414m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e414m17/py_interpreter.sh b/src/Specific/montgomery64_2e414m17_7limbs/py_interpreter.sh
index 967545266..967545266 100755
--- a/src/Specific/montgomery64_2e414m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e414m17_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v b/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v
deleted file mode 100644
index 1b0ef5b5d..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feadd.c b/src/Specific/montgomery64_2e416m2e208m1/feadd.c
deleted file mode 100644
index 753e03d78..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffffL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xfffffffffffeffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0xffffffff, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feadd.v b/src/Specific/montgomery64_2e416m2e208m1/feadd.v
deleted file mode 100644
index 46c7a9d13..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.log b/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.log
deleted file mode 100644
index bdac118e2..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xfffffffffffeffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0xffffffff);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v
deleted file mode 100644
index 9c6b16c29..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/femul.v b/src/Specific/montgomery64_2e416m2e208m1/femul.v
deleted file mode 100644
index a9f5d9b35..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.log b/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.log
deleted file mode 100644
index 63d260a8e..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.log
+++ /dev/null
@@ -1,328 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t x72 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x74, uint64_t x75 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x77, uint64_t x78 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x29, 0xfffffffffffeffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x29, 0xffffffff);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x72, x74);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t _ = addcarryx_u64(0x0, x108, x90);
- uint64_t _, uint8_t x114 = addcarryx_u64(0x0, x29, x71);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x50, x92);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x53, x95);
- uint64_t x122, uint8_t x123 = addcarryx_u64(x120, x56, x98);
- uint64_t x125, uint8_t x126 = addcarryx_u64(x123, x59, x101);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x62, x104);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x65, x107);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x68, x110);
- uint64_t x137, uint64_t x138 = mulx_u64(x7, x17);
- uint64_t x140, uint64_t x141 = mulx_u64(x7, x19);
- uint64_t x143, uint64_t x144 = mulx_u64(x7, x21);
- uint64_t x146, uint64_t x147 = mulx_u64(x7, x23);
- uint64_t x149, uint64_t x150 = mulx_u64(x7, x25);
- uint64_t x152, uint64_t x153 = mulx_u64(x7, x27);
- uint64_t x155, uint64_t x156 = mulx_u64(x7, x26);
- uint64_t x158, uint8_t x159 = addcarryx_u64(0x0, x138, x140);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x141, x143);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x144, x146);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x147, x149);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x150, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x153, x155);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x156);
- uint64_t x179, uint8_t x180 = addcarryx_u64(0x0, x116, x137);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x119, x158);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x122, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x125, x164);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x128, x167);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x131, x170);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x134, x173);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x135, x176);
- uint64_t x203, uint64_t x204 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x206, uint64_t x207 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x209, uint64_t x210 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x212, uint64_t x213 = mulx_u64(x179, 0xfffffffffffeffffL);
- uint64_t x215, uint64_t x216 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x218, uint64_t x219 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x221, uint64_t x222 = mulx_u64(x179, 0xffffffff);
- uint64_t x224, uint8_t x225 = addcarryx_u64(0x0, x204, x206);
- uint64_t x227, uint8_t x228 = addcarryx_u64(x225, x207, x209);
- uint64_t x230, uint8_t x231 = addcarryx_u64(x228, x210, x212);
- uint64_t x233, uint8_t x234 = addcarryx_u64(x231, x213, x215);
- uint64_t x236, uint8_t x237 = addcarryx_u64(x234, x216, x218);
- uint64_t x239, uint8_t x240 = addcarryx_u64(x237, x219, x221);
- uint64_t x242, uint8_t _ = addcarryx_u64(0x0, x240, x222);
- uint64_t _, uint8_t x246 = addcarryx_u64(0x0, x179, x203);
- uint64_t x248, uint8_t x249 = addcarryx_u64(x246, x182, x224);
- uint64_t x251, uint8_t x252 = addcarryx_u64(x249, x185, x227);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x188, x230);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x191, x233);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x194, x236);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x197, x239);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x200, x242);
- uint8_t x268 = (x267 + x201);
- uint64_t x270, uint64_t x271 = mulx_u64(x9, x17);
- uint64_t x273, uint64_t x274 = mulx_u64(x9, x19);
- uint64_t x276, uint64_t x277 = mulx_u64(x9, x21);
- uint64_t x279, uint64_t x280 = mulx_u64(x9, x23);
- uint64_t x282, uint64_t x283 = mulx_u64(x9, x25);
- uint64_t x285, uint64_t x286 = mulx_u64(x9, x27);
- uint64_t x288, uint64_t x289 = mulx_u64(x9, x26);
- uint64_t x291, uint8_t x292 = addcarryx_u64(0x0, x271, x273);
- uint64_t x294, uint8_t x295 = addcarryx_u64(x292, x274, x276);
- uint64_t x297, uint8_t x298 = addcarryx_u64(x295, x277, x279);
- uint64_t x300, uint8_t x301 = addcarryx_u64(x298, x280, x282);
- uint64_t x303, uint8_t x304 = addcarryx_u64(x301, x283, x285);
- uint64_t x306, uint8_t x307 = addcarryx_u64(x304, x286, x288);
- uint64_t x309, uint8_t _ = addcarryx_u64(0x0, x307, x289);
- uint64_t x312, uint8_t x313 = addcarryx_u64(0x0, x248, x270);
- uint64_t x315, uint8_t x316 = addcarryx_u64(x313, x251, x291);
- uint64_t x318, uint8_t x319 = addcarryx_u64(x316, x254, x294);
- uint64_t x321, uint8_t x322 = addcarryx_u64(x319, x257, x297);
- uint64_t x324, uint8_t x325 = addcarryx_u64(x322, x260, x300);
- uint64_t x327, uint8_t x328 = addcarryx_u64(x325, x263, x303);
- uint64_t x330, uint8_t x331 = addcarryx_u64(x328, x266, x306);
- uint64_t x333, uint8_t x334 = addcarryx_u64(x331, x268, x309);
- uint64_t x336, uint64_t x337 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x339, uint64_t x340 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x342, uint64_t x343 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x345, uint64_t x346 = mulx_u64(x312, 0xfffffffffffeffffL);
- uint64_t x348, uint64_t x349 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x351, uint64_t x352 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x354, uint64_t x355 = mulx_u64(x312, 0xffffffff);
- uint64_t x357, uint8_t x358 = addcarryx_u64(0x0, x337, x339);
- uint64_t x360, uint8_t x361 = addcarryx_u64(x358, x340, x342);
- uint64_t x363, uint8_t x364 = addcarryx_u64(x361, x343, x345);
- uint64_t x366, uint8_t x367 = addcarryx_u64(x364, x346, x348);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x349, x351);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x352, x354);
- uint64_t x375, uint8_t _ = addcarryx_u64(0x0, x373, x355);
- uint64_t _, uint8_t x379 = addcarryx_u64(0x0, x312, x336);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x315, x357);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x318, x360);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x321, x363);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x324, x366);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x327, x369);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x330, x372);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x333, x375);
- uint8_t x401 = (x400 + x334);
- uint64_t x403, uint64_t x404 = mulx_u64(x11, x17);
- uint64_t x406, uint64_t x407 = mulx_u64(x11, x19);
- uint64_t x409, uint64_t x410 = mulx_u64(x11, x21);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x23);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x25);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x27);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x26);
- uint64_t x424, uint8_t x425 = addcarryx_u64(0x0, x404, x406);
- uint64_t x427, uint8_t x428 = addcarryx_u64(x425, x407, x409);
- uint64_t x430, uint8_t x431 = addcarryx_u64(x428, x410, x412);
- uint64_t x433, uint8_t x434 = addcarryx_u64(x431, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t _ = addcarryx_u64(0x0, x440, x422);
- uint64_t x445, uint8_t x446 = addcarryx_u64(0x0, x381, x403);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x384, x424);
- uint64_t x451, uint8_t x452 = addcarryx_u64(x449, x387, x427);
- uint64_t x454, uint8_t x455 = addcarryx_u64(x452, x390, x430);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x401, x442);
- uint64_t x469, uint64_t x470 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x472, uint64_t x473 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x475, uint64_t x476 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x478, uint64_t x479 = mulx_u64(x445, 0xfffffffffffeffffL);
- uint64_t x481, uint64_t x482 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x484, uint64_t x485 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x445, 0xffffffff);
- uint64_t x490, uint8_t x491 = addcarryx_u64(0x0, x470, x472);
- uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x473, x475);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x476, x478);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x479, x481);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x488);
- uint64_t _, uint8_t x512 = addcarryx_u64(0x0, x445, x469);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x448, x490);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x451, x493);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x454, x496);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x457, x499);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x460, x502);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x463, x505);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x466, x508);
- uint8_t x534 = (x533 + x467);
- uint64_t x536, uint64_t x537 = mulx_u64(x13, x17);
- uint64_t x539, uint64_t x540 = mulx_u64(x13, x19);
- uint64_t x542, uint64_t x543 = mulx_u64(x13, x21);
- uint64_t x545, uint64_t x546 = mulx_u64(x13, x23);
- uint64_t x548, uint64_t x549 = mulx_u64(x13, x25);
- uint64_t x551, uint64_t x552 = mulx_u64(x13, x27);
- uint64_t x554, uint64_t x555 = mulx_u64(x13, x26);
- uint64_t x557, uint8_t x558 = addcarryx_u64(0x0, x537, x539);
- uint64_t x560, uint8_t x561 = addcarryx_u64(x558, x540, x542);
- uint64_t x563, uint8_t x564 = addcarryx_u64(x561, x543, x545);
- uint64_t x566, uint8_t x567 = addcarryx_u64(x564, x546, x548);
- uint64_t x569, uint8_t x570 = addcarryx_u64(x567, x549, x551);
- uint64_t x572, uint8_t x573 = addcarryx_u64(x570, x552, x554);
- uint64_t x575, uint8_t _ = addcarryx_u64(0x0, x573, x555);
- uint64_t x578, uint8_t x579 = addcarryx_u64(0x0, x514, x536);
- uint64_t x581, uint8_t x582 = addcarryx_u64(x579, x517, x557);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x520, x560);
- uint64_t x587, uint8_t x588 = addcarryx_u64(x585, x523, x563);
- uint64_t x590, uint8_t x591 = addcarryx_u64(x588, x526, x566);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x529, x569);
- uint64_t x596, uint8_t x597 = addcarryx_u64(x594, x532, x572);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x534, x575);
- uint64_t x602, uint64_t x603 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x605, uint64_t x606 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x608, uint64_t x609 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x611, uint64_t x612 = mulx_u64(x578, 0xfffffffffffeffffL);
- uint64_t x614, uint64_t x615 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x617, uint64_t x618 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x620, uint64_t x621 = mulx_u64(x578, 0xffffffff);
- uint64_t x623, uint8_t x624 = addcarryx_u64(0x0, x603, x605);
- uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x606, x608);
- uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x609, x611);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x612, x614);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x615, x617);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x618, x620);
- uint64_t x641, uint8_t _ = addcarryx_u64(0x0, x639, x621);
- uint64_t _, uint8_t x645 = addcarryx_u64(0x0, x578, x602);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x581, x623);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x584, x626);
- uint64_t x653, uint8_t x654 = addcarryx_u64(x651, x587, x629);
- uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x590, x632);
- uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x593, x635);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x596, x638);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x599, x641);
- uint8_t x667 = (x666 + x600);
- uint64_t x669, uint64_t x670 = mulx_u64(x15, x17);
- uint64_t x672, uint64_t x673 = mulx_u64(x15, x19);
- uint64_t x675, uint64_t x676 = mulx_u64(x15, x21);
- uint64_t x678, uint64_t x679 = mulx_u64(x15, x23);
- uint64_t x681, uint64_t x682 = mulx_u64(x15, x25);
- uint64_t x684, uint64_t x685 = mulx_u64(x15, x27);
- uint64_t x687, uint64_t x688 = mulx_u64(x15, x26);
- uint64_t x690, uint8_t x691 = addcarryx_u64(0x0, x670, x672);
- uint64_t x693, uint8_t x694 = addcarryx_u64(x691, x673, x675);
- uint64_t x696, uint8_t x697 = addcarryx_u64(x694, x676, x678);
- uint64_t x699, uint8_t x700 = addcarryx_u64(x697, x679, x681);
- uint64_t x702, uint8_t x703 = addcarryx_u64(x700, x682, x684);
- uint64_t x705, uint8_t x706 = addcarryx_u64(x703, x685, x687);
- uint64_t x708, uint8_t _ = addcarryx_u64(0x0, x706, x688);
- uint64_t x711, uint8_t x712 = addcarryx_u64(0x0, x647, x669);
- uint64_t x714, uint8_t x715 = addcarryx_u64(x712, x650, x690);
- uint64_t x717, uint8_t x718 = addcarryx_u64(x715, x653, x693);
- uint64_t x720, uint8_t x721 = addcarryx_u64(x718, x656, x696);
- uint64_t x723, uint8_t x724 = addcarryx_u64(x721, x659, x699);
- uint64_t x726, uint8_t x727 = addcarryx_u64(x724, x662, x702);
- uint64_t x729, uint8_t x730 = addcarryx_u64(x727, x665, x705);
- uint64_t x732, uint8_t x733 = addcarryx_u64(x730, x667, x708);
- uint64_t x735, uint64_t x736 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x738, uint64_t x739 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x741, uint64_t x742 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x744, uint64_t x745 = mulx_u64(x711, 0xfffffffffffeffffL);
- uint64_t x747, uint64_t x748 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x750, uint64_t x751 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x753, uint64_t x754 = mulx_u64(x711, 0xffffffff);
- uint64_t x756, uint8_t x757 = addcarryx_u64(0x0, x736, x738);
- uint64_t x759, uint8_t x760 = addcarryx_u64(x757, x739, x741);
- uint64_t x762, uint8_t x763 = addcarryx_u64(x760, x742, x744);
- uint64_t x765, uint8_t x766 = addcarryx_u64(x763, x745, x747);
- uint64_t x768, uint8_t x769 = addcarryx_u64(x766, x748, x750);
- uint64_t x771, uint8_t x772 = addcarryx_u64(x769, x751, x753);
- uint64_t x774, uint8_t _ = addcarryx_u64(0x0, x772, x754);
- uint64_t _, uint8_t x778 = addcarryx_u64(0x0, x711, x735);
- uint64_t x780, uint8_t x781 = addcarryx_u64(x778, x714, x756);
- uint64_t x783, uint8_t x784 = addcarryx_u64(x781, x717, x759);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x720, x762);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x723, x765);
- uint64_t x792, uint8_t x793 = addcarryx_u64(x790, x726, x768);
- uint64_t x795, uint8_t x796 = addcarryx_u64(x793, x729, x771);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x732, x774);
- uint8_t x800 = (x799 + x733);
- uint64_t x802, uint64_t x803 = mulx_u64(x14, x17);
- uint64_t x805, uint64_t x806 = mulx_u64(x14, x19);
- uint64_t x808, uint64_t x809 = mulx_u64(x14, x21);
- uint64_t x811, uint64_t x812 = mulx_u64(x14, x23);
- uint64_t x814, uint64_t x815 = mulx_u64(x14, x25);
- uint64_t x817, uint64_t x818 = mulx_u64(x14, x27);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x26);
- uint64_t x823, uint8_t x824 = addcarryx_u64(0x0, x803, x805);
- uint64_t x826, uint8_t x827 = addcarryx_u64(x824, x806, x808);
- uint64_t x829, uint8_t x830 = addcarryx_u64(x827, x809, x811);
- uint64_t x832, uint8_t x833 = addcarryx_u64(x830, x812, x814);
- uint64_t x835, uint8_t x836 = addcarryx_u64(x833, x815, x817);
- uint64_t x838, uint8_t x839 = addcarryx_u64(x836, x818, x820);
- uint64_t x841, uint8_t _ = addcarryx_u64(0x0, x839, x821);
- uint64_t x844, uint8_t x845 = addcarryx_u64(0x0, x780, x802);
- uint64_t x847, uint8_t x848 = addcarryx_u64(x845, x783, x823);
- uint64_t x850, uint8_t x851 = addcarryx_u64(x848, x786, x826);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x789, x829);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x792, x832);
- uint64_t x859, uint8_t x860 = addcarryx_u64(x857, x795, x835);
- uint64_t x862, uint8_t x863 = addcarryx_u64(x860, x798, x838);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x800, x841);
- uint64_t x868, uint64_t x869 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x871, uint64_t x872 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x874, uint64_t x875 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x877, uint64_t x878 = mulx_u64(x844, 0xfffffffffffeffffL);
- uint64_t x880, uint64_t x881 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x883, uint64_t x884 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x886, uint64_t x887 = mulx_u64(x844, 0xffffffff);
- uint64_t x889, uint8_t x890 = addcarryx_u64(0x0, x869, x871);
- uint64_t x892, uint8_t x893 = addcarryx_u64(x890, x872, x874);
- uint64_t x895, uint8_t x896 = addcarryx_u64(x893, x875, x877);
- uint64_t x898, uint8_t x899 = addcarryx_u64(x896, x878, x880);
- uint64_t x901, uint8_t x902 = addcarryx_u64(x899, x881, x883);
- uint64_t x904, uint8_t x905 = addcarryx_u64(x902, x884, x886);
- uint64_t x907, uint8_t _ = addcarryx_u64(0x0, x905, x887);
- uint64_t _, uint8_t x911 = addcarryx_u64(0x0, x844, x868);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x847, x889);
- uint64_t x916, uint8_t x917 = addcarryx_u64(x914, x850, x892);
- uint64_t x919, uint8_t x920 = addcarryx_u64(x917, x853, x895);
- uint64_t x922, uint8_t x923 = addcarryx_u64(x920, x856, x898);
- uint64_t x925, uint8_t x926 = addcarryx_u64(x923, x859, x901);
- uint64_t x928, uint8_t x929 = addcarryx_u64(x926, x862, x904);
- uint64_t x931, uint8_t x932 = addcarryx_u64(x929, x865, x907);
- uint8_t x933 = (x932 + x866);
- uint64_t x935, uint8_t x936 = subborrow_u64(0x0, x913, 0xffffffffffffffffL);
- uint64_t x938, uint8_t x939 = subborrow_u64(x936, x916, 0xffffffffffffffffL);
- uint64_t x941, uint8_t x942 = subborrow_u64(x939, x919, 0xffffffffffffffffL);
- uint64_t x944, uint8_t x945 = subborrow_u64(x942, x922, 0xfffffffffffeffffL);
- uint64_t x947, uint8_t x948 = subborrow_u64(x945, x925, 0xffffffffffffffffL);
- uint64_t x950, uint8_t x951 = subborrow_u64(x948, x928, 0xffffffffffffffffL);
- uint64_t x953, uint8_t x954 = subborrow_u64(x951, x931, 0xffffffff);
- uint64_t _, uint8_t x957 = subborrow_u64(x954, x933, 0x0);
- uint64_t x958 = cmovznz(x957, x953, x931);
- uint64_t x959 = cmovznz(x957, x950, x928);
- uint64_t x960 = cmovznz(x957, x947, x925);
- uint64_t x961 = cmovznz(x957, x944, x922);
- uint64_t x962 = cmovznz(x957, x941, x919);
- uint64_t x963 = cmovznz(x957, x938, x916);
- uint64_t x964 = cmovznz(x957, x935, x913);
- return (x958, x959, x960, x961, x962, x963, x964))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v
deleted file mode 100644
index 7d2ed8eb6..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenz.c b/src/Specific/montgomery64_2e416m2e208m1/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenz.v b/src/Specific/montgomery64_2e416m2e208m1/fenz.v
deleted file mode 100644
index 141890989..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.log b/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v
deleted file mode 100644
index f1527722c..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feopp.v b/src/Specific/montgomery64_2e416m2e208m1/feopp.v
deleted file mode 100644
index 3e5e42e5f..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.log b/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.log
deleted file mode 100644
index 42c860bbd..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffffL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xfffffffffffeffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0xffffffff);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v
deleted file mode 100644
index 2ad050521..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesquare.c b/src/Specific/montgomery64_2e416m2e208m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesub.v b/src/Specific/montgomery64_2e416m2e208m1/fesub.v
deleted file mode 100644
index 29201dcd8..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.log b/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.log
deleted file mode 100644
index 78774d931..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xfffffffffffeffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0xffffffff);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v b/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v
deleted file mode 100644
index 0babecea6..000000000
--- a/src/Specific/montgomery64_2e416m2e208m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e416m2e208m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/CurveParameters.v
index 15fb68dac..15fb68dac 100644
--- a/src/Specific/montgomery64_2e416m2e208m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/Synthesis.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/Synthesis.v
new file mode 100644
index 000000000..07c0c68cb
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/compiler.sh b/src/Specific/montgomery64_2e416m2e208m1_7limbs/compiler.sh
index 22b7ab298..22b7ab298 100755
--- a/src/Specific/montgomery64_2e416m2e208m1/compiler.sh
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e416m2e208m1/compilerxx.sh b/src/Specific/montgomery64_2e416m2e208m1_7limbs/compilerxx.sh
index 7ca173791..7ca173791 100755
--- a/src/Specific/montgomery64_2e416m2e208m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/feadd.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feadd.v
new file mode 100644
index 000000000..039a4b8df
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..d02523bdd
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/femul.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/femul.v
new file mode 100644
index 000000000..6f9353567
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f72f3649b
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenz.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenz.v
new file mode 100644
index 000000000..26142d172
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..c1834cf24
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/feopp.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feopp.v
new file mode 100644
index 000000000..c02f8857d
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..89cad0fde
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesub.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesub.v
new file mode 100644
index 000000000..381ee1bdb
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..5ad930b75
--- /dev/null
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e416m2e208m1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e416m2e208m1/py_interpreter.sh b/src/Specific/montgomery64_2e416m2e208m1_7limbs/py_interpreter.sh
index 6495749c9..6495749c9 100755
--- a/src/Specific/montgomery64_2e416m2e208m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e416m2e208m1_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e444m17/Synthesis.v b/src/Specific/montgomery64_2e444m17/Synthesis.v
deleted file mode 100644
index 736fbd3b9..000000000
--- a/src/Specific/montgomery64_2e444m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e444m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e444m17/feadd.c b/src/Specific/montgomery64_2e444m17/feadd.c
deleted file mode 100644
index 653b42fdf..000000000
--- a/src/Specific/montgomery64_2e444m17/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffefL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xffffffffffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0xfffffffffffffff, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e444m17/feadd.v b/src/Specific/montgomery64_2e444m17/feadd.v
deleted file mode 100644
index 2b29b3217..000000000
--- a/src/Specific/montgomery64_2e444m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e444m17/feaddDisplay.log b/src/Specific/montgomery64_2e444m17/feaddDisplay.log
deleted file mode 100644
index 2a33a4262..000000000
--- a/src/Specific/montgomery64_2e444m17/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffefL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0xfffffffffffffff);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e444m17/feaddDisplay.v b/src/Specific/montgomery64_2e444m17/feaddDisplay.v
deleted file mode 100644
index c1287046f..000000000
--- a/src/Specific/montgomery64_2e444m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e444m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e444m17/femul.v b/src/Specific/montgomery64_2e444m17/femul.v
deleted file mode 100644
index a6971028c..000000000
--- a/src/Specific/montgomery64_2e444m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e444m17/femulDisplay.log b/src/Specific/montgomery64_2e444m17/femulDisplay.log
deleted file mode 100644
index 9b567e249..000000000
--- a/src/Specific/montgomery64_2e444m17/femulDisplay.log
+++ /dev/null
@@ -1,335 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t _ = mulx_u64(x29, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x74, uint64_t x75 = mulx_u64(x71, 0xffffffffffffffefL);
- uint64_t x77, uint64_t x78 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x71, 0xffffffffffffffffL);
- uint64_t x92, uint64_t x93 = mulx_u64(x71, 0xfffffffffffffff);
- uint64_t x95, uint8_t x96 = addcarryx_u64(0x0, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x90, x92);
- uint64_t x113, uint8_t _ = addcarryx_u64(0x0, x111, x93);
- uint64_t _, uint8_t x117 = addcarryx_u64(0x0, x29, x74);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x50, x95);
- uint64_t x122, uint8_t x123 = addcarryx_u64(x120, x53, x98);
- uint64_t x125, uint8_t x126 = addcarryx_u64(x123, x56, x101);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x59, x104);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x62, x107);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x65, x110);
- uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x68, x113);
- uint64_t x140, uint64_t x141 = mulx_u64(x7, x17);
- uint64_t x143, uint64_t x144 = mulx_u64(x7, x19);
- uint64_t x146, uint64_t x147 = mulx_u64(x7, x21);
- uint64_t x149, uint64_t x150 = mulx_u64(x7, x23);
- uint64_t x152, uint64_t x153 = mulx_u64(x7, x25);
- uint64_t x155, uint64_t x156 = mulx_u64(x7, x27);
- uint64_t x158, uint64_t x159 = mulx_u64(x7, x26);
- uint64_t x161, uint8_t x162 = addcarryx_u64(0x0, x141, x143);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x144, x146);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x147, x149);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x150, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x153, x155);
- uint64_t x176, uint8_t x177 = addcarryx_u64(x174, x156, x158);
- uint64_t x179, uint8_t _ = addcarryx_u64(0x0, x177, x159);
- uint64_t x182, uint8_t x183 = addcarryx_u64(0x0, x119, x140);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x122, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x125, x164);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x128, x167);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x131, x170);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x134, x173);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x137, x176);
- uint64_t x203, uint8_t x204 = addcarryx_u64(x201, x138, x179);
- uint64_t x206, uint64_t _ = mulx_u64(x182, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x209, uint64_t x210 = mulx_u64(x206, 0xffffffffffffffefL);
- uint64_t x212, uint64_t x213 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x215, uint64_t x216 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x218, uint64_t x219 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x221, uint64_t x222 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x224, uint64_t x225 = mulx_u64(x206, 0xffffffffffffffffL);
- uint64_t x227, uint64_t x228 = mulx_u64(x206, 0xfffffffffffffff);
- uint64_t x230, uint8_t x231 = addcarryx_u64(0x0, x210, x212);
- uint64_t x233, uint8_t x234 = addcarryx_u64(x231, x213, x215);
- uint64_t x236, uint8_t x237 = addcarryx_u64(x234, x216, x218);
- uint64_t x239, uint8_t x240 = addcarryx_u64(x237, x219, x221);
- uint64_t x242, uint8_t x243 = addcarryx_u64(x240, x222, x224);
- uint64_t x245, uint8_t x246 = addcarryx_u64(x243, x225, x227);
- uint64_t x248, uint8_t _ = addcarryx_u64(0x0, x246, x228);
- uint64_t _, uint8_t x252 = addcarryx_u64(0x0, x182, x209);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x185, x230);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x188, x233);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x191, x236);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x194, x239);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x197, x242);
- uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x200, x245);
- uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x203, x248);
- uint8_t x274 = (x273 + x204);
- uint64_t x276, uint64_t x277 = mulx_u64(x9, x17);
- uint64_t x279, uint64_t x280 = mulx_u64(x9, x19);
- uint64_t x282, uint64_t x283 = mulx_u64(x9, x21);
- uint64_t x285, uint64_t x286 = mulx_u64(x9, x23);
- uint64_t x288, uint64_t x289 = mulx_u64(x9, x25);
- uint64_t x291, uint64_t x292 = mulx_u64(x9, x27);
- uint64_t x294, uint64_t x295 = mulx_u64(x9, x26);
- uint64_t x297, uint8_t x298 = addcarryx_u64(0x0, x277, x279);
- uint64_t x300, uint8_t x301 = addcarryx_u64(x298, x280, x282);
- uint64_t x303, uint8_t x304 = addcarryx_u64(x301, x283, x285);
- uint64_t x306, uint8_t x307 = addcarryx_u64(x304, x286, x288);
- uint64_t x309, uint8_t x310 = addcarryx_u64(x307, x289, x291);
- uint64_t x312, uint8_t x313 = addcarryx_u64(x310, x292, x294);
- uint64_t x315, uint8_t _ = addcarryx_u64(0x0, x313, x295);
- uint64_t x318, uint8_t x319 = addcarryx_u64(0x0, x254, x276);
- uint64_t x321, uint8_t x322 = addcarryx_u64(x319, x257, x297);
- uint64_t x324, uint8_t x325 = addcarryx_u64(x322, x260, x300);
- uint64_t x327, uint8_t x328 = addcarryx_u64(x325, x263, x303);
- uint64_t x330, uint8_t x331 = addcarryx_u64(x328, x266, x306);
- uint64_t x333, uint8_t x334 = addcarryx_u64(x331, x269, x309);
- uint64_t x336, uint8_t x337 = addcarryx_u64(x334, x272, x312);
- uint64_t x339, uint8_t x340 = addcarryx_u64(x337, x274, x315);
- uint64_t x342, uint64_t _ = mulx_u64(x318, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x345, uint64_t x346 = mulx_u64(x342, 0xffffffffffffffefL);
- uint64_t x348, uint64_t x349 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x351, uint64_t x352 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x354, uint64_t x355 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x357, uint64_t x358 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x360, uint64_t x361 = mulx_u64(x342, 0xffffffffffffffffL);
- uint64_t x363, uint64_t x364 = mulx_u64(x342, 0xfffffffffffffff);
- uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x346, x348);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x349, x351);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x352, x354);
- uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x355, x357);
- uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x358, x360);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x361, x363);
- uint64_t x384, uint8_t _ = addcarryx_u64(0x0, x382, x364);
- uint64_t _, uint8_t x388 = addcarryx_u64(0x0, x318, x345);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x321, x366);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x324, x369);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x327, x372);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x330, x375);
- uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x333, x378);
- uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x336, x381);
- uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x339, x384);
- uint8_t x410 = (x409 + x340);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x17);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x19);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x21);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x23);
- uint64_t x424, uint64_t x425 = mulx_u64(x11, x25);
- uint64_t x427, uint64_t x428 = mulx_u64(x11, x27);
- uint64_t x430, uint64_t x431 = mulx_u64(x11, x26);
- uint64_t x433, uint8_t x434 = addcarryx_u64(0x0, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x422, x424);
- uint64_t x445, uint8_t x446 = addcarryx_u64(x443, x425, x427);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x428, x430);
- uint64_t x451, uint8_t _ = addcarryx_u64(0x0, x449, x431);
- uint64_t x454, uint8_t x455 = addcarryx_u64(0x0, x390, x412);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x402, x442);
- uint64_t x469, uint8_t x470 = addcarryx_u64(x467, x405, x445);
- uint64_t x472, uint8_t x473 = addcarryx_u64(x470, x408, x448);
- uint64_t x475, uint8_t x476 = addcarryx_u64(x473, x410, x451);
- uint64_t x478, uint64_t _ = mulx_u64(x454, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x481, uint64_t x482 = mulx_u64(x478, 0xffffffffffffffefL);
- uint64_t x484, uint64_t x485 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x490, uint64_t x491 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x493, uint64_t x494 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x496, uint64_t x497 = mulx_u64(x478, 0xffffffffffffffffL);
- uint64_t x499, uint64_t x500 = mulx_u64(x478, 0xfffffffffffffff);
- uint64_t x502, uint8_t x503 = addcarryx_u64(0x0, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x488, x490);
- uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x491, x493);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x494, x496);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x497, x499);
- uint64_t x520, uint8_t _ = addcarryx_u64(0x0, x518, x500);
- uint64_t _, uint8_t x524 = addcarryx_u64(0x0, x454, x481);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x457, x502);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x460, x505);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x463, x508);
- uint64_t x535, uint8_t x536 = addcarryx_u64(x533, x466, x511);
- uint64_t x538, uint8_t x539 = addcarryx_u64(x536, x469, x514);
- uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x472, x517);
- uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x475, x520);
- uint8_t x546 = (x545 + x476);
- uint64_t x548, uint64_t x549 = mulx_u64(x13, x17);
- uint64_t x551, uint64_t x552 = mulx_u64(x13, x19);
- uint64_t x554, uint64_t x555 = mulx_u64(x13, x21);
- uint64_t x557, uint64_t x558 = mulx_u64(x13, x23);
- uint64_t x560, uint64_t x561 = mulx_u64(x13, x25);
- uint64_t x563, uint64_t x564 = mulx_u64(x13, x27);
- uint64_t x566, uint64_t x567 = mulx_u64(x13, x26);
- uint64_t x569, uint8_t x570 = addcarryx_u64(0x0, x549, x551);
- uint64_t x572, uint8_t x573 = addcarryx_u64(x570, x552, x554);
- uint64_t x575, uint8_t x576 = addcarryx_u64(x573, x555, x557);
- uint64_t x578, uint8_t x579 = addcarryx_u64(x576, x558, x560);
- uint64_t x581, uint8_t x582 = addcarryx_u64(x579, x561, x563);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x564, x566);
- uint64_t x587, uint8_t _ = addcarryx_u64(0x0, x585, x567);
- uint64_t x590, uint8_t x591 = addcarryx_u64(0x0, x526, x548);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x529, x569);
- uint64_t x596, uint8_t x597 = addcarryx_u64(x594, x532, x572);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x535, x575);
- uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x538, x578);
- uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x541, x581);
- uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x544, x584);
- uint64_t x611, uint8_t x612 = addcarryx_u64(x609, x546, x587);
- uint64_t x614, uint64_t _ = mulx_u64(x590, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x617, uint64_t x618 = mulx_u64(x614, 0xffffffffffffffefL);
- uint64_t x620, uint64_t x621 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x623, uint64_t x624 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x626, uint64_t x627 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x629, uint64_t x630 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x632, uint64_t x633 = mulx_u64(x614, 0xffffffffffffffffL);
- uint64_t x635, uint64_t x636 = mulx_u64(x614, 0xfffffffffffffff);
- uint64_t x638, uint8_t x639 = addcarryx_u64(0x0, x618, x620);
- uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x621, x623);
- uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x624, x626);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x627, x629);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x630, x632);
- uint64_t x653, uint8_t x654 = addcarryx_u64(x651, x633, x635);
- uint64_t x656, uint8_t _ = addcarryx_u64(0x0, x654, x636);
- uint64_t _, uint8_t x660 = addcarryx_u64(0x0, x590, x617);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x593, x638);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x596, x641);
- uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x599, x644);
- uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x602, x647);
- uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x605, x650);
- uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x608, x653);
- uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x611, x656);
- uint8_t x682 = (x681 + x612);
- uint64_t x684, uint64_t x685 = mulx_u64(x15, x17);
- uint64_t x687, uint64_t x688 = mulx_u64(x15, x19);
- uint64_t x690, uint64_t x691 = mulx_u64(x15, x21);
- uint64_t x693, uint64_t x694 = mulx_u64(x15, x23);
- uint64_t x696, uint64_t x697 = mulx_u64(x15, x25);
- uint64_t x699, uint64_t x700 = mulx_u64(x15, x27);
- uint64_t x702, uint64_t x703 = mulx_u64(x15, x26);
- uint64_t x705, uint8_t x706 = addcarryx_u64(0x0, x685, x687);
- uint64_t x708, uint8_t x709 = addcarryx_u64(x706, x688, x690);
- uint64_t x711, uint8_t x712 = addcarryx_u64(x709, x691, x693);
- uint64_t x714, uint8_t x715 = addcarryx_u64(x712, x694, x696);
- uint64_t x717, uint8_t x718 = addcarryx_u64(x715, x697, x699);
- uint64_t x720, uint8_t x721 = addcarryx_u64(x718, x700, x702);
- uint64_t x723, uint8_t _ = addcarryx_u64(0x0, x721, x703);
- uint64_t x726, uint8_t x727 = addcarryx_u64(0x0, x662, x684);
- uint64_t x729, uint8_t x730 = addcarryx_u64(x727, x665, x705);
- uint64_t x732, uint8_t x733 = addcarryx_u64(x730, x668, x708);
- uint64_t x735, uint8_t x736 = addcarryx_u64(x733, x671, x711);
- uint64_t x738, uint8_t x739 = addcarryx_u64(x736, x674, x714);
- uint64_t x741, uint8_t x742 = addcarryx_u64(x739, x677, x717);
- uint64_t x744, uint8_t x745 = addcarryx_u64(x742, x680, x720);
- uint64_t x747, uint8_t x748 = addcarryx_u64(x745, x682, x723);
- uint64_t x750, uint64_t _ = mulx_u64(x726, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x753, uint64_t x754 = mulx_u64(x750, 0xffffffffffffffefL);
- uint64_t x756, uint64_t x757 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x759, uint64_t x760 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x762, uint64_t x763 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x765, uint64_t x766 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x768, uint64_t x769 = mulx_u64(x750, 0xffffffffffffffffL);
- uint64_t x771, uint64_t x772 = mulx_u64(x750, 0xfffffffffffffff);
- uint64_t x774, uint8_t x775 = addcarryx_u64(0x0, x754, x756);
- uint64_t x777, uint8_t x778 = addcarryx_u64(x775, x757, x759);
- uint64_t x780, uint8_t x781 = addcarryx_u64(x778, x760, x762);
- uint64_t x783, uint8_t x784 = addcarryx_u64(x781, x763, x765);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x766, x768);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x769, x771);
- uint64_t x792, uint8_t _ = addcarryx_u64(0x0, x790, x772);
- uint64_t _, uint8_t x796 = addcarryx_u64(0x0, x726, x753);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x729, x774);
- uint64_t x801, uint8_t x802 = addcarryx_u64(x799, x732, x777);
- uint64_t x804, uint8_t x805 = addcarryx_u64(x802, x735, x780);
- uint64_t x807, uint8_t x808 = addcarryx_u64(x805, x738, x783);
- uint64_t x810, uint8_t x811 = addcarryx_u64(x808, x741, x786);
- uint64_t x813, uint8_t x814 = addcarryx_u64(x811, x744, x789);
- uint64_t x816, uint8_t x817 = addcarryx_u64(x814, x747, x792);
- uint8_t x818 = (x817 + x748);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x17);
- uint64_t x823, uint64_t x824 = mulx_u64(x14, x19);
- uint64_t x826, uint64_t x827 = mulx_u64(x14, x21);
- uint64_t x829, uint64_t x830 = mulx_u64(x14, x23);
- uint64_t x832, uint64_t x833 = mulx_u64(x14, x25);
- uint64_t x835, uint64_t x836 = mulx_u64(x14, x27);
- uint64_t x838, uint64_t x839 = mulx_u64(x14, x26);
- uint64_t x841, uint8_t x842 = addcarryx_u64(0x0, x821, x823);
- uint64_t x844, uint8_t x845 = addcarryx_u64(x842, x824, x826);
- uint64_t x847, uint8_t x848 = addcarryx_u64(x845, x827, x829);
- uint64_t x850, uint8_t x851 = addcarryx_u64(x848, x830, x832);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x833, x835);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x836, x838);
- uint64_t x859, uint8_t _ = addcarryx_u64(0x0, x857, x839);
- uint64_t x862, uint8_t x863 = addcarryx_u64(0x0, x798, x820);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x801, x841);
- uint64_t x868, uint8_t x869 = addcarryx_u64(x866, x804, x844);
- uint64_t x871, uint8_t x872 = addcarryx_u64(x869, x807, x847);
- uint64_t x874, uint8_t x875 = addcarryx_u64(x872, x810, x850);
- uint64_t x877, uint8_t x878 = addcarryx_u64(x875, x813, x853);
- uint64_t x880, uint8_t x881 = addcarryx_u64(x878, x816, x856);
- uint64_t x883, uint8_t x884 = addcarryx_u64(x881, x818, x859);
- uint64_t x886, uint64_t _ = mulx_u64(x862, 0xf0f0f0f0f0f0f0f1L);
- uint64_t x889, uint64_t x890 = mulx_u64(x886, 0xffffffffffffffefL);
- uint64_t x892, uint64_t x893 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x895, uint64_t x896 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x898, uint64_t x899 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x901, uint64_t x902 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x904, uint64_t x905 = mulx_u64(x886, 0xffffffffffffffffL);
- uint64_t x907, uint64_t x908 = mulx_u64(x886, 0xfffffffffffffff);
- uint64_t x910, uint8_t x911 = addcarryx_u64(0x0, x890, x892);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x893, x895);
- uint64_t x916, uint8_t x917 = addcarryx_u64(x914, x896, x898);
- uint64_t x919, uint8_t x920 = addcarryx_u64(x917, x899, x901);
- uint64_t x922, uint8_t x923 = addcarryx_u64(x920, x902, x904);
- uint64_t x925, uint8_t x926 = addcarryx_u64(x923, x905, x907);
- uint64_t x928, uint8_t _ = addcarryx_u64(0x0, x926, x908);
- uint64_t _, uint8_t x932 = addcarryx_u64(0x0, x862, x889);
- uint64_t x934, uint8_t x935 = addcarryx_u64(x932, x865, x910);
- uint64_t x937, uint8_t x938 = addcarryx_u64(x935, x868, x913);
- uint64_t x940, uint8_t x941 = addcarryx_u64(x938, x871, x916);
- uint64_t x943, uint8_t x944 = addcarryx_u64(x941, x874, x919);
- uint64_t x946, uint8_t x947 = addcarryx_u64(x944, x877, x922);
- uint64_t x949, uint8_t x950 = addcarryx_u64(x947, x880, x925);
- uint64_t x952, uint8_t x953 = addcarryx_u64(x950, x883, x928);
- uint8_t x954 = (x953 + x884);
- uint64_t x956, uint8_t x957 = subborrow_u64(0x0, x934, 0xffffffffffffffefL);
- uint64_t x959, uint8_t x960 = subborrow_u64(x957, x937, 0xffffffffffffffffL);
- uint64_t x962, uint8_t x963 = subborrow_u64(x960, x940, 0xffffffffffffffffL);
- uint64_t x965, uint8_t x966 = subborrow_u64(x963, x943, 0xffffffffffffffffL);
- uint64_t x968, uint8_t x969 = subborrow_u64(x966, x946, 0xffffffffffffffffL);
- uint64_t x971, uint8_t x972 = subborrow_u64(x969, x949, 0xffffffffffffffffL);
- uint64_t x974, uint8_t x975 = subborrow_u64(x972, x952, 0xfffffffffffffff);
- uint64_t _, uint8_t x978 = subborrow_u64(x975, x954, 0x0);
- uint64_t x979 = cmovznz(x978, x974, x952);
- uint64_t x980 = cmovznz(x978, x971, x949);
- uint64_t x981 = cmovznz(x978, x968, x946);
- uint64_t x982 = cmovznz(x978, x965, x943);
- uint64_t x983 = cmovznz(x978, x962, x940);
- uint64_t x984 = cmovznz(x978, x959, x937);
- uint64_t x985 = cmovznz(x978, x956, x934);
- return (x979, x980, x981, x982, x983, x984, x985))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e444m17/femulDisplay.v b/src/Specific/montgomery64_2e444m17/femulDisplay.v
deleted file mode 100644
index c8ef3e385..000000000
--- a/src/Specific/montgomery64_2e444m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e444m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e444m17/fenz.c b/src/Specific/montgomery64_2e444m17/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e444m17/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e444m17/fenz.v b/src/Specific/montgomery64_2e444m17/fenz.v
deleted file mode 100644
index 79477c74c..000000000
--- a/src/Specific/montgomery64_2e444m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e444m17/fenzDisplay.log b/src/Specific/montgomery64_2e444m17/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e444m17/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e444m17/fenzDisplay.v b/src/Specific/montgomery64_2e444m17/fenzDisplay.v
deleted file mode 100644
index 24c55b7da..000000000
--- a/src/Specific/montgomery64_2e444m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e444m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e444m17/feopp.v b/src/Specific/montgomery64_2e444m17/feopp.v
deleted file mode 100644
index f0ee17461..000000000
--- a/src/Specific/montgomery64_2e444m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e444m17/feoppDisplay.log b/src/Specific/montgomery64_2e444m17/feoppDisplay.log
deleted file mode 100644
index de7df3687..000000000
--- a/src/Specific/montgomery64_2e444m17/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffefL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xffffffffffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0xfffffffffffffff);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e444m17/feoppDisplay.v b/src/Specific/montgomery64_2e444m17/feoppDisplay.v
deleted file mode 100644
index bdbb7f579..000000000
--- a/src/Specific/montgomery64_2e444m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e444m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e444m17/fesquare.c b/src/Specific/montgomery64_2e444m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e444m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e444m17/fesub.v b/src/Specific/montgomery64_2e444m17/fesub.v
deleted file mode 100644
index 8eed90c46..000000000
--- a/src/Specific/montgomery64_2e444m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e444m17/fesubDisplay.log b/src/Specific/montgomery64_2e444m17/fesubDisplay.log
deleted file mode 100644
index 3466e5141..000000000
--- a/src/Specific/montgomery64_2e444m17/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffefL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xffffffffffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0xfffffffffffffff);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e444m17/fesubDisplay.v b/src/Specific/montgomery64_2e444m17/fesubDisplay.v
deleted file mode 100644
index 774ebf336..000000000
--- a/src/Specific/montgomery64_2e444m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e444m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e444m17/CurveParameters.v b/src/Specific/montgomery64_2e444m17_7limbs/CurveParameters.v
index fa0acb741..fa0acb741 100644
--- a/src/Specific/montgomery64_2e444m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e444m17_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/Synthesis.v b/src/Specific/montgomery64_2e444m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..0008e6c09
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e444m17/compiler.sh b/src/Specific/montgomery64_2e444m17_7limbs/compiler.sh
index 632347b06..632347b06 100755
--- a/src/Specific/montgomery64_2e444m17/compiler.sh
+++ b/src/Specific/montgomery64_2e444m17_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e444m17/compilerxx.sh b/src/Specific/montgomery64_2e444m17_7limbs/compilerxx.sh
index 5dc39a76b..5dc39a76b 100755
--- a/src/Specific/montgomery64_2e444m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e444m17_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/feadd.v b/src/Specific/montgomery64_2e444m17_7limbs/feadd.v
new file mode 100644
index 000000000..39876bf6c
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e444m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..390abd46a
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/femul.v b/src/Specific/montgomery64_2e444m17_7limbs/femul.v
new file mode 100644
index 000000000..6b6c11247
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e444m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..1f692775e
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/fenz.v b/src/Specific/montgomery64_2e444m17_7limbs/fenz.v
new file mode 100644
index 000000000..89136c148
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e444m17_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..6d27bf81b
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/feopp.v b/src/Specific/montgomery64_2e444m17_7limbs/feopp.v
new file mode 100644
index 000000000..dd2ff520b
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e444m17_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..71ffb3d62
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/fesub.v b/src/Specific/montgomery64_2e444m17_7limbs/fesub.v
new file mode 100644
index 000000000..beb07fcc3
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e444m17_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e444m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..64bd5e597
--- /dev/null
+++ b/src/Specific/montgomery64_2e444m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e444m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e444m17/py_interpreter.sh b/src/Specific/montgomery64_2e444m17_7limbs/py_interpreter.sh
index 4112ef798..4112ef798 100755
--- a/src/Specific/montgomery64_2e444m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e444m17_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v b/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v
deleted file mode 100644
index c2e26bc7b..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feadd.c b/src/Specific/montgomery64_2e448m2e224m1/feadd.c
deleted file mode 100644
index 07baa6ebd..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feadd.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint64_t x29; uint8_t x30 = _addcarryx_u64(0x0, x5, x17, &x29);
- { uint64_t x32; uint8_t x33 = _addcarryx_u64(x30, x7, x19, &x32);
- { uint64_t x35; uint8_t x36 = _addcarryx_u64(x33, x9, x21, &x35);
- { uint64_t x38; uint8_t x39 = _addcarryx_u64(x36, x11, x23, &x38);
- { uint64_t x41; uint8_t x42 = _addcarryx_u64(x39, x13, x25, &x41);
- { uint64_t x44; uint8_t x45 = _addcarryx_u64(x42, x15, x27, &x44);
- { uint64_t x47; uint8_t x48 = _addcarryx_u64(x45, x14, x26, &x47);
- { uint64_t x50; uint8_t x51 = _subborrow_u64(0x0, x29, 0xffffffffffffffffL, &x50);
- { uint64_t x53; uint8_t x54 = _subborrow_u64(x51, x32, 0xffffffffffffffffL, &x53);
- { uint64_t x56; uint8_t x57 = _subborrow_u64(x54, x35, 0xffffffffffffffffL, &x56);
- { uint64_t x59; uint8_t x60 = _subborrow_u64(x57, x38, 0xfffffffeffffffffL, &x59);
- { uint64_t x62; uint8_t x63 = _subborrow_u64(x60, x41, 0xffffffffffffffffL, &x62);
- { uint64_t x65; uint8_t x66 = _subborrow_u64(x63, x44, 0xffffffffffffffffL, &x65);
- { uint64_t x68; uint8_t x69 = _subborrow_u64(x66, x47, 0xffffffffffffffffL, &x68);
- { uint64_t _; uint8_t x72 = _subborrow_u64(x69, x48, 0x0, &_);
- { uint64_t x73 = cmovznz64(x72, x68, x47);
- { uint64_t x74 = cmovznz64(x72, x65, x44);
- { uint64_t x75 = cmovznz64(x72, x62, x41);
- { uint64_t x76 = cmovznz64(x72, x59, x38);
- { uint64_t x77 = cmovznz64(x72, x56, x35);
- { uint64_t x78 = cmovznz64(x72, x53, x32);
- { uint64_t x79 = cmovznz64(x72, x50, x29);
- out[0] = x79;
- out[1] = x78;
- out[2] = x77;
- out[3] = x76;
- out[4] = x75;
- out[5] = x74;
- out[6] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feadd.v b/src/Specific/montgomery64_2e448m2e224m1/feadd.v
deleted file mode 100644
index 2e66efae0..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.log b/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.log
deleted file mode 100644
index 43bb533e8..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = addcarryx_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = addcarryx_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = addcarryx_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = addcarryx_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = addcarryx_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = addcarryx_u64(x45, x14, x26);
- uint64_t x50, uint8_t x51 = subborrow_u64(0x0, x29, 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = subborrow_u64(x51, x32, 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = subborrow_u64(x54, x35, 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = subborrow_u64(x57, x38, 0xfffffffeffffffffL);
- uint64_t x62, uint8_t x63 = subborrow_u64(x60, x41, 0xffffffffffffffffL);
- uint64_t x65, uint8_t x66 = subborrow_u64(x63, x44, 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = subborrow_u64(x66, x47, 0xffffffffffffffffL);
- uint64_t _, uint8_t x72 = subborrow_u64(x69, x48, 0x0);
- uint64_t x73 = cmovznz64(x72, x68, x47);
- uint64_t x74 = cmovznz64(x72, x65, x44);
- uint64_t x75 = cmovznz64(x72, x62, x41);
- uint64_t x76 = cmovznz64(x72, x59, x38);
- uint64_t x77 = cmovznz64(x72, x56, x35);
- uint64_t x78 = cmovznz64(x72, x53, x32);
- uint64_t x79 = cmovznz64(x72, x50, x29);
- return (x73, x74, x75, x76, x77, x78, x79))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v
deleted file mode 100644
index dcf98540f..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/femul.v b/src/Specific/montgomery64_2e448m2e224m1/femul.v
deleted file mode 100644
index 33bd16389..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.log b/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.log
deleted file mode 100644
index 9540c04d8..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.log
+++ /dev/null
@@ -1,328 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint64_t x30 = mulx_u64(x5, x17);
- uint64_t x32, uint64_t x33 = mulx_u64(x5, x19);
- uint64_t x35, uint64_t x36 = mulx_u64(x5, x21);
- uint64_t x38, uint64_t x39 = mulx_u64(x5, x23);
- uint64_t x41, uint64_t x42 = mulx_u64(x5, x25);
- uint64_t x44, uint64_t x45 = mulx_u64(x5, x27);
- uint64_t x47, uint64_t x48 = mulx_u64(x5, x26);
- uint64_t x50, uint8_t x51 = addcarryx_u64(0x0, x30, x32);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x51, x33, x35);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x54, x36, x38);
- uint64_t x59, uint8_t x60 = addcarryx_u64(x57, x39, x41);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x60, x42, x44);
- uint64_t x65, uint8_t x66 = addcarryx_u64(x63, x45, x47);
- uint64_t x68, uint8_t _ = addcarryx_u64(0x0, x66, x48);
- uint64_t x71, uint64_t x72 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x74, uint64_t x75 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x77, uint64_t x78 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x80, uint64_t x81 = mulx_u64(x29, 0xfffffffeffffffffL);
- uint64_t x83, uint64_t x84 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x86, uint64_t x87 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x89, uint64_t x90 = mulx_u64(x29, 0xffffffffffffffffL);
- uint64_t x92, uint8_t x93 = addcarryx_u64(0x0, x72, x74);
- uint64_t x95, uint8_t x96 = addcarryx_u64(x93, x75, x77);
- uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x78, x80);
- uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x81, x83);
- uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x84, x86);
- uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x87, x89);
- uint64_t x110, uint8_t _ = addcarryx_u64(0x0, x108, x90);
- uint64_t _, uint8_t x114 = addcarryx_u64(0x0, x29, x71);
- uint64_t x116, uint8_t x117 = addcarryx_u64(x114, x50, x92);
- uint64_t x119, uint8_t x120 = addcarryx_u64(x117, x53, x95);
- uint64_t x122, uint8_t x123 = addcarryx_u64(x120, x56, x98);
- uint64_t x125, uint8_t x126 = addcarryx_u64(x123, x59, x101);
- uint64_t x128, uint8_t x129 = addcarryx_u64(x126, x62, x104);
- uint64_t x131, uint8_t x132 = addcarryx_u64(x129, x65, x107);
- uint64_t x134, uint8_t x135 = addcarryx_u64(x132, x68, x110);
- uint64_t x137, uint64_t x138 = mulx_u64(x7, x17);
- uint64_t x140, uint64_t x141 = mulx_u64(x7, x19);
- uint64_t x143, uint64_t x144 = mulx_u64(x7, x21);
- uint64_t x146, uint64_t x147 = mulx_u64(x7, x23);
- uint64_t x149, uint64_t x150 = mulx_u64(x7, x25);
- uint64_t x152, uint64_t x153 = mulx_u64(x7, x27);
- uint64_t x155, uint64_t x156 = mulx_u64(x7, x26);
- uint64_t x158, uint8_t x159 = addcarryx_u64(0x0, x138, x140);
- uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x141, x143);
- uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x144, x146);
- uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x147, x149);
- uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x150, x152);
- uint64_t x173, uint8_t x174 = addcarryx_u64(x171, x153, x155);
- uint64_t x176, uint8_t _ = addcarryx_u64(0x0, x174, x156);
- uint64_t x179, uint8_t x180 = addcarryx_u64(0x0, x116, x137);
- uint64_t x182, uint8_t x183 = addcarryx_u64(x180, x119, x158);
- uint64_t x185, uint8_t x186 = addcarryx_u64(x183, x122, x161);
- uint64_t x188, uint8_t x189 = addcarryx_u64(x186, x125, x164);
- uint64_t x191, uint8_t x192 = addcarryx_u64(x189, x128, x167);
- uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x131, x170);
- uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x134, x173);
- uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x135, x176);
- uint64_t x203, uint64_t x204 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x206, uint64_t x207 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x209, uint64_t x210 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x212, uint64_t x213 = mulx_u64(x179, 0xfffffffeffffffffL);
- uint64_t x215, uint64_t x216 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x218, uint64_t x219 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x221, uint64_t x222 = mulx_u64(x179, 0xffffffffffffffffL);
- uint64_t x224, uint8_t x225 = addcarryx_u64(0x0, x204, x206);
- uint64_t x227, uint8_t x228 = addcarryx_u64(x225, x207, x209);
- uint64_t x230, uint8_t x231 = addcarryx_u64(x228, x210, x212);
- uint64_t x233, uint8_t x234 = addcarryx_u64(x231, x213, x215);
- uint64_t x236, uint8_t x237 = addcarryx_u64(x234, x216, x218);
- uint64_t x239, uint8_t x240 = addcarryx_u64(x237, x219, x221);
- uint64_t x242, uint8_t _ = addcarryx_u64(0x0, x240, x222);
- uint64_t _, uint8_t x246 = addcarryx_u64(0x0, x179, x203);
- uint64_t x248, uint8_t x249 = addcarryx_u64(x246, x182, x224);
- uint64_t x251, uint8_t x252 = addcarryx_u64(x249, x185, x227);
- uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x188, x230);
- uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x191, x233);
- uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x194, x236);
- uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x197, x239);
- uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x200, x242);
- uint8_t x268 = (x267 + x201);
- uint64_t x270, uint64_t x271 = mulx_u64(x9, x17);
- uint64_t x273, uint64_t x274 = mulx_u64(x9, x19);
- uint64_t x276, uint64_t x277 = mulx_u64(x9, x21);
- uint64_t x279, uint64_t x280 = mulx_u64(x9, x23);
- uint64_t x282, uint64_t x283 = mulx_u64(x9, x25);
- uint64_t x285, uint64_t x286 = mulx_u64(x9, x27);
- uint64_t x288, uint64_t x289 = mulx_u64(x9, x26);
- uint64_t x291, uint8_t x292 = addcarryx_u64(0x0, x271, x273);
- uint64_t x294, uint8_t x295 = addcarryx_u64(x292, x274, x276);
- uint64_t x297, uint8_t x298 = addcarryx_u64(x295, x277, x279);
- uint64_t x300, uint8_t x301 = addcarryx_u64(x298, x280, x282);
- uint64_t x303, uint8_t x304 = addcarryx_u64(x301, x283, x285);
- uint64_t x306, uint8_t x307 = addcarryx_u64(x304, x286, x288);
- uint64_t x309, uint8_t _ = addcarryx_u64(0x0, x307, x289);
- uint64_t x312, uint8_t x313 = addcarryx_u64(0x0, x248, x270);
- uint64_t x315, uint8_t x316 = addcarryx_u64(x313, x251, x291);
- uint64_t x318, uint8_t x319 = addcarryx_u64(x316, x254, x294);
- uint64_t x321, uint8_t x322 = addcarryx_u64(x319, x257, x297);
- uint64_t x324, uint8_t x325 = addcarryx_u64(x322, x260, x300);
- uint64_t x327, uint8_t x328 = addcarryx_u64(x325, x263, x303);
- uint64_t x330, uint8_t x331 = addcarryx_u64(x328, x266, x306);
- uint64_t x333, uint8_t x334 = addcarryx_u64(x331, x268, x309);
- uint64_t x336, uint64_t x337 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x339, uint64_t x340 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x342, uint64_t x343 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x345, uint64_t x346 = mulx_u64(x312, 0xfffffffeffffffffL);
- uint64_t x348, uint64_t x349 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x351, uint64_t x352 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x354, uint64_t x355 = mulx_u64(x312, 0xffffffffffffffffL);
- uint64_t x357, uint8_t x358 = addcarryx_u64(0x0, x337, x339);
- uint64_t x360, uint8_t x361 = addcarryx_u64(x358, x340, x342);
- uint64_t x363, uint8_t x364 = addcarryx_u64(x361, x343, x345);
- uint64_t x366, uint8_t x367 = addcarryx_u64(x364, x346, x348);
- uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x349, x351);
- uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x352, x354);
- uint64_t x375, uint8_t _ = addcarryx_u64(0x0, x373, x355);
- uint64_t _, uint8_t x379 = addcarryx_u64(0x0, x312, x336);
- uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x315, x357);
- uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x318, x360);
- uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x321, x363);
- uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x324, x366);
- uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x327, x369);
- uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x330, x372);
- uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x333, x375);
- uint8_t x401 = (x400 + x334);
- uint64_t x403, uint64_t x404 = mulx_u64(x11, x17);
- uint64_t x406, uint64_t x407 = mulx_u64(x11, x19);
- uint64_t x409, uint64_t x410 = mulx_u64(x11, x21);
- uint64_t x412, uint64_t x413 = mulx_u64(x11, x23);
- uint64_t x415, uint64_t x416 = mulx_u64(x11, x25);
- uint64_t x418, uint64_t x419 = mulx_u64(x11, x27);
- uint64_t x421, uint64_t x422 = mulx_u64(x11, x26);
- uint64_t x424, uint8_t x425 = addcarryx_u64(0x0, x404, x406);
- uint64_t x427, uint8_t x428 = addcarryx_u64(x425, x407, x409);
- uint64_t x430, uint8_t x431 = addcarryx_u64(x428, x410, x412);
- uint64_t x433, uint8_t x434 = addcarryx_u64(x431, x413, x415);
- uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x416, x418);
- uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x419, x421);
- uint64_t x442, uint8_t _ = addcarryx_u64(0x0, x440, x422);
- uint64_t x445, uint8_t x446 = addcarryx_u64(0x0, x381, x403);
- uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x384, x424);
- uint64_t x451, uint8_t x452 = addcarryx_u64(x449, x387, x427);
- uint64_t x454, uint8_t x455 = addcarryx_u64(x452, x390, x430);
- uint64_t x457, uint8_t x458 = addcarryx_u64(x455, x393, x433);
- uint64_t x460, uint8_t x461 = addcarryx_u64(x458, x396, x436);
- uint64_t x463, uint8_t x464 = addcarryx_u64(x461, x399, x439);
- uint64_t x466, uint8_t x467 = addcarryx_u64(x464, x401, x442);
- uint64_t x469, uint64_t x470 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x472, uint64_t x473 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x475, uint64_t x476 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x478, uint64_t x479 = mulx_u64(x445, 0xfffffffeffffffffL);
- uint64_t x481, uint64_t x482 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x484, uint64_t x485 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x487, uint64_t x488 = mulx_u64(x445, 0xffffffffffffffffL);
- uint64_t x490, uint8_t x491 = addcarryx_u64(0x0, x470, x472);
- uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x473, x475);
- uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x476, x478);
- uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x479, x481);
- uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x482, x484);
- uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x485, x487);
- uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x488);
- uint64_t _, uint8_t x512 = addcarryx_u64(0x0, x445, x469);
- uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x448, x490);
- uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x451, x493);
- uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x454, x496);
- uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x457, x499);
- uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x460, x502);
- uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x463, x505);
- uint64_t x532, uint8_t x533 = addcarryx_u64(x530, x466, x508);
- uint8_t x534 = (x533 + x467);
- uint64_t x536, uint64_t x537 = mulx_u64(x13, x17);
- uint64_t x539, uint64_t x540 = mulx_u64(x13, x19);
- uint64_t x542, uint64_t x543 = mulx_u64(x13, x21);
- uint64_t x545, uint64_t x546 = mulx_u64(x13, x23);
- uint64_t x548, uint64_t x549 = mulx_u64(x13, x25);
- uint64_t x551, uint64_t x552 = mulx_u64(x13, x27);
- uint64_t x554, uint64_t x555 = mulx_u64(x13, x26);
- uint64_t x557, uint8_t x558 = addcarryx_u64(0x0, x537, x539);
- uint64_t x560, uint8_t x561 = addcarryx_u64(x558, x540, x542);
- uint64_t x563, uint8_t x564 = addcarryx_u64(x561, x543, x545);
- uint64_t x566, uint8_t x567 = addcarryx_u64(x564, x546, x548);
- uint64_t x569, uint8_t x570 = addcarryx_u64(x567, x549, x551);
- uint64_t x572, uint8_t x573 = addcarryx_u64(x570, x552, x554);
- uint64_t x575, uint8_t _ = addcarryx_u64(0x0, x573, x555);
- uint64_t x578, uint8_t x579 = addcarryx_u64(0x0, x514, x536);
- uint64_t x581, uint8_t x582 = addcarryx_u64(x579, x517, x557);
- uint64_t x584, uint8_t x585 = addcarryx_u64(x582, x520, x560);
- uint64_t x587, uint8_t x588 = addcarryx_u64(x585, x523, x563);
- uint64_t x590, uint8_t x591 = addcarryx_u64(x588, x526, x566);
- uint64_t x593, uint8_t x594 = addcarryx_u64(x591, x529, x569);
- uint64_t x596, uint8_t x597 = addcarryx_u64(x594, x532, x572);
- uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x534, x575);
- uint64_t x602, uint64_t x603 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x605, uint64_t x606 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x608, uint64_t x609 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x611, uint64_t x612 = mulx_u64(x578, 0xfffffffeffffffffL);
- uint64_t x614, uint64_t x615 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x617, uint64_t x618 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x620, uint64_t x621 = mulx_u64(x578, 0xffffffffffffffffL);
- uint64_t x623, uint8_t x624 = addcarryx_u64(0x0, x603, x605);
- uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x606, x608);
- uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x609, x611);
- uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x612, x614);
- uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x615, x617);
- uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x618, x620);
- uint64_t x641, uint8_t _ = addcarryx_u64(0x0, x639, x621);
- uint64_t _, uint8_t x645 = addcarryx_u64(0x0, x578, x602);
- uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x581, x623);
- uint64_t x650, uint8_t x651 = addcarryx_u64(x648, x584, x626);
- uint64_t x653, uint8_t x654 = addcarryx_u64(x651, x587, x629);
- uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x590, x632);
- uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x593, x635);
- uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x596, x638);
- uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x599, x641);
- uint8_t x667 = (x666 + x600);
- uint64_t x669, uint64_t x670 = mulx_u64(x15, x17);
- uint64_t x672, uint64_t x673 = mulx_u64(x15, x19);
- uint64_t x675, uint64_t x676 = mulx_u64(x15, x21);
- uint64_t x678, uint64_t x679 = mulx_u64(x15, x23);
- uint64_t x681, uint64_t x682 = mulx_u64(x15, x25);
- uint64_t x684, uint64_t x685 = mulx_u64(x15, x27);
- uint64_t x687, uint64_t x688 = mulx_u64(x15, x26);
- uint64_t x690, uint8_t x691 = addcarryx_u64(0x0, x670, x672);
- uint64_t x693, uint8_t x694 = addcarryx_u64(x691, x673, x675);
- uint64_t x696, uint8_t x697 = addcarryx_u64(x694, x676, x678);
- uint64_t x699, uint8_t x700 = addcarryx_u64(x697, x679, x681);
- uint64_t x702, uint8_t x703 = addcarryx_u64(x700, x682, x684);
- uint64_t x705, uint8_t x706 = addcarryx_u64(x703, x685, x687);
- uint64_t x708, uint8_t _ = addcarryx_u64(0x0, x706, x688);
- uint64_t x711, uint8_t x712 = addcarryx_u64(0x0, x647, x669);
- uint64_t x714, uint8_t x715 = addcarryx_u64(x712, x650, x690);
- uint64_t x717, uint8_t x718 = addcarryx_u64(x715, x653, x693);
- uint64_t x720, uint8_t x721 = addcarryx_u64(x718, x656, x696);
- uint64_t x723, uint8_t x724 = addcarryx_u64(x721, x659, x699);
- uint64_t x726, uint8_t x727 = addcarryx_u64(x724, x662, x702);
- uint64_t x729, uint8_t x730 = addcarryx_u64(x727, x665, x705);
- uint64_t x732, uint8_t x733 = addcarryx_u64(x730, x667, x708);
- uint64_t x735, uint64_t x736 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x738, uint64_t x739 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x741, uint64_t x742 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x744, uint64_t x745 = mulx_u64(x711, 0xfffffffeffffffffL);
- uint64_t x747, uint64_t x748 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x750, uint64_t x751 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x753, uint64_t x754 = mulx_u64(x711, 0xffffffffffffffffL);
- uint64_t x756, uint8_t x757 = addcarryx_u64(0x0, x736, x738);
- uint64_t x759, uint8_t x760 = addcarryx_u64(x757, x739, x741);
- uint64_t x762, uint8_t x763 = addcarryx_u64(x760, x742, x744);
- uint64_t x765, uint8_t x766 = addcarryx_u64(x763, x745, x747);
- uint64_t x768, uint8_t x769 = addcarryx_u64(x766, x748, x750);
- uint64_t x771, uint8_t x772 = addcarryx_u64(x769, x751, x753);
- uint64_t x774, uint8_t _ = addcarryx_u64(0x0, x772, x754);
- uint64_t _, uint8_t x778 = addcarryx_u64(0x0, x711, x735);
- uint64_t x780, uint8_t x781 = addcarryx_u64(x778, x714, x756);
- uint64_t x783, uint8_t x784 = addcarryx_u64(x781, x717, x759);
- uint64_t x786, uint8_t x787 = addcarryx_u64(x784, x720, x762);
- uint64_t x789, uint8_t x790 = addcarryx_u64(x787, x723, x765);
- uint64_t x792, uint8_t x793 = addcarryx_u64(x790, x726, x768);
- uint64_t x795, uint8_t x796 = addcarryx_u64(x793, x729, x771);
- uint64_t x798, uint8_t x799 = addcarryx_u64(x796, x732, x774);
- uint8_t x800 = (x799 + x733);
- uint64_t x802, uint64_t x803 = mulx_u64(x14, x17);
- uint64_t x805, uint64_t x806 = mulx_u64(x14, x19);
- uint64_t x808, uint64_t x809 = mulx_u64(x14, x21);
- uint64_t x811, uint64_t x812 = mulx_u64(x14, x23);
- uint64_t x814, uint64_t x815 = mulx_u64(x14, x25);
- uint64_t x817, uint64_t x818 = mulx_u64(x14, x27);
- uint64_t x820, uint64_t x821 = mulx_u64(x14, x26);
- uint64_t x823, uint8_t x824 = addcarryx_u64(0x0, x803, x805);
- uint64_t x826, uint8_t x827 = addcarryx_u64(x824, x806, x808);
- uint64_t x829, uint8_t x830 = addcarryx_u64(x827, x809, x811);
- uint64_t x832, uint8_t x833 = addcarryx_u64(x830, x812, x814);
- uint64_t x835, uint8_t x836 = addcarryx_u64(x833, x815, x817);
- uint64_t x838, uint8_t x839 = addcarryx_u64(x836, x818, x820);
- uint64_t x841, uint8_t _ = addcarryx_u64(0x0, x839, x821);
- uint64_t x844, uint8_t x845 = addcarryx_u64(0x0, x780, x802);
- uint64_t x847, uint8_t x848 = addcarryx_u64(x845, x783, x823);
- uint64_t x850, uint8_t x851 = addcarryx_u64(x848, x786, x826);
- uint64_t x853, uint8_t x854 = addcarryx_u64(x851, x789, x829);
- uint64_t x856, uint8_t x857 = addcarryx_u64(x854, x792, x832);
- uint64_t x859, uint8_t x860 = addcarryx_u64(x857, x795, x835);
- uint64_t x862, uint8_t x863 = addcarryx_u64(x860, x798, x838);
- uint64_t x865, uint8_t x866 = addcarryx_u64(x863, x800, x841);
- uint64_t x868, uint64_t x869 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x871, uint64_t x872 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x874, uint64_t x875 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x877, uint64_t x878 = mulx_u64(x844, 0xfffffffeffffffffL);
- uint64_t x880, uint64_t x881 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x883, uint64_t x884 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x886, uint64_t x887 = mulx_u64(x844, 0xffffffffffffffffL);
- uint64_t x889, uint8_t x890 = addcarryx_u64(0x0, x869, x871);
- uint64_t x892, uint8_t x893 = addcarryx_u64(x890, x872, x874);
- uint64_t x895, uint8_t x896 = addcarryx_u64(x893, x875, x877);
- uint64_t x898, uint8_t x899 = addcarryx_u64(x896, x878, x880);
- uint64_t x901, uint8_t x902 = addcarryx_u64(x899, x881, x883);
- uint64_t x904, uint8_t x905 = addcarryx_u64(x902, x884, x886);
- uint64_t x907, uint8_t _ = addcarryx_u64(0x0, x905, x887);
- uint64_t _, uint8_t x911 = addcarryx_u64(0x0, x844, x868);
- uint64_t x913, uint8_t x914 = addcarryx_u64(x911, x847, x889);
- uint64_t x916, uint8_t x917 = addcarryx_u64(x914, x850, x892);
- uint64_t x919, uint8_t x920 = addcarryx_u64(x917, x853, x895);
- uint64_t x922, uint8_t x923 = addcarryx_u64(x920, x856, x898);
- uint64_t x925, uint8_t x926 = addcarryx_u64(x923, x859, x901);
- uint64_t x928, uint8_t x929 = addcarryx_u64(x926, x862, x904);
- uint64_t x931, uint8_t x932 = addcarryx_u64(x929, x865, x907);
- uint8_t x933 = (x932 + x866);
- uint64_t x935, uint8_t x936 = subborrow_u64(0x0, x913, 0xffffffffffffffffL);
- uint64_t x938, uint8_t x939 = subborrow_u64(x936, x916, 0xffffffffffffffffL);
- uint64_t x941, uint8_t x942 = subborrow_u64(x939, x919, 0xffffffffffffffffL);
- uint64_t x944, uint8_t x945 = subborrow_u64(x942, x922, 0xfffffffeffffffffL);
- uint64_t x947, uint8_t x948 = subborrow_u64(x945, x925, 0xffffffffffffffffL);
- uint64_t x950, uint8_t x951 = subborrow_u64(x948, x928, 0xffffffffffffffffL);
- uint64_t x953, uint8_t x954 = subborrow_u64(x951, x931, 0xffffffffffffffffL);
- uint64_t _, uint8_t x957 = subborrow_u64(x954, x933, 0x0);
- uint64_t x958 = cmovznz(x957, x953, x931);
- uint64_t x959 = cmovznz(x957, x950, x928);
- uint64_t x960 = cmovznz(x957, x947, x925);
- uint64_t x961 = cmovznz(x957, x944, x922);
- uint64_t x962 = cmovznz(x957, x941, x919);
- uint64_t x963 = cmovznz(x957, x938, x916);
- uint64_t x964 = cmovznz(x957, x935, x913);
- return (x958, x959, x960, x961, x962, x963, x964))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v
deleted file mode 100644
index 4a4bfcbef..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenz.c b/src/Specific/montgomery64_2e448m2e224m1/fenz.c
deleted file mode 100644
index d09ab7ff5..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fenz.c
+++ /dev/null
@@ -1,17 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x13 = (x12 | x11);
- { uint64_t x14 = (x10 | x13);
- { uint64_t x15 = (x8 | x14);
- { uint64_t x16 = (x6 | x15);
- { uint64_t x17 = (x4 | x16);
- { uint64_t x18 = (x2 | x17);
- out[0] = x18;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenz.v b/src/Specific/montgomery64_2e448m2e224m1/fenz.v
deleted file mode 100644
index 33465cde7..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.log b/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.log
deleted file mode 100644
index 28baa6eea..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.log
+++ /dev/null
@@ -1,13 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (x12 | x11);
- uint64_t x14 = (x10 | x13);
- uint64_t x15 = (x8 | x14);
- uint64_t x16 = (x6 | x15);
- uint64_t x17 = (x4 | x16);
- uint64_t x18 = (x2 | x17);
- return x18)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v
deleted file mode 100644
index f9c9212d4..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feopp.v b/src/Specific/montgomery64_2e448m2e224m1/feopp.v
deleted file mode 100644
index ed381e670..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.log b/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.log
deleted file mode 100644
index 1f8c31dca..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x17, uint8_t x18 = subborrow_u64(x15, 0x0, x4);
- uint64_t x20, uint8_t x21 = subborrow_u64(x18, 0x0, x6);
- uint64_t x23, uint8_t x24 = subborrow_u64(x21, 0x0, x8);
- uint64_t x26, uint8_t x27 = subborrow_u64(x24, 0x0, x10);
- uint64_t x29, uint8_t x30 = subborrow_u64(x27, 0x0, x12);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, 0x0, x11);
- uint64_t x34 = (uint64_t)cmovznz(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0xffffffffffffffffL);
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x14, x35);
- uint64_t x39 = (x34 & 0xffffffffffffffffL);
- uint64_t x41, uint8_t x42 = addcarryx_u64(x38, x17, x39);
- uint64_t x43 = (x34 & 0xffffffffffffffffL);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x42, x20, x43);
- uint64_t x47 = (x34 & 0xfffffffeffffffffL);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x23, x47);
- uint64_t x51 = (x34 & 0xffffffffffffffffL);
- uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x26, x51);
- uint64_t x55 = (x34 & 0xffffffffffffffffL);
- uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x29, x55);
- uint64_t x59 = (x34 & 0xffffffffffffffffL);
- uint64_t x61, uint8_t _ = addcarryx_u64(x58, x32, x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v
deleted file mode 100644
index ac44d0ba0..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesquare.c b/src/Specific/montgomery64_2e448m2e224m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesub.v b/src/Specific/montgomery64_2e448m2e224m1/fesub.v
deleted file mode 100644
index 53eaa63c2..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.log b/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.log
deleted file mode 100644
index 38b616606..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x29, uint8_t x30 = subborrow_u64(0x0, x5, x17);
- uint64_t x32, uint8_t x33 = subborrow_u64(x30, x7, x19);
- uint64_t x35, uint8_t x36 = subborrow_u64(x33, x9, x21);
- uint64_t x38, uint8_t x39 = subborrow_u64(x36, x11, x23);
- uint64_t x41, uint8_t x42 = subborrow_u64(x39, x13, x25);
- uint64_t x44, uint8_t x45 = subborrow_u64(x42, x15, x27);
- uint64_t x47, uint8_t x48 = subborrow_u64(x45, x14, x26);
- uint64_t x49 = (uint64_t)cmovznz(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffffffffL);
- uint64_t x52, uint8_t x53 = addcarryx_u64(0x0, x29, x50);
- uint64_t x54 = (x49 & 0xffffffffffffffffL);
- uint64_t x56, uint8_t x57 = addcarryx_u64(x53, x32, x54);
- uint64_t x58 = (x49 & 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = addcarryx_u64(x57, x35, x58);
- uint64_t x62 = (x49 & 0xfffffffeffffffffL);
- uint64_t x64, uint8_t x65 = addcarryx_u64(x61, x38, x62);
- uint64_t x66 = (x49 & 0xffffffffffffffffL);
- uint64_t x68, uint8_t x69 = addcarryx_u64(x65, x41, x66);
- uint64_t x70 = (x49 & 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = addcarryx_u64(x69, x44, x70);
- uint64_t x74 = (x49 & 0xffffffffffffffffL);
- uint64_t x76, uint8_t _ = addcarryx_u64(x73, x47, x74);
- (Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v b/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v
deleted file mode 100644
index af9ba227c..000000000
--- a/src/Specific/montgomery64_2e448m2e224m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e448m2e224m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/CurveParameters.v
index c61e96569..c61e96569 100644
--- a/src/Specific/montgomery64_2e448m2e224m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/Synthesis.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/Synthesis.v
new file mode 100644
index 000000000..06522dffa
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/compiler.sh b/src/Specific/montgomery64_2e448m2e224m1_7limbs/compiler.sh
index 73ad1152a..73ad1152a 100755
--- a/src/Specific/montgomery64_2e448m2e224m1/compiler.sh
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e448m2e224m1/compilerxx.sh b/src/Specific/montgomery64_2e448m2e224m1_7limbs/compilerxx.sh
index 8a2a9c991..8a2a9c991 100755
--- a/src/Specific/montgomery64_2e448m2e224m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/feadd.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feadd.v
new file mode 100644
index 000000000..3577dfcdd
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/feaddDisplay.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..e0c6c3c62
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/femul.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/femul.v
new file mode 100644
index 000000000..c91845d8a
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/femulDisplay.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..94fc6a4e4
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenz.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenz.v
new file mode 100644
index 000000000..149098167
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenzDisplay.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenzDisplay.v
new file mode 100644
index 000000000..318a59cd5
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/feopp.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feopp.v
new file mode 100644
index 000000000..bbb2ab5c8
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/feoppDisplay.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feoppDisplay.v
new file mode 100644
index 000000000..9a5da0ca7
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesub.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesub.v
new file mode 100644
index 000000000..8173e1801
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesubDisplay.v b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..b276ed2fb
--- /dev/null
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e448m2e224m1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e448m2e224m1/py_interpreter.sh b/src/Specific/montgomery64_2e448m2e224m1_7limbs/py_interpreter.sh
index 662ea51cd..662ea51cd 100755
--- a/src/Specific/montgomery64_2e448m2e224m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e448m2e224m1_7limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v b/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v
deleted file mode 100644
index 2bf7c4eeb..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feadd.c b/src/Specific/montgomery64_2e450m2e225m1/feadd.c
deleted file mode 100644
index a7e273342..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffffL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xfffffffdffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x3, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feadd.v b/src/Specific/montgomery64_2e450m2e225m1/feadd.v
deleted file mode 100644
index 6794b9c2b..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.log b/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.log
deleted file mode 100644
index ceb4ce79a..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xfffffffdffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x3);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v
deleted file mode 100644
index 2839b748a..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/femul.v b/src/Specific/montgomery64_2e450m2e225m1/femul.v
deleted file mode 100644
index c11faec3a..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v
deleted file mode 100644
index cbeb99a31..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenz.c b/src/Specific/montgomery64_2e450m2e225m1/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenz.v b/src/Specific/montgomery64_2e450m2e225m1/fenz.v
deleted file mode 100644
index a658ed4e6..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.log b/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v
deleted file mode 100644
index 316660463..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feopp.v b/src/Specific/montgomery64_2e450m2e225m1/feopp.v
deleted file mode 100644
index 2790e5306..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.log b/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.log
deleted file mode 100644
index a1b5164cc..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xfffffffdffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint8_t x68 = ((uint8_t)x39 & 0x3);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v
deleted file mode 100644
index 260435c59..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesquare.c b/src/Specific/montgomery64_2e450m2e225m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesub.v b/src/Specific/montgomery64_2e450m2e225m1/fesub.v
deleted file mode 100644
index 22a633bed..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.log b/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.log
deleted file mode 100644
index b1fb363b3..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xfffffffdffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint8_t x85 = ((uint8_t)x56 & 0x3);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v b/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v
deleted file mode 100644
index 206a32d9e..000000000
--- a/src/Specific/montgomery64_2e450m2e225m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e450m2e225m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/CurveParameters.v
index 69aefbd94..69aefbd94 100644
--- a/src/Specific/montgomery64_2e450m2e225m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/Synthesis.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..943826b73
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/compiler.sh b/src/Specific/montgomery64_2e450m2e225m1_8limbs/compiler.sh
index 05849d375..05849d375 100755
--- a/src/Specific/montgomery64_2e450m2e225m1/compiler.sh
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e450m2e225m1/compilerxx.sh b/src/Specific/montgomery64_2e450m2e225m1_8limbs/compilerxx.sh
index a626a4965..a626a4965 100755
--- a/src/Specific/montgomery64_2e450m2e225m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/feadd.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feadd.v
new file mode 100644
index 000000000..7a3861820
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..bc7aaa829
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/femul.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/femul.v
new file mode 100644
index 000000000..304f7cf81
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..043dd14d9
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenz.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenz.v
new file mode 100644
index 000000000..646d02f95
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..ab32759ee
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/feopp.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feopp.v
new file mode 100644
index 000000000..7d76db910
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..a34793732
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesub.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesub.v
new file mode 100644
index 000000000..b55a49f0d
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..162650007
--- /dev/null
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e450m2e225m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e450m2e225m1/py_interpreter.sh b/src/Specific/montgomery64_2e450m2e225m1_8limbs/py_interpreter.sh
index f81231205..f81231205 100755
--- a/src/Specific/montgomery64_2e450m2e225m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e450m2e225m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e452m3/Synthesis.v b/src/Specific/montgomery64_2e452m3/Synthesis.v
deleted file mode 100644
index c7ad0001e..000000000
--- a/src/Specific/montgomery64_2e452m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e452m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e452m3/feadd.c b/src/Specific/montgomery64_2e452m3/feadd.c
deleted file mode 100644
index 752d18f97..000000000
--- a/src/Specific/montgomery64_2e452m3/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xfffffffffffffffdL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xf, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e452m3/feadd.v b/src/Specific/montgomery64_2e452m3/feadd.v
deleted file mode 100644
index 003c86aa7..000000000
--- a/src/Specific/montgomery64_2e452m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e452m3/feaddDisplay.log b/src/Specific/montgomery64_2e452m3/feaddDisplay.log
deleted file mode 100644
index 9bbb41025..000000000
--- a/src/Specific/montgomery64_2e452m3/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xfffffffffffffffdL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xf);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e452m3/feaddDisplay.v b/src/Specific/montgomery64_2e452m3/feaddDisplay.v
deleted file mode 100644
index 16fe5ece7..000000000
--- a/src/Specific/montgomery64_2e452m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e452m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e452m3/femul.v b/src/Specific/montgomery64_2e452m3/femul.v
deleted file mode 100644
index f8df4d766..000000000
--- a/src/Specific/montgomery64_2e452m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e452m3/femulDisplay.v b/src/Specific/montgomery64_2e452m3/femulDisplay.v
deleted file mode 100644
index 15f32417c..000000000
--- a/src/Specific/montgomery64_2e452m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e452m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e452m3/fenz.c b/src/Specific/montgomery64_2e452m3/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e452m3/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e452m3/fenz.v b/src/Specific/montgomery64_2e452m3/fenz.v
deleted file mode 100644
index 4bbb54c61..000000000
--- a/src/Specific/montgomery64_2e452m3/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e452m3/fenzDisplay.log b/src/Specific/montgomery64_2e452m3/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e452m3/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e452m3/fenzDisplay.v b/src/Specific/montgomery64_2e452m3/fenzDisplay.v
deleted file mode 100644
index 6f7981bda..000000000
--- a/src/Specific/montgomery64_2e452m3/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e452m3.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e452m3/feopp.v b/src/Specific/montgomery64_2e452m3/feopp.v
deleted file mode 100644
index bbd3daba9..000000000
--- a/src/Specific/montgomery64_2e452m3/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e452m3/feoppDisplay.v b/src/Specific/montgomery64_2e452m3/feoppDisplay.v
deleted file mode 100644
index 3499111d1..000000000
--- a/src/Specific/montgomery64_2e452m3/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e452m3.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e452m3/fesquare.c b/src/Specific/montgomery64_2e452m3/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e452m3/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e452m3/fesub.v b/src/Specific/montgomery64_2e452m3/fesub.v
deleted file mode 100644
index fbd0cc89a..000000000
--- a/src/Specific/montgomery64_2e452m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e452m3/fesubDisplay.v b/src/Specific/montgomery64_2e452m3/fesubDisplay.v
deleted file mode 100644
index e1c48ada2..000000000
--- a/src/Specific/montgomery64_2e452m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e452m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e452m3/CurveParameters.v b/src/Specific/montgomery64_2e452m3_8limbs/CurveParameters.v
index 9dd11515b..9dd11515b 100644
--- a/src/Specific/montgomery64_2e452m3/CurveParameters.v
+++ b/src/Specific/montgomery64_2e452m3_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/Synthesis.v b/src/Specific/montgomery64_2e452m3_8limbs/Synthesis.v
new file mode 100644
index 000000000..39a15b999
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e452m3/compiler.sh b/src/Specific/montgomery64_2e452m3_8limbs/compiler.sh
index dd102c473..dd102c473 100755
--- a/src/Specific/montgomery64_2e452m3/compiler.sh
+++ b/src/Specific/montgomery64_2e452m3_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e452m3/compilerxx.sh b/src/Specific/montgomery64_2e452m3_8limbs/compilerxx.sh
index 632b8f6b7..632b8f6b7 100755
--- a/src/Specific/montgomery64_2e452m3/compilerxx.sh
+++ b/src/Specific/montgomery64_2e452m3_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/feadd.v b/src/Specific/montgomery64_2e452m3_8limbs/feadd.v
new file mode 100644
index 000000000..e895f4210
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e452m3_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..b4526f4da
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/femul.v b/src/Specific/montgomery64_2e452m3_8limbs/femul.v
new file mode 100644
index 000000000..f949a4d6f
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e452m3_8limbs/femulDisplay.v
new file mode 100644
index 000000000..4ea059f34
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/fenz.v b/src/Specific/montgomery64_2e452m3_8limbs/fenz.v
new file mode 100644
index 000000000..c8faebd85
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e452m3_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..97cf4cc7b
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/feopp.v b/src/Specific/montgomery64_2e452m3_8limbs/feopp.v
new file mode 100644
index 000000000..a95c92427
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e452m3_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..e770cb0df
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/fesub.v b/src/Specific/montgomery64_2e452m3_8limbs/fesub.v
new file mode 100644
index 000000000..6a8dad388
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e452m3_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e452m3_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..9847ed911
--- /dev/null
+++ b/src/Specific/montgomery64_2e452m3_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e452m3_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e452m3/py_interpreter.sh b/src/Specific/montgomery64_2e452m3_8limbs/py_interpreter.sh
index ce536e70c..ce536e70c 100755
--- a/src/Specific/montgomery64_2e452m3/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e452m3_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e468m17/Synthesis.v b/src/Specific/montgomery64_2e468m17/Synthesis.v
deleted file mode 100644
index 9201f1212..000000000
--- a/src/Specific/montgomery64_2e468m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e468m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e468m17/feadd.c b/src/Specific/montgomery64_2e468m17/feadd.c
deleted file mode 100644
index ae087338f..000000000
--- a/src/Specific/montgomery64_2e468m17/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffefL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xfffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e468m17/feadd.v b/src/Specific/montgomery64_2e468m17/feadd.v
deleted file mode 100644
index 9d91cf99b..000000000
--- a/src/Specific/montgomery64_2e468m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e468m17/feaddDisplay.log b/src/Specific/montgomery64_2e468m17/feaddDisplay.log
deleted file mode 100644
index 73a489014..000000000
--- a/src/Specific/montgomery64_2e468m17/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffefL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xfffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e468m17/feaddDisplay.v b/src/Specific/montgomery64_2e468m17/feaddDisplay.v
deleted file mode 100644
index 536e1ec21..000000000
--- a/src/Specific/montgomery64_2e468m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e468m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e468m17/femul.v b/src/Specific/montgomery64_2e468m17/femul.v
deleted file mode 100644
index fca092420..000000000
--- a/src/Specific/montgomery64_2e468m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e468m17/femulDisplay.v b/src/Specific/montgomery64_2e468m17/femulDisplay.v
deleted file mode 100644
index 73de8469d..000000000
--- a/src/Specific/montgomery64_2e468m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e468m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e468m17/fenz.c b/src/Specific/montgomery64_2e468m17/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e468m17/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e468m17/fenz.v b/src/Specific/montgomery64_2e468m17/fenz.v
deleted file mode 100644
index cce320bd7..000000000
--- a/src/Specific/montgomery64_2e468m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e468m17/fenzDisplay.log b/src/Specific/montgomery64_2e468m17/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e468m17/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e468m17/fenzDisplay.v b/src/Specific/montgomery64_2e468m17/fenzDisplay.v
deleted file mode 100644
index 8c6195ac8..000000000
--- a/src/Specific/montgomery64_2e468m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e468m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e468m17/feopp.v b/src/Specific/montgomery64_2e468m17/feopp.v
deleted file mode 100644
index bd4834744..000000000
--- a/src/Specific/montgomery64_2e468m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e468m17/feoppDisplay.log b/src/Specific/montgomery64_2e468m17/feoppDisplay.log
deleted file mode 100644
index 9b8bb168b..000000000
--- a/src/Specific/montgomery64_2e468m17/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffefL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0xfffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e468m17/feoppDisplay.v b/src/Specific/montgomery64_2e468m17/feoppDisplay.v
deleted file mode 100644
index 3543fd021..000000000
--- a/src/Specific/montgomery64_2e468m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e468m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e468m17/fesquare.c b/src/Specific/montgomery64_2e468m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e468m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e468m17/fesub.v b/src/Specific/montgomery64_2e468m17/fesub.v
deleted file mode 100644
index a5b6e41d7..000000000
--- a/src/Specific/montgomery64_2e468m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e468m17/fesubDisplay.log b/src/Specific/montgomery64_2e468m17/fesubDisplay.log
deleted file mode 100644
index 17b24fcc1..000000000
--- a/src/Specific/montgomery64_2e468m17/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffefL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0xfffff);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e468m17/fesubDisplay.v b/src/Specific/montgomery64_2e468m17/fesubDisplay.v
deleted file mode 100644
index 692ad3da6..000000000
--- a/src/Specific/montgomery64_2e468m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e468m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e468m17/CurveParameters.v b/src/Specific/montgomery64_2e468m17_8limbs/CurveParameters.v
index 46f3af838..46f3af838 100644
--- a/src/Specific/montgomery64_2e468m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e468m17_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/Synthesis.v b/src/Specific/montgomery64_2e468m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..3f800483c
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e468m17/compiler.sh b/src/Specific/montgomery64_2e468m17_8limbs/compiler.sh
index 1b3e8133b..1b3e8133b 100755
--- a/src/Specific/montgomery64_2e468m17/compiler.sh
+++ b/src/Specific/montgomery64_2e468m17_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e468m17/compilerxx.sh b/src/Specific/montgomery64_2e468m17_8limbs/compilerxx.sh
index fb9c0a952..fb9c0a952 100755
--- a/src/Specific/montgomery64_2e468m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e468m17_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/feadd.v b/src/Specific/montgomery64_2e468m17_8limbs/feadd.v
new file mode 100644
index 000000000..feb27b864
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e468m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..2c9eb3a16
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/femul.v b/src/Specific/montgomery64_2e468m17_8limbs/femul.v
new file mode 100644
index 000000000..f0f50ce8a
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e468m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..1175afdb4
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/fenz.v b/src/Specific/montgomery64_2e468m17_8limbs/fenz.v
new file mode 100644
index 000000000..5f082f3c5
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e468m17_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..df5c16409
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/feopp.v b/src/Specific/montgomery64_2e468m17_8limbs/feopp.v
new file mode 100644
index 000000000..78ed56f0c
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e468m17_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..925f40f21
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/fesub.v b/src/Specific/montgomery64_2e468m17_8limbs/fesub.v
new file mode 100644
index 000000000..b68ecc7e3
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e468m17_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e468m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..317ecc042
--- /dev/null
+++ b/src/Specific/montgomery64_2e468m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e468m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e468m17/py_interpreter.sh b/src/Specific/montgomery64_2e468m17_8limbs/py_interpreter.sh
index e7d4321ad..e7d4321ad 100755
--- a/src/Specific/montgomery64_2e468m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e468m17_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v b/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v
deleted file mode 100644
index 08074ab67..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feadd.c b/src/Specific/montgomery64_2e480m2e240m1/feadd.c
deleted file mode 100644
index 17d80401d..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffffL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xfffeffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xffffffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feadd.v b/src/Specific/montgomery64_2e480m2e240m1/feadd.v
deleted file mode 100644
index 23e99375d..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.log b/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.log
deleted file mode 100644
index 6a0ac8802..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xfffeffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xffffffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v
deleted file mode 100644
index 9adbcbe3e..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/femul.v b/src/Specific/montgomery64_2e480m2e240m1/femul.v
deleted file mode 100644
index e8680f316..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v
deleted file mode 100644
index b46d419c7..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenz.c b/src/Specific/montgomery64_2e480m2e240m1/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenz.v b/src/Specific/montgomery64_2e480m2e240m1/fenz.v
deleted file mode 100644
index 026b66961..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.log b/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v
deleted file mode 100644
index a4585a8db..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feopp.v b/src/Specific/montgomery64_2e480m2e240m1/feopp.v
deleted file mode 100644
index 4b83cc490..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.log b/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.log
deleted file mode 100644
index 8d32e155c..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xfffeffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0xffffffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v
deleted file mode 100644
index abb79f39b..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesquare.c b/src/Specific/montgomery64_2e480m2e240m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesub.v b/src/Specific/montgomery64_2e480m2e240m1/fesub.v
deleted file mode 100644
index 9b045e201..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.log b/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.log
deleted file mode 100644
index 38552ca21..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffffL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xfffeffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0xffffffff);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v b/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v
deleted file mode 100644
index 9cabac3ba..000000000
--- a/src/Specific/montgomery64_2e480m2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e480m2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/CurveParameters.v
index 84f491bef..84f491bef 100644
--- a/src/Specific/montgomery64_2e480m2e240m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/Synthesis.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..8fb9a90c9
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/compiler.sh b/src/Specific/montgomery64_2e480m2e240m1_8limbs/compiler.sh
index 1dd3da4b2..1dd3da4b2 100755
--- a/src/Specific/montgomery64_2e480m2e240m1/compiler.sh
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e480m2e240m1/compilerxx.sh b/src/Specific/montgomery64_2e480m2e240m1_8limbs/compilerxx.sh
index 05d094d9b..05d094d9b 100755
--- a/src/Specific/montgomery64_2e480m2e240m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/feadd.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feadd.v
new file mode 100644
index 000000000..fe8a2c33b
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..6fa792fe8
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/femul.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/femul.v
new file mode 100644
index 000000000..c84c2735e
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..e6613da4f
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenz.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenz.v
new file mode 100644
index 000000000..ae56d3978
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..a27ef5282
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/feopp.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feopp.v
new file mode 100644
index 000000000..4394aff4a
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..2aeb470cf
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesub.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesub.v
new file mode 100644
index 000000000..69f1d6de2
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..b5281c017
--- /dev/null
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e480m2e240m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e480m2e240m1/py_interpreter.sh b/src/Specific/montgomery64_2e480m2e240m1_8limbs/py_interpreter.sh
index c5e34d2ae..c5e34d2ae 100755
--- a/src/Specific/montgomery64_2e480m2e240m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e480m2e240m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e488m17/Synthesis.v b/src/Specific/montgomery64_2e488m17/Synthesis.v
deleted file mode 100644
index 06e1dc657..000000000
--- a/src/Specific/montgomery64_2e488m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e488m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e488m17/feadd.c b/src/Specific/montgomery64_2e488m17/feadd.c
deleted file mode 100644
index d51bc767a..000000000
--- a/src/Specific/montgomery64_2e488m17/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffefL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xffffffffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e488m17/feadd.v b/src/Specific/montgomery64_2e488m17/feadd.v
deleted file mode 100644
index 970c5ce89..000000000
--- a/src/Specific/montgomery64_2e488m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e488m17/feaddDisplay.log b/src/Specific/montgomery64_2e488m17/feaddDisplay.log
deleted file mode 100644
index e75c10f26..000000000
--- a/src/Specific/montgomery64_2e488m17/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffefL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xffffffffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e488m17/feaddDisplay.v b/src/Specific/montgomery64_2e488m17/feaddDisplay.v
deleted file mode 100644
index 8c1ecefab..000000000
--- a/src/Specific/montgomery64_2e488m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e488m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e488m17/femul.v b/src/Specific/montgomery64_2e488m17/femul.v
deleted file mode 100644
index 6579ced96..000000000
--- a/src/Specific/montgomery64_2e488m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e488m17/femulDisplay.v b/src/Specific/montgomery64_2e488m17/femulDisplay.v
deleted file mode 100644
index dcc370045..000000000
--- a/src/Specific/montgomery64_2e488m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e488m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e488m17/fenz.c b/src/Specific/montgomery64_2e488m17/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e488m17/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e488m17/fenz.v b/src/Specific/montgomery64_2e488m17/fenz.v
deleted file mode 100644
index 840bca18c..000000000
--- a/src/Specific/montgomery64_2e488m17/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e488m17/fenzDisplay.log b/src/Specific/montgomery64_2e488m17/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e488m17/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e488m17/fenzDisplay.v b/src/Specific/montgomery64_2e488m17/fenzDisplay.v
deleted file mode 100644
index b881b698e..000000000
--- a/src/Specific/montgomery64_2e488m17/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e488m17.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e488m17/feopp.v b/src/Specific/montgomery64_2e488m17/feopp.v
deleted file mode 100644
index 23ffa7f7b..000000000
--- a/src/Specific/montgomery64_2e488m17/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e488m17/feoppDisplay.log b/src/Specific/montgomery64_2e488m17/feoppDisplay.log
deleted file mode 100644
index 1bced6031..000000000
--- a/src/Specific/montgomery64_2e488m17/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffefL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0xffffffffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e488m17/feoppDisplay.v b/src/Specific/montgomery64_2e488m17/feoppDisplay.v
deleted file mode 100644
index ad6fec8ba..000000000
--- a/src/Specific/montgomery64_2e488m17/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e488m17.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e488m17/fesquare.c b/src/Specific/montgomery64_2e488m17/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e488m17/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e488m17/fesub.v b/src/Specific/montgomery64_2e488m17/fesub.v
deleted file mode 100644
index 29cb4171d..000000000
--- a/src/Specific/montgomery64_2e488m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e488m17/fesubDisplay.log b/src/Specific/montgomery64_2e488m17/fesubDisplay.log
deleted file mode 100644
index 7dcdf7551..000000000
--- a/src/Specific/montgomery64_2e488m17/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffefL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0xffffffffff);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e488m17/fesubDisplay.v b/src/Specific/montgomery64_2e488m17/fesubDisplay.v
deleted file mode 100644
index bc88a45ca..000000000
--- a/src/Specific/montgomery64_2e488m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e488m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e488m17/CurveParameters.v b/src/Specific/montgomery64_2e488m17_8limbs/CurveParameters.v
index 686a23539..686a23539 100644
--- a/src/Specific/montgomery64_2e488m17/CurveParameters.v
+++ b/src/Specific/montgomery64_2e488m17_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/Synthesis.v b/src/Specific/montgomery64_2e488m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..03f7ab319
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e488m17/compiler.sh b/src/Specific/montgomery64_2e488m17_8limbs/compiler.sh
index 7f57e05d7..7f57e05d7 100755
--- a/src/Specific/montgomery64_2e488m17/compiler.sh
+++ b/src/Specific/montgomery64_2e488m17_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e488m17/compilerxx.sh b/src/Specific/montgomery64_2e488m17_8limbs/compilerxx.sh
index 8fb78f4ef..8fb78f4ef 100755
--- a/src/Specific/montgomery64_2e488m17/compilerxx.sh
+++ b/src/Specific/montgomery64_2e488m17_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/feadd.v b/src/Specific/montgomery64_2e488m17_8limbs/feadd.v
new file mode 100644
index 000000000..8d714cc4e
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e488m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..6b6c66f1f
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/femul.v b/src/Specific/montgomery64_2e488m17_8limbs/femul.v
new file mode 100644
index 000000000..f3105ed7e
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e488m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..6e08624f4
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/fenz.v b/src/Specific/montgomery64_2e488m17_8limbs/fenz.v
new file mode 100644
index 000000000..980e6e6af
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e488m17_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..e28a9c89f
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/feopp.v b/src/Specific/montgomery64_2e488m17_8limbs/feopp.v
new file mode 100644
index 000000000..1e7b3d45b
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e488m17_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..3f809deac
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/fesub.v b/src/Specific/montgomery64_2e488m17_8limbs/fesub.v
new file mode 100644
index 000000000..43614675a
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e488m17_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e488m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..46d74c096
--- /dev/null
+++ b/src/Specific/montgomery64_2e488m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e488m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e488m17/py_interpreter.sh b/src/Specific/montgomery64_2e488m17_8limbs/py_interpreter.sh
index dd4465184..dd4465184 100755
--- a/src/Specific/montgomery64_2e488m17/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e488m17_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e489m21/Synthesis.v b/src/Specific/montgomery64_2e489m21/Synthesis.v
deleted file mode 100644
index 9846ddf4e..000000000
--- a/src/Specific/montgomery64_2e489m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e489m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e489m21/feadd.c b/src/Specific/montgomery64_2e489m21/feadd.c
deleted file mode 100644
index e416cbae4..000000000
--- a/src/Specific/montgomery64_2e489m21/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffebL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x1ffffffffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e489m21/feadd.v b/src/Specific/montgomery64_2e489m21/feadd.v
deleted file mode 100644
index 671959684..000000000
--- a/src/Specific/montgomery64_2e489m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e489m21/feaddDisplay.log b/src/Specific/montgomery64_2e489m21/feaddDisplay.log
deleted file mode 100644
index f8639d889..000000000
--- a/src/Specific/montgomery64_2e489m21/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffebL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x1ffffffffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e489m21/feaddDisplay.v b/src/Specific/montgomery64_2e489m21/feaddDisplay.v
deleted file mode 100644
index f1226f0cf..000000000
--- a/src/Specific/montgomery64_2e489m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e489m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e489m21/femul.v b/src/Specific/montgomery64_2e489m21/femul.v
deleted file mode 100644
index 951e8b7ee..000000000
--- a/src/Specific/montgomery64_2e489m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e489m21/femulDisplay.v b/src/Specific/montgomery64_2e489m21/femulDisplay.v
deleted file mode 100644
index af0689ba9..000000000
--- a/src/Specific/montgomery64_2e489m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e489m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e489m21/fenz.c b/src/Specific/montgomery64_2e489m21/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e489m21/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e489m21/fenz.v b/src/Specific/montgomery64_2e489m21/fenz.v
deleted file mode 100644
index 2832a45d6..000000000
--- a/src/Specific/montgomery64_2e489m21/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e489m21/fenzDisplay.log b/src/Specific/montgomery64_2e489m21/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e489m21/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e489m21/fenzDisplay.v b/src/Specific/montgomery64_2e489m21/fenzDisplay.v
deleted file mode 100644
index 1ac2aa440..000000000
--- a/src/Specific/montgomery64_2e489m21/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e489m21.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e489m21/feopp.v b/src/Specific/montgomery64_2e489m21/feopp.v
deleted file mode 100644
index 45bf9ac45..000000000
--- a/src/Specific/montgomery64_2e489m21/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e489m21/feoppDisplay.log b/src/Specific/montgomery64_2e489m21/feoppDisplay.log
deleted file mode 100644
index d6f5de4db..000000000
--- a/src/Specific/montgomery64_2e489m21/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffebL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0x1ffffffffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e489m21/feoppDisplay.v b/src/Specific/montgomery64_2e489m21/feoppDisplay.v
deleted file mode 100644
index 0c0a57f45..000000000
--- a/src/Specific/montgomery64_2e489m21/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e489m21.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e489m21/fesquare.c b/src/Specific/montgomery64_2e489m21/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e489m21/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e489m21/fesub.v b/src/Specific/montgomery64_2e489m21/fesub.v
deleted file mode 100644
index c6658294f..000000000
--- a/src/Specific/montgomery64_2e489m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e489m21/fesubDisplay.log b/src/Specific/montgomery64_2e489m21/fesubDisplay.log
deleted file mode 100644
index 2444fc24a..000000000
--- a/src/Specific/montgomery64_2e489m21/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffebL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0x1ffffffffff);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e489m21/fesubDisplay.v b/src/Specific/montgomery64_2e489m21/fesubDisplay.v
deleted file mode 100644
index 94bdcf6f0..000000000
--- a/src/Specific/montgomery64_2e489m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e489m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e489m21/CurveParameters.v b/src/Specific/montgomery64_2e489m21_8limbs/CurveParameters.v
index dcff12f2b..dcff12f2b 100644
--- a/src/Specific/montgomery64_2e489m21/CurveParameters.v
+++ b/src/Specific/montgomery64_2e489m21_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/Synthesis.v b/src/Specific/montgomery64_2e489m21_8limbs/Synthesis.v
new file mode 100644
index 000000000..7f57d7d00
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e489m21/compiler.sh b/src/Specific/montgomery64_2e489m21_8limbs/compiler.sh
index 052e1e64e..052e1e64e 100755
--- a/src/Specific/montgomery64_2e489m21/compiler.sh
+++ b/src/Specific/montgomery64_2e489m21_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e489m21/compilerxx.sh b/src/Specific/montgomery64_2e489m21_8limbs/compilerxx.sh
index f06a80ca6..f06a80ca6 100755
--- a/src/Specific/montgomery64_2e489m21/compilerxx.sh
+++ b/src/Specific/montgomery64_2e489m21_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/feadd.v b/src/Specific/montgomery64_2e489m21_8limbs/feadd.v
new file mode 100644
index 000000000..a7374bd6e
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e489m21_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..19842ff3f
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/femul.v b/src/Specific/montgomery64_2e489m21_8limbs/femul.v
new file mode 100644
index 000000000..6d5140661
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e489m21_8limbs/femulDisplay.v
new file mode 100644
index 000000000..fea1876f2
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/fenz.v b/src/Specific/montgomery64_2e489m21_8limbs/fenz.v
new file mode 100644
index 000000000..ca9f33b24
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e489m21_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..5711ed081
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/feopp.v b/src/Specific/montgomery64_2e489m21_8limbs/feopp.v
new file mode 100644
index 000000000..00c74a198
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e489m21_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..479bd50ce
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/fesub.v b/src/Specific/montgomery64_2e489m21_8limbs/fesub.v
new file mode 100644
index 000000000..5e3ee3138
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e489m21_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e489m21_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..f124262df
--- /dev/null
+++ b/src/Specific/montgomery64_2e489m21_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e489m21_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e489m21/py_interpreter.sh b/src/Specific/montgomery64_2e489m21_8limbs/py_interpreter.sh
index 2a94029fa..2a94029fa 100755
--- a/src/Specific/montgomery64_2e489m21/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e489m21_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e495m31/Synthesis.v b/src/Specific/montgomery64_2e495m31/Synthesis.v
deleted file mode 100644
index 9e79de917..000000000
--- a/src/Specific/montgomery64_2e495m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e495m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e495m31/feadd.c b/src/Specific/montgomery64_2e495m31/feadd.c
deleted file mode 100644
index f0c78d0f9..000000000
--- a/src/Specific/montgomery64_2e495m31/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffe1L, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x7fffffffffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e495m31/feadd.v b/src/Specific/montgomery64_2e495m31/feadd.v
deleted file mode 100644
index 0fbe1434d..000000000
--- a/src/Specific/montgomery64_2e495m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e495m31/feaddDisplay.log b/src/Specific/montgomery64_2e495m31/feaddDisplay.log
deleted file mode 100644
index 41e6d4e3a..000000000
--- a/src/Specific/montgomery64_2e495m31/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffe1L);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x7fffffffffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e495m31/feaddDisplay.v b/src/Specific/montgomery64_2e495m31/feaddDisplay.v
deleted file mode 100644
index 8d82ae354..000000000
--- a/src/Specific/montgomery64_2e495m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e495m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e495m31/femul.v b/src/Specific/montgomery64_2e495m31/femul.v
deleted file mode 100644
index 9ccf40ea8..000000000
--- a/src/Specific/montgomery64_2e495m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e495m31/femulDisplay.v b/src/Specific/montgomery64_2e495m31/femulDisplay.v
deleted file mode 100644
index 2a07e798a..000000000
--- a/src/Specific/montgomery64_2e495m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e495m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e495m31/fenz.c b/src/Specific/montgomery64_2e495m31/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e495m31/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e495m31/fenz.v b/src/Specific/montgomery64_2e495m31/fenz.v
deleted file mode 100644
index 1afb90fb6..000000000
--- a/src/Specific/montgomery64_2e495m31/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e495m31/fenzDisplay.log b/src/Specific/montgomery64_2e495m31/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e495m31/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e495m31/fenzDisplay.v b/src/Specific/montgomery64_2e495m31/fenzDisplay.v
deleted file mode 100644
index 1eefbf474..000000000
--- a/src/Specific/montgomery64_2e495m31/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e495m31.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e495m31/feopp.v b/src/Specific/montgomery64_2e495m31/feopp.v
deleted file mode 100644
index 9fe311bbb..000000000
--- a/src/Specific/montgomery64_2e495m31/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e495m31/feoppDisplay.log b/src/Specific/montgomery64_2e495m31/feoppDisplay.log
deleted file mode 100644
index fc9b89417..000000000
--- a/src/Specific/montgomery64_2e495m31/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffe1L);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0x7fffffffffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e495m31/feoppDisplay.v b/src/Specific/montgomery64_2e495m31/feoppDisplay.v
deleted file mode 100644
index a5cb704e7..000000000
--- a/src/Specific/montgomery64_2e495m31/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e495m31.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e495m31/fesquare.c b/src/Specific/montgomery64_2e495m31/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e495m31/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e495m31/fesub.v b/src/Specific/montgomery64_2e495m31/fesub.v
deleted file mode 100644
index aa74af709..000000000
--- a/src/Specific/montgomery64_2e495m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e495m31/fesubDisplay.log b/src/Specific/montgomery64_2e495m31/fesubDisplay.log
deleted file mode 100644
index 6997b2899..000000000
--- a/src/Specific/montgomery64_2e495m31/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffffe1L);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0x7fffffffffff);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e495m31/fesubDisplay.v b/src/Specific/montgomery64_2e495m31/fesubDisplay.v
deleted file mode 100644
index 93419f3a9..000000000
--- a/src/Specific/montgomery64_2e495m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e495m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e495m31/CurveParameters.v b/src/Specific/montgomery64_2e495m31_8limbs/CurveParameters.v
index 168ddec41..168ddec41 100644
--- a/src/Specific/montgomery64_2e495m31/CurveParameters.v
+++ b/src/Specific/montgomery64_2e495m31_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/Synthesis.v b/src/Specific/montgomery64_2e495m31_8limbs/Synthesis.v
new file mode 100644
index 000000000..603e85c9d
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e495m31/compiler.sh b/src/Specific/montgomery64_2e495m31_8limbs/compiler.sh
index 594505d2d..594505d2d 100755
--- a/src/Specific/montgomery64_2e495m31/compiler.sh
+++ b/src/Specific/montgomery64_2e495m31_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e495m31/compilerxx.sh b/src/Specific/montgomery64_2e495m31_8limbs/compilerxx.sh
index 2ec630e36..2ec630e36 100755
--- a/src/Specific/montgomery64_2e495m31/compilerxx.sh
+++ b/src/Specific/montgomery64_2e495m31_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/feadd.v b/src/Specific/montgomery64_2e495m31_8limbs/feadd.v
new file mode 100644
index 000000000..9c31c62da
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e495m31_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..ee0262587
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/femul.v b/src/Specific/montgomery64_2e495m31_8limbs/femul.v
new file mode 100644
index 000000000..2a3438f72
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e495m31_8limbs/femulDisplay.v
new file mode 100644
index 000000000..90b580092
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/fenz.v b/src/Specific/montgomery64_2e495m31_8limbs/fenz.v
new file mode 100644
index 000000000..19475c871
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e495m31_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..1b651af8b
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/feopp.v b/src/Specific/montgomery64_2e495m31_8limbs/feopp.v
new file mode 100644
index 000000000..776e87b40
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e495m31_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..6656b2675
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/fesub.v b/src/Specific/montgomery64_2e495m31_8limbs/fesub.v
new file mode 100644
index 000000000..71bf15d4b
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e495m31_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e495m31_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..5f3969bae
--- /dev/null
+++ b/src/Specific/montgomery64_2e495m31_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e495m31_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e495m31/py_interpreter.sh b/src/Specific/montgomery64_2e495m31_8limbs/py_interpreter.sh
index 8795ac69c..8795ac69c 100755
--- a/src/Specific/montgomery64_2e495m31/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e495m31_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/Synthesis.v b/src/Specific/montgomery64_2e510m290x2e496m1/Synthesis.v
deleted file mode 100644
index ce9151a5c..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feadd.c b/src/Specific/montgomery64_2e510m290x2e496m1/feadd.c
deleted file mode 100644
index 9851fdab2..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffffL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x3eddffffffffffff, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feadd.v b/src/Specific/montgomery64_2e510m290x2e496m1/feadd.v
deleted file mode 100644
index d0f2b0d62..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.log b/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.log
deleted file mode 100644
index 57c9fad62..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x3eddffffffffffff);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.v
deleted file mode 100644
index 736fca28e..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/femul.v b/src/Specific/montgomery64_2e510m290x2e496m1/femul.v
deleted file mode 100644
index 1ade6255d..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/femulDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1/femulDisplay.v
deleted file mode 100644
index f35e38db7..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fenz.c b/src/Specific/montgomery64_2e510m290x2e496m1/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fenz.v b/src/Specific/montgomery64_2e510m290x2e496m1/fenz.v
deleted file mode 100644
index ea01f0628..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.log b/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.v
deleted file mode 100644
index 43fe80652..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feopp.v b/src/Specific/montgomery64_2e510m290x2e496m1/feopp.v
deleted file mode 100644
index f79388203..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.log b/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.log
deleted file mode 100644
index 4dee978ab..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0x3eddffffffffffff);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.v
deleted file mode 100644
index 055d5c2cc..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fesquare.c b/src/Specific/montgomery64_2e510m290x2e496m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fesub.v b/src/Specific/montgomery64_2e510m290x2e496m1/fesub.v
deleted file mode 100644
index 0c0828582..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/fesubDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1/fesubDisplay.v
deleted file mode 100644
index 315f4f63a..000000000
--- a/src/Specific/montgomery64_2e510m290x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/CurveParameters.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/CurveParameters.v
index d8cf3d25f..d8cf3d25f 100644
--- a/src/Specific/montgomery64_2e510m290x2e496m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/Synthesis.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..d3c4e871f
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/compiler.sh b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/compiler.sh
index 9eb5e89cc..9eb5e89cc 100755
--- a/src/Specific/montgomery64_2e510m290x2e496m1/compiler.sh
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/compilerxx.sh b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/compilerxx.sh
index 1c8e827b3..1c8e827b3 100755
--- a/src/Specific/montgomery64_2e510m290x2e496m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feadd.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feadd.v
new file mode 100644
index 000000000..a3d8a0922
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..e6939a00b
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femul.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femul.v
new file mode 100644
index 000000000..f374b9e73
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..c859c108e
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenz.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenz.v
new file mode 100644
index 000000000..d877bb15e
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..f4b23c2be
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feopp.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feopp.v
new file mode 100644
index 000000000..6f2297ff1
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..e61efd6b4
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesub.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesub.v
new file mode 100644
index 000000000..0e6ddc0f4
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..f0a751a19
--- /dev/null
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e510m290x2e496m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e510m290x2e496m1/py_interpreter.sh b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/py_interpreter.sh
index ff7ce7905..ff7ce7905 100755
--- a/src/Specific/montgomery64_2e510m290x2e496m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e510m290x2e496m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e511m187/Synthesis.v b/src/Specific/montgomery64_2e511m187/Synthesis.v
deleted file mode 100644
index e29e9b71e..000000000
--- a/src/Specific/montgomery64_2e511m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e511m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e511m187/feadd.c b/src/Specific/montgomery64_2e511m187/feadd.c
deleted file mode 100644
index ef4b7bc6d..000000000
--- a/src/Specific/montgomery64_2e511m187/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffff45L, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x7fffffffffffffffL, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e511m187/feadd.v b/src/Specific/montgomery64_2e511m187/feadd.v
deleted file mode 100644
index 4433946b9..000000000
--- a/src/Specific/montgomery64_2e511m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e511m187/feaddDisplay.log b/src/Specific/montgomery64_2e511m187/feaddDisplay.log
deleted file mode 100644
index 88beaff82..000000000
--- a/src/Specific/montgomery64_2e511m187/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffff45L);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m187/feaddDisplay.v b/src/Specific/montgomery64_2e511m187/feaddDisplay.v
deleted file mode 100644
index c41bca7b7..000000000
--- a/src/Specific/montgomery64_2e511m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e511m187/femul.v b/src/Specific/montgomery64_2e511m187/femul.v
deleted file mode 100644
index 406435f7d..000000000
--- a/src/Specific/montgomery64_2e511m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e511m187/femulDisplay.v b/src/Specific/montgomery64_2e511m187/femulDisplay.v
deleted file mode 100644
index 46b1061c4..000000000
--- a/src/Specific/montgomery64_2e511m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e511m187/fenz.c b/src/Specific/montgomery64_2e511m187/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e511m187/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e511m187/fenz.v b/src/Specific/montgomery64_2e511m187/fenz.v
deleted file mode 100644
index fa1a9b096..000000000
--- a/src/Specific/montgomery64_2e511m187/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e511m187/fenzDisplay.log b/src/Specific/montgomery64_2e511m187/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e511m187/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e511m187/fenzDisplay.v b/src/Specific/montgomery64_2e511m187/fenzDisplay.v
deleted file mode 100644
index e0cc09991..000000000
--- a/src/Specific/montgomery64_2e511m187/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m187.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e511m187/feopp.v b/src/Specific/montgomery64_2e511m187/feopp.v
deleted file mode 100644
index 9b891405e..000000000
--- a/src/Specific/montgomery64_2e511m187/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e511m187/feoppDisplay.log b/src/Specific/montgomery64_2e511m187/feoppDisplay.log
deleted file mode 100644
index dcf4bffc9..000000000
--- a/src/Specific/montgomery64_2e511m187/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffff45L);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0x7fffffffffffffffL);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m187/feoppDisplay.v b/src/Specific/montgomery64_2e511m187/feoppDisplay.v
deleted file mode 100644
index ca250cf38..000000000
--- a/src/Specific/montgomery64_2e511m187/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m187.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e511m187/fesquare.c b/src/Specific/montgomery64_2e511m187/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e511m187/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e511m187/fesub.v b/src/Specific/montgomery64_2e511m187/fesub.v
deleted file mode 100644
index 2517f6031..000000000
--- a/src/Specific/montgomery64_2e511m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e511m187/fesubDisplay.log b/src/Specific/montgomery64_2e511m187/fesubDisplay.log
deleted file mode 100644
index 3c6951c6a..000000000
--- a/src/Specific/montgomery64_2e511m187/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xffffffffffffff45L);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0x7fffffffffffffffL);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m187/fesubDisplay.v b/src/Specific/montgomery64_2e511m187/fesubDisplay.v
deleted file mode 100644
index 2b47951c4..000000000
--- a/src/Specific/montgomery64_2e511m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e511m187/CurveParameters.v b/src/Specific/montgomery64_2e511m187_8limbs/CurveParameters.v
index 20f69fb93..20f69fb93 100644
--- a/src/Specific/montgomery64_2e511m187/CurveParameters.v
+++ b/src/Specific/montgomery64_2e511m187_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/Synthesis.v b/src/Specific/montgomery64_2e511m187_8limbs/Synthesis.v
new file mode 100644
index 000000000..5d7413726
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e511m187/compiler.sh b/src/Specific/montgomery64_2e511m187_8limbs/compiler.sh
index 9bef25f7c..9bef25f7c 100755
--- a/src/Specific/montgomery64_2e511m187/compiler.sh
+++ b/src/Specific/montgomery64_2e511m187_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e511m187/compilerxx.sh b/src/Specific/montgomery64_2e511m187_8limbs/compilerxx.sh
index 837b0effe..837b0effe 100755
--- a/src/Specific/montgomery64_2e511m187/compilerxx.sh
+++ b/src/Specific/montgomery64_2e511m187_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/feadd.v b/src/Specific/montgomery64_2e511m187_8limbs/feadd.v
new file mode 100644
index 000000000..9dfdccc87
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e511m187_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..38d9c6610
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/femul.v b/src/Specific/montgomery64_2e511m187_8limbs/femul.v
new file mode 100644
index 000000000..ff485c9f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e511m187_8limbs/femulDisplay.v
new file mode 100644
index 000000000..56033e31d
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/fenz.v b/src/Specific/montgomery64_2e511m187_8limbs/fenz.v
new file mode 100644
index 000000000..c6c0cd864
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e511m187_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..7e57e418d
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/feopp.v b/src/Specific/montgomery64_2e511m187_8limbs/feopp.v
new file mode 100644
index 000000000..3fc02879a
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e511m187_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..f0e2484e0
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/fesub.v b/src/Specific/montgomery64_2e511m187_8limbs/fesub.v
new file mode 100644
index 000000000..a13ca639f
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e511m187_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e511m187_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..b85e32dae
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m187_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m187_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e511m187/py_interpreter.sh b/src/Specific/montgomery64_2e511m187_8limbs/py_interpreter.sh
index c460069af..c460069af 100755
--- a/src/Specific/montgomery64_2e511m187/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e511m187_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e511m481/Synthesis.v b/src/Specific/montgomery64_2e511m481/Synthesis.v
deleted file mode 100644
index 1905f33da..000000000
--- a/src/Specific/montgomery64_2e511m481/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e511m481.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e511m481/feadd.c b/src/Specific/montgomery64_2e511m481/feadd.c
deleted file mode 100644
index b1a70e025..000000000
--- a/src/Specific/montgomery64_2e511m481/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xfffffffffffffe1fL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0x7fffffffffffffffL, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e511m481/feadd.v b/src/Specific/montgomery64_2e511m481/feadd.v
deleted file mode 100644
index a74238b47..000000000
--- a/src/Specific/montgomery64_2e511m481/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e511m481/feaddDisplay.log b/src/Specific/montgomery64_2e511m481/feaddDisplay.log
deleted file mode 100644
index 3102464cf..000000000
--- a/src/Specific/montgomery64_2e511m481/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xfffffffffffffe1fL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0x7fffffffffffffffL);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m481/feaddDisplay.v b/src/Specific/montgomery64_2e511m481/feaddDisplay.v
deleted file mode 100644
index 5bb47248a..000000000
--- a/src/Specific/montgomery64_2e511m481/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m481.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e511m481/femul.v b/src/Specific/montgomery64_2e511m481/femul.v
deleted file mode 100644
index d338a155f..000000000
--- a/src/Specific/montgomery64_2e511m481/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e511m481/femulDisplay.v b/src/Specific/montgomery64_2e511m481/femulDisplay.v
deleted file mode 100644
index 7dbede50a..000000000
--- a/src/Specific/montgomery64_2e511m481/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m481.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e511m481/fenz.c b/src/Specific/montgomery64_2e511m481/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e511m481/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e511m481/fenz.v b/src/Specific/montgomery64_2e511m481/fenz.v
deleted file mode 100644
index 73ec21ce6..000000000
--- a/src/Specific/montgomery64_2e511m481/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e511m481/fenzDisplay.log b/src/Specific/montgomery64_2e511m481/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e511m481/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e511m481/fenzDisplay.v b/src/Specific/montgomery64_2e511m481/fenzDisplay.v
deleted file mode 100644
index e2eedb4b4..000000000
--- a/src/Specific/montgomery64_2e511m481/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m481.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e511m481/feopp.v b/src/Specific/montgomery64_2e511m481/feopp.v
deleted file mode 100644
index 512430b22..000000000
--- a/src/Specific/montgomery64_2e511m481/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e511m481/feoppDisplay.log b/src/Specific/montgomery64_2e511m481/feoppDisplay.log
deleted file mode 100644
index bdf463140..000000000
--- a/src/Specific/montgomery64_2e511m481/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xfffffffffffffe1fL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0x7fffffffffffffffL);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m481/feoppDisplay.v b/src/Specific/montgomery64_2e511m481/feoppDisplay.v
deleted file mode 100644
index a75e327c7..000000000
--- a/src/Specific/montgomery64_2e511m481/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m481.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e511m481/fesquare.c b/src/Specific/montgomery64_2e511m481/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e511m481/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e511m481/fesub.v b/src/Specific/montgomery64_2e511m481/fesub.v
deleted file mode 100644
index 9878bd8af..000000000
--- a/src/Specific/montgomery64_2e511m481/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e511m481/fesubDisplay.log b/src/Specific/montgomery64_2e511m481/fesubDisplay.log
deleted file mode 100644
index 9d13a6db7..000000000
--- a/src/Specific/montgomery64_2e511m481/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xfffffffffffffe1fL);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0x7fffffffffffffffL);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e511m481/fesubDisplay.v b/src/Specific/montgomery64_2e511m481/fesubDisplay.v
deleted file mode 100644
index 1fa2d280c..000000000
--- a/src/Specific/montgomery64_2e511m481/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e511m481.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e511m481/CurveParameters.v b/src/Specific/montgomery64_2e511m481_8limbs/CurveParameters.v
index 37ba2f8dd..37ba2f8dd 100644
--- a/src/Specific/montgomery64_2e511m481/CurveParameters.v
+++ b/src/Specific/montgomery64_2e511m481_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/Synthesis.v b/src/Specific/montgomery64_2e511m481_8limbs/Synthesis.v
new file mode 100644
index 000000000..a99f9d8b7
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e511m481/compiler.sh b/src/Specific/montgomery64_2e511m481_8limbs/compiler.sh
index 35afe23bc..35afe23bc 100755
--- a/src/Specific/montgomery64_2e511m481/compiler.sh
+++ b/src/Specific/montgomery64_2e511m481_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e511m481/compilerxx.sh b/src/Specific/montgomery64_2e511m481_8limbs/compilerxx.sh
index ae11881cc..ae11881cc 100755
--- a/src/Specific/montgomery64_2e511m481/compilerxx.sh
+++ b/src/Specific/montgomery64_2e511m481_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/feadd.v b/src/Specific/montgomery64_2e511m481_8limbs/feadd.v
new file mode 100644
index 000000000..7d6a08cfe
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e511m481_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..331cb03f6
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/femul.v b/src/Specific/montgomery64_2e511m481_8limbs/femul.v
new file mode 100644
index 000000000..845e2c79f
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e511m481_8limbs/femulDisplay.v
new file mode 100644
index 000000000..f32fa438f
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/fenz.v b/src/Specific/montgomery64_2e511m481_8limbs/fenz.v
new file mode 100644
index 000000000..9296c1b2b
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e511m481_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..ff43e8992
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/feopp.v b/src/Specific/montgomery64_2e511m481_8limbs/feopp.v
new file mode 100644
index 000000000..cecc54292
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e511m481_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..684e0a1ca
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/fesub.v b/src/Specific/montgomery64_2e511m481_8limbs/fesub.v
new file mode 100644
index 000000000..36334c18a
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e511m481_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e511m481_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..5705796ab
--- /dev/null
+++ b/src/Specific/montgomery64_2e511m481_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e511m481_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e511m481/py_interpreter.sh b/src/Specific/montgomery64_2e511m481_8limbs/py_interpreter.sh
index a563a6f3b..a563a6f3b 100755
--- a/src/Specific/montgomery64_2e511m481/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e511m481_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/Synthesis.v b/src/Specific/montgomery64_2e512m491x2e496m1/Synthesis.v
deleted file mode 100644
index a73511fb1..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feadd.c b/src/Specific/montgomery64_2e512m491x2e496m1/feadd.c
deleted file mode 100644
index cf7695d2d..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xffffffffffffffffL, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xfe14ffffffffffffL, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feadd.v b/src/Specific/montgomery64_2e512m491x2e496m1/feadd.v
deleted file mode 100644
index 204f214c7..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.log b/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.log
deleted file mode 100644
index d9e775eee..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xffffffffffffffffL);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xfe14ffffffffffffL);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.v
deleted file mode 100644
index e6093550d..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/femul.v b/src/Specific/montgomery64_2e512m491x2e496m1/femul.v
deleted file mode 100644
index 30964dee7..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/femulDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1/femulDisplay.v
deleted file mode 100644
index 407550e09..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fenz.c b/src/Specific/montgomery64_2e512m491x2e496m1/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fenz.v b/src/Specific/montgomery64_2e512m491x2e496m1/fenz.v
deleted file mode 100644
index c9c8e2400..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.log b/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.v
deleted file mode 100644
index 582c54929..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feopp.v b/src/Specific/montgomery64_2e512m491x2e496m1/feopp.v
deleted file mode 100644
index df85c99b8..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.log b/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.log
deleted file mode 100644
index efeb12ab9..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffffffL);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0xfe14ffffffffffffL);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.v
deleted file mode 100644
index d23a288f8..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fesquare.c b/src/Specific/montgomery64_2e512m491x2e496m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fesub.v b/src/Specific/montgomery64_2e512m491x2e496m1/fesub.v
deleted file mode 100644
index e7f6b2120..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/fesubDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1/fesubDisplay.v
deleted file mode 100644
index b50de8989..000000000
--- a/src/Specific/montgomery64_2e512m491x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/CurveParameters.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/CurveParameters.v
index accf6b9a7..accf6b9a7 100644
--- a/src/Specific/montgomery64_2e512m491x2e496m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/Synthesis.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..fb95e130a
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/compiler.sh b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/compiler.sh
index 13e95ed67..13e95ed67 100755
--- a/src/Specific/montgomery64_2e512m491x2e496m1/compiler.sh
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/compilerxx.sh b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/compilerxx.sh
index c360a99e4..c360a99e4 100755
--- a/src/Specific/montgomery64_2e512m491x2e496m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feadd.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feadd.v
new file mode 100644
index 000000000..4bc42b4b7
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..4ebc5f249
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femul.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femul.v
new file mode 100644
index 000000000..a0b64e0ce
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..af2bac0e2
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenz.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenz.v
new file mode 100644
index 000000000..ffbd55b1c
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..86cc8d400
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feopp.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feopp.v
new file mode 100644
index 000000000..2504b74b6
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..29884c531
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesub.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesub.v
new file mode 100644
index 000000000..ee4037366
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..60e9e7a8e
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m491x2e496m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e512m491x2e496m1/py_interpreter.sh b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/py_interpreter.sh
index bb934a309..bb934a309 100755
--- a/src/Specific/montgomery64_2e512m491x2e496m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e512m491x2e496m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e512m569/Synthesis.v b/src/Specific/montgomery64_2e512m569/Synthesis.v
deleted file mode 100644
index bd527400e..000000000
--- a/src/Specific/montgomery64_2e512m569/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e512m569.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e512m569/feadd.c b/src/Specific/montgomery64_2e512m569/feadd.c
deleted file mode 100644
index 5ef15f5f9..000000000
--- a/src/Specific/montgomery64_2e512m569/feadd.c
+++ /dev/null
@@ -1,52 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint64_t x33; uint8_t x34 = _addcarryx_u64(0x0, x5, x19, &x33);
- { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x7, x21, &x36);
- { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x9, x23, &x39);
- { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x11, x25, &x42);
- { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x13, x27, &x45);
- { uint64_t x48; uint8_t x49 = _addcarryx_u64(x46, x15, x29, &x48);
- { uint64_t x51; uint8_t x52 = _addcarryx_u64(x49, x17, x31, &x51);
- { uint64_t x54; uint8_t x55 = _addcarryx_u64(x52, x16, x30, &x54);
- { uint64_t x57; uint8_t x58 = _subborrow_u64(0x0, x33, 0xfffffffffffffdc7L, &x57);
- { uint64_t x60; uint8_t x61 = _subborrow_u64(x58, x36, 0xffffffffffffffffL, &x60);
- { uint64_t x63; uint8_t x64 = _subborrow_u64(x61, x39, 0xffffffffffffffffL, &x63);
- { uint64_t x66; uint8_t x67 = _subborrow_u64(x64, x42, 0xffffffffffffffffL, &x66);
- { uint64_t x69; uint8_t x70 = _subborrow_u64(x67, x45, 0xffffffffffffffffL, &x69);
- { uint64_t x72; uint8_t x73 = _subborrow_u64(x70, x48, 0xffffffffffffffffL, &x72);
- { uint64_t x75; uint8_t x76 = _subborrow_u64(x73, x51, 0xffffffffffffffffL, &x75);
- { uint64_t x78; uint8_t x79 = _subborrow_u64(x76, x54, 0xffffffffffffffffL, &x78);
- { uint64_t _; uint8_t x82 = _subborrow_u64(x79, x55, 0x0, &_);
- { uint64_t x83 = cmovznz64(x82, x78, x54);
- { uint64_t x84 = cmovznz64(x82, x75, x51);
- { uint64_t x85 = cmovznz64(x82, x72, x48);
- { uint64_t x86 = cmovznz64(x82, x69, x45);
- { uint64_t x87 = cmovznz64(x82, x66, x42);
- { uint64_t x88 = cmovznz64(x82, x63, x39);
- { uint64_t x89 = cmovznz64(x82, x60, x36);
- { uint64_t x90 = cmovznz64(x82, x57, x33);
- out[0] = x90;
- out[1] = x89;
- out[2] = x88;
- out[3] = x87;
- out[4] = x86;
- out[5] = x85;
- out[6] = x84;
- out[7] = x83;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e512m569/feadd.v b/src/Specific/montgomery64_2e512m569/feadd.v
deleted file mode 100644
index 5b23fe324..000000000
--- a/src/Specific/montgomery64_2e512m569/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e512m569/feaddDisplay.log b/src/Specific/montgomery64_2e512m569/feaddDisplay.log
deleted file mode 100644
index 75c6272df..000000000
--- a/src/Specific/montgomery64_2e512m569/feaddDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = addcarryx_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = addcarryx_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = addcarryx_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = addcarryx_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x52, x16, x30);
- uint64_t x57, uint8_t x58 = subborrow_u64(0x0, x33, 0xfffffffffffffdc7L);
- uint64_t x60, uint8_t x61 = subborrow_u64(x58, x36, 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = subborrow_u64(x61, x39, 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = subborrow_u64(x64, x42, 0xffffffffffffffffL);
- uint64_t x69, uint8_t x70 = subborrow_u64(x67, x45, 0xffffffffffffffffL);
- uint64_t x72, uint8_t x73 = subborrow_u64(x70, x48, 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = subborrow_u64(x73, x51, 0xffffffffffffffffL);
- uint64_t x78, uint8_t x79 = subborrow_u64(x76, x54, 0xffffffffffffffffL);
- uint64_t _, uint8_t x82 = subborrow_u64(x79, x55, 0x0);
- uint64_t x83 = cmovznz64(x82, x78, x54);
- uint64_t x84 = cmovznz64(x82, x75, x51);
- uint64_t x85 = cmovznz64(x82, x72, x48);
- uint64_t x86 = cmovznz64(x82, x69, x45);
- uint64_t x87 = cmovznz64(x82, x66, x42);
- uint64_t x88 = cmovznz64(x82, x63, x39);
- uint64_t x89 = cmovznz64(x82, x60, x36);
- uint64_t x90 = cmovznz64(x82, x57, x33);
- return (x83, x84, x85, x86, x87, x88, x89, x90))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e512m569/feaddDisplay.v b/src/Specific/montgomery64_2e512m569/feaddDisplay.v
deleted file mode 100644
index 2b00ba4d3..000000000
--- a/src/Specific/montgomery64_2e512m569/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m569.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e512m569/femul.v b/src/Specific/montgomery64_2e512m569/femul.v
deleted file mode 100644
index 02d76f2b6..000000000
--- a/src/Specific/montgomery64_2e512m569/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e512m569/femulDisplay.v b/src/Specific/montgomery64_2e512m569/femulDisplay.v
deleted file mode 100644
index d0cbd9503..000000000
--- a/src/Specific/montgomery64_2e512m569/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m569.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e512m569/fenz.c b/src/Specific/montgomery64_2e512m569/fenz.c
deleted file mode 100644
index a07b0df9c..000000000
--- a/src/Specific/montgomery64_2e512m569/fenz.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x15 = (x14 | x13);
- { uint64_t x16 = (x12 | x15);
- { uint64_t x17 = (x10 | x16);
- { uint64_t x18 = (x8 | x17);
- { uint64_t x19 = (x6 | x18);
- { uint64_t x20 = (x4 | x19);
- { uint64_t x21 = (x2 | x20);
- out[0] = x21;
- }}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e512m569/fenz.v b/src/Specific/montgomery64_2e512m569/fenz.v
deleted file mode 100644
index 468b8a09c..000000000
--- a/src/Specific/montgomery64_2e512m569/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e512m569/fenzDisplay.log b/src/Specific/montgomery64_2e512m569/fenzDisplay.log
deleted file mode 100644
index a05fc22ab..000000000
--- a/src/Specific/montgomery64_2e512m569/fenzDisplay.log
+++ /dev/null
@@ -1,14 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (x14 | x13);
- uint64_t x16 = (x12 | x15);
- uint64_t x17 = (x10 | x16);
- uint64_t x18 = (x8 | x17);
- uint64_t x19 = (x6 | x18);
- uint64_t x20 = (x4 | x19);
- uint64_t x21 = (x2 | x20);
- return x21)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e512m569/fenzDisplay.v b/src/Specific/montgomery64_2e512m569/fenzDisplay.v
deleted file mode 100644
index 2c0e5f649..000000000
--- a/src/Specific/montgomery64_2e512m569/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m569.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e512m569/feopp.v b/src/Specific/montgomery64_2e512m569/feopp.v
deleted file mode 100644
index d474723cc..000000000
--- a/src/Specific/montgomery64_2e512m569/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e512m569/feoppDisplay.log b/src/Specific/montgomery64_2e512m569/feoppDisplay.log
deleted file mode 100644
index 2934a77a9..000000000
--- a/src/Specific/montgomery64_2e512m569/feoppDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u64(0x0, 0x0, x2);
- uint64_t x19, uint8_t x20 = subborrow_u64(x17, 0x0, x4);
- uint64_t x22, uint8_t x23 = subborrow_u64(x20, 0x0, x6);
- uint64_t x25, uint8_t x26 = subborrow_u64(x23, 0x0, x8);
- uint64_t x28, uint8_t x29 = subborrow_u64(x26, 0x0, x10);
- uint64_t x31, uint8_t x32 = subborrow_u64(x29, 0x0, x12);
- uint64_t x34, uint8_t x35 = subborrow_u64(x32, 0x0, x14);
- uint64_t x37, uint8_t x38 = subborrow_u64(x35, 0x0, x13);
- uint64_t x39 = (uint64_t)cmovznz(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xfffffffffffffdc7L);
- uint64_t x42, uint8_t x43 = addcarryx_u64(0x0, x16, x40);
- uint64_t x44 = (x39 & 0xffffffffffffffffL);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x43, x19, x44);
- uint64_t x48 = (x39 & 0xffffffffffffffffL);
- uint64_t x50, uint8_t x51 = addcarryx_u64(x47, x22, x48);
- uint64_t x52 = (x39 & 0xffffffffffffffffL);
- uint64_t x54, uint8_t x55 = addcarryx_u64(x51, x25, x52);
- uint64_t x56 = (x39 & 0xffffffffffffffffL);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x55, x28, x56);
- uint64_t x60 = (x39 & 0xffffffffffffffffL);
- uint64_t x62, uint8_t x63 = addcarryx_u64(x59, x31, x60);
- uint64_t x64 = (x39 & 0xffffffffffffffffL);
- uint64_t x66, uint8_t x67 = addcarryx_u64(x63, x34, x64);
- uint64_t x68 = (x39 & 0xffffffffffffffffL);
- uint64_t x70, uint8_t _ = addcarryx_u64(x67, x37, x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e512m569/feoppDisplay.v b/src/Specific/montgomery64_2e512m569/feoppDisplay.v
deleted file mode 100644
index 3a8d8f6fd..000000000
--- a/src/Specific/montgomery64_2e512m569/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m569.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e512m569/fesquare.c b/src/Specific/montgomery64_2e512m569/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e512m569/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e512m569/fesub.v b/src/Specific/montgomery64_2e512m569/fesub.v
deleted file mode 100644
index 509bb41b6..000000000
--- a/src/Specific/montgomery64_2e512m569/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e512m569/fesubDisplay.log b/src/Specific/montgomery64_2e512m569/fesubDisplay.log
deleted file mode 100644
index 82b5805f6..000000000
--- a/src/Specific/montgomery64_2e512m569/fesubDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x33, uint8_t x34 = subborrow_u64(0x0, x5, x19);
- uint64_t x36, uint8_t x37 = subborrow_u64(x34, x7, x21);
- uint64_t x39, uint8_t x40 = subborrow_u64(x37, x9, x23);
- uint64_t x42, uint8_t x43 = subborrow_u64(x40, x11, x25);
- uint64_t x45, uint8_t x46 = subborrow_u64(x43, x13, x27);
- uint64_t x48, uint8_t x49 = subborrow_u64(x46, x15, x29);
- uint64_t x51, uint8_t x52 = subborrow_u64(x49, x17, x31);
- uint64_t x54, uint8_t x55 = subborrow_u64(x52, x16, x30);
- uint64_t x56 = (uint64_t)cmovznz(x55, 0x0, 0xffffffffffffffffL);
- uint64_t x57 = (x56 & 0xfffffffffffffdc7L);
- uint64_t x59, uint8_t x60 = addcarryx_u64(0x0, x33, x57);
- uint64_t x61 = (x56 & 0xffffffffffffffffL);
- uint64_t x63, uint8_t x64 = addcarryx_u64(x60, x36, x61);
- uint64_t x65 = (x56 & 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = addcarryx_u64(x64, x39, x65);
- uint64_t x69 = (x56 & 0xffffffffffffffffL);
- uint64_t x71, uint8_t x72 = addcarryx_u64(x68, x42, x69);
- uint64_t x73 = (x56 & 0xffffffffffffffffL);
- uint64_t x75, uint8_t x76 = addcarryx_u64(x72, x45, x73);
- uint64_t x77 = (x56 & 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = addcarryx_u64(x76, x48, x77);
- uint64_t x81 = (x56 & 0xffffffffffffffffL);
- uint64_t x83, uint8_t x84 = addcarryx_u64(x80, x51, x81);
- uint64_t x85 = (x56 & 0xffffffffffffffffL);
- uint64_t x87, uint8_t _ = addcarryx_u64(x84, x54, x85);
- (Return x87, Return x83, Return x79, Return x75, Return x71, Return x67, Return x63, Return x59))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e512m569/fesubDisplay.v b/src/Specific/montgomery64_2e512m569/fesubDisplay.v
deleted file mode 100644
index bf14aeafa..000000000
--- a/src/Specific/montgomery64_2e512m569/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e512m569.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e512m569/CurveParameters.v b/src/Specific/montgomery64_2e512m569_8limbs/CurveParameters.v
index 0496d086b..0496d086b 100644
--- a/src/Specific/montgomery64_2e512m569/CurveParameters.v
+++ b/src/Specific/montgomery64_2e512m569_8limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/Synthesis.v b/src/Specific/montgomery64_2e512m569_8limbs/Synthesis.v
new file mode 100644
index 000000000..9c86a7e79
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e512m569/compiler.sh b/src/Specific/montgomery64_2e512m569_8limbs/compiler.sh
index cc60083aa..cc60083aa 100755
--- a/src/Specific/montgomery64_2e512m569/compiler.sh
+++ b/src/Specific/montgomery64_2e512m569_8limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e512m569/compilerxx.sh b/src/Specific/montgomery64_2e512m569_8limbs/compilerxx.sh
index 0555455f0..0555455f0 100755
--- a/src/Specific/montgomery64_2e512m569/compilerxx.sh
+++ b/src/Specific/montgomery64_2e512m569_8limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/feadd.v b/src/Specific/montgomery64_2e512m569_8limbs/feadd.v
new file mode 100644
index 000000000..0fa7e5b27
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/feaddDisplay.v b/src/Specific/montgomery64_2e512m569_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..601860c27
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/femul.v b/src/Specific/montgomery64_2e512m569_8limbs/femul.v
new file mode 100644
index 000000000..fe1bb9c8d
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/femulDisplay.v b/src/Specific/montgomery64_2e512m569_8limbs/femulDisplay.v
new file mode 100644
index 000000000..eb0c51679
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/fenz.v b/src/Specific/montgomery64_2e512m569_8limbs/fenz.v
new file mode 100644
index 000000000..7c21da78b
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/fenzDisplay.v b/src/Specific/montgomery64_2e512m569_8limbs/fenzDisplay.v
new file mode 100644
index 000000000..2825f082e
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/feopp.v b/src/Specific/montgomery64_2e512m569_8limbs/feopp.v
new file mode 100644
index 000000000..4e8c4069f
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/feoppDisplay.v b/src/Specific/montgomery64_2e512m569_8limbs/feoppDisplay.v
new file mode 100644
index 000000000..eddc94e50
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/fesub.v b/src/Specific/montgomery64_2e512m569_8limbs/fesub.v
new file mode 100644
index 000000000..116d8b614
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e512m569_8limbs/fesubDisplay.v b/src/Specific/montgomery64_2e512m569_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..5f0635669
--- /dev/null
+++ b/src/Specific/montgomery64_2e512m569_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e512m569_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e512m569/py_interpreter.sh b/src/Specific/montgomery64_2e512m569_8limbs/py_interpreter.sh
index 920fa0e84..920fa0e84 100755
--- a/src/Specific/montgomery64_2e512m569/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e512m569_8limbs/py_interpreter.sh
diff --git a/src/Specific/montgomery64_2e521m1/Synthesis.v b/src/Specific/montgomery64_2e521m1/Synthesis.v
deleted file mode 100644
index 4960e82a1..000000000
--- a/src/Specific/montgomery64_2e521m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.montgomery64_2e521m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e521m1/feadd.c b/src/Specific/montgomery64_2e521m1/feadd.c
deleted file mode 100644
index 1588992e9..000000000
--- a/src/Specific/montgomery64_2e521m1/feadd.c
+++ /dev/null
@@ -1,58 +0,0 @@
-static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- { uint64_t x37; uint8_t x38 = _addcarryx_u64(0x0, x5, x21, &x37);
- { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x7, x23, &x40);
- { uint64_t x43; uint8_t x44 = _addcarryx_u64(x41, x9, x25, &x43);
- { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x11, x27, &x46);
- { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x13, x29, &x49);
- { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x15, x31, &x52);
- { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x17, x33, &x55);
- { uint64_t x58; uint8_t x59 = _addcarryx_u64(x56, x19, x35, &x58);
- { uint64_t x61; uint8_t x62 = _addcarryx_u64(x59, x18, x34, &x61);
- { uint64_t x64; uint8_t x65 = _subborrow_u64(0x0, x37, 0xffffffffffffffffL, &x64);
- { uint64_t x67; uint8_t x68 = _subborrow_u64(x65, x40, 0xffffffffffffffffL, &x67);
- { uint64_t x70; uint8_t x71 = _subborrow_u64(x68, x43, 0xffffffffffffffffL, &x70);
- { uint64_t x73; uint8_t x74 = _subborrow_u64(x71, x46, 0xffffffffffffffffL, &x73);
- { uint64_t x76; uint8_t x77 = _subborrow_u64(x74, x49, 0xffffffffffffffffL, &x76);
- { uint64_t x79; uint8_t x80 = _subborrow_u64(x77, x52, 0xffffffffffffffffL, &x79);
- { uint64_t x82; uint8_t x83 = _subborrow_u64(x80, x55, 0xffffffffffffffffL, &x82);
- { uint64_t x85; uint8_t x86 = _subborrow_u64(x83, x58, 0xffffffffffffffffL, &x85);
- { uint64_t x88; uint8_t x89 = _subborrow_u64(x86, x61, 0x1ff, &x88);
- { uint64_t _; uint8_t x92 = _subborrow_u64(x89, x62, 0x0, &_);
- { uint64_t x93 = cmovznz64(x92, x88, x61);
- { uint64_t x94 = cmovznz64(x92, x85, x58);
- { uint64_t x95 = cmovznz64(x92, x82, x55);
- { uint64_t x96 = cmovznz64(x92, x79, x52);
- { uint64_t x97 = cmovznz64(x92, x76, x49);
- { uint64_t x98 = cmovznz64(x92, x73, x46);
- { uint64_t x99 = cmovznz64(x92, x70, x43);
- { uint64_t x100 = cmovznz64(x92, x67, x40);
- { uint64_t x101 = cmovznz64(x92, x64, x37);
- out[0] = x101;
- out[1] = x100;
- out[2] = x99;
- out[3] = x98;
- out[4] = x97;
- out[5] = x96;
- out[6] = x95;
- out[7] = x94;
- out[8] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e521m1/feadd.v b/src/Specific/montgomery64_2e521m1/feadd.v
deleted file mode 100644
index 0c57e4e37..000000000
--- a/src/Specific/montgomery64_2e521m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e521m1/feaddDisplay.log b/src/Specific/montgomery64_2e521m1/feaddDisplay.log
deleted file mode 100644
index 75f67f58f..000000000
--- a/src/Specific/montgomery64_2e521m1/feaddDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x37, uint8_t x38 = addcarryx_u64(0x0, x5, x21);
- uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x7, x23);
- uint64_t x43, uint8_t x44 = addcarryx_u64(x41, x9, x25);
- uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x11, x27);
- uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x13, x29);
- uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x15, x31);
- uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x17, x33);
- uint64_t x58, uint8_t x59 = addcarryx_u64(x56, x19, x35);
- uint64_t x61, uint8_t x62 = addcarryx_u64(x59, x18, x34);
- uint64_t x64, uint8_t x65 = subborrow_u64(0x0, x37, 0xffffffffffffffffL);
- uint64_t x67, uint8_t x68 = subborrow_u64(x65, x40, 0xffffffffffffffffL);
- uint64_t x70, uint8_t x71 = subborrow_u64(x68, x43, 0xffffffffffffffffL);
- uint64_t x73, uint8_t x74 = subborrow_u64(x71, x46, 0xffffffffffffffffL);
- uint64_t x76, uint8_t x77 = subborrow_u64(x74, x49, 0xffffffffffffffffL);
- uint64_t x79, uint8_t x80 = subborrow_u64(x77, x52, 0xffffffffffffffffL);
- uint64_t x82, uint8_t x83 = subborrow_u64(x80, x55, 0xffffffffffffffffL);
- uint64_t x85, uint8_t x86 = subborrow_u64(x83, x58, 0xffffffffffffffffL);
- uint64_t x88, uint8_t x89 = subborrow_u64(x86, x61, 0x1ff);
- uint64_t _, uint8_t x92 = subborrow_u64(x89, x62, 0x0);
- uint64_t x93 = cmovznz64(x92, x88, x61);
- uint64_t x94 = cmovznz64(x92, x85, x58);
- uint64_t x95 = cmovznz64(x92, x82, x55);
- uint64_t x96 = cmovznz64(x92, x79, x52);
- uint64_t x97 = cmovznz64(x92, x76, x49);
- uint64_t x98 = cmovznz64(x92, x73, x46);
- uint64_t x99 = cmovznz64(x92, x70, x43);
- uint64_t x100 = cmovznz64(x92, x67, x40);
- uint64_t x101 = cmovznz64(x92, x64, x37);
- return (x93, x94, x95, x96, x97, x98, x99, x100, x101))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e521m1/feaddDisplay.v b/src/Specific/montgomery64_2e521m1/feaddDisplay.v
deleted file mode 100644
index fbf8b42bb..000000000
--- a/src/Specific/montgomery64_2e521m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e521m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/montgomery64_2e521m1/femul.v b/src/Specific/montgomery64_2e521m1/femul.v
deleted file mode 100644
index 98c61ac1a..000000000
--- a/src/Specific/montgomery64_2e521m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e521m1/femulDisplay.v b/src/Specific/montgomery64_2e521m1/femulDisplay.v
deleted file mode 100644
index 7fd2957a5..000000000
--- a/src/Specific/montgomery64_2e521m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e521m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/montgomery64_2e521m1/fenz.c b/src/Specific/montgomery64_2e521m1/fenz.c
deleted file mode 100644
index eb4cd2856..000000000
--- a/src/Specific/montgomery64_2e521m1/fenz.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fenz(ReturnType uint64_t out[1], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x17 = (x16 | x15);
- { uint64_t x18 = (x14 | x17);
- { uint64_t x19 = (x12 | x18);
- { uint64_t x20 = (x10 | x19);
- { uint64_t x21 = (x8 | x20);
- { uint64_t x22 = (x6 | x21);
- { uint64_t x23 = (x4 | x22);
- { uint64_t x24 = (x2 | x23);
- out[0] = x24;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/montgomery64_2e521m1/fenz.v b/src/Specific/montgomery64_2e521m1/fenz.v
deleted file mode 100644
index f8599f255..000000000
--- a/src/Specific/montgomery64_2e521m1/fenz.v
+++ /dev/null
@@ -1,16 +0,0 @@
-Require Import Coq.ZArith.ZArith.
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis.
-Local Open Scope Z_scope.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition nonzero :
- { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
- | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_nonzero ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e521m1/fenzDisplay.log b/src/Specific/montgomery64_2e521m1/fenzDisplay.log
deleted file mode 100644
index d4727163e..000000000
--- a/src/Specific/montgomery64_2e521m1/fenzDisplay.log
+++ /dev/null
@@ -1,15 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (x16 | x15);
- uint64_t x18 = (x14 | x17);
- uint64_t x19 = (x12 | x18);
- uint64_t x20 = (x10 | x19);
- uint64_t x21 = (x8 | x20);
- uint64_t x22 = (x6 | x21);
- uint64_t x23 = (x4 | x22);
- uint64_t x24 = (x2 | x23);
- return x24)
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e521m1/fenzDisplay.v b/src/Specific/montgomery64_2e521m1/fenzDisplay.v
deleted file mode 100644
index 0ae3e8249..000000000
--- a/src/Specific/montgomery64_2e521m1/fenzDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e521m1.fenz.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display nonzero.
diff --git a/src/Specific/montgomery64_2e521m1/feopp.v b/src/Specific/montgomery64_2e521m1/feopp.v
deleted file mode 100644
index 0955d475b..000000000
--- a/src/Specific/montgomery64_2e521m1/feopp.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition opp :
- { opp : feBW_small -> feBW_small
- | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_opp ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e521m1/feoppDisplay.v b/src/Specific/montgomery64_2e521m1/feoppDisplay.v
deleted file mode 100644
index d6053fd7f..000000000
--- a/src/Specific/montgomery64_2e521m1/feoppDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e521m1.feopp.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display opp.
diff --git a/src/Specific/montgomery64_2e521m1/fesquare.c b/src/Specific/montgomery64_2e521m1/fesquare.c
deleted file mode 100644
index 7bd8db166..000000000
--- a/src/Specific/montgomery64_2e521m1/fesquare.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/* WARNING: This file was copied from Specific/CurveParameters/montgomery64/fesquare.c.
- If you edit it here, changes will be erased the next time remake_curves.sh is run. */
-static void fesquare(uint64_t *out, const uint64_t *in) {
- femul(out, in, in);
-}
diff --git a/src/Specific/montgomery64_2e521m1/fesub.v b/src/Specific/montgomery64_2e521m1/fesub.v
deleted file mode 100644
index e05110bc1..000000000
--- a/src/Specific/montgomery64_2e521m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.montgomery64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_small -> feBW_small -> feBW_small
- | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e521m1/fesubDisplay.v b/src/Specific/montgomery64_2e521m1/fesubDisplay.v
deleted file mode 100644
index 831974f7c..000000000
--- a/src/Specific/montgomery64_2e521m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.montgomery64_2e521m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/montgomery64_2e521m1/CurveParameters.v b/src/Specific/montgomery64_2e521m1_9limbs/CurveParameters.v
index 171d1b5a0..171d1b5a0 100644
--- a/src/Specific/montgomery64_2e521m1/CurveParameters.v
+++ b/src/Specific/montgomery64_2e521m1_9limbs/CurveParameters.v
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/Synthesis.v b/src/Specific/montgomery64_2e521m1_9limbs/Synthesis.v
new file mode 100644
index 000000000..1124403a3
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/montgomery64_2e521m1/compiler.sh b/src/Specific/montgomery64_2e521m1_9limbs/compiler.sh
index a3d00d6e7..a3d00d6e7 100755
--- a/src/Specific/montgomery64_2e521m1/compiler.sh
+++ b/src/Specific/montgomery64_2e521m1_9limbs/compiler.sh
diff --git a/src/Specific/montgomery64_2e521m1/compilerxx.sh b/src/Specific/montgomery64_2e521m1_9limbs/compilerxx.sh
index 016c58401..016c58401 100755
--- a/src/Specific/montgomery64_2e521m1/compilerxx.sh
+++ b/src/Specific/montgomery64_2e521m1_9limbs/compilerxx.sh
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/feadd.v b/src/Specific/montgomery64_2e521m1_9limbs/feadd.v
new file mode 100644
index 000000000..3cf7b37fb
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (add a b) = F.add (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/feaddDisplay.v b/src/Specific/montgomery64_2e521m1_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..074227346
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/femul.v b/src/Specific/montgomery64_2e521m1_9limbs/femul.v
new file mode 100644
index 000000000..56b440d5b
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (mul a b) = F.mul (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/femulDisplay.v b/src/Specific/montgomery64_2e521m1_9limbs/femulDisplay.v
new file mode 100644
index 000000000..822a780d0
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/fenz.v b/src/Specific/montgomery64_2e521m1_9limbs/fenz.v
new file mode 100644
index 000000000..fa6107bf4
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/fenz.v
@@ -0,0 +1,16 @@
+Require Import Coq.ZArith.ZArith.
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.Synthesis.
+Local Open Scope Z_scope.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition nonzero :
+ { nonzero : feBW_small -> BoundedWord.BoundedWord 1 adjusted_bitwidth bound1
+ | forall a, (BoundedWord.BoundedWordToZ _ _ _ (nonzero a) =? 0) = (if Decidable.dec (phiM_small a = F.of_Z m 0) then true else false) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_nonzero ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions nonzero.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/fenzDisplay.v b/src/Specific/montgomery64_2e521m1_9limbs/fenzDisplay.v
new file mode 100644
index 000000000..93492f43e
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/fenzDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.fenz.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display nonzero.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/feopp.v b/src/Specific/montgomery64_2e521m1_9limbs/feopp.v
new file mode 100644
index 000000000..c71d818d6
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/feopp.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition opp :
+ { opp : feBW_small -> feBW_small
+ | forall a, phiM_small (opp a) = F.opp (phiM_small a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_opp ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions opp.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/feoppDisplay.v b/src/Specific/montgomery64_2e521m1_9limbs/feoppDisplay.v
new file mode 100644
index 000000000..30e5da4f1
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/feoppDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.feopp.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display opp.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/fesub.v b/src/Specific/montgomery64_2e521m1_9limbs/fesub.v
new file mode 100644
index 000000000..3946a09f9
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_small -> feBW_small -> feBW_small
+ | forall a b, phiM_small (sub a b) = F.sub (phiM_small a) (phiM_small b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/montgomery64_2e521m1_9limbs/fesubDisplay.v b/src/Specific/montgomery64_2e521m1_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..d5916ba34
--- /dev/null
+++ b/src/Specific/montgomery64_2e521m1_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.montgomery64_2e521m1_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/montgomery64_2e521m1/py_interpreter.sh b/src/Specific/montgomery64_2e521m1_9limbs/py_interpreter.sh
index babf89741..babf89741 100755
--- a/src/Specific/montgomery64_2e521m1/py_interpreter.sh
+++ b/src/Specific/montgomery64_2e521m1_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e127m1/Synthesis.v b/src/Specific/solinas32_2e127m1/Synthesis.v
deleted file mode 100644
index ee9097cb9..000000000
--- a/src/Specific/solinas32_2e127m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e127m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e127m1/feadd.c b/src/Specific/solinas32_2e127m1/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e127m1/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e127m1/feadd.v b/src/Specific/solinas32_2e127m1/feadd.v
deleted file mode 100644
index 610081af6..000000000
--- a/src/Specific/solinas32_2e127m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e127m1/feaddDisplay.log b/src/Specific/solinas32_2e127m1/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e127m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e127m1/feaddDisplay.v b/src/Specific/solinas32_2e127m1/feaddDisplay.v
deleted file mode 100644
index 82bd09279..000000000
--- a/src/Specific/solinas32_2e127m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e127m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e127m1/femul.c b/src/Specific/solinas32_2e127m1/femul.c
deleted file mode 100644
index f51c6ba17..000000000
--- a/src/Specific/solinas32_2e127m1/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + ((uint64_t)x12 * x22));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23)));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19)))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17)))))));
- { uint32_t x30 = (uint32_t) (x29 >> 0x16);
- { uint32_t x31 = ((uint32_t)x29 & 0x3fffff);
- { uint64_t x32 = (x30 + x28);
- { uint32_t x33 = (uint32_t) (x32 >> 0x15);
- { uint32_t x34 = ((uint32_t)x32 & 0x1fffff);
- { uint64_t x35 = (x33 + x27);
- { uint32_t x36 = (uint32_t) (x35 >> 0x15);
- { uint32_t x37 = ((uint32_t)x35 & 0x1fffff);
- { uint64_t x38 = (x36 + x26);
- { uint32_t x39 = (uint32_t) (x38 >> 0x15);
- { uint32_t x40 = ((uint32_t)x38 & 0x1fffff);
- { uint64_t x41 = (x39 + x25);
- { uint32_t x42 = (uint32_t) (x41 >> 0x15);
- { uint32_t x43 = ((uint32_t)x41 & 0x1fffff);
- { uint64_t x44 = (x42 + x24);
- { uint32_t x45 = (uint32_t) (x44 >> 0x15);
- { uint32_t x46 = ((uint32_t)x44 & 0x1fffff);
- { uint32_t x47 = (x31 + x45);
- { uint32_t x48 = (x47 >> 0x16);
- { uint32_t x49 = (x47 & 0x3fffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x15);
- { uint32_t x52 = (x50 & 0x1fffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e127m1/femul.v b/src/Specific/solinas32_2e127m1/femul.v
deleted file mode 100644
index 5cf7f193c..000000000
--- a/src/Specific/solinas32_2e127m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e127m1/femulDisplay.log b/src/Specific/solinas32_2e127m1/femulDisplay.log
deleted file mode 100644
index f2f0e5d6a..000000000
--- a/src/Specific/solinas32_2e127m1/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + ((uint64_t)x12 * x22));
- uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23)));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19)))));
- uint64_t x29 = (((uint64_t)x5 * x15) + ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17)))))));
- uint32_t x30 = (uint32_t) (x29 >> 0x16);
- uint32_t x31 = ((uint32_t)x29 & 0x3fffff);
- uint64_t x32 = (x30 + x28);
- uint32_t x33 = (uint32_t) (x32 >> 0x15);
- uint32_t x34 = ((uint32_t)x32 & 0x1fffff);
- uint64_t x35 = (x33 + x27);
- uint32_t x36 = (uint32_t) (x35 >> 0x15);
- uint32_t x37 = ((uint32_t)x35 & 0x1fffff);
- uint64_t x38 = (x36 + x26);
- uint32_t x39 = (uint32_t) (x38 >> 0x15);
- uint32_t x40 = ((uint32_t)x38 & 0x1fffff);
- uint64_t x41 = (x39 + x25);
- uint32_t x42 = (uint32_t) (x41 >> 0x15);
- uint32_t x43 = ((uint32_t)x41 & 0x1fffff);
- uint64_t x44 = (x42 + x24);
- uint32_t x45 = (uint32_t) (x44 >> 0x15);
- uint32_t x46 = ((uint32_t)x44 & 0x1fffff);
- uint32_t x47 = (x31 + x45);
- uint32_t x48 = (x47 >> 0x16);
- uint32_t x49 = (x47 & 0x3fffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x15);
- uint32_t x52 = (x50 & 0x1fffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e127m1/femulDisplay.v b/src/Specific/solinas32_2e127m1/femulDisplay.v
deleted file mode 100644
index 98e277067..000000000
--- a/src/Specific/solinas32_2e127m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e127m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e127m1/fesquare.c b/src/Specific/solinas32_2e127m1/fesquare.c
deleted file mode 100644
index 517b5ec31..000000000
--- a/src/Specific/solinas32_2e127m1/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + ((uint64_t)x9 * x9));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10)));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6)))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4)))))));
- { uint32_t x17 = (uint32_t) (x16 >> 0x16);
- { uint32_t x18 = ((uint32_t)x16 & 0x3fffff);
- { uint64_t x19 = (x17 + x15);
- { uint32_t x20 = (uint32_t) (x19 >> 0x15);
- { uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
- { uint64_t x22 = (x20 + x14);
- { uint32_t x23 = (uint32_t) (x22 >> 0x15);
- { uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
- { uint64_t x25 = (x23 + x13);
- { uint32_t x26 = (uint32_t) (x25 >> 0x15);
- { uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
- { uint64_t x28 = (x26 + x12);
- { uint32_t x29 = (uint32_t) (x28 >> 0x15);
- { uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
- { uint64_t x31 = (x29 + x11);
- { uint32_t x32 = (uint32_t) (x31 >> 0x15);
- { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
- { uint32_t x34 = (x18 + x32);
- { uint32_t x35 = (x34 >> 0x16);
- { uint32_t x36 = (x34 & 0x3fffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x15);
- { uint32_t x39 = (x37 & 0x1fffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e127m1/fesquare.v b/src/Specific/solinas32_2e127m1/fesquare.v
deleted file mode 100644
index 9a5055463..000000000
--- a/src/Specific/solinas32_2e127m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e127m1/fesquareDisplay.log b/src/Specific/solinas32_2e127m1/fesquareDisplay.log
deleted file mode 100644
index 6012f2e94..000000000
--- a/src/Specific/solinas32_2e127m1/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + ((uint64_t)x9 * x9));
- uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10)));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6)))));
- uint64_t x16 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4)))))));
- uint32_t x17 = (uint32_t) (x16 >> 0x16);
- uint32_t x18 = ((uint32_t)x16 & 0x3fffff);
- uint64_t x19 = (x17 + x15);
- uint32_t x20 = (uint32_t) (x19 >> 0x15);
- uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
- uint64_t x22 = (x20 + x14);
- uint32_t x23 = (uint32_t) (x22 >> 0x15);
- uint32_t x24 = ((uint32_t)x22 & 0x1fffff);
- uint64_t x25 = (x23 + x13);
- uint32_t x26 = (uint32_t) (x25 >> 0x15);
- uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
- uint64_t x28 = (x26 + x12);
- uint32_t x29 = (uint32_t) (x28 >> 0x15);
- uint32_t x30 = ((uint32_t)x28 & 0x1fffff);
- uint64_t x31 = (x29 + x11);
- uint32_t x32 = (uint32_t) (x31 >> 0x15);
- uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
- uint32_t x34 = (x18 + x32);
- uint32_t x35 = (x34 >> 0x16);
- uint32_t x36 = (x34 & 0x3fffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x15);
- uint32_t x39 = (x37 & 0x1fffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e127m1/fesquareDisplay.v b/src/Specific/solinas32_2e127m1/fesquareDisplay.v
deleted file mode 100644
index 779aecec9..000000000
--- a/src/Specific/solinas32_2e127m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e127m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e127m1/fesub.c b/src/Specific/solinas32_2e127m1/fesub.c
deleted file mode 100644
index ad019122b..000000000
--- a/src/Specific/solinas32_2e127m1/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x7ffffe + x5) - x15);
- out[1] = ((0x3ffffe + x7) - x17);
- out[2] = ((0x3ffffe + x9) - x19);
- out[3] = ((0x3ffffe + x11) - x21);
- out[4] = ((0x3ffffe + x13) - x23);
- out[5] = ((0x3ffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e127m1/fesub.v b/src/Specific/solinas32_2e127m1/fesub.v
deleted file mode 100644
index 5c6ed2052..000000000
--- a/src/Specific/solinas32_2e127m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e127m1/fesubDisplay.log b/src/Specific/solinas32_2e127m1/fesubDisplay.log
deleted file mode 100644
index 6727bf155..000000000
--- a/src/Specific/solinas32_2e127m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3ffffe + x12) - x22), ((0x3ffffe + x13) - x23), ((0x3ffffe + x11) - x21), ((0x3ffffe + x9) - x19), ((0x3ffffe + x7) - x17), ((0x7ffffe + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e127m1/fesubDisplay.v b/src/Specific/solinas32_2e127m1/fesubDisplay.v
deleted file mode 100644
index d5a149e20..000000000
--- a/src/Specific/solinas32_2e127m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e127m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e127m1/freeze.c b/src/Specific/solinas32_2e127m1/freeze.c
deleted file mode 100644
index 32e7cd19e..000000000
--- a/src/Specific/solinas32_2e127m1/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x3fffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x1fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x1fffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x1fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x1fffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e127m1/freeze.v b/src/Specific/solinas32_2e127m1/freeze.v
deleted file mode 100644
index d3fc239e4..000000000
--- a/src/Specific/solinas32_2e127m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e127m1/freezeDisplay.log b/src/Specific/solinas32_2e127m1/freezeDisplay.log
deleted file mode 100644
index 46db8b723..000000000
--- a/src/Specific/solinas32_2e127m1/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x3fffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x1fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x1fffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x1fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x1fffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e127m1/freezeDisplay.v b/src/Specific/solinas32_2e127m1/freezeDisplay.v
deleted file mode 100644
index 0a366a457..000000000
--- a/src/Specific/solinas32_2e127m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e127m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/CurveParameters.v b/src/Specific/solinas32_2e127m1_5limbs/CurveParameters.v
new file mode 100644
index 000000000..aa40df134
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^127 - 1
+Base: 25.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 25 + 2/5;
+ bitwidth := 32;
+ s := 2^127;
+ c := [(1, 1)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/Synthesis.v b/src/Specific/solinas32_2e127m1_5limbs/Synthesis.v
new file mode 100644
index 000000000..999f751ac
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/compiler.sh b/src/Specific/solinas32_2e127m1_5limbs/compiler.sh
new file mode 100755
index 000000000..5d9e975b4
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<127) - 1' "$@"
diff --git a/src/Specific/solinas32_2e127m1_5limbs/compilerxx.sh b/src/Specific/solinas32_2e127m1_5limbs/compilerxx.sh
new file mode 100755
index 000000000..d04d4cc7f
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,26,25,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='16' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<127) - 1' "$@"
diff --git a/src/Specific/solinas32_2e127m1_5limbs/feadd.v b/src/Specific/solinas32_2e127m1_5limbs/feadd.v
new file mode 100644
index 000000000..4789715de
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/feaddDisplay.v b/src/Specific/solinas32_2e127m1_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..501ed7571
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/femul.v b/src/Specific/solinas32_2e127m1_5limbs/femul.v
new file mode 100644
index 000000000..9514bbfbf
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/femulDisplay.v b/src/Specific/solinas32_2e127m1_5limbs/femulDisplay.v
new file mode 100644
index 000000000..93aea3c75
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/fesquare.v b/src/Specific/solinas32_2e127m1_5limbs/fesquare.v
new file mode 100644
index 000000000..3e108634c
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/fesquareDisplay.v b/src/Specific/solinas32_2e127m1_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..34c318986
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/fesub.v b/src/Specific/solinas32_2e127m1_5limbs/fesub.v
new file mode 100644
index 000000000..8b6026abf
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/fesubDisplay.v b/src/Specific/solinas32_2e127m1_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..0ddd8b51a
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/freeze.v b/src/Specific/solinas32_2e127m1_5limbs/freeze.v
new file mode 100644
index 000000000..03c823c82
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/freezeDisplay.v b/src/Specific/solinas32_2e127m1_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..e7e324f19
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e127m1_5limbs/py_interpreter.sh b/src/Specific/solinas32_2e127m1_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..7a6be62ac
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**127 - 1' -Dmodulus_bytes='25.4' -Da24='121665'
diff --git a/src/Specific/solinas32_2e127m1/CurveParameters.v b/src/Specific/solinas32_2e127m1_6limbs/CurveParameters.v
index 2071cfd04..2071cfd04 100644
--- a/src/Specific/solinas32_2e127m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e127m1_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e127m1_6limbs/Synthesis.v b/src/Specific/solinas32_2e127m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..5f44d2a9b
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e127m1/compiler.sh b/src/Specific/solinas32_2e127m1_6limbs/compiler.sh
index e98cf5d42..e98cf5d42 100755
--- a/src/Specific/solinas32_2e127m1/compiler.sh
+++ b/src/Specific/solinas32_2e127m1_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e127m1/compilerxx.sh b/src/Specific/solinas32_2e127m1_6limbs/compilerxx.sh
index 3b0511c7f..3b0511c7f 100755
--- a/src/Specific/solinas32_2e127m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e127m1_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e127m1_6limbs/feadd.v b/src/Specific/solinas32_2e127m1_6limbs/feadd.v
new file mode 100644
index 000000000..4321ad050
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e127m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..93d651da7
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/femul.v b/src/Specific/solinas32_2e127m1_6limbs/femul.v
new file mode 100644
index 000000000..e04d68e15
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/femulDisplay.v b/src/Specific/solinas32_2e127m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..693ebf3c5
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/fesquare.v b/src/Specific/solinas32_2e127m1_6limbs/fesquare.v
new file mode 100644
index 000000000..c3df9ca52
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e127m1_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b90d50ad4
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/fesub.v b/src/Specific/solinas32_2e127m1_6limbs/fesub.v
new file mode 100644
index 000000000..d8d5e0605
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e127m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..b5db93352
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/freeze.v b/src/Specific/solinas32_2e127m1_6limbs/freeze.v
new file mode 100644
index 000000000..5e2132f01
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e127m1_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e127m1_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..bea9ac67c
--- /dev/null
+++ b/src/Specific/solinas32_2e127m1_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e127m1_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e127m1/py_interpreter.sh b/src/Specific/solinas32_2e127m1_6limbs/py_interpreter.sh
index bbc17f7a0..bbc17f7a0 100755
--- a/src/Specific/solinas32_2e127m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e127m1_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e129m25/Synthesis.v b/src/Specific/solinas32_2e129m25/Synthesis.v
deleted file mode 100644
index e18c491bb..000000000
--- a/src/Specific/solinas32_2e129m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e129m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e129m25/feadd.c b/src/Specific/solinas32_2e129m25/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e129m25/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e129m25/feadd.v b/src/Specific/solinas32_2e129m25/feadd.v
deleted file mode 100644
index 959d81134..000000000
--- a/src/Specific/solinas32_2e129m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e129m25/feaddDisplay.log b/src/Specific/solinas32_2e129m25/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e129m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25/feaddDisplay.v b/src/Specific/solinas32_2e129m25/feaddDisplay.v
deleted file mode 100644
index 462f8c327..000000000
--- a/src/Specific/solinas32_2e129m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e129m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e129m25/femul.c b/src/Specific/solinas32_2e129m25/femul.c
deleted file mode 100644
index 9ed23c4c2..000000000
--- a/src/Specific/solinas32_2e129m25/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x19 * (0x2 * ((uint64_t)x12 * x22))));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x19 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x19 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x19 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0x19 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
- { uint32_t x30 = (uint32_t) (x29 >> 0x16);
- { uint32_t x31 = ((uint32_t)x29 & 0x3fffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x15);
- { uint32_t x34 = ((uint32_t)x32 & 0x1fffff);
- { uint64_t x35 = (x33 + x27);
- { uint32_t x36 = (uint32_t) (x35 >> 0x16);
- { uint32_t x37 = ((uint32_t)x35 & 0x3fffff);
- { uint64_t x38 = (x36 + x26);
- { uint32_t x39 = (uint32_t) (x38 >> 0x15);
- { uint32_t x40 = ((uint32_t)x38 & 0x1fffff);
- { uint64_t x41 = (x39 + x25);
- { uint32_t x42 = (uint32_t) (x41 >> 0x16);
- { uint32_t x43 = ((uint32_t)x41 & 0x3fffff);
- { uint64_t x44 = (x42 + x24);
- { uint32_t x45 = (uint32_t) (x44 >> 0x15);
- { uint32_t x46 = ((uint32_t)x44 & 0x1fffff);
- { uint64_t x47 = (x31 + ((uint64_t)0x19 * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x16);
- { uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x15);
- { uint32_t x52 = (x50 & 0x1fffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e129m25/femul.v b/src/Specific/solinas32_2e129m25/femul.v
deleted file mode 100644
index 07d1e45bb..000000000
--- a/src/Specific/solinas32_2e129m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e129m25/femulDisplay.log b/src/Specific/solinas32_2e129m25/femulDisplay.log
deleted file mode 100644
index 505980179..000000000
--- a/src/Specific/solinas32_2e129m25/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x19 * (0x2 * ((uint64_t)x12 * x22))));
- uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x19 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x19 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x19 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0x19 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
- uint32_t x30 = (uint32_t) (x29 >> 0x16);
- uint32_t x31 = ((uint32_t)x29 & 0x3fffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x15);
- uint32_t x34 = ((uint32_t)x32 & 0x1fffff);
- uint64_t x35 = (x33 + x27);
- uint32_t x36 = (uint32_t) (x35 >> 0x16);
- uint32_t x37 = ((uint32_t)x35 & 0x3fffff);
- uint64_t x38 = (x36 + x26);
- uint32_t x39 = (uint32_t) (x38 >> 0x15);
- uint32_t x40 = ((uint32_t)x38 & 0x1fffff);
- uint64_t x41 = (x39 + x25);
- uint32_t x42 = (uint32_t) (x41 >> 0x16);
- uint32_t x43 = ((uint32_t)x41 & 0x3fffff);
- uint64_t x44 = (x42 + x24);
- uint32_t x45 = (uint32_t) (x44 >> 0x15);
- uint32_t x46 = ((uint32_t)x44 & 0x1fffff);
- uint64_t x47 = (x31 + ((uint64_t)0x19 * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x16);
- uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x15);
- uint32_t x52 = (x50 & 0x1fffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25/femulDisplay.v b/src/Specific/solinas32_2e129m25/femulDisplay.v
deleted file mode 100644
index 909f1061b..000000000
--- a/src/Specific/solinas32_2e129m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e129m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e129m25/fesquare.c b/src/Specific/solinas32_2e129m25/fesquare.c
deleted file mode 100644
index efa4f8e92..000000000
--- a/src/Specific/solinas32_2e129m25/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x19 * (0x2 * ((uint64_t)x9 * x9))));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
- { uint32_t x17 = (uint32_t) (x16 >> 0x16);
- { uint32_t x18 = ((uint32_t)x16 & 0x3fffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x15);
- { uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
- { uint64_t x22 = (x20 + x14);
- { uint32_t x23 = (uint32_t) (x22 >> 0x16);
- { uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
- { uint64_t x25 = (x23 + x13);
- { uint32_t x26 = (uint32_t) (x25 >> 0x15);
- { uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
- { uint64_t x28 = (x26 + x12);
- { uint32_t x29 = (uint32_t) (x28 >> 0x16);
- { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
- { uint64_t x31 = (x29 + x11);
- { uint32_t x32 = (uint32_t) (x31 >> 0x15);
- { uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
- { uint64_t x34 = (x18 + ((uint64_t)0x19 * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x15);
- { uint32_t x39 = (x37 & 0x1fffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e129m25/fesquare.v b/src/Specific/solinas32_2e129m25/fesquare.v
deleted file mode 100644
index 3355af630..000000000
--- a/src/Specific/solinas32_2e129m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e129m25/fesquareDisplay.log b/src/Specific/solinas32_2e129m25/fesquareDisplay.log
deleted file mode 100644
index 33269bc68..000000000
--- a/src/Specific/solinas32_2e129m25/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x19 * (0x2 * ((uint64_t)x9 * x9))));
- uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
- uint32_t x17 = (uint32_t) (x16 >> 0x16);
- uint32_t x18 = ((uint32_t)x16 & 0x3fffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x15);
- uint32_t x21 = ((uint32_t)x19 & 0x1fffff);
- uint64_t x22 = (x20 + x14);
- uint32_t x23 = (uint32_t) (x22 >> 0x16);
- uint32_t x24 = ((uint32_t)x22 & 0x3fffff);
- uint64_t x25 = (x23 + x13);
- uint32_t x26 = (uint32_t) (x25 >> 0x15);
- uint32_t x27 = ((uint32_t)x25 & 0x1fffff);
- uint64_t x28 = (x26 + x12);
- uint32_t x29 = (uint32_t) (x28 >> 0x16);
- uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
- uint64_t x31 = (x29 + x11);
- uint32_t x32 = (uint32_t) (x31 >> 0x15);
- uint32_t x33 = ((uint32_t)x31 & 0x1fffff);
- uint64_t x34 = (x18 + ((uint64_t)0x19 * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x15);
- uint32_t x39 = (x37 & 0x1fffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25/fesquareDisplay.v b/src/Specific/solinas32_2e129m25/fesquareDisplay.v
deleted file mode 100644
index c6482a867..000000000
--- a/src/Specific/solinas32_2e129m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e129m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e129m25/fesub.c b/src/Specific/solinas32_2e129m25/fesub.c
deleted file mode 100644
index d557470df..000000000
--- a/src/Specific/solinas32_2e129m25/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x7fffce + x5) - x15);
- out[1] = ((0x3ffffe + x7) - x17);
- out[2] = ((0x7ffffe + x9) - x19);
- out[3] = ((0x3ffffe + x11) - x21);
- out[4] = ((0x7ffffe + x13) - x23);
- out[5] = ((0x3ffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e129m25/fesub.v b/src/Specific/solinas32_2e129m25/fesub.v
deleted file mode 100644
index 455623664..000000000
--- a/src/Specific/solinas32_2e129m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e129m25/fesubDisplay.log b/src/Specific/solinas32_2e129m25/fesubDisplay.log
deleted file mode 100644
index 8a85dcd49..000000000
--- a/src/Specific/solinas32_2e129m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3ffffe + x12) - x22), ((0x7ffffe + x13) - x23), ((0x3ffffe + x11) - x21), ((0x7ffffe + x9) - x19), ((0x3ffffe + x7) - x17), ((0x7fffce + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25/fesubDisplay.v b/src/Specific/solinas32_2e129m25/fesubDisplay.v
deleted file mode 100644
index aa9580c22..000000000
--- a/src/Specific/solinas32_2e129m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e129m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e129m25/freeze.c b/src/Specific/solinas32_2e129m25/freeze.c
deleted file mode 100644
index 989ef2208..000000000
--- a/src/Specific/solinas32_2e129m25/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffe7);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x3fffe7);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x1fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x3fffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x1fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x3fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x1fffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e129m25/freeze.v b/src/Specific/solinas32_2e129m25/freeze.v
deleted file mode 100644
index e981a13ef..000000000
--- a/src/Specific/solinas32_2e129m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e129m25/freezeDisplay.log b/src/Specific/solinas32_2e129m25/freezeDisplay.log
deleted file mode 100644
index 3a22c8feb..000000000
--- a/src/Specific/solinas32_2e129m25/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffe7);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x3fffe7);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x1fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x3fffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x1fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x3fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x1fffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25/freezeDisplay.v b/src/Specific/solinas32_2e129m25/freezeDisplay.v
deleted file mode 100644
index 38a002bbf..000000000
--- a/src/Specific/solinas32_2e129m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e129m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/CurveParameters.v b/src/Specific/solinas32_2e129m25_5limbs/CurveParameters.v
new file mode 100644
index 000000000..30d76ba63
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^129 - 25
+Base: 25.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 25 + 4/5;
+ bitwidth := 32;
+ s := 2^129;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/Synthesis.v b/src/Specific/solinas32_2e129m25_5limbs/Synthesis.v
new file mode 100644
index 000000000..70b502321
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/compiler.sh b/src/Specific/solinas32_2e129m25_5limbs/compiler.sh
new file mode 100755
index 000000000..40e6209e4
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25' "$@"
diff --git a/src/Specific/solinas32_2e129m25_5limbs/compilerxx.sh b/src/Specific/solinas32_2e129m25_5limbs/compilerxx.sh
new file mode 100755
index 000000000..4f4468488
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<129) - 25' "$@"
diff --git a/src/Specific/solinas32_2e129m25_5limbs/feadd.v b/src/Specific/solinas32_2e129m25_5limbs/feadd.v
new file mode 100644
index 000000000..ad0c03188
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/feaddDisplay.v b/src/Specific/solinas32_2e129m25_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..2dc5bab57
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/femul.v b/src/Specific/solinas32_2e129m25_5limbs/femul.v
new file mode 100644
index 000000000..440b28a80
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/femulDisplay.v b/src/Specific/solinas32_2e129m25_5limbs/femulDisplay.v
new file mode 100644
index 000000000..d23967038
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesquare.v b/src/Specific/solinas32_2e129m25_5limbs/fesquare.v
new file mode 100644
index 000000000..d10ddeeff
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesquareDisplay.v b/src/Specific/solinas32_2e129m25_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5646466d1
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesub.v b/src/Specific/solinas32_2e129m25_5limbs/fesub.v
new file mode 100644
index 000000000..d4d32b8a8
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.v b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..95f3e5f93
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/freeze.v b/src/Specific/solinas32_2e129m25_5limbs/freeze.v
new file mode 100644
index 000000000..86a817724
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.v b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..df6d0d0ee
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e129m25_5limbs/py_interpreter.sh b/src/Specific/solinas32_2e129m25_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..88f708d3e
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**129 - 25' -Dmodulus_bytes='25.8' -Da24='121665'
diff --git a/src/Specific/solinas32_2e129m25/CurveParameters.v b/src/Specific/solinas32_2e129m25_6limbs/CurveParameters.v
index 7031863e9..7031863e9 100644
--- a/src/Specific/solinas32_2e129m25/CurveParameters.v
+++ b/src/Specific/solinas32_2e129m25_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e129m25_6limbs/Synthesis.v b/src/Specific/solinas32_2e129m25_6limbs/Synthesis.v
new file mode 100644
index 000000000..d455eccf6
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e129m25/compiler.sh b/src/Specific/solinas32_2e129m25_6limbs/compiler.sh
index 0efc994ee..0efc994ee 100755
--- a/src/Specific/solinas32_2e129m25/compiler.sh
+++ b/src/Specific/solinas32_2e129m25_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e129m25/compilerxx.sh b/src/Specific/solinas32_2e129m25_6limbs/compilerxx.sh
index d672e9924..d672e9924 100755
--- a/src/Specific/solinas32_2e129m25/compilerxx.sh
+++ b/src/Specific/solinas32_2e129m25_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e129m25_6limbs/feadd.v b/src/Specific/solinas32_2e129m25_6limbs/feadd.v
new file mode 100644
index 000000000..23ec0ab57
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e129m25_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..5c928bc2d
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/femul.v b/src/Specific/solinas32_2e129m25_6limbs/femul.v
new file mode 100644
index 000000000..d371064bb
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/femulDisplay.v b/src/Specific/solinas32_2e129m25_6limbs/femulDisplay.v
new file mode 100644
index 000000000..082f94ff3
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/fesquare.v b/src/Specific/solinas32_2e129m25_6limbs/fesquare.v
new file mode 100644
index 000000000..64854e704
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e129m25_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..93c8073fb
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/fesub.v b/src/Specific/solinas32_2e129m25_6limbs/fesub.v
new file mode 100644
index 000000000..46ffc1f1f
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e129m25_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..2e82a7d3c
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/freeze.v b/src/Specific/solinas32_2e129m25_6limbs/freeze.v
new file mode 100644
index 000000000..1b72bd4e3
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e129m25_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e129m25_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..e420e3119
--- /dev/null
+++ b/src/Specific/solinas32_2e129m25_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e129m25_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e129m25/py_interpreter.sh b/src/Specific/solinas32_2e129m25_6limbs/py_interpreter.sh
index e644139bb..e644139bb 100755
--- a/src/Specific/solinas32_2e129m25/py_interpreter.sh
+++ b/src/Specific/solinas32_2e129m25_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e130m5/Synthesis.v b/src/Specific/solinas32_2e130m5/Synthesis.v
deleted file mode 100644
index 33378ebd4..000000000
--- a/src/Specific/solinas32_2e130m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e130m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e130m5/feadd.c b/src/Specific/solinas32_2e130m5/feadd.c
deleted file mode 100644
index 4db430361..000000000
--- a/src/Specific/solinas32_2e130m5/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e130m5/feadd.v b/src/Specific/solinas32_2e130m5/feadd.v
deleted file mode 100644
index b73633816..000000000
--- a/src/Specific/solinas32_2e130m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e130m5/feaddDisplay.log b/src/Specific/solinas32_2e130m5/feaddDisplay.log
deleted file mode 100644
index eaf25ecd1..000000000
--- a/src/Specific/solinas32_2e130m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/feaddDisplay.v b/src/Specific/solinas32_2e130m5/feaddDisplay.v
deleted file mode 100644
index f80d2da5b..000000000
--- a/src/Specific/solinas32_2e130m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e130m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e130m5/femul.c b/src/Specific/solinas32_2e130m5/femul.c
deleted file mode 100644
index 597a8eddd..000000000
--- a/src/Specific/solinas32_2e130m5/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { uint64_t x20 = (((uint64_t)x5 * x18) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + (((uint64_t)x11 * x15) + ((uint64_t)x10 * x13)))));
- { uint64_t x21 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + (((uint64_t)x9 * x15) + ((uint64_t)x11 * x13)))) + (0x5 * ((uint64_t)x10 * x18)));
- { uint64_t x22 = ((((uint64_t)x5 * x17) + (((uint64_t)x7 * x15) + ((uint64_t)x9 * x13))) + (0x5 * (((uint64_t)x11 * x18) + ((uint64_t)x10 * x19))));
- { uint64_t x23 = ((((uint64_t)x5 * x15) + ((uint64_t)x7 * x13)) + (0x5 * (((uint64_t)x9 * x18) + (((uint64_t)x11 * x19) + ((uint64_t)x10 * x17)))));
- { uint64_t x24 = (((uint64_t)x5 * x13) + (0x5 * (((uint64_t)x7 * x18) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x10 * x15))))));
- { uint64_t x25 = (x24 >> 0x1a);
- { uint32_t x26 = ((uint32_t)x24 & 0x3ffffff);
- { uint64_t x27 = (x25 + x23);
- { uint64_t x28 = (x27 >> 0x1a);
- { uint32_t x29 = ((uint32_t)x27 & 0x3ffffff);
- { uint64_t x30 = (x28 + x22);
- { uint64_t x31 = (x30 >> 0x1a);
- { uint32_t x32 = ((uint32_t)x30 & 0x3ffffff);
- { uint64_t x33 = (x31 + x21);
- { uint64_t x34 = (x33 >> 0x1a);
- { uint32_t x35 = ((uint32_t)x33 & 0x3ffffff);
- { uint64_t x36 = (x34 + x20);
- { uint32_t x37 = (uint32_t) (x36 >> 0x1a);
- { uint32_t x38 = ((uint32_t)x36 & 0x3ffffff);
- { uint64_t x39 = (x26 + ((uint64_t)0x5 * x37));
- { uint32_t x40 = (uint32_t) (x39 >> 0x1a);
- { uint32_t x41 = ((uint32_t)x39 & 0x3ffffff);
- { uint32_t x42 = (x40 + x29);
- { uint32_t x43 = (x42 >> 0x1a);
- { uint32_t x44 = (x42 & 0x3ffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e130m5/femul.v b/src/Specific/solinas32_2e130m5/femul.v
deleted file mode 100644
index eea1cd6c5..000000000
--- a/src/Specific/solinas32_2e130m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e130m5/femulDisplay.log b/src/Specific/solinas32_2e130m5/femulDisplay.log
deleted file mode 100644
index ff0a450a6..000000000
--- a/src/Specific/solinas32_2e130m5/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint64_t x20 = (((uint64_t)x5 * x18) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + (((uint64_t)x11 * x15) + ((uint64_t)x10 * x13)))));
- uint64_t x21 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + (((uint64_t)x9 * x15) + ((uint64_t)x11 * x13)))) + (0x5 * ((uint64_t)x10 * x18)));
- uint64_t x22 = ((((uint64_t)x5 * x17) + (((uint64_t)x7 * x15) + ((uint64_t)x9 * x13))) + (0x5 * (((uint64_t)x11 * x18) + ((uint64_t)x10 * x19))));
- uint64_t x23 = ((((uint64_t)x5 * x15) + ((uint64_t)x7 * x13)) + (0x5 * (((uint64_t)x9 * x18) + (((uint64_t)x11 * x19) + ((uint64_t)x10 * x17)))));
- uint64_t x24 = (((uint64_t)x5 * x13) + (0x5 * (((uint64_t)x7 * x18) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x10 * x15))))));
- uint64_t x25 = (x24 >> 0x1a);
- uint32_t x26 = ((uint32_t)x24 & 0x3ffffff);
- uint64_t x27 = (x25 + x23);
- uint64_t x28 = (x27 >> 0x1a);
- uint32_t x29 = ((uint32_t)x27 & 0x3ffffff);
- uint64_t x30 = (x28 + x22);
- uint64_t x31 = (x30 >> 0x1a);
- uint32_t x32 = ((uint32_t)x30 & 0x3ffffff);
- uint64_t x33 = (x31 + x21);
- uint64_t x34 = (x33 >> 0x1a);
- uint32_t x35 = ((uint32_t)x33 & 0x3ffffff);
- uint64_t x36 = (x34 + x20);
- uint32_t x37 = (uint32_t) (x36 >> 0x1a);
- uint32_t x38 = ((uint32_t)x36 & 0x3ffffff);
- uint64_t x39 = (x26 + ((uint64_t)0x5 * x37));
- uint32_t x40 = (uint32_t) (x39 >> 0x1a);
- uint32_t x41 = ((uint32_t)x39 & 0x3ffffff);
- uint32_t x42 = (x40 + x29);
- uint32_t x43 = (x42 >> 0x1a);
- uint32_t x44 = (x42 & 0x3ffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/femulDisplay.v b/src/Specific/solinas32_2e130m5/femulDisplay.v
deleted file mode 100644
index f23d03acf..000000000
--- a/src/Specific/solinas32_2e130m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e130m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e130m5/fesquare.c b/src/Specific/solinas32_2e130m5/fesquare.c
deleted file mode 100644
index 9fc0158e4..000000000
--- a/src/Specific/solinas32_2e130m5/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x9 = (((uint64_t)x2 * x7) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x7 * x2)))));
- { uint64_t x10 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * ((uint64_t)x7 * x7)));
- { uint64_t x11 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x7) + ((uint64_t)x7 * x8))));
- { uint64_t x12 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x7) + (((uint64_t)x8 * x8) + ((uint64_t)x7 * x6)))));
- { uint64_t x13 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x7) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((uint64_t)x7 * x4))))));
- { uint64_t x14 = (x13 >> 0x1a);
- { uint32_t x15 = ((uint32_t)x13 & 0x3ffffff);
- { uint64_t x16 = (x14 + x12);
- { uint64_t x17 = (x16 >> 0x1a);
- { uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
- { uint64_t x19 = (x17 + x11);
- { uint64_t x20 = (x19 >> 0x1a);
- { uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
- { uint64_t x22 = (x20 + x10);
- { uint64_t x23 = (x22 >> 0x1a);
- { uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
- { uint64_t x25 = (x23 + x9);
- { uint32_t x26 = (uint32_t) (x25 >> 0x1a);
- { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- { uint64_t x28 = (x15 + ((uint64_t)0x5 * x26));
- { uint32_t x29 = (uint32_t) (x28 >> 0x1a);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- { uint32_t x31 = (x29 + x18);
- { uint32_t x32 = (x31 >> 0x1a);
- { uint32_t x33 = (x31 & 0x3ffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e130m5/fesquare.v b/src/Specific/solinas32_2e130m5/fesquare.v
deleted file mode 100644
index 014f7cfdd..000000000
--- a/src/Specific/solinas32_2e130m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e130m5/fesquareDisplay.log b/src/Specific/solinas32_2e130m5/fesquareDisplay.log
deleted file mode 100644
index 2d88d3465..000000000
--- a/src/Specific/solinas32_2e130m5/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x9 = (((uint64_t)x2 * x7) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x7 * x2)))));
- uint64_t x10 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * ((uint64_t)x7 * x7)));
- uint64_t x11 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x7) + ((uint64_t)x7 * x8))));
- uint64_t x12 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x7) + (((uint64_t)x8 * x8) + ((uint64_t)x7 * x6)))));
- uint64_t x13 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x7) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((uint64_t)x7 * x4))))));
- uint64_t x14 = (x13 >> 0x1a);
- uint32_t x15 = ((uint32_t)x13 & 0x3ffffff);
- uint64_t x16 = (x14 + x12);
- uint64_t x17 = (x16 >> 0x1a);
- uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
- uint64_t x19 = (x17 + x11);
- uint64_t x20 = (x19 >> 0x1a);
- uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
- uint64_t x22 = (x20 + x10);
- uint64_t x23 = (x22 >> 0x1a);
- uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
- uint64_t x25 = (x23 + x9);
- uint32_t x26 = (uint32_t) (x25 >> 0x1a);
- uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- uint64_t x28 = (x15 + ((uint64_t)0x5 * x26));
- uint32_t x29 = (uint32_t) (x28 >> 0x1a);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- uint32_t x31 = (x29 + x18);
- uint32_t x32 = (x31 >> 0x1a);
- uint32_t x33 = (x31 & 0x3ffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/fesquareDisplay.v b/src/Specific/solinas32_2e130m5/fesquareDisplay.v
deleted file mode 100644
index 003792d39..000000000
--- a/src/Specific/solinas32_2e130m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e130m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e130m5/fesub.c b/src/Specific/solinas32_2e130m5/fesub.c
deleted file mode 100644
index 5cb693285..000000000
--- a/src/Specific/solinas32_2e130m5/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- out[0] = ((0x7fffff6 + x5) - x13);
- out[1] = ((0x7fffffe + x7) - x15);
- out[2] = ((0x7fffffe + x9) - x17);
- out[3] = ((0x7fffffe + x11) - x19);
- out[4] = ((0x7fffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e130m5/fesub.v b/src/Specific/solinas32_2e130m5/fesub.v
deleted file mode 100644
index 545b1bb40..000000000
--- a/src/Specific/solinas32_2e130m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e130m5/fesubDisplay.log b/src/Specific/solinas32_2e130m5/fesubDisplay.log
deleted file mode 100644
index 1250af0b6..000000000
--- a/src/Specific/solinas32_2e130m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((0x7fffff6 + x5) - x13)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/fesubDisplay.v b/src/Specific/solinas32_2e130m5/fesubDisplay.v
deleted file mode 100644
index 5bd4901bf..000000000
--- a/src/Specific/solinas32_2e130m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e130m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e130m5/freeze.c b/src/Specific/solinas32_2e130m5/freeze.c
deleted file mode 100644
index dae1a6834..000000000
--- a/src/Specific/solinas32_2e130m5/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffb);
- { uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffff);
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffff);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffff);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0x3fffffb);
- { uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint32_t x29 = (x24 & 0x3ffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint32_t x33 = (x24 & 0x3ffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint32_t x37 = (x24 & 0x3ffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint32_t x41 = (x24 & 0x3ffffff);
- { uint32_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e130m5/freeze.v b/src/Specific/solinas32_2e130m5/freeze.v
deleted file mode 100644
index 793f28eb6..000000000
--- a/src/Specific/solinas32_2e130m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e130m5/freezeDisplay.log b/src/Specific/solinas32_2e130m5/freezeDisplay.log
deleted file mode 100644
index 8aa0457e5..000000000
--- a/src/Specific/solinas32_2e130m5/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffb);
- uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffff);
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffff);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffff);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0x3fffffb);
- uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint32_t x29 = (x24 & 0x3ffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint32_t x33 = (x24 & 0x3ffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint32_t x37 = (x24 & 0x3ffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint32_t x41 = (x24 & 0x3ffffff);
- uint32_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/freezeDisplay.v b/src/Specific/solinas32_2e130m5/freezeDisplay.v
deleted file mode 100644
index f8e4e9dce..000000000
--- a/src/Specific/solinas32_2e130m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e130m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e130m5/CurveParameters.v b/src/Specific/solinas32_2e130m5_5limbs/CurveParameters.v
index 4c7d39418..4c7d39418 100644
--- a/src/Specific/solinas32_2e130m5/CurveParameters.v
+++ b/src/Specific/solinas32_2e130m5_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e130m5_5limbs/Synthesis.v b/src/Specific/solinas32_2e130m5_5limbs/Synthesis.v
new file mode 100644
index 000000000..b20dc4d17
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e130m5/compiler.sh b/src/Specific/solinas32_2e130m5_5limbs/compiler.sh
index ec8d2c561..ec8d2c561 100755
--- a/src/Specific/solinas32_2e130m5/compiler.sh
+++ b/src/Specific/solinas32_2e130m5_5limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e130m5/compilerxx.sh b/src/Specific/solinas32_2e130m5_5limbs/compilerxx.sh
index d33bb3c1b..d33bb3c1b 100755
--- a/src/Specific/solinas32_2e130m5/compilerxx.sh
+++ b/src/Specific/solinas32_2e130m5_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e130m5_5limbs/feadd.v b/src/Specific/solinas32_2e130m5_5limbs/feadd.v
new file mode 100644
index 000000000..bf954a018
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/feaddDisplay.v b/src/Specific/solinas32_2e130m5_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..b3cacdda0
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/femul.v b/src/Specific/solinas32_2e130m5_5limbs/femul.v
new file mode 100644
index 000000000..0d55a547d
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/femulDisplay.v b/src/Specific/solinas32_2e130m5_5limbs/femulDisplay.v
new file mode 100644
index 000000000..8d4119d7d
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/fesquare.v b/src/Specific/solinas32_2e130m5_5limbs/fesquare.v
new file mode 100644
index 000000000..e445539f0
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/fesquareDisplay.v b/src/Specific/solinas32_2e130m5_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5eec20f69
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/fesub.v b/src/Specific/solinas32_2e130m5_5limbs/fesub.v
new file mode 100644
index 000000000..0c1c589dc
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/fesubDisplay.v b/src/Specific/solinas32_2e130m5_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..58442e682
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/freeze.v b/src/Specific/solinas32_2e130m5_5limbs/freeze.v
new file mode 100644
index 000000000..207ad0e71
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e130m5_5limbs/freezeDisplay.v b/src/Specific/solinas32_2e130m5_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..abf00e549
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e130m5/py_interpreter.sh b/src/Specific/solinas32_2e130m5_5limbs/py_interpreter.sh
index 9330f32d1..9330f32d1 100755
--- a/src/Specific/solinas32_2e130m5/py_interpreter.sh
+++ b/src/Specific/solinas32_2e130m5_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e130m5_6limbs/CurveParameters.v b/src/Specific/solinas32_2e130m5_6limbs/CurveParameters.v
new file mode 100644
index 000000000..861448a43
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^130 - 5
+Base: 21 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 21 + 2/3;
+ bitwidth := 32;
+ s := 2^130;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/Synthesis.v b/src/Specific/solinas32_2e130m5_6limbs/Synthesis.v
new file mode 100644
index 000000000..3b2d9ab41
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/compiler.sh b/src/Specific/solinas32_2e130m5_6limbs/compiler.sh
new file mode 100755
index 000000000..e18fefa38
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<130) - 5' "$@"
diff --git a/src/Specific/solinas32_2e130m5_6limbs/compilerxx.sh b/src/Specific/solinas32_2e130m5_6limbs/compilerxx.sh
new file mode 100755
index 000000000..009d00234
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<130) - 5' "$@"
diff --git a/src/Specific/solinas32_2e130m5_6limbs/feadd.v b/src/Specific/solinas32_2e130m5_6limbs/feadd.v
new file mode 100644
index 000000000..d85422729
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e130m5_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..b2298c3e0
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/femul.v b/src/Specific/solinas32_2e130m5_6limbs/femul.v
new file mode 100644
index 000000000..6ea60a91d
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/femulDisplay.v b/src/Specific/solinas32_2e130m5_6limbs/femulDisplay.v
new file mode 100644
index 000000000..635966b05
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesquare.v b/src/Specific/solinas32_2e130m5_6limbs/fesquare.v
new file mode 100644
index 000000000..dfcf52e9a
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e130m5_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..40bde8792
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesub.v b/src/Specific/solinas32_2e130m5_6limbs/fesub.v
new file mode 100644
index 000000000..6acb43ae0
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..bf9e327ee
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/freeze.v b/src/Specific/solinas32_2e130m5_6limbs/freeze.v
new file mode 100644
index 000000000..30d079fbb
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..5715324df
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e130m5_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e130m5_6limbs/py_interpreter.sh b/src/Specific/solinas32_2e130m5_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..7bb3a01fc
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**130 - 5' -Dmodulus_bytes='21 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e137m13/CurveParameters.v b/src/Specific/solinas32_2e137m13/CurveParameters.v
deleted file mode 100644
index 11881a98e..000000000
--- a/src/Specific/solinas32_2e137m13/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^137 - 13
-Base: 17.125
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 17 + 1/8;
- bitwidth := 32;
- s := 2^137;
- c := [(1, 13)];
- carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e137m13/Synthesis.v b/src/Specific/solinas32_2e137m13/Synthesis.v
deleted file mode 100644
index 0378a82e4..000000000
--- a/src/Specific/solinas32_2e137m13/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e137m13.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e137m13/compiler.sh b/src/Specific/solinas32_2e137m13/compiler.sh
deleted file mode 100755
index cd556013b..000000000
--- a/src/Specific/solinas32_2e137m13/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{18,17,17,17,17,17,17,17}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13/compilerxx.sh b/src/Specific/solinas32_2e137m13/compilerxx.sh
deleted file mode 100755
index 310c33b72..000000000
--- a/src/Specific/solinas32_2e137m13/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{18,17,17,17,17,17,17,17}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13/feadd.c b/src/Specific/solinas32_2e137m13/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e137m13/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e137m13/feadd.v b/src/Specific/solinas32_2e137m13/feadd.v
deleted file mode 100644
index b79e0280d..000000000
--- a/src/Specific/solinas32_2e137m13/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e137m13/feaddDisplay.log b/src/Specific/solinas32_2e137m13/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e137m13/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13/feaddDisplay.v b/src/Specific/solinas32_2e137m13/feaddDisplay.v
deleted file mode 100644
index c689efce7..000000000
--- a/src/Specific/solinas32_2e137m13/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e137m13.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e137m13/femul.c b/src/Specific/solinas32_2e137m13/femul.c
deleted file mode 100644
index f2a69d86a..000000000
--- a/src/Specific/solinas32_2e137m13/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0xd * ((uint64_t)x16 * x30)));
- { uint64_t x34 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((uint64_t)x15 * x19)))))) + (0xd * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xd * (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29)))));
- { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0xd * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
- { uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0xd * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xd * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- { uint64_t x39 = (((uint64_t)x5 * x19) + (0xd * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- { uint32_t x40 = (uint32_t) (x39 >> 0x12);
- { uint32_t x41 = ((uint32_t)x39 & 0x3ffff);
- { uint64_t x42 = (x40 + x38);
- { uint32_t x43 = (uint32_t) (x42 >> 0x11);
- { uint32_t x44 = ((uint32_t)x42 & 0x1ffff);
- { uint64_t x45 = (x43 + x37);
- { uint32_t x46 = (uint32_t) (x45 >> 0x11);
- { uint32_t x47 = ((uint32_t)x45 & 0x1ffff);
- { uint64_t x48 = (x46 + x36);
- { uint32_t x49 = (uint32_t) (x48 >> 0x11);
- { uint32_t x50 = ((uint32_t)x48 & 0x1ffff);
- { uint64_t x51 = (x49 + x35);
- { uint32_t x52 = (uint32_t) (x51 >> 0x11);
- { uint32_t x53 = ((uint32_t)x51 & 0x1ffff);
- { uint64_t x54 = (x52 + x34);
- { uint32_t x55 = (uint32_t) (x54 >> 0x11);
- { uint32_t x56 = ((uint32_t)x54 & 0x1ffff);
- { uint64_t x57 = (x55 + x33);
- { uint32_t x58 = (uint32_t) (x57 >> 0x11);
- { uint32_t x59 = ((uint32_t)x57 & 0x1ffff);
- { uint64_t x60 = (x58 + x32);
- { uint32_t x61 = (uint32_t) (x60 >> 0x11);
- { uint32_t x62 = ((uint32_t)x60 & 0x1ffff);
- { uint32_t x63 = (x41 + (0xd * x61));
- { uint32_t x64 = (x63 >> 0x12);
- { uint32_t x65 = (x63 & 0x3ffff);
- { uint32_t x66 = (x64 + x44);
- { uint32_t x67 = (x66 >> 0x11);
- { uint32_t x68 = (x66 & 0x1ffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e137m13/femul.v b/src/Specific/solinas32_2e137m13/femul.v
deleted file mode 100644
index 328dfd690..000000000
--- a/src/Specific/solinas32_2e137m13/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e137m13/femulDisplay.log b/src/Specific/solinas32_2e137m13/femulDisplay.log
deleted file mode 100644
index 656d6af0d..000000000
--- a/src/Specific/solinas32_2e137m13/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0xd * ((uint64_t)x16 * x30)));
- uint64_t x34 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((uint64_t)x15 * x19)))))) + (0xd * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0xd * (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29)))));
- uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0xd * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
- uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0xd * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0xd * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- uint64_t x39 = (((uint64_t)x5 * x19) + (0xd * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- uint32_t x40 = (uint32_t) (x39 >> 0x12);
- uint32_t x41 = ((uint32_t)x39 & 0x3ffff);
- uint64_t x42 = (x40 + x38);
- uint32_t x43 = (uint32_t) (x42 >> 0x11);
- uint32_t x44 = ((uint32_t)x42 & 0x1ffff);
- uint64_t x45 = (x43 + x37);
- uint32_t x46 = (uint32_t) (x45 >> 0x11);
- uint32_t x47 = ((uint32_t)x45 & 0x1ffff);
- uint64_t x48 = (x46 + x36);
- uint32_t x49 = (uint32_t) (x48 >> 0x11);
- uint32_t x50 = ((uint32_t)x48 & 0x1ffff);
- uint64_t x51 = (x49 + x35);
- uint32_t x52 = (uint32_t) (x51 >> 0x11);
- uint32_t x53 = ((uint32_t)x51 & 0x1ffff);
- uint64_t x54 = (x52 + x34);
- uint32_t x55 = (uint32_t) (x54 >> 0x11);
- uint32_t x56 = ((uint32_t)x54 & 0x1ffff);
- uint64_t x57 = (x55 + x33);
- uint32_t x58 = (uint32_t) (x57 >> 0x11);
- uint32_t x59 = ((uint32_t)x57 & 0x1ffff);
- uint64_t x60 = (x58 + x32);
- uint32_t x61 = (uint32_t) (x60 >> 0x11);
- uint32_t x62 = ((uint32_t)x60 & 0x1ffff);
- uint32_t x63 = (x41 + (0xd * x61));
- uint32_t x64 = (x63 >> 0x12);
- uint32_t x65 = (x63 & 0x3ffff);
- uint32_t x66 = (x64 + x44);
- uint32_t x67 = (x66 >> 0x11);
- uint32_t x68 = (x66 & 0x1ffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13/femulDisplay.v b/src/Specific/solinas32_2e137m13/femulDisplay.v
deleted file mode 100644
index 2cbe850b1..000000000
--- a/src/Specific/solinas32_2e137m13/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e137m13.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e137m13/fesquare.c b/src/Specific/solinas32_2e137m13/fesquare.c
deleted file mode 100644
index 95472900d..000000000
--- a/src/Specific/solinas32_2e137m13/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xd * ((uint64_t)x13 * x13)));
- { uint64_t x17 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xd * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xd * (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12)))));
- { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xd * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
- { uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xd * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xd * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- { uint64_t x22 = (((uint64_t)x2 * x2) + (0xd * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- { uint32_t x23 = (uint32_t) (x22 >> 0x12);
- { uint32_t x24 = ((uint32_t)x22 & 0x3ffff);
- { uint64_t x25 = (x23 + x21);
- { uint32_t x26 = (uint32_t) (x25 >> 0x11);
- { uint32_t x27 = ((uint32_t)x25 & 0x1ffff);
- { uint64_t x28 = (x26 + x20);
- { uint32_t x29 = (uint32_t) (x28 >> 0x11);
- { uint32_t x30 = ((uint32_t)x28 & 0x1ffff);
- { uint64_t x31 = (x29 + x19);
- { uint32_t x32 = (uint32_t) (x31 >> 0x11);
- { uint32_t x33 = ((uint32_t)x31 & 0x1ffff);
- { uint64_t x34 = (x32 + x18);
- { uint32_t x35 = (uint32_t) (x34 >> 0x11);
- { uint32_t x36 = ((uint32_t)x34 & 0x1ffff);
- { uint64_t x37 = (x35 + x17);
- { uint32_t x38 = (uint32_t) (x37 >> 0x11);
- { uint32_t x39 = ((uint32_t)x37 & 0x1ffff);
- { uint64_t x40 = (x38 + x16);
- { uint32_t x41 = (uint32_t) (x40 >> 0x11);
- { uint32_t x42 = ((uint32_t)x40 & 0x1ffff);
- { uint64_t x43 = (x41 + x15);
- { uint32_t x44 = (uint32_t) (x43 >> 0x11);
- { uint32_t x45 = ((uint32_t)x43 & 0x1ffff);
- { uint32_t x46 = (x24 + (0xd * x44));
- { uint32_t x47 = (x46 >> 0x12);
- { uint32_t x48 = (x46 & 0x3ffff);
- { uint32_t x49 = (x47 + x27);
- { uint32_t x50 = (x49 >> 0x11);
- { uint32_t x51 = (x49 & 0x1ffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e137m13/fesquare.v b/src/Specific/solinas32_2e137m13/fesquare.v
deleted file mode 100644
index dc0b06e9d..000000000
--- a/src/Specific/solinas32_2e137m13/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e137m13/fesquareDisplay.log b/src/Specific/solinas32_2e137m13/fesquareDisplay.log
deleted file mode 100644
index 5a352c69d..000000000
--- a/src/Specific/solinas32_2e137m13/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xd * ((uint64_t)x13 * x13)));
- uint64_t x17 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xd * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xd * (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12)))));
- uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xd * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
- uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xd * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xd * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- uint64_t x22 = (((uint64_t)x2 * x2) + (0xd * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- uint32_t x23 = (uint32_t) (x22 >> 0x12);
- uint32_t x24 = ((uint32_t)x22 & 0x3ffff);
- uint64_t x25 = (x23 + x21);
- uint32_t x26 = (uint32_t) (x25 >> 0x11);
- uint32_t x27 = ((uint32_t)x25 & 0x1ffff);
- uint64_t x28 = (x26 + x20);
- uint32_t x29 = (uint32_t) (x28 >> 0x11);
- uint32_t x30 = ((uint32_t)x28 & 0x1ffff);
- uint64_t x31 = (x29 + x19);
- uint32_t x32 = (uint32_t) (x31 >> 0x11);
- uint32_t x33 = ((uint32_t)x31 & 0x1ffff);
- uint64_t x34 = (x32 + x18);
- uint32_t x35 = (uint32_t) (x34 >> 0x11);
- uint32_t x36 = ((uint32_t)x34 & 0x1ffff);
- uint64_t x37 = (x35 + x17);
- uint32_t x38 = (uint32_t) (x37 >> 0x11);
- uint32_t x39 = ((uint32_t)x37 & 0x1ffff);
- uint64_t x40 = (x38 + x16);
- uint32_t x41 = (uint32_t) (x40 >> 0x11);
- uint32_t x42 = ((uint32_t)x40 & 0x1ffff);
- uint64_t x43 = (x41 + x15);
- uint32_t x44 = (uint32_t) (x43 >> 0x11);
- uint32_t x45 = ((uint32_t)x43 & 0x1ffff);
- uint32_t x46 = (x24 + (0xd * x44));
- uint32_t x47 = (x46 >> 0x12);
- uint32_t x48 = (x46 & 0x3ffff);
- uint32_t x49 = (x47 + x27);
- uint32_t x50 = (x49 >> 0x11);
- uint32_t x51 = (x49 & 0x1ffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13/fesquareDisplay.v b/src/Specific/solinas32_2e137m13/fesquareDisplay.v
deleted file mode 100644
index 77ae64260..000000000
--- a/src/Specific/solinas32_2e137m13/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e137m13.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e137m13/fesub.c b/src/Specific/solinas32_2e137m13/fesub.c
deleted file mode 100644
index 7023b2f34..000000000
--- a/src/Specific/solinas32_2e137m13/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0x7ffe6 + x5) - x19);
- out[1] = ((0x3fffe + x7) - x21);
- out[2] = ((0x3fffe + x9) - x23);
- out[3] = ((0x3fffe + x11) - x25);
- out[4] = ((0x3fffe + x13) - x27);
- out[5] = ((0x3fffe + x15) - x29);
- out[6] = ((0x3fffe + x17) - x31);
- out[7] = ((0x3fffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e137m13/fesub.v b/src/Specific/solinas32_2e137m13/fesub.v
deleted file mode 100644
index 0b736c80a..000000000
--- a/src/Specific/solinas32_2e137m13/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e137m13/fesubDisplay.log b/src/Specific/solinas32_2e137m13/fesubDisplay.log
deleted file mode 100644
index 5f17ed0c7..000000000
--- a/src/Specific/solinas32_2e137m13/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x3fffe + x16) - x30), ((0x3fffe + x17) - x31), ((0x3fffe + x15) - x29), ((0x3fffe + x13) - x27), ((0x3fffe + x11) - x25), ((0x3fffe + x9) - x23), ((0x3fffe + x7) - x21), ((0x7ffe6 + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13/fesubDisplay.v b/src/Specific/solinas32_2e137m13/fesubDisplay.v
deleted file mode 100644
index 06baff9e9..000000000
--- a/src/Specific/solinas32_2e137m13/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e137m13.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e137m13/freeze.c b/src/Specific/solinas32_2e137m13/freeze.c
deleted file mode 100644
index 41ddb9b33..000000000
--- a/src/Specific/solinas32_2e137m13/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fff3);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1ffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x1ffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x1ffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1ffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0x3fff3);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0x1ffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0x1ffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0x1ffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0x1ffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0x1ffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0x1ffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0x1ffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e137m13/freeze.v b/src/Specific/solinas32_2e137m13/freeze.v
deleted file mode 100644
index c1dc0722c..000000000
--- a/src/Specific/solinas32_2e137m13/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e137m13/freezeDisplay.log b/src/Specific/solinas32_2e137m13/freezeDisplay.log
deleted file mode 100644
index 38ee901dc..000000000
--- a/src/Specific/solinas32_2e137m13/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fff3);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x1ffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x1ffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x1ffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x1ffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x1ffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0x3fff3);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0x1ffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0x1ffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0x1ffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0x1ffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0x1ffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0x1ffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0x1ffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13/freezeDisplay.v b/src/Specific/solinas32_2e137m13/freezeDisplay.v
deleted file mode 100644
index db6a7cccf..000000000
--- a/src/Specific/solinas32_2e137m13/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e137m13.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e137m13/py_interpreter.sh b/src/Specific/solinas32_2e137m13/py_interpreter.sh
deleted file mode 100755
index 7811ad567..000000000
--- a/src/Specific/solinas32_2e137m13/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**137 - 13' -Dmodulus_bytes='17.125' -Da24='121665'
diff --git a/src/Specific/solinas32_2e137m13_5limbs/CurveParameters.v b/src/Specific/solinas32_2e137m13_5limbs/CurveParameters.v
new file mode 100644
index 000000000..5ef636ee6
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^137 - 13
+Base: 27.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 27 + 2/5;
+ bitwidth := 32;
+ s := 2^137;
+ c := [(1, 13)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/Synthesis.v b/src/Specific/solinas32_2e137m13_5limbs/Synthesis.v
new file mode 100644
index 000000000..1ae2b5e8a
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/compiler.sh b/src/Specific/solinas32_2e137m13_5limbs/compiler.sh
new file mode 100755
index 000000000..f12151ddc
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13_5limbs/compilerxx.sh b/src/Specific/solinas32_2e137m13_5limbs/compilerxx.sh
new file mode 100755
index 000000000..4a1ef8abf
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13_5limbs/feadd.v b/src/Specific/solinas32_2e137m13_5limbs/feadd.v
new file mode 100644
index 000000000..a96a3c0b2
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/feaddDisplay.v b/src/Specific/solinas32_2e137m13_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..6db5b05c1
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/femul.v b/src/Specific/solinas32_2e137m13_5limbs/femul.v
new file mode 100644
index 000000000..cdb99846f
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/femulDisplay.v b/src/Specific/solinas32_2e137m13_5limbs/femulDisplay.v
new file mode 100644
index 000000000..41cc6427e
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesquare.v b/src/Specific/solinas32_2e137m13_5limbs/fesquare.v
new file mode 100644
index 000000000..638ea50ca
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesquareDisplay.v b/src/Specific/solinas32_2e137m13_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..60e0af4a5
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesub.v b/src/Specific/solinas32_2e137m13_5limbs/fesub.v
new file mode 100644
index 000000000..f805167fb
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.v b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..d84d2913e
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/freeze.v b/src/Specific/solinas32_2e137m13_5limbs/freeze.v
new file mode 100644
index 000000000..882f51e21
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.v b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..081063ba1
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e137m13_5limbs/py_interpreter.sh b/src/Specific/solinas32_2e137m13_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..7761fe281
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**137 - 13' -Dmodulus_bytes='27.4' -Da24='121665'
diff --git a/src/Specific/solinas32_2e137m13_6limbs/CurveParameters.v b/src/Specific/solinas32_2e137m13_6limbs/CurveParameters.v
new file mode 100644
index 000000000..759473989
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^137 - 13
+Base: 22 + 5/6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 22 + 5/6;
+ bitwidth := 32;
+ s := 2^137;
+ c := [(1, 13)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/Synthesis.v b/src/Specific/solinas32_2e137m13_6limbs/Synthesis.v
new file mode 100644
index 000000000..fd28064d8
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/compiler.sh b/src/Specific/solinas32_2e137m13_6limbs/compiler.sh
new file mode 100755
index 000000000..27b77471a
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13_6limbs/compilerxx.sh b/src/Specific/solinas32_2e137m13_6limbs/compilerxx.sh
new file mode 100755
index 000000000..5288d0010
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas32_2e137m13_6limbs/feadd.v b/src/Specific/solinas32_2e137m13_6limbs/feadd.v
new file mode 100644
index 000000000..b91a478ea
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e137m13_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..59430a2d6
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/femul.v b/src/Specific/solinas32_2e137m13_6limbs/femul.v
new file mode 100644
index 000000000..30568dd61
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/femulDisplay.v b/src/Specific/solinas32_2e137m13_6limbs/femulDisplay.v
new file mode 100644
index 000000000..d41c18535
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesquare.v b/src/Specific/solinas32_2e137m13_6limbs/fesquare.v
new file mode 100644
index 000000000..1ecf8a3f1
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e137m13_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5339cbee3
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesub.v b/src/Specific/solinas32_2e137m13_6limbs/fesub.v
new file mode 100644
index 000000000..39d9e1b90
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..2a6944117
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/freeze.v b/src/Specific/solinas32_2e137m13_6limbs/freeze.v
new file mode 100644
index 000000000..745aa2fb7
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..862bb7dc9
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e137m13_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e137m13_6limbs/py_interpreter.sh b/src/Specific/solinas32_2e137m13_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..4e1773a4a
--- /dev/null
+++ b/src/Specific/solinas32_2e137m13_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**137 - 13' -Dmodulus_bytes='22 + 5/6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e140m27/Synthesis.v b/src/Specific/solinas32_2e140m27/Synthesis.v
deleted file mode 100644
index 3ae0364e9..000000000
--- a/src/Specific/solinas32_2e140m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e140m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e140m27/feadd.c b/src/Specific/solinas32_2e140m27/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e140m27/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e140m27/feadd.v b/src/Specific/solinas32_2e140m27/feadd.v
deleted file mode 100644
index a9a53093d..000000000
--- a/src/Specific/solinas32_2e140m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e140m27/feaddDisplay.log b/src/Specific/solinas32_2e140m27/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e140m27/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27/feaddDisplay.v b/src/Specific/solinas32_2e140m27/feaddDisplay.v
deleted file mode 100644
index 7aac0af29..000000000
--- a/src/Specific/solinas32_2e140m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e140m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e140m27/femul.c b/src/Specific/solinas32_2e140m27/femul.c
deleted file mode 100644
index f8c7f04fd..000000000
--- a/src/Specific/solinas32_2e140m27/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x1b * ((uint64_t)x12 * x22)));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x1b * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x1b * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0x1b * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- { uint64_t x30 = (x29 >> 0x18);
- { uint32_t x31 = ((uint32_t)x29 & 0xffffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x17);
- { uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
- { uint64_t x35 = (x33 + x27);
- { uint64_t x36 = (x35 >> 0x17);
- { uint32_t x37 = ((uint32_t)x35 & 0x7fffff);
- { uint64_t x38 = (x36 + x26);
- { uint64_t x39 = (x38 >> 0x18);
- { uint32_t x40 = ((uint32_t)x38 & 0xffffff);
- { uint64_t x41 = (x39 + x25);
- { uint32_t x42 = (uint32_t) (x41 >> 0x17);
- { uint32_t x43 = ((uint32_t)x41 & 0x7fffff);
- { uint64_t x44 = (x42 + x24);
- { uint32_t x45 = (uint32_t) (x44 >> 0x17);
- { uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
- { uint64_t x47 = (x31 + ((uint64_t)0x1b * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x18);
- { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x17);
- { uint32_t x52 = (x50 & 0x7fffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e140m27/femul.v b/src/Specific/solinas32_2e140m27/femul.v
deleted file mode 100644
index 5e74f3c0f..000000000
--- a/src/Specific/solinas32_2e140m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e140m27/femulDisplay.log b/src/Specific/solinas32_2e140m27/femulDisplay.log
deleted file mode 100644
index 27372ed26..000000000
--- a/src/Specific/solinas32_2e140m27/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x1b * ((uint64_t)x12 * x22)));
- uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x1b * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x1b * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0x1b * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- uint64_t x30 = (x29 >> 0x18);
- uint32_t x31 = ((uint32_t)x29 & 0xffffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x17);
- uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
- uint64_t x35 = (x33 + x27);
- uint64_t x36 = (x35 >> 0x17);
- uint32_t x37 = ((uint32_t)x35 & 0x7fffff);
- uint64_t x38 = (x36 + x26);
- uint64_t x39 = (x38 >> 0x18);
- uint32_t x40 = ((uint32_t)x38 & 0xffffff);
- uint64_t x41 = (x39 + x25);
- uint32_t x42 = (uint32_t) (x41 >> 0x17);
- uint32_t x43 = ((uint32_t)x41 & 0x7fffff);
- uint64_t x44 = (x42 + x24);
- uint32_t x45 = (uint32_t) (x44 >> 0x17);
- uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
- uint64_t x47 = (x31 + ((uint64_t)0x1b * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x18);
- uint32_t x49 = ((uint32_t)x47 & 0xffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x17);
- uint32_t x52 = (x50 & 0x7fffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27/femulDisplay.v b/src/Specific/solinas32_2e140m27/femulDisplay.v
deleted file mode 100644
index 7df537684..000000000
--- a/src/Specific/solinas32_2e140m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e140m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e140m27/fesquare.c b/src/Specific/solinas32_2e140m27/fesquare.c
deleted file mode 100644
index a7149e90e..000000000
--- a/src/Specific/solinas32_2e140m27/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * ((uint64_t)x9 * x9)));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1b * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0x1b * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- { uint64_t x17 = (x16 >> 0x18);
- { uint32_t x18 = ((uint32_t)x16 & 0xffffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x17);
- { uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
- { uint64_t x22 = (x20 + x14);
- { uint64_t x23 = (x22 >> 0x17);
- { uint32_t x24 = ((uint32_t)x22 & 0x7fffff);
- { uint64_t x25 = (x23 + x13);
- { uint64_t x26 = (x25 >> 0x18);
- { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
- { uint64_t x28 = (x26 + x12);
- { uint32_t x29 = (uint32_t) (x28 >> 0x17);
- { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- { uint64_t x31 = (x29 + x11);
- { uint32_t x32 = (uint32_t) (x31 >> 0x17);
- { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- { uint64_t x34 = (x18 + ((uint64_t)0x1b * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x18);
- { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x17);
- { uint32_t x39 = (x37 & 0x7fffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e140m27/fesquare.v b/src/Specific/solinas32_2e140m27/fesquare.v
deleted file mode 100644
index abe7415af..000000000
--- a/src/Specific/solinas32_2e140m27/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e140m27/fesquareDisplay.log b/src/Specific/solinas32_2e140m27/fesquareDisplay.log
deleted file mode 100644
index 3f805555c..000000000
--- a/src/Specific/solinas32_2e140m27/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * ((uint64_t)x9 * x9)));
- uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1b * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0x1b * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- uint64_t x17 = (x16 >> 0x18);
- uint32_t x18 = ((uint32_t)x16 & 0xffffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x17);
- uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
- uint64_t x22 = (x20 + x14);
- uint64_t x23 = (x22 >> 0x17);
- uint32_t x24 = ((uint32_t)x22 & 0x7fffff);
- uint64_t x25 = (x23 + x13);
- uint64_t x26 = (x25 >> 0x18);
- uint32_t x27 = ((uint32_t)x25 & 0xffffff);
- uint64_t x28 = (x26 + x12);
- uint32_t x29 = (uint32_t) (x28 >> 0x17);
- uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- uint64_t x31 = (x29 + x11);
- uint32_t x32 = (uint32_t) (x31 >> 0x17);
- uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- uint64_t x34 = (x18 + ((uint64_t)0x1b * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x18);
- uint32_t x36 = ((uint32_t)x34 & 0xffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x17);
- uint32_t x39 = (x37 & 0x7fffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27/fesquareDisplay.v b/src/Specific/solinas32_2e140m27/fesquareDisplay.v
deleted file mode 100644
index 7c927e5b2..000000000
--- a/src/Specific/solinas32_2e140m27/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e140m27.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e140m27/fesub.c b/src/Specific/solinas32_2e140m27/fesub.c
deleted file mode 100644
index 2fafe8f41..000000000
--- a/src/Specific/solinas32_2e140m27/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x1ffffca + x5) - x15);
- out[1] = ((0xfffffe + x7) - x17);
- out[2] = ((0xfffffe + x9) - x19);
- out[3] = ((0x1fffffe + x11) - x21);
- out[4] = ((0xfffffe + x13) - x23);
- out[5] = ((0xfffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e140m27/fesub.v b/src/Specific/solinas32_2e140m27/fesub.v
deleted file mode 100644
index d66b0da01..000000000
--- a/src/Specific/solinas32_2e140m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e140m27/fesubDisplay.log b/src/Specific/solinas32_2e140m27/fesubDisplay.log
deleted file mode 100644
index 3dc0cee98..000000000
--- a/src/Specific/solinas32_2e140m27/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0xfffffe + x12) - x22), ((0xfffffe + x13) - x23), ((0x1fffffe + x11) - x21), ((0xfffffe + x9) - x19), ((0xfffffe + x7) - x17), ((0x1ffffca + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27/fesubDisplay.v b/src/Specific/solinas32_2e140m27/fesubDisplay.v
deleted file mode 100644
index 33d3604d9..000000000
--- a/src/Specific/solinas32_2e140m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e140m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e140m27/freeze.c b/src/Specific/solinas32_2e140m27/freeze.c
deleted file mode 100644
index 493e08507..000000000
--- a/src/Specific/solinas32_2e140m27/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe5);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7fffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x7fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xffffe5);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x7fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x7fffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0xffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x7fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x7fffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e140m27/freeze.v b/src/Specific/solinas32_2e140m27/freeze.v
deleted file mode 100644
index 985ce6dec..000000000
--- a/src/Specific/solinas32_2e140m27/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e140m27/freezeDisplay.log b/src/Specific/solinas32_2e140m27/freezeDisplay.log
deleted file mode 100644
index 5fcd4aff9..000000000
--- a/src/Specific/solinas32_2e140m27/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe5);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7fffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x7fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xffffe5);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x7fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x7fffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0xffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x7fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x7fffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e140m27/freezeDisplay.v b/src/Specific/solinas32_2e140m27/freezeDisplay.v
deleted file mode 100644
index c8812a5c1..000000000
--- a/src/Specific/solinas32_2e140m27/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e140m27.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e140m27/CurveParameters.v b/src/Specific/solinas32_2e140m27_6limbs/CurveParameters.v
index 57672aa0b..57672aa0b 100644
--- a/src/Specific/solinas32_2e140m27/CurveParameters.v
+++ b/src/Specific/solinas32_2e140m27_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e140m27_6limbs/Synthesis.v b/src/Specific/solinas32_2e140m27_6limbs/Synthesis.v
new file mode 100644
index 000000000..7af97b96a
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e140m27/compiler.sh b/src/Specific/solinas32_2e140m27_6limbs/compiler.sh
index 992a22eae..992a22eae 100755
--- a/src/Specific/solinas32_2e140m27/compiler.sh
+++ b/src/Specific/solinas32_2e140m27_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e140m27/compilerxx.sh b/src/Specific/solinas32_2e140m27_6limbs/compilerxx.sh
index fbc7ce823..fbc7ce823 100755
--- a/src/Specific/solinas32_2e140m27/compilerxx.sh
+++ b/src/Specific/solinas32_2e140m27_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e140m27_6limbs/feadd.v b/src/Specific/solinas32_2e140m27_6limbs/feadd.v
new file mode 100644
index 000000000..42fc7f636
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e140m27_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..78f9b9dfa
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/femul.v b/src/Specific/solinas32_2e140m27_6limbs/femul.v
new file mode 100644
index 000000000..722f2ac89
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.v b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.v
new file mode 100644
index 000000000..34f6742ce
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/fesquare.v b/src/Specific/solinas32_2e140m27_6limbs/fesquare.v
new file mode 100644
index 000000000..64f9ab13c
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e140m27_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..84e87f777
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/fesub.v b/src/Specific/solinas32_2e140m27_6limbs/fesub.v
new file mode 100644
index 000000000..61f7ef5e2
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e140m27_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..fc7015d1a
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/freeze.v b/src/Specific/solinas32_2e140m27_6limbs/freeze.v
new file mode 100644
index 000000000..50f3d99ec
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e140m27_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e140m27_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..eeba032da
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e140m27/py_interpreter.sh b/src/Specific/solinas32_2e140m27_6limbs/py_interpreter.sh
index ee391a528..ee391a528 100755
--- a/src/Specific/solinas32_2e140m27/py_interpreter.sh
+++ b/src/Specific/solinas32_2e140m27_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e140m27_7limbs/CurveParameters.v b/src/Specific/solinas32_2e140m27_7limbs/CurveParameters.v
new file mode 100644
index 000000000..ee354aeae
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^140 - 27
+Base: 20
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 20;
+ bitwidth := 32;
+ s := 2^140;
+ c := [(1, 27)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/Synthesis.v b/src/Specific/solinas32_2e140m27_7limbs/Synthesis.v
new file mode 100644
index 000000000..1930d783c
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/compiler.sh b/src/Specific/solinas32_2e140m27_7limbs/compiler.sh
new file mode 100755
index 000000000..a5cc2f129
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,20,20,20,20}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<140) - 27' "$@"
diff --git a/src/Specific/solinas32_2e140m27_7limbs/compilerxx.sh b/src/Specific/solinas32_2e140m27_7limbs/compilerxx.sh
new file mode 100755
index 000000000..8bbb19598
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,20,20,20,20}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<140) - 27' "$@"
diff --git a/src/Specific/solinas32_2e140m27_7limbs/feadd.v b/src/Specific/solinas32_2e140m27_7limbs/feadd.v
new file mode 100644
index 000000000..5f57a74e9
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..c4d56965c
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/femul.v b/src/Specific/solinas32_2e140m27_7limbs/femul.v
new file mode 100644
index 000000000..3c93b56a2
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.v b/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.v
new file mode 100644
index 000000000..ead68f42b
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesquare.v b/src/Specific/solinas32_2e140m27_7limbs/fesquare.v
new file mode 100644
index 000000000..f396d8191
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bf19378b3
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesub.v b/src/Specific/solinas32_2e140m27_7limbs/fesub.v
new file mode 100644
index 000000000..1d515a51b
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..8e4cdc7e7
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/freeze.v b/src/Specific/solinas32_2e140m27_7limbs/freeze.v
new file mode 100644
index 000000000..1cbdf3568
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..765b56c1d
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e140m27_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e140m27_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e140m27_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..a577eb32d
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**140 - 27' -Dmodulus_bytes='20' -Da24='121665'
diff --git a/src/Specific/solinas32_2e141m9/Synthesis.v b/src/Specific/solinas32_2e141m9/Synthesis.v
deleted file mode 100644
index 8a206c247..000000000
--- a/src/Specific/solinas32_2e141m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e141m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e141m9/feadd.c b/src/Specific/solinas32_2e141m9/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e141m9/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e141m9/feadd.v b/src/Specific/solinas32_2e141m9/feadd.v
deleted file mode 100644
index 4d44d07ad..000000000
--- a/src/Specific/solinas32_2e141m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e141m9/feaddDisplay.log b/src/Specific/solinas32_2e141m9/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e141m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9/feaddDisplay.v b/src/Specific/solinas32_2e141m9/feaddDisplay.v
deleted file mode 100644
index 9b389da6a..000000000
--- a/src/Specific/solinas32_2e141m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e141m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e141m9/femul.c b/src/Specific/solinas32_2e141m9/femul.c
deleted file mode 100644
index bfc1b2f93..000000000
--- a/src/Specific/solinas32_2e141m9/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x9 * (0x2 * ((uint64_t)x12 * x22))));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x9 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x9 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x9 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0x9 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
- { uint64_t x30 = (x29 >> 0x18);
- { uint32_t x31 = ((uint32_t)x29 & 0xffffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x17);
- { uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
- { uint64_t x35 = (x33 + x27);
- { uint32_t x36 = (uint32_t) (x35 >> 0x18);
- { uint32_t x37 = ((uint32_t)x35 & 0xffffff);
- { uint64_t x38 = (x36 + x26);
- { uint32_t x39 = (uint32_t) (x38 >> 0x17);
- { uint32_t x40 = ((uint32_t)x38 & 0x7fffff);
- { uint64_t x41 = (x39 + x25);
- { uint32_t x42 = (uint32_t) (x41 >> 0x18);
- { uint32_t x43 = ((uint32_t)x41 & 0xffffff);
- { uint64_t x44 = (x42 + x24);
- { uint32_t x45 = (uint32_t) (x44 >> 0x17);
- { uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
- { uint64_t x47 = (x31 + ((uint64_t)0x9 * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x18);
- { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x17);
- { uint32_t x52 = (x50 & 0x7fffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e141m9/femul.v b/src/Specific/solinas32_2e141m9/femul.v
deleted file mode 100644
index 281ef19b6..000000000
--- a/src/Specific/solinas32_2e141m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e141m9/femulDisplay.log b/src/Specific/solinas32_2e141m9/femulDisplay.log
deleted file mode 100644
index 1dae1e57e..000000000
--- a/src/Specific/solinas32_2e141m9/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x9 * (0x2 * ((uint64_t)x12 * x22))));
- uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x9 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x9 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x9 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0x9 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
- uint64_t x30 = (x29 >> 0x18);
- uint32_t x31 = ((uint32_t)x29 & 0xffffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x17);
- uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
- uint64_t x35 = (x33 + x27);
- uint32_t x36 = (uint32_t) (x35 >> 0x18);
- uint32_t x37 = ((uint32_t)x35 & 0xffffff);
- uint64_t x38 = (x36 + x26);
- uint32_t x39 = (uint32_t) (x38 >> 0x17);
- uint32_t x40 = ((uint32_t)x38 & 0x7fffff);
- uint64_t x41 = (x39 + x25);
- uint32_t x42 = (uint32_t) (x41 >> 0x18);
- uint32_t x43 = ((uint32_t)x41 & 0xffffff);
- uint64_t x44 = (x42 + x24);
- uint32_t x45 = (uint32_t) (x44 >> 0x17);
- uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
- uint64_t x47 = (x31 + ((uint64_t)0x9 * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x18);
- uint32_t x49 = ((uint32_t)x47 & 0xffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x17);
- uint32_t x52 = (x50 & 0x7fffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9/femulDisplay.v b/src/Specific/solinas32_2e141m9/femulDisplay.v
deleted file mode 100644
index fad1a0bac..000000000
--- a/src/Specific/solinas32_2e141m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e141m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e141m9/fesquare.c b/src/Specific/solinas32_2e141m9/fesquare.c
deleted file mode 100644
index a0f82da0d..000000000
--- a/src/Specific/solinas32_2e141m9/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (0x2 * ((uint64_t)x9 * x9))));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
- { uint64_t x17 = (x16 >> 0x18);
- { uint32_t x18 = ((uint32_t)x16 & 0xffffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x17);
- { uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
- { uint64_t x22 = (x20 + x14);
- { uint32_t x23 = (uint32_t) (x22 >> 0x18);
- { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
- { uint64_t x25 = (x23 + x13);
- { uint32_t x26 = (uint32_t) (x25 >> 0x17);
- { uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
- { uint64_t x28 = (x26 + x12);
- { uint32_t x29 = (uint32_t) (x28 >> 0x18);
- { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
- { uint64_t x31 = (x29 + x11);
- { uint32_t x32 = (uint32_t) (x31 >> 0x17);
- { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- { uint64_t x34 = (x18 + ((uint64_t)0x9 * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x18);
- { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x17);
- { uint32_t x39 = (x37 & 0x7fffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e141m9/fesquare.v b/src/Specific/solinas32_2e141m9/fesquare.v
deleted file mode 100644
index 356556c06..000000000
--- a/src/Specific/solinas32_2e141m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e141m9/fesquareDisplay.log b/src/Specific/solinas32_2e141m9/fesquareDisplay.log
deleted file mode 100644
index 44c86d48c..000000000
--- a/src/Specific/solinas32_2e141m9/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (0x2 * ((uint64_t)x9 * x9))));
- uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
- uint64_t x17 = (x16 >> 0x18);
- uint32_t x18 = ((uint32_t)x16 & 0xffffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x17);
- uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
- uint64_t x22 = (x20 + x14);
- uint32_t x23 = (uint32_t) (x22 >> 0x18);
- uint32_t x24 = ((uint32_t)x22 & 0xffffff);
- uint64_t x25 = (x23 + x13);
- uint32_t x26 = (uint32_t) (x25 >> 0x17);
- uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
- uint64_t x28 = (x26 + x12);
- uint32_t x29 = (uint32_t) (x28 >> 0x18);
- uint32_t x30 = ((uint32_t)x28 & 0xffffff);
- uint64_t x31 = (x29 + x11);
- uint32_t x32 = (uint32_t) (x31 >> 0x17);
- uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- uint64_t x34 = (x18 + ((uint64_t)0x9 * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x18);
- uint32_t x36 = ((uint32_t)x34 & 0xffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x17);
- uint32_t x39 = (x37 & 0x7fffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9/fesquareDisplay.v b/src/Specific/solinas32_2e141m9/fesquareDisplay.v
deleted file mode 100644
index 3b1d3f111..000000000
--- a/src/Specific/solinas32_2e141m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e141m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e141m9/fesub.c b/src/Specific/solinas32_2e141m9/fesub.c
deleted file mode 100644
index 8c928bced..000000000
--- a/src/Specific/solinas32_2e141m9/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x1ffffee + x5) - x15);
- out[1] = ((0xfffffe + x7) - x17);
- out[2] = ((0x1fffffe + x9) - x19);
- out[3] = ((0xfffffe + x11) - x21);
- out[4] = ((0x1fffffe + x13) - x23);
- out[5] = ((0xfffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e141m9/fesub.v b/src/Specific/solinas32_2e141m9/fesub.v
deleted file mode 100644
index a21dd98fa..000000000
--- a/src/Specific/solinas32_2e141m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e141m9/fesubDisplay.log b/src/Specific/solinas32_2e141m9/fesubDisplay.log
deleted file mode 100644
index 45d58a6d4..000000000
--- a/src/Specific/solinas32_2e141m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0xfffffe + x12) - x22), ((0x1fffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0x1fffffe + x9) - x19), ((0xfffffe + x7) - x17), ((0x1ffffee + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9/fesubDisplay.v b/src/Specific/solinas32_2e141m9/fesubDisplay.v
deleted file mode 100644
index 5a474a4b1..000000000
--- a/src/Specific/solinas32_2e141m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e141m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e141m9/freeze.c b/src/Specific/solinas32_2e141m9/freeze.c
deleted file mode 100644
index 24e968a49..000000000
--- a/src/Specific/solinas32_2e141m9/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff7);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0xfffff7);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x7fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0xffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x7fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0xffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x7fffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e141m9/freeze.v b/src/Specific/solinas32_2e141m9/freeze.v
deleted file mode 100644
index 74dd57ef7..000000000
--- a/src/Specific/solinas32_2e141m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e141m9/freezeDisplay.log b/src/Specific/solinas32_2e141m9/freezeDisplay.log
deleted file mode 100644
index d4ea4280b..000000000
--- a/src/Specific/solinas32_2e141m9/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff7);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0xfffff7);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x7fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0xffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x7fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0xffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x7fffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9/freezeDisplay.v b/src/Specific/solinas32_2e141m9/freezeDisplay.v
deleted file mode 100644
index ccb04a579..000000000
--- a/src/Specific/solinas32_2e141m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e141m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e141m9/CurveParameters.v b/src/Specific/solinas32_2e141m9_6limbs/CurveParameters.v
index 8c12f0251..8c12f0251 100644
--- a/src/Specific/solinas32_2e141m9/CurveParameters.v
+++ b/src/Specific/solinas32_2e141m9_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e141m9_6limbs/Synthesis.v b/src/Specific/solinas32_2e141m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..2d259843b
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e141m9/compiler.sh b/src/Specific/solinas32_2e141m9_6limbs/compiler.sh
index 25565c8da..25565c8da 100755
--- a/src/Specific/solinas32_2e141m9/compiler.sh
+++ b/src/Specific/solinas32_2e141m9_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e141m9/compilerxx.sh b/src/Specific/solinas32_2e141m9_6limbs/compilerxx.sh
index d8003bb30..d8003bb30 100755
--- a/src/Specific/solinas32_2e141m9/compilerxx.sh
+++ b/src/Specific/solinas32_2e141m9_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e141m9_6limbs/feadd.v b/src/Specific/solinas32_2e141m9_6limbs/feadd.v
new file mode 100644
index 000000000..e51a5e5c8
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..6f2226cfa
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/femul.v b/src/Specific/solinas32_2e141m9_6limbs/femul.v
new file mode 100644
index 000000000..051513f3f
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.v b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..39615770c
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesquare.v b/src/Specific/solinas32_2e141m9_6limbs/fesquare.v
new file mode 100644
index 000000000..3ef02fdaa
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..950c82063
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesub.v b/src/Specific/solinas32_2e141m9_6limbs/fesub.v
new file mode 100644
index 000000000..02abceb3d
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..c6cba461a
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/freeze.v b/src/Specific/solinas32_2e141m9_6limbs/freeze.v
new file mode 100644
index 000000000..eb4d34558
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..c56e82158
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e141m9/py_interpreter.sh b/src/Specific/solinas32_2e141m9_6limbs/py_interpreter.sh
index d7b3f8f9d..d7b3f8f9d 100755
--- a/src/Specific/solinas32_2e141m9/py_interpreter.sh
+++ b/src/Specific/solinas32_2e141m9_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e141m9_7limbs/CurveParameters.v b/src/Specific/solinas32_2e141m9_7limbs/CurveParameters.v
new file mode 100644
index 000000000..64ad24267
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^141 - 9
+Base: 20 + 1/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 20 + 1/7;
+ bitwidth := 32;
+ s := 2^141;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/Synthesis.v b/src/Specific/solinas32_2e141m9_7limbs/Synthesis.v
new file mode 100644
index 000000000..0aa8419a9
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/compiler.sh b/src/Specific/solinas32_2e141m9_7limbs/compiler.sh
new file mode 100755
index 000000000..3bf396152
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<141) - 9' "$@"
diff --git a/src/Specific/solinas32_2e141m9_7limbs/compilerxx.sh b/src/Specific/solinas32_2e141m9_7limbs/compilerxx.sh
new file mode 100755
index 000000000..596651cf8
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<141) - 9' "$@"
diff --git a/src/Specific/solinas32_2e141m9_7limbs/feadd.v b/src/Specific/solinas32_2e141m9_7limbs/feadd.v
new file mode 100644
index 000000000..66c8c3b34
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..3ec2bc7bd
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/femul.v b/src/Specific/solinas32_2e141m9_7limbs/femul.v
new file mode 100644
index 000000000..05eb87bb3
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.v b/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.v
new file mode 100644
index 000000000..581826e30
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesquare.v b/src/Specific/solinas32_2e141m9_7limbs/fesquare.v
new file mode 100644
index 000000000..e49645a33
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2fcab9a4d
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesub.v b/src/Specific/solinas32_2e141m9_7limbs/fesub.v
new file mode 100644
index 000000000..72184468d
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..4e0578a1c
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/freeze.v b/src/Specific/solinas32_2e141m9_7limbs/freeze.v
new file mode 100644
index 000000000..01dde236b
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..b9642c5a2
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e141m9_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e141m9_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e141m9_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..c62c46cd5
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**141 - 9' -Dmodulus_bytes='20 + 1/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e150m3/CurveParameters.v b/src/Specific/solinas32_2e150m3/CurveParameters.v
deleted file mode 100644
index ca67a36cd..000000000
--- a/src/Specific/solinas32_2e150m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^150 - 3
-Base: 30
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 5%nat;
- base := 30;
- bitwidth := 32;
- s := 2^150;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e150m3/Synthesis.v b/src/Specific/solinas32_2e150m3/Synthesis.v
deleted file mode 100644
index 09abeb630..000000000
--- a/src/Specific/solinas32_2e150m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e150m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m3/compiler.sh b/src/Specific/solinas32_2e150m3/compiler.sh
deleted file mode 100755
index db58fd3a0..000000000
--- a/src/Specific/solinas32_2e150m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3/compilerxx.sh b/src/Specific/solinas32_2e150m3/compilerxx.sh
deleted file mode 100755
index d2f0ba4b7..000000000
--- a/src/Specific/solinas32_2e150m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3/feadd.c b/src/Specific/solinas32_2e150m3/feadd.c
deleted file mode 100644
index 4db430361..000000000
--- a/src/Specific/solinas32_2e150m3/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m3/feadd.v b/src/Specific/solinas32_2e150m3/feadd.v
deleted file mode 100644
index 7bb59e6b3..000000000
--- a/src/Specific/solinas32_2e150m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m3/feaddDisplay.log b/src/Specific/solinas32_2e150m3/feaddDisplay.log
deleted file mode 100644
index eaf25ecd1..000000000
--- a/src/Specific/solinas32_2e150m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/feaddDisplay.v b/src/Specific/solinas32_2e150m3/feaddDisplay.v
deleted file mode 100644
index 59c81e8b3..000000000
--- a/src/Specific/solinas32_2e150m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e150m3/femul.c b/src/Specific/solinas32_2e150m3/femul.c
deleted file mode 100644
index a7a59c7b0..000000000
--- a/src/Specific/solinas32_2e150m3/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- { ℤ x20 = (((uint64_t)x5 * x18) +ℤ (((uint64_t)x7 * x19) +ℤ (((uint64_t)x9 * x17) +ℤ (((uint64_t)x11 * x15) +ℤ ((uint64_t)x10 * x13)))));
- { ℤ x21 = ((((uint64_t)x5 * x19) +ℤ (((uint64_t)x7 * x17) +ℤ (((uint64_t)x9 * x15) +ℤ ((uint64_t)x11 * x13)))) +ℤ (0x3 *ℤ ((uint64_t)x10 * x18)));
- { ℤ x22 = ((((uint64_t)x5 * x17) +ℤ (((uint64_t)x7 * x15) +ℤ ((uint64_t)x9 * x13))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x18) +ℤ ((uint64_t)x10 * x19))));
- { ℤ x23 = ((((uint64_t)x5 * x15) +ℤ ((uint64_t)x7 * x13)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x18) +ℤ (((uint64_t)x11 * x19) +ℤ ((uint64_t)x10 * x17)))));
- { ℤ x24 = (((uint64_t)x5 * x13) +ℤ (0x3 *ℤ (((uint64_t)x7 * x18) +ℤ (((uint64_t)x9 * x19) +ℤ (((uint64_t)x11 * x17) +ℤ ((uint64_t)x10 * x15))))));
- { uint64_t x25 = (x24 >> 0x1e);
- { uint32_t x26 = (x24 & 0x3fffffff);
- { ℤ x27 = (x25 +ℤ x23);
- { uint64_t x28 = (x27 >> 0x1e);
- { uint32_t x29 = (x27 & 0x3fffffff);
- { ℤ x30 = (x28 +ℤ x22);
- { uint64_t x31 = (x30 >> 0x1e);
- { uint32_t x32 = (x30 & 0x3fffffff);
- { ℤ x33 = (x31 +ℤ x21);
- { uint64_t x34 = (x33 >> 0x1e);
- { uint32_t x35 = (x33 & 0x3fffffff);
- { ℤ x36 = (x34 +ℤ x20);
- { uint64_t x37 = (x36 >> 0x1e);
- { uint32_t x38 = (x36 & 0x3fffffff);
- { uint64_t x39 = (x26 + (0x3 * x37));
- { uint32_t x40 = (uint32_t) (x39 >> 0x1e);
- { uint32_t x41 = ((uint32_t)x39 & 0x3fffffff);
- { uint32_t x42 = (x40 + x29);
- { uint32_t x43 = (x42 >> 0x1e);
- { uint32_t x44 = (x42 & 0x3fffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m3/femul.v b/src/Specific/solinas32_2e150m3/femul.v
deleted file mode 100644
index a708f52c5..000000000
--- a/src/Specific/solinas32_2e150m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m3/femulDisplay.log b/src/Specific/solinas32_2e150m3/femulDisplay.log
deleted file mode 100644
index 3e7830170..000000000
--- a/src/Specific/solinas32_2e150m3/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ℤ x20 = (((uint64_t)x5 * x18) +ℤ (((uint64_t)x7 * x19) +ℤ (((uint64_t)x9 * x17) +ℤ (((uint64_t)x11 * x15) +ℤ ((uint64_t)x10 * x13)))));
- ℤ x21 = ((((uint64_t)x5 * x19) +ℤ (((uint64_t)x7 * x17) +ℤ (((uint64_t)x9 * x15) +ℤ ((uint64_t)x11 * x13)))) +ℤ (0x3 *ℤ ((uint64_t)x10 * x18)));
- ℤ x22 = ((((uint64_t)x5 * x17) +ℤ (((uint64_t)x7 * x15) +ℤ ((uint64_t)x9 * x13))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x18) +ℤ ((uint64_t)x10 * x19))));
- ℤ x23 = ((((uint64_t)x5 * x15) +ℤ ((uint64_t)x7 * x13)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x18) +ℤ (((uint64_t)x11 * x19) +ℤ ((uint64_t)x10 * x17)))));
- ℤ x24 = (((uint64_t)x5 * x13) +ℤ (0x3 *ℤ (((uint64_t)x7 * x18) +ℤ (((uint64_t)x9 * x19) +ℤ (((uint64_t)x11 * x17) +ℤ ((uint64_t)x10 * x15))))));
- uint64_t x25 = (x24 >> 0x1e);
- uint32_t x26 = (x24 & 0x3fffffff);
- ℤ x27 = (x25 +ℤ x23);
- uint64_t x28 = (x27 >> 0x1e);
- uint32_t x29 = (x27 & 0x3fffffff);
- ℤ x30 = (x28 +ℤ x22);
- uint64_t x31 = (x30 >> 0x1e);
- uint32_t x32 = (x30 & 0x3fffffff);
- ℤ x33 = (x31 +ℤ x21);
- uint64_t x34 = (x33 >> 0x1e);
- uint32_t x35 = (x33 & 0x3fffffff);
- ℤ x36 = (x34 +ℤ x20);
- uint64_t x37 = (x36 >> 0x1e);
- uint32_t x38 = (x36 & 0x3fffffff);
- uint64_t x39 = (x26 + (0x3 * x37));
- uint32_t x40 = (uint32_t) (x39 >> 0x1e);
- uint32_t x41 = ((uint32_t)x39 & 0x3fffffff);
- uint32_t x42 = (x40 + x29);
- uint32_t x43 = (x42 >> 0x1e);
- uint32_t x44 = (x42 & 0x3fffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/femulDisplay.v b/src/Specific/solinas32_2e150m3/femulDisplay.v
deleted file mode 100644
index 4e0acc2b9..000000000
--- a/src/Specific/solinas32_2e150m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e150m3/fesquare.c b/src/Specific/solinas32_2e150m3/fesquare.c
deleted file mode 100644
index 239038ceb..000000000
--- a/src/Specific/solinas32_2e150m3/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { ℤ x9 = (((uint64_t)x2 * x7) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x7 * x2)))));
- { ℤ x10 = ((((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ ((uint64_t)x7 * x7)));
- { ℤ x11 = ((((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x7) +ℤ ((uint64_t)x7 * x8))));
- { ℤ x12 = ((((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x7) +ℤ (((uint64_t)x8 * x8) +ℤ ((uint64_t)x7 * x6)))));
- { ℤ x13 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x7) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ ((uint64_t)x7 * x4))))));
- { uint64_t x14 = (x13 >> 0x1e);
- { uint32_t x15 = (x13 & 0x3fffffff);
- { ℤ x16 = (x14 +ℤ x12);
- { uint64_t x17 = (x16 >> 0x1e);
- { uint32_t x18 = (x16 & 0x3fffffff);
- { ℤ x19 = (x17 +ℤ x11);
- { uint64_t x20 = (x19 >> 0x1e);
- { uint32_t x21 = (x19 & 0x3fffffff);
- { ℤ x22 = (x20 +ℤ x10);
- { uint64_t x23 = (x22 >> 0x1e);
- { uint32_t x24 = (x22 & 0x3fffffff);
- { ℤ x25 = (x23 +ℤ x9);
- { uint64_t x26 = (x25 >> 0x1e);
- { uint32_t x27 = (x25 & 0x3fffffff);
- { uint64_t x28 = (x15 + (0x3 * x26));
- { uint32_t x29 = (uint32_t) (x28 >> 0x1e);
- { uint32_t x30 = ((uint32_t)x28 & 0x3fffffff);
- { uint32_t x31 = (x29 + x18);
- { uint32_t x32 = (x31 >> 0x1e);
- { uint32_t x33 = (x31 & 0x3fffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m3/fesquare.v b/src/Specific/solinas32_2e150m3/fesquare.v
deleted file mode 100644
index 80a368398..000000000
--- a/src/Specific/solinas32_2e150m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m3/fesquareDisplay.log b/src/Specific/solinas32_2e150m3/fesquareDisplay.log
deleted file mode 100644
index c13a13134..000000000
--- a/src/Specific/solinas32_2e150m3/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- ℤ x9 = (((uint64_t)x2 * x7) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x7 * x2)))));
- ℤ x10 = ((((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ ((uint64_t)x7 * x7)));
- ℤ x11 = ((((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x7) +ℤ ((uint64_t)x7 * x8))));
- ℤ x12 = ((((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x7) +ℤ (((uint64_t)x8 * x8) +ℤ ((uint64_t)x7 * x6)))));
- ℤ x13 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x7) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ ((uint64_t)x7 * x4))))));
- uint64_t x14 = (x13 >> 0x1e);
- uint32_t x15 = (x13 & 0x3fffffff);
- ℤ x16 = (x14 +ℤ x12);
- uint64_t x17 = (x16 >> 0x1e);
- uint32_t x18 = (x16 & 0x3fffffff);
- ℤ x19 = (x17 +ℤ x11);
- uint64_t x20 = (x19 >> 0x1e);
- uint32_t x21 = (x19 & 0x3fffffff);
- ℤ x22 = (x20 +ℤ x10);
- uint64_t x23 = (x22 >> 0x1e);
- uint32_t x24 = (x22 & 0x3fffffff);
- ℤ x25 = (x23 +ℤ x9);
- uint64_t x26 = (x25 >> 0x1e);
- uint32_t x27 = (x25 & 0x3fffffff);
- uint64_t x28 = (x15 + (0x3 * x26));
- uint32_t x29 = (uint32_t) (x28 >> 0x1e);
- uint32_t x30 = ((uint32_t)x28 & 0x3fffffff);
- uint32_t x31 = (x29 + x18);
- uint32_t x32 = (x31 >> 0x1e);
- uint32_t x33 = (x31 & 0x3fffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/fesquareDisplay.v b/src/Specific/solinas32_2e150m3/fesquareDisplay.v
deleted file mode 100644
index 986c8c7ab..000000000
--- a/src/Specific/solinas32_2e150m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e150m3/fesub.c b/src/Specific/solinas32_2e150m3/fesub.c
deleted file mode 100644
index 5a5ec247a..000000000
--- a/src/Specific/solinas32_2e150m3/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
- { const uint32_t x10 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x18 = in2[4];
- { const uint32_t x19 = in2[3];
- { const uint32_t x17 = in2[2];
- { const uint32_t x15 = in2[1];
- { const uint32_t x13 = in2[0];
- out[0] = ((0x7ffffffa + x5) - x13);
- out[1] = ((0x7ffffffe + x7) - x15);
- out[2] = ((0x7ffffffe + x9) - x17);
- out[3] = ((0x7ffffffe + x11) - x19);
- out[4] = ((0x7ffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m3/fesub.v b/src/Specific/solinas32_2e150m3/fesub.v
deleted file mode 100644
index 160bb2864..000000000
--- a/src/Specific/solinas32_2e150m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m3/fesubDisplay.log b/src/Specific/solinas32_2e150m3/fesubDisplay.log
deleted file mode 100644
index 33ae90fdf..000000000
--- a/src/Specific/solinas32_2e150m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffe + x10) - x18), ((0x7ffffffe + x11) - x19), ((0x7ffffffe + x9) - x17), ((0x7ffffffe + x7) - x15), ((0x7ffffffa + x5) - x13)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/fesubDisplay.v b/src/Specific/solinas32_2e150m3/fesubDisplay.v
deleted file mode 100644
index f7f79afff..000000000
--- a/src/Specific/solinas32_2e150m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e150m3/freeze.c b/src/Specific/solinas32_2e150m3/freeze.c
deleted file mode 100644
index 67cb60d3c..000000000
--- a/src/Specific/solinas32_2e150m3/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint32_t out[5], const uint32_t in1[5]) {
- { const uint32_t x7 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffd);
- { uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffff);
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffff);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffff);
- { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & 0x3ffffffd);
- { uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint32_t x29 = (x24 & 0x3fffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint32_t x33 = (x24 & 0x3fffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint32_t x37 = (x24 & 0x3fffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint32_t x41 = (x24 & 0x3fffffff);
- { uint32_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m3/freeze.v b/src/Specific/solinas32_2e150m3/freeze.v
deleted file mode 100644
index 42204f88f..000000000
--- a/src/Specific/solinas32_2e150m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m3/freezeDisplay.log b/src/Specific/solinas32_2e150m3/freezeDisplay.log
deleted file mode 100644
index 97c1f9e25..000000000
--- a/src/Specific/solinas32_2e150m3/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffd);
- uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffff);
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffff);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffff);
- uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & 0x3ffffffd);
- uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint32_t x29 = (x24 & 0x3fffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint32_t x33 = (x24 & 0x3fffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint32_t x37 = (x24 & 0x3fffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint32_t x41 = (x24 & 0x3fffffff);
- uint32_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/freezeDisplay.v b/src/Specific/solinas32_2e150m3/freezeDisplay.v
deleted file mode 100644
index dbdc80a99..000000000
--- a/src/Specific/solinas32_2e150m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e150m3/py_interpreter.sh b/src/Specific/solinas32_2e150m3/py_interpreter.sh
deleted file mode 100755
index 7ac67d6a2..000000000
--- a/src/Specific/solinas32_2e150m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**150 - 3' -Dmodulus_bytes='30' -Da24='121665'
diff --git a/src/Specific/solinas32_2e150m3_6limbs/CurveParameters.v b/src/Specific/solinas32_2e150m3_6limbs/CurveParameters.v
new file mode 100644
index 000000000..4f693fe27
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^150 - 3
+Base: 25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 25;
+ bitwidth := 32;
+ s := 2^150;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/Synthesis.v b/src/Specific/solinas32_2e150m3_6limbs/Synthesis.v
new file mode 100644
index 000000000..dafc9cdc7
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/compiler.sh b/src/Specific/solinas32_2e150m3_6limbs/compiler.sh
new file mode 100755
index 000000000..339f447b9
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3_6limbs/compilerxx.sh b/src/Specific/solinas32_2e150m3_6limbs/compilerxx.sh
new file mode 100755
index 000000000..77c3fc0d0
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3_6limbs/feadd.v b/src/Specific/solinas32_2e150m3_6limbs/feadd.v
new file mode 100644
index 000000000..187d32b6a
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..8a14207df
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/femul.v b/src/Specific/solinas32_2e150m3_6limbs/femul.v
new file mode 100644
index 000000000..21acddccc
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.v b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1c45ed233
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesquare.v b/src/Specific/solinas32_2e150m3_6limbs/fesquare.v
new file mode 100644
index 000000000..89af0cb03
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e66521590
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesub.v b/src/Specific/solinas32_2e150m3_6limbs/fesub.v
new file mode 100644
index 000000000..5f21f06c8
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..46981ad9e
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/freeze.v b/src/Specific/solinas32_2e150m3_6limbs/freeze.v
new file mode 100644
index 000000000..822a022bd
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..e0967ca28
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e150m3_6limbs/py_interpreter.sh b/src/Specific/solinas32_2e150m3_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..c52299d11
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**150 - 3' -Dmodulus_bytes='25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e150m3_7limbs/CurveParameters.v b/src/Specific/solinas32_2e150m3_7limbs/CurveParameters.v
new file mode 100644
index 000000000..c4e23850a
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^150 - 3
+Base: 21 + 3/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 21 + 3/7;
+ bitwidth := 32;
+ s := 2^150;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/Synthesis.v b/src/Specific/solinas32_2e150m3_7limbs/Synthesis.v
new file mode 100644
index 000000000..23e2dd792
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/compiler.sh b/src/Specific/solinas32_2e150m3_7limbs/compiler.sh
new file mode 100755
index 000000000..7efe59b96
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3_7limbs/compilerxx.sh b/src/Specific/solinas32_2e150m3_7limbs/compilerxx.sh
new file mode 100755
index 000000000..2512f78ac
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas32_2e150m3_7limbs/feadd.v b/src/Specific/solinas32_2e150m3_7limbs/feadd.v
new file mode 100644
index 000000000..a9a519dbd
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..55e2a6ad9
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/femul.v b/src/Specific/solinas32_2e150m3_7limbs/femul.v
new file mode 100644
index 000000000..339b87342
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.v b/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.v
new file mode 100644
index 000000000..ea75b22f9
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesquare.v b/src/Specific/solinas32_2e150m3_7limbs/fesquare.v
new file mode 100644
index 000000000..73249a2c7
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..09baa2aab
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesub.v b/src/Specific/solinas32_2e150m3_7limbs/fesub.v
new file mode 100644
index 000000000..e1d694fec
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..1ae520389
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/freeze.v b/src/Specific/solinas32_2e150m3_7limbs/freeze.v
new file mode 100644
index 000000000..33b764dd0
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..238d7f8f7
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m3_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e150m3_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e150m3_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..1c4c8ea30
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**150 - 3' -Dmodulus_bytes='21 + 3/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e150m5/Synthesis.v b/src/Specific/solinas32_2e150m5/Synthesis.v
deleted file mode 100644
index 605446fa9..000000000
--- a/src/Specific/solinas32_2e150m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e150m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m5/feadd.c b/src/Specific/solinas32_2e150m5/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e150m5/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m5/feadd.v b/src/Specific/solinas32_2e150m5/feadd.v
deleted file mode 100644
index a9958e003..000000000
--- a/src/Specific/solinas32_2e150m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m5/feaddDisplay.log b/src/Specific/solinas32_2e150m5/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e150m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5/feaddDisplay.v b/src/Specific/solinas32_2e150m5/feaddDisplay.v
deleted file mode 100644
index 5307fef0c..000000000
--- a/src/Specific/solinas32_2e150m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e150m5/femul.c b/src/Specific/solinas32_2e150m5/femul.c
deleted file mode 100644
index 7c3a9970d..000000000
--- a/src/Specific/solinas32_2e150m5/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * ((uint64_t)x12 * x22)));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x5 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0x5 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
- { uint64_t x30 = (x29 >> 0x19);
- { uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x19);
- { uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
- { uint64_t x35 = (x33 + x27);
- { uint64_t x36 = (x35 >> 0x19);
- { uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
- { uint64_t x38 = (x36 + x26);
- { uint64_t x39 = (x38 >> 0x19);
- { uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
- { uint64_t x41 = (x39 + x25);
- { uint32_t x42 = (uint32_t) (x41 >> 0x19);
- { uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
- { uint64_t x44 = (x42 + x24);
- { uint32_t x45 = (uint32_t) (x44 >> 0x19);
- { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
- { uint64_t x47 = (x31 + ((uint64_t)0x5 * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x19);
- { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x19);
- { uint32_t x52 = (x50 & 0x1ffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m5/femul.v b/src/Specific/solinas32_2e150m5/femul.v
deleted file mode 100644
index a154f9838..000000000
--- a/src/Specific/solinas32_2e150m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m5/femulDisplay.log b/src/Specific/solinas32_2e150m5/femulDisplay.log
deleted file mode 100644
index a78dc39c1..000000000
--- a/src/Specific/solinas32_2e150m5/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * ((uint64_t)x12 * x22)));
- uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x5 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0x5 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
- uint64_t x30 = (x29 >> 0x19);
- uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x19);
- uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
- uint64_t x35 = (x33 + x27);
- uint64_t x36 = (x35 >> 0x19);
- uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
- uint64_t x38 = (x36 + x26);
- uint64_t x39 = (x38 >> 0x19);
- uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
- uint64_t x41 = (x39 + x25);
- uint32_t x42 = (uint32_t) (x41 >> 0x19);
- uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
- uint64_t x44 = (x42 + x24);
- uint32_t x45 = (uint32_t) (x44 >> 0x19);
- uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
- uint64_t x47 = (x31 + ((uint64_t)0x5 * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x19);
- uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x19);
- uint32_t x52 = (x50 & 0x1ffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5/femulDisplay.v b/src/Specific/solinas32_2e150m5/femulDisplay.v
deleted file mode 100644
index f56bdc815..000000000
--- a/src/Specific/solinas32_2e150m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e150m5/fesquare.c b/src/Specific/solinas32_2e150m5/fesquare.c
deleted file mode 100644
index 7210a32c4..000000000
--- a/src/Specific/solinas32_2e150m5/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((uint64_t)x9 * x9)));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
- { uint64_t x17 = (x16 >> 0x19);
- { uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x19);
- { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
- { uint64_t x22 = (x20 + x14);
- { uint64_t x23 = (x22 >> 0x19);
- { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- { uint64_t x25 = (x23 + x13);
- { uint64_t x26 = (x25 >> 0x19);
- { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
- { uint64_t x28 = (x26 + x12);
- { uint32_t x29 = (uint32_t) (x28 >> 0x19);
- { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
- { uint64_t x31 = (x29 + x11);
- { uint32_t x32 = (uint32_t) (x31 >> 0x19);
- { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- { uint64_t x34 = (x18 + ((uint64_t)0x5 * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x19);
- { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x19);
- { uint32_t x39 = (x37 & 0x1ffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m5/fesquare.v b/src/Specific/solinas32_2e150m5/fesquare.v
deleted file mode 100644
index 39c657818..000000000
--- a/src/Specific/solinas32_2e150m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m5/fesquareDisplay.log b/src/Specific/solinas32_2e150m5/fesquareDisplay.log
deleted file mode 100644
index e32ea3b81..000000000
--- a/src/Specific/solinas32_2e150m5/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((uint64_t)x9 * x9)));
- uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
- uint64_t x17 = (x16 >> 0x19);
- uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x19);
- uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
- uint64_t x22 = (x20 + x14);
- uint64_t x23 = (x22 >> 0x19);
- uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- uint64_t x25 = (x23 + x13);
- uint64_t x26 = (x25 >> 0x19);
- uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
- uint64_t x28 = (x26 + x12);
- uint32_t x29 = (uint32_t) (x28 >> 0x19);
- uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
- uint64_t x31 = (x29 + x11);
- uint32_t x32 = (uint32_t) (x31 >> 0x19);
- uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- uint64_t x34 = (x18 + ((uint64_t)0x5 * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x19);
- uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x19);
- uint32_t x39 = (x37 & 0x1ffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5/fesquareDisplay.v b/src/Specific/solinas32_2e150m5/fesquareDisplay.v
deleted file mode 100644
index bd87139e9..000000000
--- a/src/Specific/solinas32_2e150m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e150m5/fesub.c b/src/Specific/solinas32_2e150m5/fesub.c
deleted file mode 100644
index a2bae1877..000000000
--- a/src/Specific/solinas32_2e150m5/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x3fffff6 + x5) - x15);
- out[1] = ((0x3fffffe + x7) - x17);
- out[2] = ((0x3fffffe + x9) - x19);
- out[3] = ((0x3fffffe + x11) - x21);
- out[4] = ((0x3fffffe + x13) - x23);
- out[5] = ((0x3fffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m5/fesub.v b/src/Specific/solinas32_2e150m5/fesub.v
deleted file mode 100644
index 9c9280320..000000000
--- a/src/Specific/solinas32_2e150m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m5/fesubDisplay.log b/src/Specific/solinas32_2e150m5/fesubDisplay.log
deleted file mode 100644
index 1229647ea..000000000
--- a/src/Specific/solinas32_2e150m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3fffffe + x12) - x22), ((0x3fffffe + x13) - x23), ((0x3fffffe + x11) - x21), ((0x3fffffe + x9) - x19), ((0x3fffffe + x7) - x17), ((0x3fffff6 + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5/fesubDisplay.v b/src/Specific/solinas32_2e150m5/fesubDisplay.v
deleted file mode 100644
index f53529618..000000000
--- a/src/Specific/solinas32_2e150m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e150m5/freeze.c b/src/Specific/solinas32_2e150m5/freeze.c
deleted file mode 100644
index 877b3693b..000000000
--- a/src/Specific/solinas32_2e150m5/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffb);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x1fffffb);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x1ffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x1ffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x1ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x1ffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x1ffffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e150m5/freeze.v b/src/Specific/solinas32_2e150m5/freeze.v
deleted file mode 100644
index 029fa035d..000000000
--- a/src/Specific/solinas32_2e150m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m5/freezeDisplay.log b/src/Specific/solinas32_2e150m5/freezeDisplay.log
deleted file mode 100644
index 9a4af32ee..000000000
--- a/src/Specific/solinas32_2e150m5/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffb);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x1fffffb);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x1ffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x1ffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x1ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x1ffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x1ffffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5/freezeDisplay.v b/src/Specific/solinas32_2e150m5/freezeDisplay.v
deleted file mode 100644
index fd790e80a..000000000
--- a/src/Specific/solinas32_2e150m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e150m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e150m5/CurveParameters.v b/src/Specific/solinas32_2e150m5_6limbs/CurveParameters.v
index 4ee09cc7d..4ee09cc7d 100644
--- a/src/Specific/solinas32_2e150m5/CurveParameters.v
+++ b/src/Specific/solinas32_2e150m5_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e150m5_6limbs/Synthesis.v b/src/Specific/solinas32_2e150m5_6limbs/Synthesis.v
new file mode 100644
index 000000000..cbc77e86b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m5/compiler.sh b/src/Specific/solinas32_2e150m5_6limbs/compiler.sh
index 8ef952462..8ef952462 100755
--- a/src/Specific/solinas32_2e150m5/compiler.sh
+++ b/src/Specific/solinas32_2e150m5_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e150m5/compilerxx.sh b/src/Specific/solinas32_2e150m5_6limbs/compilerxx.sh
index 4bf88a674..4bf88a674 100755
--- a/src/Specific/solinas32_2e150m5/compilerxx.sh
+++ b/src/Specific/solinas32_2e150m5_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e150m5_6limbs/feadd.v b/src/Specific/solinas32_2e150m5_6limbs/feadd.v
new file mode 100644
index 000000000..d8620b268
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..deeb44400
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/femul.v b/src/Specific/solinas32_2e150m5_6limbs/femul.v
new file mode 100644
index 000000000..e36c4d7df
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.v b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.v
new file mode 100644
index 000000000..32f4f6809
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesquare.v b/src/Specific/solinas32_2e150m5_6limbs/fesquare.v
new file mode 100644
index 000000000..d63e06bf1
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2b54aac4d
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesub.v b/src/Specific/solinas32_2e150m5_6limbs/fesub.v
new file mode 100644
index 000000000..df8abaa6b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..74b7b3607
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/freeze.v b/src/Specific/solinas32_2e150m5_6limbs/freeze.v
new file mode 100644
index 000000000..847c9b7e0
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..775b893e4
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e150m5/py_interpreter.sh b/src/Specific/solinas32_2e150m5_6limbs/py_interpreter.sh
index dd832d5a7..dd832d5a7 100755
--- a/src/Specific/solinas32_2e150m5/py_interpreter.sh
+++ b/src/Specific/solinas32_2e150m5_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e150m5_7limbs/CurveParameters.v b/src/Specific/solinas32_2e150m5_7limbs/CurveParameters.v
new file mode 100644
index 000000000..03525bdcc
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^150 - 5
+Base: 21 + 3/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 21 + 3/7;
+ bitwidth := 32;
+ s := 2^150;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/Synthesis.v b/src/Specific/solinas32_2e150m5_7limbs/Synthesis.v
new file mode 100644
index 000000000..b627664df
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/compiler.sh b/src/Specific/solinas32_2e150m5_7limbs/compiler.sh
new file mode 100755
index 000000000..901e6e23f
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 5' "$@"
diff --git a/src/Specific/solinas32_2e150m5_7limbs/compilerxx.sh b/src/Specific/solinas32_2e150m5_7limbs/compilerxx.sh
new file mode 100755
index 000000000..8473ef5e3
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,22,21,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<150) - 5' "$@"
diff --git a/src/Specific/solinas32_2e150m5_7limbs/feadd.v b/src/Specific/solinas32_2e150m5_7limbs/feadd.v
new file mode 100644
index 000000000..bf9d67467
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..5397e80b5
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/femul.v b/src/Specific/solinas32_2e150m5_7limbs/femul.v
new file mode 100644
index 000000000..a853c48d6
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.v b/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.v
new file mode 100644
index 000000000..85482485b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesquare.v b/src/Specific/solinas32_2e150m5_7limbs/fesquare.v
new file mode 100644
index 000000000..53dc29952
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ea56e3a52
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesub.v b/src/Specific/solinas32_2e150m5_7limbs/fesub.v
new file mode 100644
index 000000000..f78a5d0c2
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..f8c131141
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/freeze.v b/src/Specific/solinas32_2e150m5_7limbs/freeze.v
new file mode 100644
index 000000000..22e44fd0f
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..c728d15a8
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e150m5_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e150m5_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e150m5_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..93f34c08e
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**150 - 5' -Dmodulus_bytes='21 + 3/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e152m17/Synthesis.v b/src/Specific/solinas32_2e152m17/Synthesis.v
deleted file mode 100644
index 4be919691..000000000
--- a/src/Specific/solinas32_2e152m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e152m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e152m17/feadd.c b/src/Specific/solinas32_2e152m17/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e152m17/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e152m17/feadd.v b/src/Specific/solinas32_2e152m17/feadd.v
deleted file mode 100644
index b5eac75b2..000000000
--- a/src/Specific/solinas32_2e152m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e152m17/feaddDisplay.log b/src/Specific/solinas32_2e152m17/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e152m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17/feaddDisplay.v b/src/Specific/solinas32_2e152m17/feaddDisplay.v
deleted file mode 100644
index 30d2c6411..000000000
--- a/src/Specific/solinas32_2e152m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e152m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e152m17/femul.c b/src/Specific/solinas32_2e152m17/femul.c
deleted file mode 100644
index 5cf3743f7..000000000
--- a/src/Specific/solinas32_2e152m17/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x11 * ((uint64_t)x12 * x22)));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x11 * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x11 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0x11 * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- { uint64_t x30 = (x29 >> 0x1a);
- { uint32_t x31 = ((uint32_t)x29 & 0x3ffffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x19);
- { uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
- { uint64_t x35 = (x33 + x27);
- { uint64_t x36 = (x35 >> 0x19);
- { uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
- { uint64_t x38 = (x36 + x26);
- { uint64_t x39 = (x38 >> 0x1a);
- { uint32_t x40 = ((uint32_t)x38 & 0x3ffffff);
- { uint64_t x41 = (x39 + x25);
- { uint64_t x42 = (x41 >> 0x19);
- { uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
- { uint64_t x44 = (x42 + x24);
- { uint64_t x45 = (x44 >> 0x19);
- { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
- { uint64_t x47 = (x31 + (0x11 * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x1a);
- { uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x19);
- { uint32_t x52 = (x50 & 0x1ffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e152m17/femul.v b/src/Specific/solinas32_2e152m17/femul.v
deleted file mode 100644
index 93a749461..000000000
--- a/src/Specific/solinas32_2e152m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e152m17/femulDisplay.log b/src/Specific/solinas32_2e152m17/femulDisplay.log
deleted file mode 100644
index 434a3892a..000000000
--- a/src/Specific/solinas32_2e152m17/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x11 * ((uint64_t)x12 * x22)));
- uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x11 * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x11 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0x11 * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- uint64_t x30 = (x29 >> 0x1a);
- uint32_t x31 = ((uint32_t)x29 & 0x3ffffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x19);
- uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
- uint64_t x35 = (x33 + x27);
- uint64_t x36 = (x35 >> 0x19);
- uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
- uint64_t x38 = (x36 + x26);
- uint64_t x39 = (x38 >> 0x1a);
- uint32_t x40 = ((uint32_t)x38 & 0x3ffffff);
- uint64_t x41 = (x39 + x25);
- uint64_t x42 = (x41 >> 0x19);
- uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
- uint64_t x44 = (x42 + x24);
- uint64_t x45 = (x44 >> 0x19);
- uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
- uint64_t x47 = (x31 + (0x11 * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x1a);
- uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x19);
- uint32_t x52 = (x50 & 0x1ffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17/femulDisplay.v b/src/Specific/solinas32_2e152m17/femulDisplay.v
deleted file mode 100644
index 590302f59..000000000
--- a/src/Specific/solinas32_2e152m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e152m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e152m17/fesquare.c b/src/Specific/solinas32_2e152m17/fesquare.c
deleted file mode 100644
index 3d2387de8..000000000
--- a/src/Specific/solinas32_2e152m17/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((uint64_t)x9 * x9)));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- { uint64_t x17 = (x16 >> 0x1a);
- { uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x19);
- { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
- { uint64_t x22 = (x20 + x14);
- { uint64_t x23 = (x22 >> 0x19);
- { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- { uint64_t x25 = (x23 + x13);
- { uint64_t x26 = (x25 >> 0x1a);
- { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- { uint64_t x28 = (x26 + x12);
- { uint64_t x29 = (x28 >> 0x19);
- { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
- { uint64_t x31 = (x29 + x11);
- { uint64_t x32 = (x31 >> 0x19);
- { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- { uint64_t x34 = (x18 + (0x11 * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x1a);
- { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x19);
- { uint32_t x39 = (x37 & 0x1ffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e152m17/fesquare.v b/src/Specific/solinas32_2e152m17/fesquare.v
deleted file mode 100644
index f613305a7..000000000
--- a/src/Specific/solinas32_2e152m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e152m17/fesquareDisplay.log b/src/Specific/solinas32_2e152m17/fesquareDisplay.log
deleted file mode 100644
index cc5bc86f5..000000000
--- a/src/Specific/solinas32_2e152m17/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((uint64_t)x9 * x9)));
- uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- uint64_t x17 = (x16 >> 0x1a);
- uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x19);
- uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
- uint64_t x22 = (x20 + x14);
- uint64_t x23 = (x22 >> 0x19);
- uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- uint64_t x25 = (x23 + x13);
- uint64_t x26 = (x25 >> 0x1a);
- uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- uint64_t x28 = (x26 + x12);
- uint64_t x29 = (x28 >> 0x19);
- uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
- uint64_t x31 = (x29 + x11);
- uint64_t x32 = (x31 >> 0x19);
- uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- uint64_t x34 = (x18 + (0x11 * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x1a);
- uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x19);
- uint32_t x39 = (x37 & 0x1ffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17/fesquareDisplay.v b/src/Specific/solinas32_2e152m17/fesquareDisplay.v
deleted file mode 100644
index 9774af043..000000000
--- a/src/Specific/solinas32_2e152m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e152m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e152m17/fesub.c b/src/Specific/solinas32_2e152m17/fesub.c
deleted file mode 100644
index 1153d1999..000000000
--- a/src/Specific/solinas32_2e152m17/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x7ffffde + x5) - x15);
- out[1] = ((0x3fffffe + x7) - x17);
- out[2] = ((0x3fffffe + x9) - x19);
- out[3] = ((0x7fffffe + x11) - x21);
- out[4] = ((0x3fffffe + x13) - x23);
- out[5] = ((0x3fffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e152m17/fesub.v b/src/Specific/solinas32_2e152m17/fesub.v
deleted file mode 100644
index e83b73e58..000000000
--- a/src/Specific/solinas32_2e152m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e152m17/fesubDisplay.log b/src/Specific/solinas32_2e152m17/fesubDisplay.log
deleted file mode 100644
index 535c511cc..000000000
--- a/src/Specific/solinas32_2e152m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3fffffe + x12) - x22), ((0x3fffffe + x13) - x23), ((0x7fffffe + x11) - x21), ((0x3fffffe + x9) - x19), ((0x3fffffe + x7) - x17), ((0x7ffffde + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17/fesubDisplay.v b/src/Specific/solinas32_2e152m17/fesubDisplay.v
deleted file mode 100644
index ba9a9e5e9..000000000
--- a/src/Specific/solinas32_2e152m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e152m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e152m17/freeze.c b/src/Specific/solinas32_2e152m17/freeze.c
deleted file mode 100644
index 539597636..000000000
--- a/src/Specific/solinas32_2e152m17/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x3ffffef);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x1ffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x1ffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x3ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x1ffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x1ffffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e152m17/freeze.v b/src/Specific/solinas32_2e152m17/freeze.v
deleted file mode 100644
index 128b40dc1..000000000
--- a/src/Specific/solinas32_2e152m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e152m17/freezeDisplay.log b/src/Specific/solinas32_2e152m17/freezeDisplay.log
deleted file mode 100644
index 5d8bdcde7..000000000
--- a/src/Specific/solinas32_2e152m17/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x3ffffef);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x1ffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x1ffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x3ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x1ffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x1ffffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17/freezeDisplay.v b/src/Specific/solinas32_2e152m17/freezeDisplay.v
deleted file mode 100644
index 91f3434c8..000000000
--- a/src/Specific/solinas32_2e152m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e152m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e152m17/CurveParameters.v b/src/Specific/solinas32_2e152m17_6limbs/CurveParameters.v
index 22ea729fc..22ea729fc 100644
--- a/src/Specific/solinas32_2e152m17/CurveParameters.v
+++ b/src/Specific/solinas32_2e152m17_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e152m17_6limbs/Synthesis.v b/src/Specific/solinas32_2e152m17_6limbs/Synthesis.v
new file mode 100644
index 000000000..f30360062
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e152m17/compiler.sh b/src/Specific/solinas32_2e152m17_6limbs/compiler.sh
index ab7f7173c..ab7f7173c 100755
--- a/src/Specific/solinas32_2e152m17/compiler.sh
+++ b/src/Specific/solinas32_2e152m17_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e152m17/compilerxx.sh b/src/Specific/solinas32_2e152m17_6limbs/compilerxx.sh
index ab1eb7ed4..ab1eb7ed4 100755
--- a/src/Specific/solinas32_2e152m17/compilerxx.sh
+++ b/src/Specific/solinas32_2e152m17_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e152m17_6limbs/feadd.v b/src/Specific/solinas32_2e152m17_6limbs/feadd.v
new file mode 100644
index 000000000..cda4bf30e
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..71cee85c2
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/femul.v b/src/Specific/solinas32_2e152m17_6limbs/femul.v
new file mode 100644
index 000000000..809501e57
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.v b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.v
new file mode 100644
index 000000000..8ccac81c8
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesquare.v b/src/Specific/solinas32_2e152m17_6limbs/fesquare.v
new file mode 100644
index 000000000..6a6a924a8
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c3e27d0ef
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesub.v b/src/Specific/solinas32_2e152m17_6limbs/fesub.v
new file mode 100644
index 000000000..b370f8b89
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..e7f0bbf20
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/freeze.v b/src/Specific/solinas32_2e152m17_6limbs/freeze.v
new file mode 100644
index 000000000..18403b22b
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..177f96178
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e152m17/py_interpreter.sh b/src/Specific/solinas32_2e152m17_6limbs/py_interpreter.sh
index d0a2d5eb1..d0a2d5eb1 100755
--- a/src/Specific/solinas32_2e152m17/py_interpreter.sh
+++ b/src/Specific/solinas32_2e152m17_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e152m17_7limbs/CurveParameters.v b/src/Specific/solinas32_2e152m17_7limbs/CurveParameters.v
new file mode 100644
index 000000000..3f8039bb2
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^152 - 17
+Base: 21 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 21 + 5/7;
+ bitwidth := 32;
+ s := 2^152;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/Synthesis.v b/src/Specific/solinas32_2e152m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..4ed504522
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/compiler.sh b/src/Specific/solinas32_2e152m17_7limbs/compiler.sh
new file mode 100755
index 000000000..b25acd276
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<152) - 17' "$@"
diff --git a/src/Specific/solinas32_2e152m17_7limbs/compilerxx.sh b/src/Specific/solinas32_2e152m17_7limbs/compilerxx.sh
new file mode 100755
index 000000000..78cff8e08
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<152) - 17' "$@"
diff --git a/src/Specific/solinas32_2e152m17_7limbs/feadd.v b/src/Specific/solinas32_2e152m17_7limbs/feadd.v
new file mode 100644
index 000000000..08dcd8698
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..ea69b8277
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/femul.v b/src/Specific/solinas32_2e152m17_7limbs/femul.v
new file mode 100644
index 000000000..0d6ee477b
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.v b/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..820360046
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesquare.v b/src/Specific/solinas32_2e152m17_7limbs/fesquare.v
new file mode 100644
index 000000000..3d661027d
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..09e48a1c9
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesub.v b/src/Specific/solinas32_2e152m17_7limbs/fesub.v
new file mode 100644
index 000000000..87521a3fb
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..8c373a497
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/freeze.v b/src/Specific/solinas32_2e152m17_7limbs/freeze.v
new file mode 100644
index 000000000..20a506fe9
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..97c194d15
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e152m17_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e152m17_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e152m17_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..5d84ec970
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**152 - 17' -Dmodulus_bytes='21 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e158m15/Synthesis.v b/src/Specific/solinas32_2e158m15/Synthesis.v
deleted file mode 100644
index 1e631bf07..000000000
--- a/src/Specific/solinas32_2e158m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e158m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e158m15/feadd.c b/src/Specific/solinas32_2e158m15/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e158m15/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e158m15/feadd.v b/src/Specific/solinas32_2e158m15/feadd.v
deleted file mode 100644
index 18d809e82..000000000
--- a/src/Specific/solinas32_2e158m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e158m15/feaddDisplay.log b/src/Specific/solinas32_2e158m15/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e158m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15/feaddDisplay.v b/src/Specific/solinas32_2e158m15/feaddDisplay.v
deleted file mode 100644
index 2a69d5fb8..000000000
--- a/src/Specific/solinas32_2e158m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e158m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e158m15/femul.c b/src/Specific/solinas32_2e158m15/femul.c
deleted file mode 100644
index 353afb2a8..000000000
--- a/src/Specific/solinas32_2e158m15/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0xf * ((uint64_t)x12 * x22)));
- { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0xf * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0xf * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0xf * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { uint64_t x29 = (((uint64_t)x5 * x15) + (0xf * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- { uint64_t x30 = (x29 >> 0x1b);
- { uint32_t x31 = ((uint32_t)x29 & 0x7ffffff);
- { uint64_t x32 = (x30 + x28);
- { uint64_t x33 = (x32 >> 0x1a);
- { uint32_t x34 = ((uint32_t)x32 & 0x3ffffff);
- { uint64_t x35 = (x33 + x27);
- { uint64_t x36 = (x35 >> 0x1a);
- { uint32_t x37 = ((uint32_t)x35 & 0x3ffffff);
- { uint64_t x38 = (x36 + x26);
- { uint64_t x39 = (x38 >> 0x1b);
- { uint32_t x40 = ((uint32_t)x38 & 0x7ffffff);
- { uint64_t x41 = (x39 + x25);
- { uint64_t x42 = (x41 >> 0x1a);
- { uint32_t x43 = ((uint32_t)x41 & 0x3ffffff);
- { uint64_t x44 = (x42 + x24);
- { uint64_t x45 = (x44 >> 0x1a);
- { uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
- { uint64_t x47 = (x31 + (0xf * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x1b);
- { uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x1a);
- { uint32_t x52 = (x50 & 0x3ffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e158m15/femul.v b/src/Specific/solinas32_2e158m15/femul.v
deleted file mode 100644
index 9e8568fc1..000000000
--- a/src/Specific/solinas32_2e158m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e158m15/femulDisplay.log b/src/Specific/solinas32_2e158m15/femulDisplay.log
deleted file mode 100644
index 83d0d6f1e..000000000
--- a/src/Specific/solinas32_2e158m15/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
- uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0xf * ((uint64_t)x12 * x22)));
- uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0xf * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
- uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0xf * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
- uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0xf * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- uint64_t x29 = (((uint64_t)x5 * x15) + (0xf * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
- uint64_t x30 = (x29 >> 0x1b);
- uint32_t x31 = ((uint32_t)x29 & 0x7ffffff);
- uint64_t x32 = (x30 + x28);
- uint64_t x33 = (x32 >> 0x1a);
- uint32_t x34 = ((uint32_t)x32 & 0x3ffffff);
- uint64_t x35 = (x33 + x27);
- uint64_t x36 = (x35 >> 0x1a);
- uint32_t x37 = ((uint32_t)x35 & 0x3ffffff);
- uint64_t x38 = (x36 + x26);
- uint64_t x39 = (x38 >> 0x1b);
- uint32_t x40 = ((uint32_t)x38 & 0x7ffffff);
- uint64_t x41 = (x39 + x25);
- uint64_t x42 = (x41 >> 0x1a);
- uint32_t x43 = ((uint32_t)x41 & 0x3ffffff);
- uint64_t x44 = (x42 + x24);
- uint64_t x45 = (x44 >> 0x1a);
- uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
- uint64_t x47 = (x31 + (0xf * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x1b);
- uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x1a);
- uint32_t x52 = (x50 & 0x3ffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15/femulDisplay.v b/src/Specific/solinas32_2e158m15/femulDisplay.v
deleted file mode 100644
index 9410e10c6..000000000
--- a/src/Specific/solinas32_2e158m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e158m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e158m15/fesquare.c b/src/Specific/solinas32_2e158m15/fesquare.c
deleted file mode 100644
index 588f6154b..000000000
--- a/src/Specific/solinas32_2e158m15/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * ((uint64_t)x9 * x9)));
- { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { uint64_t x16 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- { uint64_t x17 = (x16 >> 0x1b);
- { uint32_t x18 = ((uint32_t)x16 & 0x7ffffff);
- { uint64_t x19 = (x17 + x15);
- { uint64_t x20 = (x19 >> 0x1a);
- { uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
- { uint64_t x22 = (x20 + x14);
- { uint64_t x23 = (x22 >> 0x1a);
- { uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
- { uint64_t x25 = (x23 + x13);
- { uint64_t x26 = (x25 >> 0x1b);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- { uint64_t x28 = (x26 + x12);
- { uint64_t x29 = (x28 >> 0x1a);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- { uint64_t x31 = (x29 + x11);
- { uint64_t x32 = (x31 >> 0x1a);
- { uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- { uint64_t x34 = (x18 + (0xf * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x1b);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x1a);
- { uint32_t x39 = (x37 & 0x3ffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e158m15/fesquare.v b/src/Specific/solinas32_2e158m15/fesquare.v
deleted file mode 100644
index 748affa4b..000000000
--- a/src/Specific/solinas32_2e158m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e158m15/fesquareDisplay.log b/src/Specific/solinas32_2e158m15/fesquareDisplay.log
deleted file mode 100644
index c77e995f1..000000000
--- a/src/Specific/solinas32_2e158m15/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
- uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * ((uint64_t)x9 * x9)));
- uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
- uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
- uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- uint64_t x16 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
- uint64_t x17 = (x16 >> 0x1b);
- uint32_t x18 = ((uint32_t)x16 & 0x7ffffff);
- uint64_t x19 = (x17 + x15);
- uint64_t x20 = (x19 >> 0x1a);
- uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
- uint64_t x22 = (x20 + x14);
- uint64_t x23 = (x22 >> 0x1a);
- uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
- uint64_t x25 = (x23 + x13);
- uint64_t x26 = (x25 >> 0x1b);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- uint64_t x28 = (x26 + x12);
- uint64_t x29 = (x28 >> 0x1a);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- uint64_t x31 = (x29 + x11);
- uint64_t x32 = (x31 >> 0x1a);
- uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- uint64_t x34 = (x18 + (0xf * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x1b);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x1a);
- uint32_t x39 = (x37 & 0x3ffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15/fesquareDisplay.v b/src/Specific/solinas32_2e158m15/fesquareDisplay.v
deleted file mode 100644
index ead4ded23..000000000
--- a/src/Specific/solinas32_2e158m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e158m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e158m15/fesub.c b/src/Specific/solinas32_2e158m15/fesub.c
deleted file mode 100644
index 2da1f8617..000000000
--- a/src/Specific/solinas32_2e158m15/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0xfffffe2 + x5) - x15);
- out[1] = ((0x7fffffe + x7) - x17);
- out[2] = ((0x7fffffe + x9) - x19);
- out[3] = ((0xffffffe + x11) - x21);
- out[4] = ((0x7fffffe + x13) - x23);
- out[5] = ((0x7fffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e158m15/fesub.v b/src/Specific/solinas32_2e158m15/fesub.v
deleted file mode 100644
index 2013977e0..000000000
--- a/src/Specific/solinas32_2e158m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e158m15/fesubDisplay.log b/src/Specific/solinas32_2e158m15/fesubDisplay.log
deleted file mode 100644
index 284622c58..000000000
--- a/src/Specific/solinas32_2e158m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x7fffffe + x12) - x22), ((0x7fffffe + x13) - x23), ((0xffffffe + x11) - x21), ((0x7fffffe + x9) - x19), ((0x7fffffe + x7) - x17), ((0xfffffe2 + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15/fesubDisplay.v b/src/Specific/solinas32_2e158m15/fesubDisplay.v
deleted file mode 100644
index 792918196..000000000
--- a/src/Specific/solinas32_2e158m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e158m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e158m15/freeze.c b/src/Specific/solinas32_2e158m15/freeze.c
deleted file mode 100644
index c465eb5ed..000000000
--- a/src/Specific/solinas32_2e158m15/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x7fffff1);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x3ffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x3ffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x7ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x3ffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x3ffffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e158m15/freeze.v b/src/Specific/solinas32_2e158m15/freeze.v
deleted file mode 100644
index afb6f33fb..000000000
--- a/src/Specific/solinas32_2e158m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e158m15/freezeDisplay.log b/src/Specific/solinas32_2e158m15/freezeDisplay.log
deleted file mode 100644
index 9df853258..000000000
--- a/src/Specific/solinas32_2e158m15/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x7fffff1);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x3ffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x3ffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x7ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x3ffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x3ffffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15/freezeDisplay.v b/src/Specific/solinas32_2e158m15/freezeDisplay.v
deleted file mode 100644
index bfc8e4643..000000000
--- a/src/Specific/solinas32_2e158m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e158m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e158m15/CurveParameters.v b/src/Specific/solinas32_2e158m15_6limbs/CurveParameters.v
index 726a23d43..726a23d43 100644
--- a/src/Specific/solinas32_2e158m15/CurveParameters.v
+++ b/src/Specific/solinas32_2e158m15_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e158m15_6limbs/Synthesis.v b/src/Specific/solinas32_2e158m15_6limbs/Synthesis.v
new file mode 100644
index 000000000..7ff0183f6
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e158m15/compiler.sh b/src/Specific/solinas32_2e158m15_6limbs/compiler.sh
index 3a8be88d9..3a8be88d9 100755
--- a/src/Specific/solinas32_2e158m15/compiler.sh
+++ b/src/Specific/solinas32_2e158m15_6limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e158m15/compilerxx.sh b/src/Specific/solinas32_2e158m15_6limbs/compilerxx.sh
index 44aaabf1b..44aaabf1b 100755
--- a/src/Specific/solinas32_2e158m15/compilerxx.sh
+++ b/src/Specific/solinas32_2e158m15_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e158m15_6limbs/feadd.v b/src/Specific/solinas32_2e158m15_6limbs/feadd.v
new file mode 100644
index 000000000..743fc13a9
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..d6ea2a6a6
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/femul.v b/src/Specific/solinas32_2e158m15_6limbs/femul.v
new file mode 100644
index 000000000..a8c7f50bd
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.v b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.v
new file mode 100644
index 000000000..626d7c5dd
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesquare.v b/src/Specific/solinas32_2e158m15_6limbs/fesquare.v
new file mode 100644
index 000000000..08f15ddca
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5cdcfe574
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesub.v b/src/Specific/solinas32_2e158m15_6limbs/fesub.v
new file mode 100644
index 000000000..473f9de6a
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..671ce87a7
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/freeze.v b/src/Specific/solinas32_2e158m15_6limbs/freeze.v
new file mode 100644
index 000000000..4d49c7880
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..be8edd8e3
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e158m15/py_interpreter.sh b/src/Specific/solinas32_2e158m15_6limbs/py_interpreter.sh
index cf35d4d01..cf35d4d01 100755
--- a/src/Specific/solinas32_2e158m15/py_interpreter.sh
+++ b/src/Specific/solinas32_2e158m15_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e158m15_7limbs/CurveParameters.v b/src/Specific/solinas32_2e158m15_7limbs/CurveParameters.v
new file mode 100644
index 000000000..7bda8290c
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^158 - 15
+Base: 22 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 22 + 4/7;
+ bitwidth := 32;
+ s := 2^158;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/Synthesis.v b/src/Specific/solinas32_2e158m15_7limbs/Synthesis.v
new file mode 100644
index 000000000..232d5ee06
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/compiler.sh b/src/Specific/solinas32_2e158m15_7limbs/compiler.sh
new file mode 100755
index 000000000..d9ae45282
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<158) - 15' "$@"
diff --git a/src/Specific/solinas32_2e158m15_7limbs/compilerxx.sh b/src/Specific/solinas32_2e158m15_7limbs/compilerxx.sh
new file mode 100755
index 000000000..2d811425d
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<158) - 15' "$@"
diff --git a/src/Specific/solinas32_2e158m15_7limbs/feadd.v b/src/Specific/solinas32_2e158m15_7limbs/feadd.v
new file mode 100644
index 000000000..a51c6e040
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..2b895d88b
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/femul.v b/src/Specific/solinas32_2e158m15_7limbs/femul.v
new file mode 100644
index 000000000..f514a7a68
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.v b/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.v
new file mode 100644
index 000000000..0b05b0553
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesquare.v b/src/Specific/solinas32_2e158m15_7limbs/fesquare.v
new file mode 100644
index 000000000..cc540694f
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..cb4a11560
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesub.v b/src/Specific/solinas32_2e158m15_7limbs/fesub.v
new file mode 100644
index 000000000..dc64941dd
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..546cf3df6
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/freeze.v b/src/Specific/solinas32_2e158m15_7limbs/freeze.v
new file mode 100644
index 000000000..6b7854531
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..3db6bf35e
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e158m15_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e158m15_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e158m15_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..bb9fe4d9a
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**158 - 15' -Dmodulus_bytes='22 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e165m25/CurveParameters.v b/src/Specific/solinas32_2e165m25/CurveParameters.v
deleted file mode 100644
index 2cd0d20c0..000000000
--- a/src/Specific/solinas32_2e165m25/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^165 - 25
-Base: 18 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 9%nat;
- base := 18 + 1/3;
- bitwidth := 32;
- s := 2^165;
- c := [(1, 25)];
- carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e165m25/Synthesis.v b/src/Specific/solinas32_2e165m25/Synthesis.v
deleted file mode 100644
index 13f36158b..000000000
--- a/src/Specific/solinas32_2e165m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e165m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e165m25/compiler.sh b/src/Specific/solinas32_2e165m25/compiler.sh
deleted file mode 100755
index b8fe0cec9..000000000
--- a/src/Specific/solinas32_2e165m25/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,19,18,18,19,18,18}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25/compilerxx.sh b/src/Specific/solinas32_2e165m25/compilerxx.sh
deleted file mode 100755
index 9ca996302..000000000
--- a/src/Specific/solinas32_2e165m25/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,19,18,18,19,18,18}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25/feadd.c b/src/Specific/solinas32_2e165m25/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e165m25/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e165m25/feadd.v b/src/Specific/solinas32_2e165m25/feadd.v
deleted file mode 100644
index 9fa1d72e1..000000000
--- a/src/Specific/solinas32_2e165m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e165m25/feaddDisplay.log b/src/Specific/solinas32_2e165m25/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e165m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25/feaddDisplay.v b/src/Specific/solinas32_2e165m25/feaddDisplay.v
deleted file mode 100644
index 4b146b9c6..000000000
--- a/src/Specific/solinas32_2e165m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e165m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e165m25/femul.c b/src/Specific/solinas32_2e165m25/femul.c
deleted file mode 100644
index 3ac462ae3..000000000
--- a/src/Specific/solinas32_2e165m25/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x19 * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x19 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x19 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x19 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x19 * (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x19 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0x19 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- { uint32_t x45 = (uint32_t) (x44 >> 0x13);
- { uint32_t x46 = ((uint32_t)x44 & 0x7ffff);
- { uint64_t x47 = (x45 + x43);
- { uint32_t x48 = (uint32_t) (x47 >> 0x12);
- { uint32_t x49 = ((uint32_t)x47 & 0x3ffff);
- { uint64_t x50 = (x48 + x42);
- { uint32_t x51 = (uint32_t) (x50 >> 0x12);
- { uint32_t x52 = ((uint32_t)x50 & 0x3ffff);
- { uint64_t x53 = (x51 + x41);
- { uint32_t x54 = (uint32_t) (x53 >> 0x13);
- { uint32_t x55 = ((uint32_t)x53 & 0x7ffff);
- { uint64_t x56 = (x54 + x40);
- { uint32_t x57 = (uint32_t) (x56 >> 0x12);
- { uint32_t x58 = ((uint32_t)x56 & 0x3ffff);
- { uint64_t x59 = (x57 + x39);
- { uint32_t x60 = (uint32_t) (x59 >> 0x12);
- { uint32_t x61 = ((uint32_t)x59 & 0x3ffff);
- { uint64_t x62 = (x60 + x38);
- { uint32_t x63 = (uint32_t) (x62 >> 0x13);
- { uint32_t x64 = ((uint32_t)x62 & 0x7ffff);
- { uint64_t x65 = (x63 + x37);
- { uint32_t x66 = (uint32_t) (x65 >> 0x12);
- { uint32_t x67 = ((uint32_t)x65 & 0x3ffff);
- { uint64_t x68 = (x66 + x36);
- { uint32_t x69 = (uint32_t) (x68 >> 0x12);
- { uint32_t x70 = ((uint32_t)x68 & 0x3ffff);
- { uint32_t x71 = (x46 + (0x19 * x69));
- { uint32_t x72 = (x71 >> 0x13);
- { uint32_t x73 = (x71 & 0x7ffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x12);
- { uint32_t x76 = (x74 & 0x3ffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e165m25/femul.v b/src/Specific/solinas32_2e165m25/femul.v
deleted file mode 100644
index ccc71a97a..000000000
--- a/src/Specific/solinas32_2e165m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e165m25/femulDisplay.log b/src/Specific/solinas32_2e165m25/femulDisplay.log
deleted file mode 100644
index 3606ff1fd..000000000
--- a/src/Specific/solinas32_2e165m25/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x19 * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x19 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x19 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x19 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x19 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x19 * (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x19 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0x19 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- uint32_t x45 = (uint32_t) (x44 >> 0x13);
- uint32_t x46 = ((uint32_t)x44 & 0x7ffff);
- uint64_t x47 = (x45 + x43);
- uint32_t x48 = (uint32_t) (x47 >> 0x12);
- uint32_t x49 = ((uint32_t)x47 & 0x3ffff);
- uint64_t x50 = (x48 + x42);
- uint32_t x51 = (uint32_t) (x50 >> 0x12);
- uint32_t x52 = ((uint32_t)x50 & 0x3ffff);
- uint64_t x53 = (x51 + x41);
- uint32_t x54 = (uint32_t) (x53 >> 0x13);
- uint32_t x55 = ((uint32_t)x53 & 0x7ffff);
- uint64_t x56 = (x54 + x40);
- uint32_t x57 = (uint32_t) (x56 >> 0x12);
- uint32_t x58 = ((uint32_t)x56 & 0x3ffff);
- uint64_t x59 = (x57 + x39);
- uint32_t x60 = (uint32_t) (x59 >> 0x12);
- uint32_t x61 = ((uint32_t)x59 & 0x3ffff);
- uint64_t x62 = (x60 + x38);
- uint32_t x63 = (uint32_t) (x62 >> 0x13);
- uint32_t x64 = ((uint32_t)x62 & 0x7ffff);
- uint64_t x65 = (x63 + x37);
- uint32_t x66 = (uint32_t) (x65 >> 0x12);
- uint32_t x67 = ((uint32_t)x65 & 0x3ffff);
- uint64_t x68 = (x66 + x36);
- uint32_t x69 = (uint32_t) (x68 >> 0x12);
- uint32_t x70 = ((uint32_t)x68 & 0x3ffff);
- uint32_t x71 = (x46 + (0x19 * x69));
- uint32_t x72 = (x71 >> 0x13);
- uint32_t x73 = (x71 & 0x7ffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x12);
- uint32_t x76 = (x74 & 0x3ffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25/femulDisplay.v b/src/Specific/solinas32_2e165m25/femulDisplay.v
deleted file mode 100644
index 2432077f9..000000000
--- a/src/Specific/solinas32_2e165m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e165m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e165m25/fesquare.c b/src/Specific/solinas32_2e165m25/fesquare.c
deleted file mode 100644
index b20c2b582..000000000
--- a/src/Specific/solinas32_2e165m25/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x19 * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- { uint32_t x26 = (uint32_t) (x25 >> 0x13);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffff);
- { uint64_t x28 = (x26 + x24);
- { uint32_t x29 = (uint32_t) (x28 >> 0x12);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffff);
- { uint64_t x31 = (x29 + x23);
- { uint32_t x32 = (uint32_t) (x31 >> 0x12);
- { uint32_t x33 = ((uint32_t)x31 & 0x3ffff);
- { uint64_t x34 = (x32 + x22);
- { uint32_t x35 = (uint32_t) (x34 >> 0x13);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- { uint64_t x37 = (x35 + x21);
- { uint32_t x38 = (uint32_t) (x37 >> 0x12);
- { uint32_t x39 = ((uint32_t)x37 & 0x3ffff);
- { uint64_t x40 = (x38 + x20);
- { uint32_t x41 = (uint32_t) (x40 >> 0x12);
- { uint32_t x42 = ((uint32_t)x40 & 0x3ffff);
- { uint64_t x43 = (x41 + x19);
- { uint32_t x44 = (uint32_t) (x43 >> 0x13);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- { uint64_t x46 = (x44 + x18);
- { uint32_t x47 = (uint32_t) (x46 >> 0x12);
- { uint32_t x48 = ((uint32_t)x46 & 0x3ffff);
- { uint64_t x49 = (x47 + x17);
- { uint32_t x50 = (uint32_t) (x49 >> 0x12);
- { uint32_t x51 = ((uint32_t)x49 & 0x3ffff);
- { uint32_t x52 = (x27 + (0x19 * x50));
- { uint32_t x53 = (x52 >> 0x13);
- { uint32_t x54 = (x52 & 0x7ffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x12);
- { uint32_t x57 = (x55 & 0x3ffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e165m25/fesquare.v b/src/Specific/solinas32_2e165m25/fesquare.v
deleted file mode 100644
index a28485221..000000000
--- a/src/Specific/solinas32_2e165m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e165m25/fesquareDisplay.log b/src/Specific/solinas32_2e165m25/fesquareDisplay.log
deleted file mode 100644
index 01627e8b0..000000000
--- a/src/Specific/solinas32_2e165m25/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x19 * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- uint32_t x26 = (uint32_t) (x25 >> 0x13);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffff);
- uint64_t x28 = (x26 + x24);
- uint32_t x29 = (uint32_t) (x28 >> 0x12);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffff);
- uint64_t x31 = (x29 + x23);
- uint32_t x32 = (uint32_t) (x31 >> 0x12);
- uint32_t x33 = ((uint32_t)x31 & 0x3ffff);
- uint64_t x34 = (x32 + x22);
- uint32_t x35 = (uint32_t) (x34 >> 0x13);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- uint64_t x37 = (x35 + x21);
- uint32_t x38 = (uint32_t) (x37 >> 0x12);
- uint32_t x39 = ((uint32_t)x37 & 0x3ffff);
- uint64_t x40 = (x38 + x20);
- uint32_t x41 = (uint32_t) (x40 >> 0x12);
- uint32_t x42 = ((uint32_t)x40 & 0x3ffff);
- uint64_t x43 = (x41 + x19);
- uint32_t x44 = (uint32_t) (x43 >> 0x13);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- uint64_t x46 = (x44 + x18);
- uint32_t x47 = (uint32_t) (x46 >> 0x12);
- uint32_t x48 = ((uint32_t)x46 & 0x3ffff);
- uint64_t x49 = (x47 + x17);
- uint32_t x50 = (uint32_t) (x49 >> 0x12);
- uint32_t x51 = ((uint32_t)x49 & 0x3ffff);
- uint32_t x52 = (x27 + (0x19 * x50));
- uint32_t x53 = (x52 >> 0x13);
- uint32_t x54 = (x52 & 0x7ffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x12);
- uint32_t x57 = (x55 & 0x3ffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25/fesquareDisplay.v b/src/Specific/solinas32_2e165m25/fesquareDisplay.v
deleted file mode 100644
index a3ba6a992..000000000
--- a/src/Specific/solinas32_2e165m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e165m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e165m25/fesub.c b/src/Specific/solinas32_2e165m25/fesub.c
deleted file mode 100644
index 4f89eb94c..000000000
--- a/src/Specific/solinas32_2e165m25/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0xfffce + x5) - x21);
- out[1] = ((0x7fffe + x7) - x23);
- out[2] = ((0x7fffe + x9) - x25);
- out[3] = ((0xffffe + x11) - x27);
- out[4] = ((0x7fffe + x13) - x29);
- out[5] = ((0x7fffe + x15) - x31);
- out[6] = ((0xffffe + x17) - x33);
- out[7] = ((0x7fffe + x19) - x35);
- out[8] = ((0x7fffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e165m25/fesub.v b/src/Specific/solinas32_2e165m25/fesub.v
deleted file mode 100644
index 8cf023c23..000000000
--- a/src/Specific/solinas32_2e165m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e165m25/fesubDisplay.log b/src/Specific/solinas32_2e165m25/fesubDisplay.log
deleted file mode 100644
index d74d0c143..000000000
--- a/src/Specific/solinas32_2e165m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7fffe + x18) - x34), ((0x7fffe + x19) - x35), ((0xffffe + x17) - x33), ((0x7fffe + x15) - x31), ((0x7fffe + x13) - x29), ((0xffffe + x11) - x27), ((0x7fffe + x9) - x25), ((0x7fffe + x7) - x23), ((0xfffce + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25/fesubDisplay.v b/src/Specific/solinas32_2e165m25/fesubDisplay.v
deleted file mode 100644
index 7f13f9aeb..000000000
--- a/src/Specific/solinas32_2e165m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e165m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e165m25/freeze.c b/src/Specific/solinas32_2e165m25/freeze.c
deleted file mode 100644
index c2d7b5da7..000000000
--- a/src/Specific/solinas32_2e165m25/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffe7);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x7ffe7);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x3ffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x3ffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x7ffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x3ffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x3ffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x7ffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x3ffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x3ffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e165m25/freeze.v b/src/Specific/solinas32_2e165m25/freeze.v
deleted file mode 100644
index eec008ff1..000000000
--- a/src/Specific/solinas32_2e165m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e165m25/freezeDisplay.log b/src/Specific/solinas32_2e165m25/freezeDisplay.log
deleted file mode 100644
index 38ceca627..000000000
--- a/src/Specific/solinas32_2e165m25/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffe7);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x7ffe7);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x3ffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x3ffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x7ffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x3ffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x3ffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x7ffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x3ffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x3ffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e165m25/freezeDisplay.v b/src/Specific/solinas32_2e165m25/freezeDisplay.v
deleted file mode 100644
index 347bcfead..000000000
--- a/src/Specific/solinas32_2e165m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e165m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e165m25/py_interpreter.sh b/src/Specific/solinas32_2e165m25/py_interpreter.sh
deleted file mode 100755
index 5b6e0ca73..000000000
--- a/src/Specific/solinas32_2e165m25/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**165 - 25' -Dmodulus_bytes='18 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e165m25_7limbs/CurveParameters.v b/src/Specific/solinas32_2e165m25_7limbs/CurveParameters.v
new file mode 100644
index 000000000..108f8fc68
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^165 - 25
+Base: 23 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 23 + 4/7;
+ bitwidth := 32;
+ s := 2^165;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/Synthesis.v b/src/Specific/solinas32_2e165m25_7limbs/Synthesis.v
new file mode 100644
index 000000000..7800ca199
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/compiler.sh b/src/Specific/solinas32_2e165m25_7limbs/compiler.sh
new file mode 100755
index 000000000..4d981c6df
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25_7limbs/compilerxx.sh b/src/Specific/solinas32_2e165m25_7limbs/compilerxx.sh
new file mode 100755
index 000000000..3321b3cf5
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25_7limbs/feadd.v b/src/Specific/solinas32_2e165m25_7limbs/feadd.v
new file mode 100644
index 000000000..c584129a1
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..e7269822f
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/femul.v b/src/Specific/solinas32_2e165m25_7limbs/femul.v
new file mode 100644
index 000000000..65638ae37
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.v b/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.v
new file mode 100644
index 000000000..a147bf93b
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesquare.v b/src/Specific/solinas32_2e165m25_7limbs/fesquare.v
new file mode 100644
index 000000000..0945bfbff
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8d76e348b
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesub.v b/src/Specific/solinas32_2e165m25_7limbs/fesub.v
new file mode 100644
index 000000000..8e1c0965e
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..50f7ce5bd
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/freeze.v b/src/Specific/solinas32_2e165m25_7limbs/freeze.v
new file mode 100644
index 000000000..17755bb32
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..dc3f61e45
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e165m25_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e165m25_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..e7e507314
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**165 - 25' -Dmodulus_bytes='23 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e165m25_8limbs/CurveParameters.v b/src/Specific/solinas32_2e165m25_8limbs/CurveParameters.v
new file mode 100644
index 000000000..d75d7b605
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^165 - 25
+Base: 20.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 20 + 5/8;
+ bitwidth := 32;
+ s := 2^165;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/Synthesis.v b/src/Specific/solinas32_2e165m25_8limbs/Synthesis.v
new file mode 100644
index 000000000..15c770f93
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/compiler.sh b/src/Specific/solinas32_2e165m25_8limbs/compiler.sh
new file mode 100755
index 000000000..52b62620b
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,21,20,21,21,20,21,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25_8limbs/compilerxx.sh b/src/Specific/solinas32_2e165m25_8limbs/compilerxx.sh
new file mode 100755
index 000000000..824ca33b8
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,21,20,21,21,20,21,20}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas32_2e165m25_8limbs/feadd.v b/src/Specific/solinas32_2e165m25_8limbs/feadd.v
new file mode 100644
index 000000000..0f7a26438
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..94814a27f
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/femul.v b/src/Specific/solinas32_2e165m25_8limbs/femul.v
new file mode 100644
index 000000000..11a9d8734
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.v b/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.v
new file mode 100644
index 000000000..e3557a8c5
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesquare.v b/src/Specific/solinas32_2e165m25_8limbs/fesquare.v
new file mode 100644
index 000000000..b92f7fa43
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..52e5ac8b9
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesub.v b/src/Specific/solinas32_2e165m25_8limbs/fesub.v
new file mode 100644
index 000000000..12838e5ec
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..2aa395b64
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/freeze.v b/src/Specific/solinas32_2e165m25_8limbs/freeze.v
new file mode 100644
index 000000000..b92d3e42c
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..3ea1187db
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e165m25_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e165m25_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e165m25_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..45895b7d1
--- /dev/null
+++ b/src/Specific/solinas32_2e165m25_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**165 - 25' -Dmodulus_bytes='20.625' -Da24='121665'
diff --git a/src/Specific/solinas32_2e166m5/CurveParameters.v b/src/Specific/solinas32_2e166m5/CurveParameters.v
deleted file mode 100644
index 785fab228..000000000
--- a/src/Specific/solinas32_2e166m5/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^166 - 5
-Base: 15 + 1/11
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 11%nat;
- base := 15 + 1/11;
- bitwidth := 32;
- s := 2^166;
- c := [(1, 5)];
- carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e166m5/Synthesis.v b/src/Specific/solinas32_2e166m5/Synthesis.v
deleted file mode 100644
index 610987342..000000000
--- a/src/Specific/solinas32_2e166m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e166m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e166m5/compiler.sh b/src/Specific/solinas32_2e166m5/compiler.sh
deleted file mode 100755
index 7d2f51a60..000000000
--- a/src/Specific/solinas32_2e166m5/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{16,15,15,15,15,15,15,15,15,15,15}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5/compilerxx.sh b/src/Specific/solinas32_2e166m5/compilerxx.sh
deleted file mode 100755
index ef39fd3e4..000000000
--- a/src/Specific/solinas32_2e166m5/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{16,15,15,15,15,15,15,15,15,15,15}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5/feadd.c b/src/Specific/solinas32_2e166m5/feadd.c
deleted file mode 100644
index 1763e8727..000000000
--- a/src/Specific/solinas32_2e166m5/feadd.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- out[0] = (x5 + x25);
- out[1] = (x7 + x27);
- out[2] = (x9 + x29);
- out[3] = (x11 + x31);
- out[4] = (x13 + x33);
- out[5] = (x15 + x35);
- out[6] = (x17 + x37);
- out[7] = (x19 + x39);
- out[8] = (x21 + x41);
- out[9] = (x23 + x43);
- out[10] = (x22 + x42);
- }}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e166m5/feadd.v b/src/Specific/solinas32_2e166m5/feadd.v
deleted file mode 100644
index 179175820..000000000
--- a/src/Specific/solinas32_2e166m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e166m5/feaddDisplay.log b/src/Specific/solinas32_2e166m5/feaddDisplay.log
deleted file mode 100644
index 433ecbc2e..000000000
--- a/src/Specific/solinas32_2e166m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5/feaddDisplay.v b/src/Specific/solinas32_2e166m5/feaddDisplay.v
deleted file mode 100644
index 6c245008e..000000000
--- a/src/Specific/solinas32_2e166m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e166m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e166m5/femul.c b/src/Specific/solinas32_2e166m5/femul.c
deleted file mode 100644
index e3fcf8b14..000000000
--- a/src/Specific/solinas32_2e166m5/femul.c
+++ /dev/null
@@ -1,85 +0,0 @@
-static void femul(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- { uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
- { uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x5 * ((uint64_t)x22 * x42)));
- { uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x5 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
- { uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x5 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
- { uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x5 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
- { uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x5 * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
- { uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x5 * (((uint64_t)x15 * x42) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((uint64_t)x22 * x35))))))));
- { uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x5 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
- { uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x5 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
- { uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x5 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
- { uint64_t x54 = (((uint64_t)x5 * x25) + (0x5 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
- { uint32_t x55 = (uint32_t) (x54 >> 0x10);
- { uint32_t x56 = ((uint32_t)x54 & 0xffff);
- { uint64_t x57 = (x55 + x53);
- { uint32_t x58 = (uint32_t) (x57 >> 0xf);
- { uint32_t x59 = ((uint32_t)x57 & 0x7fff);
- { uint64_t x60 = (x58 + x52);
- { uint32_t x61 = (uint32_t) (x60 >> 0xf);
- { uint32_t x62 = ((uint32_t)x60 & 0x7fff);
- { uint64_t x63 = (x61 + x51);
- { uint32_t x64 = (uint32_t) (x63 >> 0xf);
- { uint32_t x65 = ((uint32_t)x63 & 0x7fff);
- { uint64_t x66 = (x64 + x50);
- { uint32_t x67 = (uint32_t) (x66 >> 0xf);
- { uint32_t x68 = ((uint32_t)x66 & 0x7fff);
- { uint64_t x69 = (x67 + x49);
- { uint32_t x70 = (uint32_t) (x69 >> 0xf);
- { uint32_t x71 = ((uint32_t)x69 & 0x7fff);
- { uint64_t x72 = (x70 + x48);
- { uint32_t x73 = (uint32_t) (x72 >> 0xf);
- { uint32_t x74 = ((uint32_t)x72 & 0x7fff);
- { uint64_t x75 = (x73 + x47);
- { uint32_t x76 = (uint32_t) (x75 >> 0xf);
- { uint32_t x77 = ((uint32_t)x75 & 0x7fff);
- { uint64_t x78 = (x76 + x46);
- { uint32_t x79 = (uint32_t) (x78 >> 0xf);
- { uint32_t x80 = ((uint32_t)x78 & 0x7fff);
- { uint64_t x81 = (x79 + x45);
- { uint32_t x82 = (uint32_t) (x81 >> 0xf);
- { uint32_t x83 = ((uint32_t)x81 & 0x7fff);
- { uint64_t x84 = (x82 + x44);
- { uint32_t x85 = (uint32_t) (x84 >> 0xf);
- { uint32_t x86 = ((uint32_t)x84 & 0x7fff);
- { uint32_t x87 = (x56 + (0x5 * x85));
- { uint32_t x88 = (x87 >> 0x10);
- { uint32_t x89 = (x87 & 0xffff);
- { uint32_t x90 = (x88 + x59);
- { uint32_t x91 = (x90 >> 0xf);
- { uint32_t x92 = (x90 & 0x7fff);
- out[0] = x89;
- out[1] = x92;
- out[2] = (x91 + x62);
- out[3] = x65;
- out[4] = x68;
- out[5] = x71;
- out[6] = x74;
- out[7] = x77;
- out[8] = x80;
- out[9] = x83;
- out[10] = x86;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e166m5/femul.v b/src/Specific/solinas32_2e166m5/femul.v
deleted file mode 100644
index 7eefdf9fc..000000000
--- a/src/Specific/solinas32_2e166m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e166m5/femulDisplay.log b/src/Specific/solinas32_2e166m5/femulDisplay.log
deleted file mode 100644
index 92f4ded4a..000000000
--- a/src/Specific/solinas32_2e166m5/femulDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- uint64_t x44 = (((uint64_t)x5 * x42) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + ((0x2 * ((uint64_t)x17 * x33)) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((0x2 * ((uint64_t)x23 * x27)) + ((uint64_t)x22 * x25)))))))))));
- uint64_t x45 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + ((uint64_t)x23 * x25)))))))))) + (0x5 * ((uint64_t)x22 * x42)));
- uint64_t x46 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((uint64_t)x21 * x25))))))))) + (0x5 * (((uint64_t)x23 * x42) + ((uint64_t)x22 * x43))));
- uint64_t x47 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((uint64_t)x19 * x25)))))))) + (0x5 * (((uint64_t)x21 * x42) + (((uint64_t)x23 * x43) + ((uint64_t)x22 * x41)))));
- uint64_t x48 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((uint64_t)x17 * x25))))))) + (0x5 * (((uint64_t)x19 * x42) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x22 * x39))))));
- uint64_t x49 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((uint64_t)x15 * x25)))))) + (0x5 * (((uint64_t)x17 * x42) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + ((uint64_t)x22 * x37)))))));
- uint64_t x50 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((uint64_t)x13 * x25))))) + (0x5 * (((uint64_t)x15 * x42) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((uint64_t)x22 * x35))))))));
- uint64_t x51 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((uint64_t)x11 * x25)))) + (0x5 * (((uint64_t)x13 * x42) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((uint64_t)x22 * x33)))))))));
- uint64_t x52 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((uint64_t)x9 * x25))) + (0x5 * (((uint64_t)x11 * x42) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x22 * x31))))))))));
- uint64_t x53 = ((((uint64_t)x5 * x27) + ((uint64_t)x7 * x25)) + (0x5 * (((uint64_t)x9 * x42) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x22 * x29)))))))))));
- uint64_t x54 = (((uint64_t)x5 * x25) + (0x5 * ((0x2 * ((uint64_t)x7 * x42)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((0x2 * ((uint64_t)x17 * x35)) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + (0x2 * ((uint64_t)x22 * x27)))))))))))));
- uint32_t x55 = (uint32_t) (x54 >> 0x10);
- uint32_t x56 = ((uint32_t)x54 & 0xffff);
- uint64_t x57 = (x55 + x53);
- uint32_t x58 = (uint32_t) (x57 >> 0xf);
- uint32_t x59 = ((uint32_t)x57 & 0x7fff);
- uint64_t x60 = (x58 + x52);
- uint32_t x61 = (uint32_t) (x60 >> 0xf);
- uint32_t x62 = ((uint32_t)x60 & 0x7fff);
- uint64_t x63 = (x61 + x51);
- uint32_t x64 = (uint32_t) (x63 >> 0xf);
- uint32_t x65 = ((uint32_t)x63 & 0x7fff);
- uint64_t x66 = (x64 + x50);
- uint32_t x67 = (uint32_t) (x66 >> 0xf);
- uint32_t x68 = ((uint32_t)x66 & 0x7fff);
- uint64_t x69 = (x67 + x49);
- uint32_t x70 = (uint32_t) (x69 >> 0xf);
- uint32_t x71 = ((uint32_t)x69 & 0x7fff);
- uint64_t x72 = (x70 + x48);
- uint32_t x73 = (uint32_t) (x72 >> 0xf);
- uint32_t x74 = ((uint32_t)x72 & 0x7fff);
- uint64_t x75 = (x73 + x47);
- uint32_t x76 = (uint32_t) (x75 >> 0xf);
- uint32_t x77 = ((uint32_t)x75 & 0x7fff);
- uint64_t x78 = (x76 + x46);
- uint32_t x79 = (uint32_t) (x78 >> 0xf);
- uint32_t x80 = ((uint32_t)x78 & 0x7fff);
- uint64_t x81 = (x79 + x45);
- uint32_t x82 = (uint32_t) (x81 >> 0xf);
- uint32_t x83 = ((uint32_t)x81 & 0x7fff);
- uint64_t x84 = (x82 + x44);
- uint32_t x85 = (uint32_t) (x84 >> 0xf);
- uint32_t x86 = ((uint32_t)x84 & 0x7fff);
- uint32_t x87 = (x56 + (0x5 * x85));
- uint32_t x88 = (x87 >> 0x10);
- uint32_t x89 = (x87 & 0xffff);
- uint32_t x90 = (x88 + x59);
- uint32_t x91 = (x90 >> 0xf);
- uint32_t x92 = (x90 & 0x7fff);
- return (Return x86, Return x83, Return x80, Return x77, Return x74, Return x71, Return x68, Return x65, (x91 + x62), Return x92, Return x89))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5/femulDisplay.v b/src/Specific/solinas32_2e166m5/femulDisplay.v
deleted file mode 100644
index 2cb72c9cb..000000000
--- a/src/Specific/solinas32_2e166m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e166m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e166m5/fesquare.c b/src/Specific/solinas32_2e166m5/fesquare.c
deleted file mode 100644
index f26c76081..000000000
--- a/src/Specific/solinas32_2e166m5/fesquare.c
+++ /dev/null
@@ -1,74 +0,0 @@
-static void fesquare(uint32_t out[11], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
- { uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x5 * ((uint64_t)x19 * x19)));
- { uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
- { uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
- { uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
- { uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
- { uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x19) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((uint64_t)x19 * x12))))))));
- { uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
- { uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
- { uint64_t x31 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
- { uint32_t x32 = (uint32_t) (x31 >> 0x10);
- { uint32_t x33 = ((uint32_t)x31 & 0xffff);
- { uint64_t x34 = (x32 + x30);
- { uint32_t x35 = (uint32_t) (x34 >> 0xf);
- { uint32_t x36 = ((uint32_t)x34 & 0x7fff);
- { uint64_t x37 = (x35 + x29);
- { uint32_t x38 = (uint32_t) (x37 >> 0xf);
- { uint32_t x39 = ((uint32_t)x37 & 0x7fff);
- { uint64_t x40 = (x38 + x28);
- { uint32_t x41 = (uint32_t) (x40 >> 0xf);
- { uint32_t x42 = ((uint32_t)x40 & 0x7fff);
- { uint64_t x43 = (x41 + x27);
- { uint32_t x44 = (uint32_t) (x43 >> 0xf);
- { uint32_t x45 = ((uint32_t)x43 & 0x7fff);
- { uint64_t x46 = (x44 + x26);
- { uint32_t x47 = (uint32_t) (x46 >> 0xf);
- { uint32_t x48 = ((uint32_t)x46 & 0x7fff);
- { uint64_t x49 = (x47 + x25);
- { uint32_t x50 = (uint32_t) (x49 >> 0xf);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fff);
- { uint64_t x52 = (x50 + x24);
- { uint32_t x53 = (uint32_t) (x52 >> 0xf);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fff);
- { uint64_t x55 = (x53 + x23);
- { uint32_t x56 = (uint32_t) (x55 >> 0xf);
- { uint32_t x57 = ((uint32_t)x55 & 0x7fff);
- { uint64_t x58 = (x56 + x22);
- { uint32_t x59 = (uint32_t) (x58 >> 0xf);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fff);
- { uint64_t x61 = (x59 + x21);
- { uint32_t x62 = (uint32_t) (x61 >> 0xf);
- { uint32_t x63 = ((uint32_t)x61 & 0x7fff);
- { uint32_t x64 = (x33 + (0x5 * x62));
- { uint32_t x65 = (x64 >> 0x10);
- { uint32_t x66 = (x64 & 0xffff);
- { uint32_t x67 = (x65 + x36);
- { uint32_t x68 = (x67 >> 0xf);
- { uint32_t x69 = (x67 & 0x7fff);
- out[0] = x66;
- out[1] = x69;
- out[2] = (x68 + x39);
- out[3] = x42;
- out[4] = x45;
- out[5] = x48;
- out[6] = x51;
- out[7] = x54;
- out[8] = x57;
- out[9] = x60;
- out[10] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e166m5/fesquare.v b/src/Specific/solinas32_2e166m5/fesquare.v
deleted file mode 100644
index 3dac5973f..000000000
--- a/src/Specific/solinas32_2e166m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e166m5/fesquareDisplay.log b/src/Specific/solinas32_2e166m5/fesquareDisplay.log
deleted file mode 100644
index d80d39cf8..000000000
--- a/src/Specific/solinas32_2e166m5/fesquareDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x21 = (((uint64_t)x2 * x19) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x19 * x2)))))))))));
- uint64_t x22 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x5 * ((uint64_t)x19 * x19)));
- uint64_t x23 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (((uint64_t)x20 * x19) + ((uint64_t)x19 * x20))));
- uint64_t x24 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x19) + (((uint64_t)x20 * x20) + ((uint64_t)x19 * x18)))));
- uint64_t x25 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * (((uint64_t)x16 * x19) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x19 * x16))))));
- uint64_t x26 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x19) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + ((uint64_t)x19 * x14)))))));
- uint64_t x27 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x19) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((uint64_t)x19 * x12))))))));
- uint64_t x28 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x19) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((uint64_t)x19 * x10)))))))));
- uint64_t x29 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x19) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + ((uint64_t)x19 * x8))))))))));
- uint64_t x30 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x19) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + ((uint64_t)x19 * x6)))))))))));
- uint64_t x31 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x19)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + (0x2 * ((uint64_t)x19 * x4)))))))))))));
- uint32_t x32 = (uint32_t) (x31 >> 0x10);
- uint32_t x33 = ((uint32_t)x31 & 0xffff);
- uint64_t x34 = (x32 + x30);
- uint32_t x35 = (uint32_t) (x34 >> 0xf);
- uint32_t x36 = ((uint32_t)x34 & 0x7fff);
- uint64_t x37 = (x35 + x29);
- uint32_t x38 = (uint32_t) (x37 >> 0xf);
- uint32_t x39 = ((uint32_t)x37 & 0x7fff);
- uint64_t x40 = (x38 + x28);
- uint32_t x41 = (uint32_t) (x40 >> 0xf);
- uint32_t x42 = ((uint32_t)x40 & 0x7fff);
- uint64_t x43 = (x41 + x27);
- uint32_t x44 = (uint32_t) (x43 >> 0xf);
- uint32_t x45 = ((uint32_t)x43 & 0x7fff);
- uint64_t x46 = (x44 + x26);
- uint32_t x47 = (uint32_t) (x46 >> 0xf);
- uint32_t x48 = ((uint32_t)x46 & 0x7fff);
- uint64_t x49 = (x47 + x25);
- uint32_t x50 = (uint32_t) (x49 >> 0xf);
- uint32_t x51 = ((uint32_t)x49 & 0x7fff);
- uint64_t x52 = (x50 + x24);
- uint32_t x53 = (uint32_t) (x52 >> 0xf);
- uint32_t x54 = ((uint32_t)x52 & 0x7fff);
- uint64_t x55 = (x53 + x23);
- uint32_t x56 = (uint32_t) (x55 >> 0xf);
- uint32_t x57 = ((uint32_t)x55 & 0x7fff);
- uint64_t x58 = (x56 + x22);
- uint32_t x59 = (uint32_t) (x58 >> 0xf);
- uint32_t x60 = ((uint32_t)x58 & 0x7fff);
- uint64_t x61 = (x59 + x21);
- uint32_t x62 = (uint32_t) (x61 >> 0xf);
- uint32_t x63 = ((uint32_t)x61 & 0x7fff);
- uint32_t x64 = (x33 + (0x5 * x62));
- uint32_t x65 = (x64 >> 0x10);
- uint32_t x66 = (x64 & 0xffff);
- uint32_t x67 = (x65 + x36);
- uint32_t x68 = (x67 >> 0xf);
- uint32_t x69 = (x67 & 0x7fff);
- return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, (x68 + x39), Return x69, Return x66))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5/fesquareDisplay.v b/src/Specific/solinas32_2e166m5/fesquareDisplay.v
deleted file mode 100644
index 6df66ca58..000000000
--- a/src/Specific/solinas32_2e166m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e166m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e166m5/fesub.c b/src/Specific/solinas32_2e166m5/fesub.c
deleted file mode 100644
index 7fe218720..000000000
--- a/src/Specific/solinas32_2e166m5/fesub.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- out[0] = ((0x1fff6 + x5) - x25);
- out[1] = ((0xfffe + x7) - x27);
- out[2] = ((0xfffe + x9) - x29);
- out[3] = ((0xfffe + x11) - x31);
- out[4] = ((0xfffe + x13) - x33);
- out[5] = ((0xfffe + x15) - x35);
- out[6] = ((0xfffe + x17) - x37);
- out[7] = ((0xfffe + x19) - x39);
- out[8] = ((0xfffe + x21) - x41);
- out[9] = ((0xfffe + x23) - x43);
- out[10] = ((0xfffe + x22) - x42);
- }}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e166m5/fesub.v b/src/Specific/solinas32_2e166m5/fesub.v
deleted file mode 100644
index 16541f81c..000000000
--- a/src/Specific/solinas32_2e166m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e166m5/fesubDisplay.log b/src/Specific/solinas32_2e166m5/fesubDisplay.log
deleted file mode 100644
index 6c9ba7556..000000000
--- a/src/Specific/solinas32_2e166m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- (((0xfffe + x22) - x42), ((0xfffe + x23) - x43), ((0xfffe + x21) - x41), ((0xfffe + x19) - x39), ((0xfffe + x17) - x37), ((0xfffe + x15) - x35), ((0xfffe + x13) - x33), ((0xfffe + x11) - x31), ((0xfffe + x9) - x29), ((0xfffe + x7) - x27), ((0x1fff6 + x5) - x25)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5/fesubDisplay.v b/src/Specific/solinas32_2e166m5/fesubDisplay.v
deleted file mode 100644
index 64b1103f9..000000000
--- a/src/Specific/solinas32_2e166m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e166m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e166m5/freeze.c b/src/Specific/solinas32_2e166m5/freeze.c
deleted file mode 100644
index 935763dcd..000000000
--- a/src/Specific/solinas32_2e166m5/freeze.c
+++ /dev/null
@@ -1,59 +0,0 @@
-static void freeze(uint32_t out[11], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 16 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffb);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fff);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fff);
- { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
- { uint32_t x55 = (x54 & 0xfffb);
- { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 16 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
- { uint32_t x59 = (x54 & 0x7fff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
- { uint32_t x63 = (x54 & 0x7fff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
- { uint32_t x67 = (x54 & 0x7fff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
- { uint32_t x71 = (x54 & 0x7fff);
- { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
- { uint32_t x75 = (x54 & 0x7fff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
- { uint32_t x79 = (x54 & 0x7fff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
- { uint32_t x83 = (x54 & 0x7fff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
- { uint32_t x87 = (x54 & 0x7fff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
- { uint32_t x91 = (x54 & 0x7fff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
- { uint32_t x95 = (x54 & 0x7fff);
- { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
- out[0] = x57;
- out[1] = x61;
- out[2] = x65;
- out[3] = x69;
- out[4] = x73;
- out[5] = x77;
- out[6] = x81;
- out[7] = x85;
- out[8] = x89;
- out[9] = x93;
- out[10] = x97;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e166m5/freeze.v b/src/Specific/solinas32_2e166m5/freeze.v
deleted file mode 100644
index 15ee0c69e..000000000
--- a/src/Specific/solinas32_2e166m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e166m5/freezeDisplay.log b/src/Specific/solinas32_2e166m5/freezeDisplay.log
deleted file mode 100644
index 8090bd7f8..000000000
--- a/src/Specific/solinas32_2e166m5/freezeDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 16 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffb);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fff);
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fff);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7fff);
- uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
- uint32_t x55 = (x54 & 0xfffb);
- uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 16 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
- uint32_t x59 = (x54 & 0x7fff);
- uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
- uint32_t x63 = (x54 & 0x7fff);
- uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
- uint32_t x67 = (x54 & 0x7fff);
- uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
- uint32_t x71 = (x54 & 0x7fff);
- uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
- uint32_t x75 = (x54 & 0x7fff);
- uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
- uint32_t x79 = (x54 & 0x7fff);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
- uint32_t x83 = (x54 & 0x7fff);
- uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
- uint32_t x87 = (x54 & 0x7fff);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
- uint32_t x91 = (x54 & 0x7fff);
- uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
- uint32_t x95 = (x54 & 0x7fff);
- uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
- (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5/freezeDisplay.v b/src/Specific/solinas32_2e166m5/freezeDisplay.v
deleted file mode 100644
index 423a991b7..000000000
--- a/src/Specific/solinas32_2e166m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e166m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e166m5/py_interpreter.sh b/src/Specific/solinas32_2e166m5/py_interpreter.sh
deleted file mode 100755
index 8eb780a4b..000000000
--- a/src/Specific/solinas32_2e166m5/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**166 - 5' -Dmodulus_bytes='15 + 1/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e166m5_6limbs/CurveParameters.v b/src/Specific/solinas32_2e166m5_6limbs/CurveParameters.v
new file mode 100644
index 000000000..7ac75883c
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^166 - 5
+Base: 27 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 27 + 2/3;
+ bitwidth := 32;
+ s := 2^166;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/Synthesis.v b/src/Specific/solinas32_2e166m5_6limbs/Synthesis.v
new file mode 100644
index 000000000..76e907892
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/compiler.sh b/src/Specific/solinas32_2e166m5_6limbs/compiler.sh
new file mode 100755
index 000000000..b184bfca5
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5_6limbs/compilerxx.sh b/src/Specific/solinas32_2e166m5_6limbs/compilerxx.sh
new file mode 100755
index 000000000..a6f0644d7
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5_6limbs/feadd.v b/src/Specific/solinas32_2e166m5_6limbs/feadd.v
new file mode 100644
index 000000000..2bffbb708
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.v b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..3338bd7da
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/femul.v b/src/Specific/solinas32_2e166m5_6limbs/femul.v
new file mode 100644
index 000000000..9bf9ff4ca
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.v b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.v
new file mode 100644
index 000000000..e3d8fc1b2
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesquare.v b/src/Specific/solinas32_2e166m5_6limbs/fesquare.v
new file mode 100644
index 000000000..d2ebbb35a
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.v b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2d6ab9323
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesub.v b/src/Specific/solinas32_2e166m5_6limbs/fesub.v
new file mode 100644
index 000000000..7de97f5c3
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.v b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..13608796f
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/freeze.v b/src/Specific/solinas32_2e166m5_6limbs/freeze.v
new file mode 100644
index 000000000..9af9a590b
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.v b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..ac9183393
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e166m5_6limbs/py_interpreter.sh b/src/Specific/solinas32_2e166m5_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..139fe6124
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**166 - 5' -Dmodulus_bytes='27 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e166m5_7limbs/CurveParameters.v b/src/Specific/solinas32_2e166m5_7limbs/CurveParameters.v
new file mode 100644
index 000000000..48c3b947f
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^166 - 5
+Base: 23 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 23 + 5/7;
+ bitwidth := 32;
+ s := 2^166;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/Synthesis.v b/src/Specific/solinas32_2e166m5_7limbs/Synthesis.v
new file mode 100644
index 000000000..63ebf4d66
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/compiler.sh b/src/Specific/solinas32_2e166m5_7limbs/compiler.sh
new file mode 100755
index 000000000..3170fbfe7
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5_7limbs/compilerxx.sh b/src/Specific/solinas32_2e166m5_7limbs/compilerxx.sh
new file mode 100755
index 000000000..973f416a6
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas32_2e166m5_7limbs/feadd.v b/src/Specific/solinas32_2e166m5_7limbs/feadd.v
new file mode 100644
index 000000000..1a49371fd
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..1da8d33af
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/femul.v b/src/Specific/solinas32_2e166m5_7limbs/femul.v
new file mode 100644
index 000000000..1f91b9afd
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.v b/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.v
new file mode 100644
index 000000000..9334b5212
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesquare.v b/src/Specific/solinas32_2e166m5_7limbs/fesquare.v
new file mode 100644
index 000000000..b8587c468
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6f1c0b497
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesub.v b/src/Specific/solinas32_2e166m5_7limbs/fesub.v
new file mode 100644
index 000000000..a33b05fdd
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..09553a5c5
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/freeze.v b/src/Specific/solinas32_2e166m5_7limbs/freeze.v
new file mode 100644
index 000000000..13da312c9
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..93dced6d8
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e166m5_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e166m5_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e166m5_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..c6a5d2a8f
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**166 - 5' -Dmodulus_bytes='23 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e171m19/CurveParameters.v b/src/Specific/solinas32_2e171m19/CurveParameters.v
deleted file mode 100644
index ea04a1f0b..000000000
--- a/src/Specific/solinas32_2e171m19/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^171 - 19
-Base: 19
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 9%nat;
- base := 19;
- bitwidth := 32;
- s := 2^171;
- c := [(1, 19)];
- carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e171m19/Synthesis.v b/src/Specific/solinas32_2e171m19/Synthesis.v
deleted file mode 100644
index ab3e6fe72..000000000
--- a/src/Specific/solinas32_2e171m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e171m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e171m19/compiler.sh b/src/Specific/solinas32_2e171m19/compiler.sh
deleted file mode 100755
index ca74c36c0..000000000
--- a/src/Specific/solinas32_2e171m19/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19/compilerxx.sh b/src/Specific/solinas32_2e171m19/compilerxx.sh
deleted file mode 100755
index e4c74fb2b..000000000
--- a/src/Specific/solinas32_2e171m19/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19/feadd.c b/src/Specific/solinas32_2e171m19/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e171m19/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e171m19/feadd.v b/src/Specific/solinas32_2e171m19/feadd.v
deleted file mode 100644
index 3f5888394..000000000
--- a/src/Specific/solinas32_2e171m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e171m19/feaddDisplay.log b/src/Specific/solinas32_2e171m19/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e171m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19/feaddDisplay.v b/src/Specific/solinas32_2e171m19/feaddDisplay.v
deleted file mode 100644
index 8a4d8e177..000000000
--- a/src/Specific/solinas32_2e171m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e171m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e171m19/femul.c b/src/Specific/solinas32_2e171m19/femul.c
deleted file mode 100644
index 21a912978..000000000
--- a/src/Specific/solinas32_2e171m19/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x13 * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x13 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x13 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x13 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x13 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x13 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x13 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0x13 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- { uint32_t x45 = (uint32_t) (x44 >> 0x13);
- { uint32_t x46 = ((uint32_t)x44 & 0x7ffff);
- { uint64_t x47 = (x45 + x43);
- { uint32_t x48 = (uint32_t) (x47 >> 0x13);
- { uint32_t x49 = ((uint32_t)x47 & 0x7ffff);
- { uint64_t x50 = (x48 + x42);
- { uint32_t x51 = (uint32_t) (x50 >> 0x13);
- { uint32_t x52 = ((uint32_t)x50 & 0x7ffff);
- { uint64_t x53 = (x51 + x41);
- { uint32_t x54 = (uint32_t) (x53 >> 0x13);
- { uint32_t x55 = ((uint32_t)x53 & 0x7ffff);
- { uint64_t x56 = (x54 + x40);
- { uint32_t x57 = (uint32_t) (x56 >> 0x13);
- { uint32_t x58 = ((uint32_t)x56 & 0x7ffff);
- { uint64_t x59 = (x57 + x39);
- { uint32_t x60 = (uint32_t) (x59 >> 0x13);
- { uint32_t x61 = ((uint32_t)x59 & 0x7ffff);
- { uint64_t x62 = (x60 + x38);
- { uint32_t x63 = (uint32_t) (x62 >> 0x13);
- { uint32_t x64 = ((uint32_t)x62 & 0x7ffff);
- { uint64_t x65 = (x63 + x37);
- { uint32_t x66 = (uint32_t) (x65 >> 0x13);
- { uint32_t x67 = ((uint32_t)x65 & 0x7ffff);
- { uint64_t x68 = (x66 + x36);
- { uint32_t x69 = (uint32_t) (x68 >> 0x13);
- { uint32_t x70 = ((uint32_t)x68 & 0x7ffff);
- { uint32_t x71 = (x46 + (0x13 * x69));
- { uint32_t x72 = (x71 >> 0x13);
- { uint32_t x73 = (x71 & 0x7ffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x13);
- { uint32_t x76 = (x74 & 0x7ffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e171m19/femul.v b/src/Specific/solinas32_2e171m19/femul.v
deleted file mode 100644
index df456ba56..000000000
--- a/src/Specific/solinas32_2e171m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e171m19/femulDisplay.log b/src/Specific/solinas32_2e171m19/femulDisplay.log
deleted file mode 100644
index e0d4e103d..000000000
--- a/src/Specific/solinas32_2e171m19/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x13 * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x13 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x13 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x13 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x13 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x13 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x13 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0x13 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- uint32_t x45 = (uint32_t) (x44 >> 0x13);
- uint32_t x46 = ((uint32_t)x44 & 0x7ffff);
- uint64_t x47 = (x45 + x43);
- uint32_t x48 = (uint32_t) (x47 >> 0x13);
- uint32_t x49 = ((uint32_t)x47 & 0x7ffff);
- uint64_t x50 = (x48 + x42);
- uint32_t x51 = (uint32_t) (x50 >> 0x13);
- uint32_t x52 = ((uint32_t)x50 & 0x7ffff);
- uint64_t x53 = (x51 + x41);
- uint32_t x54 = (uint32_t) (x53 >> 0x13);
- uint32_t x55 = ((uint32_t)x53 & 0x7ffff);
- uint64_t x56 = (x54 + x40);
- uint32_t x57 = (uint32_t) (x56 >> 0x13);
- uint32_t x58 = ((uint32_t)x56 & 0x7ffff);
- uint64_t x59 = (x57 + x39);
- uint32_t x60 = (uint32_t) (x59 >> 0x13);
- uint32_t x61 = ((uint32_t)x59 & 0x7ffff);
- uint64_t x62 = (x60 + x38);
- uint32_t x63 = (uint32_t) (x62 >> 0x13);
- uint32_t x64 = ((uint32_t)x62 & 0x7ffff);
- uint64_t x65 = (x63 + x37);
- uint32_t x66 = (uint32_t) (x65 >> 0x13);
- uint32_t x67 = ((uint32_t)x65 & 0x7ffff);
- uint64_t x68 = (x66 + x36);
- uint32_t x69 = (uint32_t) (x68 >> 0x13);
- uint32_t x70 = ((uint32_t)x68 & 0x7ffff);
- uint32_t x71 = (x46 + (0x13 * x69));
- uint32_t x72 = (x71 >> 0x13);
- uint32_t x73 = (x71 & 0x7ffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x13);
- uint32_t x76 = (x74 & 0x7ffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19/femulDisplay.v b/src/Specific/solinas32_2e171m19/femulDisplay.v
deleted file mode 100644
index 55c49a7fb..000000000
--- a/src/Specific/solinas32_2e171m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e171m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e171m19/fesquare.c b/src/Specific/solinas32_2e171m19/fesquare.c
deleted file mode 100644
index 7c664a241..000000000
--- a/src/Specific/solinas32_2e171m19/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0x13 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- { uint32_t x26 = (uint32_t) (x25 >> 0x13);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffff);
- { uint64_t x28 = (x26 + x24);
- { uint32_t x29 = (uint32_t) (x28 >> 0x13);
- { uint32_t x30 = ((uint32_t)x28 & 0x7ffff);
- { uint64_t x31 = (x29 + x23);
- { uint32_t x32 = (uint32_t) (x31 >> 0x13);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- { uint64_t x34 = (x32 + x22);
- { uint32_t x35 = (uint32_t) (x34 >> 0x13);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- { uint64_t x37 = (x35 + x21);
- { uint32_t x38 = (uint32_t) (x37 >> 0x13);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- { uint64_t x40 = (x38 + x20);
- { uint32_t x41 = (uint32_t) (x40 >> 0x13);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- { uint64_t x43 = (x41 + x19);
- { uint32_t x44 = (uint32_t) (x43 >> 0x13);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- { uint64_t x46 = (x44 + x18);
- { uint32_t x47 = (uint32_t) (x46 >> 0x13);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- { uint64_t x49 = (x47 + x17);
- { uint32_t x50 = (uint32_t) (x49 >> 0x13);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- { uint32_t x52 = (x27 + (0x13 * x50));
- { uint32_t x53 = (x52 >> 0x13);
- { uint32_t x54 = (x52 & 0x7ffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x13);
- { uint32_t x57 = (x55 & 0x7ffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e171m19/fesquare.v b/src/Specific/solinas32_2e171m19/fesquare.v
deleted file mode 100644
index 9a340792e..000000000
--- a/src/Specific/solinas32_2e171m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e171m19/fesquareDisplay.log b/src/Specific/solinas32_2e171m19/fesquareDisplay.log
deleted file mode 100644
index d0ed9d39e..000000000
--- a/src/Specific/solinas32_2e171m19/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0x13 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- uint32_t x26 = (uint32_t) (x25 >> 0x13);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffff);
- uint64_t x28 = (x26 + x24);
- uint32_t x29 = (uint32_t) (x28 >> 0x13);
- uint32_t x30 = ((uint32_t)x28 & 0x7ffff);
- uint64_t x31 = (x29 + x23);
- uint32_t x32 = (uint32_t) (x31 >> 0x13);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- uint64_t x34 = (x32 + x22);
- uint32_t x35 = (uint32_t) (x34 >> 0x13);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- uint64_t x37 = (x35 + x21);
- uint32_t x38 = (uint32_t) (x37 >> 0x13);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- uint64_t x40 = (x38 + x20);
- uint32_t x41 = (uint32_t) (x40 >> 0x13);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- uint64_t x43 = (x41 + x19);
- uint32_t x44 = (uint32_t) (x43 >> 0x13);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- uint64_t x46 = (x44 + x18);
- uint32_t x47 = (uint32_t) (x46 >> 0x13);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- uint64_t x49 = (x47 + x17);
- uint32_t x50 = (uint32_t) (x49 >> 0x13);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- uint32_t x52 = (x27 + (0x13 * x50));
- uint32_t x53 = (x52 >> 0x13);
- uint32_t x54 = (x52 & 0x7ffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x13);
- uint32_t x57 = (x55 & 0x7ffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19/fesquareDisplay.v b/src/Specific/solinas32_2e171m19/fesquareDisplay.v
deleted file mode 100644
index b1287c429..000000000
--- a/src/Specific/solinas32_2e171m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e171m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e171m19/fesub.c b/src/Specific/solinas32_2e171m19/fesub.c
deleted file mode 100644
index db56b039a..000000000
--- a/src/Specific/solinas32_2e171m19/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0xfffda + x5) - x21);
- out[1] = ((0xffffe + x7) - x23);
- out[2] = ((0xffffe + x9) - x25);
- out[3] = ((0xffffe + x11) - x27);
- out[4] = ((0xffffe + x13) - x29);
- out[5] = ((0xffffe + x15) - x31);
- out[6] = ((0xffffe + x17) - x33);
- out[7] = ((0xffffe + x19) - x35);
- out[8] = ((0xffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e171m19/fesub.v b/src/Specific/solinas32_2e171m19/fesub.v
deleted file mode 100644
index ce60f591a..000000000
--- a/src/Specific/solinas32_2e171m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e171m19/fesubDisplay.log b/src/Specific/solinas32_2e171m19/fesubDisplay.log
deleted file mode 100644
index c3a1aaa87..000000000
--- a/src/Specific/solinas32_2e171m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0xffffe + x18) - x34), ((0xffffe + x19) - x35), ((0xffffe + x17) - x33), ((0xffffe + x15) - x31), ((0xffffe + x13) - x29), ((0xffffe + x11) - x27), ((0xffffe + x9) - x25), ((0xffffe + x7) - x23), ((0xfffda + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19/fesubDisplay.v b/src/Specific/solinas32_2e171m19/fesubDisplay.v
deleted file mode 100644
index 2df325d33..000000000
--- a/src/Specific/solinas32_2e171m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e171m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e171m19/freeze.c b/src/Specific/solinas32_2e171m19/freeze.c
deleted file mode 100644
index e98d0da33..000000000
--- a/src/Specific/solinas32_2e171m19/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffed);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x7ffed);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x7ffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x7ffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x7ffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x7ffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x7ffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x7ffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x7ffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x7ffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e171m19/freeze.v b/src/Specific/solinas32_2e171m19/freeze.v
deleted file mode 100644
index 3916fc294..000000000
--- a/src/Specific/solinas32_2e171m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e171m19/freezeDisplay.log b/src/Specific/solinas32_2e171m19/freezeDisplay.log
deleted file mode 100644
index 19e834e01..000000000
--- a/src/Specific/solinas32_2e171m19/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffed);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x7ffed);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x7ffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x7ffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x7ffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x7ffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x7ffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x7ffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x7ffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x7ffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e171m19/freezeDisplay.v b/src/Specific/solinas32_2e171m19/freezeDisplay.v
deleted file mode 100644
index ed7af8536..000000000
--- a/src/Specific/solinas32_2e171m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e171m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e171m19/py_interpreter.sh b/src/Specific/solinas32_2e171m19/py_interpreter.sh
deleted file mode 100755
index 6f936eb8e..000000000
--- a/src/Specific/solinas32_2e171m19/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**171 - 19' -Dmodulus_bytes='19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e171m19_7limbs/CurveParameters.v b/src/Specific/solinas32_2e171m19_7limbs/CurveParameters.v
new file mode 100644
index 000000000..10601d6d1
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^171 - 19
+Base: 24 + 3/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 24 + 3/7;
+ bitwidth := 32;
+ s := 2^171;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/Synthesis.v b/src/Specific/solinas32_2e171m19_7limbs/Synthesis.v
new file mode 100644
index 000000000..de0a57129
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/compiler.sh b/src/Specific/solinas32_2e171m19_7limbs/compiler.sh
new file mode 100755
index 000000000..8875575f1
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19_7limbs/compilerxx.sh b/src/Specific/solinas32_2e171m19_7limbs/compilerxx.sh
new file mode 100755
index 000000000..c4c46e6e8
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19_7limbs/feadd.v b/src/Specific/solinas32_2e171m19_7limbs/feadd.v
new file mode 100644
index 000000000..82904e9b1
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..d8473c284
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/femul.v b/src/Specific/solinas32_2e171m19_7limbs/femul.v
new file mode 100644
index 000000000..481e94d70
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.v b/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.v
new file mode 100644
index 000000000..9528a4abe
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesquare.v b/src/Specific/solinas32_2e171m19_7limbs/fesquare.v
new file mode 100644
index 000000000..7d6a7a274
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9580d5e3f
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesub.v b/src/Specific/solinas32_2e171m19_7limbs/fesub.v
new file mode 100644
index 000000000..e06459d3d
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..6d31bd213
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/freeze.v b/src/Specific/solinas32_2e171m19_7limbs/freeze.v
new file mode 100644
index 000000000..07972c0f0
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..c136bcec3
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e171m19_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e171m19_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..fa2170571
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**171 - 19' -Dmodulus_bytes='24 + 3/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e171m19_8limbs/CurveParameters.v b/src/Specific/solinas32_2e171m19_8limbs/CurveParameters.v
new file mode 100644
index 000000000..4b90d2264
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^171 - 19
+Base: 21.375
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 21 + 3/8;
+ bitwidth := 32;
+ s := 2^171;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/Synthesis.v b/src/Specific/solinas32_2e171m19_8limbs/Synthesis.v
new file mode 100644
index 000000000..25e760d6b
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/compiler.sh b/src/Specific/solinas32_2e171m19_8limbs/compiler.sh
new file mode 100755
index 000000000..2d78d56ce
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,21,22,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19_8limbs/compilerxx.sh b/src/Specific/solinas32_2e171m19_8limbs/compilerxx.sh
new file mode 100755
index 000000000..7ede9a7bd
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,22,21,21,22,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas32_2e171m19_8limbs/feadd.v b/src/Specific/solinas32_2e171m19_8limbs/feadd.v
new file mode 100644
index 000000000..fc5a605c8
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..5c08db701
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/femul.v b/src/Specific/solinas32_2e171m19_8limbs/femul.v
new file mode 100644
index 000000000..e00ae6459
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.v b/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.v
new file mode 100644
index 000000000..edd5c3c28
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesquare.v b/src/Specific/solinas32_2e171m19_8limbs/fesquare.v
new file mode 100644
index 000000000..3096d87fe
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5b91c94e0
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesub.v b/src/Specific/solinas32_2e171m19_8limbs/fesub.v
new file mode 100644
index 000000000..1e96d1ced
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..6aa2156f0
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/freeze.v b/src/Specific/solinas32_2e171m19_8limbs/freeze.v
new file mode 100644
index 000000000..9b1f7ed21
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..fcfae09ce
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e171m19_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e171m19_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e171m19_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..f8b71e67d
--- /dev/null
+++ b/src/Specific/solinas32_2e171m19_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**171 - 19' -Dmodulus_bytes='21.375' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m17/CurveParameters.v b/src/Specific/solinas32_2e174m17/CurveParameters.v
deleted file mode 100644
index a3763c3c8..000000000
--- a/src/Specific/solinas32_2e174m17/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^174 - 17
-Base: 19 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 9%nat;
- base := 19 + 1/3;
- bitwidth := 32;
- s := 2^174;
- c := [(1, 17)];
- carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m17/Synthesis.v b/src/Specific/solinas32_2e174m17/Synthesis.v
deleted file mode 100644
index f45a1cff6..000000000
--- a/src/Specific/solinas32_2e174m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e174m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m17/compiler.sh b/src/Specific/solinas32_2e174m17/compiler.sh
deleted file mode 100755
index c574232a1..000000000
--- a/src/Specific/solinas32_2e174m17/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,20,19,19,20,19,19}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17/compilerxx.sh b/src/Specific/solinas32_2e174m17/compilerxx.sh
deleted file mode 100755
index 36b0ed5be..000000000
--- a/src/Specific/solinas32_2e174m17/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,20,19,19,20,19,19}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17/feadd.c b/src/Specific/solinas32_2e174m17/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e174m17/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m17/feadd.v b/src/Specific/solinas32_2e174m17/feadd.v
deleted file mode 100644
index 0dc3b3c55..000000000
--- a/src/Specific/solinas32_2e174m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m17/feaddDisplay.log b/src/Specific/solinas32_2e174m17/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e174m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17/feaddDisplay.v b/src/Specific/solinas32_2e174m17/feaddDisplay.v
deleted file mode 100644
index 16fcf31ff..000000000
--- a/src/Specific/solinas32_2e174m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e174m17/femul.c b/src/Specific/solinas32_2e174m17/femul.c
deleted file mode 100644
index 0686649fc..000000000
--- a/src/Specific/solinas32_2e174m17/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x11 * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x11 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x11 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x11 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x11 * (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x11 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0x11 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- { uint32_t x45 = (uint32_t) (x44 >> 0x14);
- { uint32_t x46 = ((uint32_t)x44 & 0xfffff);
- { uint64_t x47 = (x45 + x43);
- { uint32_t x48 = (uint32_t) (x47 >> 0x13);
- { uint32_t x49 = ((uint32_t)x47 & 0x7ffff);
- { uint64_t x50 = (x48 + x42);
- { uint32_t x51 = (uint32_t) (x50 >> 0x13);
- { uint32_t x52 = ((uint32_t)x50 & 0x7ffff);
- { uint64_t x53 = (x51 + x41);
- { uint32_t x54 = (uint32_t) (x53 >> 0x14);
- { uint32_t x55 = ((uint32_t)x53 & 0xfffff);
- { uint64_t x56 = (x54 + x40);
- { uint32_t x57 = (uint32_t) (x56 >> 0x13);
- { uint32_t x58 = ((uint32_t)x56 & 0x7ffff);
- { uint64_t x59 = (x57 + x39);
- { uint32_t x60 = (uint32_t) (x59 >> 0x13);
- { uint32_t x61 = ((uint32_t)x59 & 0x7ffff);
- { uint64_t x62 = (x60 + x38);
- { uint32_t x63 = (uint32_t) (x62 >> 0x14);
- { uint32_t x64 = ((uint32_t)x62 & 0xfffff);
- { uint64_t x65 = (x63 + x37);
- { uint32_t x66 = (uint32_t) (x65 >> 0x13);
- { uint32_t x67 = ((uint32_t)x65 & 0x7ffff);
- { uint64_t x68 = (x66 + x36);
- { uint32_t x69 = (uint32_t) (x68 >> 0x13);
- { uint32_t x70 = ((uint32_t)x68 & 0x7ffff);
- { uint32_t x71 = (x46 + (0x11 * x69));
- { uint32_t x72 = (x71 >> 0x14);
- { uint32_t x73 = (x71 & 0xfffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x13);
- { uint32_t x76 = (x74 & 0x7ffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m17/femul.v b/src/Specific/solinas32_2e174m17/femul.v
deleted file mode 100644
index 477c33fbd..000000000
--- a/src/Specific/solinas32_2e174m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m17/femulDisplay.log b/src/Specific/solinas32_2e174m17/femulDisplay.log
deleted file mode 100644
index a0a85409c..000000000
--- a/src/Specific/solinas32_2e174m17/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x11 * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0x11 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0x11 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x11 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0x11 * (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x11 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0x11 * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- uint32_t x45 = (uint32_t) (x44 >> 0x14);
- uint32_t x46 = ((uint32_t)x44 & 0xfffff);
- uint64_t x47 = (x45 + x43);
- uint32_t x48 = (uint32_t) (x47 >> 0x13);
- uint32_t x49 = ((uint32_t)x47 & 0x7ffff);
- uint64_t x50 = (x48 + x42);
- uint32_t x51 = (uint32_t) (x50 >> 0x13);
- uint32_t x52 = ((uint32_t)x50 & 0x7ffff);
- uint64_t x53 = (x51 + x41);
- uint32_t x54 = (uint32_t) (x53 >> 0x14);
- uint32_t x55 = ((uint32_t)x53 & 0xfffff);
- uint64_t x56 = (x54 + x40);
- uint32_t x57 = (uint32_t) (x56 >> 0x13);
- uint32_t x58 = ((uint32_t)x56 & 0x7ffff);
- uint64_t x59 = (x57 + x39);
- uint32_t x60 = (uint32_t) (x59 >> 0x13);
- uint32_t x61 = ((uint32_t)x59 & 0x7ffff);
- uint64_t x62 = (x60 + x38);
- uint32_t x63 = (uint32_t) (x62 >> 0x14);
- uint32_t x64 = ((uint32_t)x62 & 0xfffff);
- uint64_t x65 = (x63 + x37);
- uint32_t x66 = (uint32_t) (x65 >> 0x13);
- uint32_t x67 = ((uint32_t)x65 & 0x7ffff);
- uint64_t x68 = (x66 + x36);
- uint32_t x69 = (uint32_t) (x68 >> 0x13);
- uint32_t x70 = ((uint32_t)x68 & 0x7ffff);
- uint32_t x71 = (x46 + (0x11 * x69));
- uint32_t x72 = (x71 >> 0x14);
- uint32_t x73 = (x71 & 0xfffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x13);
- uint32_t x76 = (x74 & 0x7ffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17/femulDisplay.v b/src/Specific/solinas32_2e174m17/femulDisplay.v
deleted file mode 100644
index b259e470b..000000000
--- a/src/Specific/solinas32_2e174m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e174m17/fesquare.c b/src/Specific/solinas32_2e174m17/fesquare.c
deleted file mode 100644
index e1ee9c61b..000000000
--- a/src/Specific/solinas32_2e174m17/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- { uint32_t x26 = (uint32_t) (x25 >> 0x14);
- { uint32_t x27 = ((uint32_t)x25 & 0xfffff);
- { uint64_t x28 = (x26 + x24);
- { uint32_t x29 = (uint32_t) (x28 >> 0x13);
- { uint32_t x30 = ((uint32_t)x28 & 0x7ffff);
- { uint64_t x31 = (x29 + x23);
- { uint32_t x32 = (uint32_t) (x31 >> 0x13);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- { uint64_t x34 = (x32 + x22);
- { uint32_t x35 = (uint32_t) (x34 >> 0x14);
- { uint32_t x36 = ((uint32_t)x34 & 0xfffff);
- { uint64_t x37 = (x35 + x21);
- { uint32_t x38 = (uint32_t) (x37 >> 0x13);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- { uint64_t x40 = (x38 + x20);
- { uint32_t x41 = (uint32_t) (x40 >> 0x13);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- { uint64_t x43 = (x41 + x19);
- { uint32_t x44 = (uint32_t) (x43 >> 0x14);
- { uint32_t x45 = ((uint32_t)x43 & 0xfffff);
- { uint64_t x46 = (x44 + x18);
- { uint32_t x47 = (uint32_t) (x46 >> 0x13);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- { uint64_t x49 = (x47 + x17);
- { uint32_t x50 = (uint32_t) (x49 >> 0x13);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- { uint32_t x52 = (x27 + (0x11 * x50));
- { uint32_t x53 = (x52 >> 0x14);
- { uint32_t x54 = (x52 & 0xfffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x13);
- { uint32_t x57 = (x55 & 0x7ffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m17/fesquare.v b/src/Specific/solinas32_2e174m17/fesquare.v
deleted file mode 100644
index b5b782af8..000000000
--- a/src/Specific/solinas32_2e174m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m17/fesquareDisplay.log b/src/Specific/solinas32_2e174m17/fesquareDisplay.log
deleted file mode 100644
index 9f4456a5d..000000000
--- a/src/Specific/solinas32_2e174m17/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- uint32_t x26 = (uint32_t) (x25 >> 0x14);
- uint32_t x27 = ((uint32_t)x25 & 0xfffff);
- uint64_t x28 = (x26 + x24);
- uint32_t x29 = (uint32_t) (x28 >> 0x13);
- uint32_t x30 = ((uint32_t)x28 & 0x7ffff);
- uint64_t x31 = (x29 + x23);
- uint32_t x32 = (uint32_t) (x31 >> 0x13);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- uint64_t x34 = (x32 + x22);
- uint32_t x35 = (uint32_t) (x34 >> 0x14);
- uint32_t x36 = ((uint32_t)x34 & 0xfffff);
- uint64_t x37 = (x35 + x21);
- uint32_t x38 = (uint32_t) (x37 >> 0x13);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- uint64_t x40 = (x38 + x20);
- uint32_t x41 = (uint32_t) (x40 >> 0x13);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- uint64_t x43 = (x41 + x19);
- uint32_t x44 = (uint32_t) (x43 >> 0x14);
- uint32_t x45 = ((uint32_t)x43 & 0xfffff);
- uint64_t x46 = (x44 + x18);
- uint32_t x47 = (uint32_t) (x46 >> 0x13);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- uint64_t x49 = (x47 + x17);
- uint32_t x50 = (uint32_t) (x49 >> 0x13);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- uint32_t x52 = (x27 + (0x11 * x50));
- uint32_t x53 = (x52 >> 0x14);
- uint32_t x54 = (x52 & 0xfffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x13);
- uint32_t x57 = (x55 & 0x7ffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17/fesquareDisplay.v b/src/Specific/solinas32_2e174m17/fesquareDisplay.v
deleted file mode 100644
index 3c35ee539..000000000
--- a/src/Specific/solinas32_2e174m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e174m17/fesub.c b/src/Specific/solinas32_2e174m17/fesub.c
deleted file mode 100644
index 4703a03af..000000000
--- a/src/Specific/solinas32_2e174m17/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0x1fffde + x5) - x21);
- out[1] = ((0xffffe + x7) - x23);
- out[2] = ((0xffffe + x9) - x25);
- out[3] = ((0x1ffffe + x11) - x27);
- out[4] = ((0xffffe + x13) - x29);
- out[5] = ((0xffffe + x15) - x31);
- out[6] = ((0x1ffffe + x17) - x33);
- out[7] = ((0xffffe + x19) - x35);
- out[8] = ((0xffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m17/fesub.v b/src/Specific/solinas32_2e174m17/fesub.v
deleted file mode 100644
index f50b276ac..000000000
--- a/src/Specific/solinas32_2e174m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m17/fesubDisplay.log b/src/Specific/solinas32_2e174m17/fesubDisplay.log
deleted file mode 100644
index 24902e307..000000000
--- a/src/Specific/solinas32_2e174m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0xffffe + x18) - x34), ((0xffffe + x19) - x35), ((0x1ffffe + x17) - x33), ((0xffffe + x15) - x31), ((0xffffe + x13) - x29), ((0x1ffffe + x11) - x27), ((0xffffe + x9) - x25), ((0xffffe + x7) - x23), ((0x1fffde + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17/fesubDisplay.v b/src/Specific/solinas32_2e174m17/fesubDisplay.v
deleted file mode 100644
index ca78f0e1a..000000000
--- a/src/Specific/solinas32_2e174m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e174m17/freeze.c b/src/Specific/solinas32_2e174m17/freeze.c
deleted file mode 100644
index fced203d0..000000000
--- a/src/Specific/solinas32_2e174m17/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffef);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xfffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0xfffef);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x7ffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x7ffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0xfffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x7ffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x7ffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0xfffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x7ffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x7ffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m17/freeze.v b/src/Specific/solinas32_2e174m17/freeze.v
deleted file mode 100644
index 7299d3e78..000000000
--- a/src/Specific/solinas32_2e174m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m17/freezeDisplay.log b/src/Specific/solinas32_2e174m17/freezeDisplay.log
deleted file mode 100644
index 89d216e43..000000000
--- a/src/Specific/solinas32_2e174m17/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffef);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0xfffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0xfffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0xfffef);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x7ffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x7ffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0xfffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x7ffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x7ffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0xfffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x7ffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x7ffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m17/freezeDisplay.v b/src/Specific/solinas32_2e174m17/freezeDisplay.v
deleted file mode 100644
index ac4a2f80b..000000000
--- a/src/Specific/solinas32_2e174m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e174m17/py_interpreter.sh b/src/Specific/solinas32_2e174m17/py_interpreter.sh
deleted file mode 100755
index ad1b1e5cb..000000000
--- a/src/Specific/solinas32_2e174m17/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**174 - 17' -Dmodulus_bytes='19 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m17_7limbs/CurveParameters.v b/src/Specific/solinas32_2e174m17_7limbs/CurveParameters.v
new file mode 100644
index 000000000..d9756e251
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 17
+Base: 24 + 6/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 24 + 6/7;
+ bitwidth := 32;
+ s := 2^174;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/Synthesis.v b/src/Specific/solinas32_2e174m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..7643315b1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/compiler.sh b/src/Specific/solinas32_2e174m17_7limbs/compiler.sh
new file mode 100755
index 000000000..cae562ece
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17_7limbs/compilerxx.sh b/src/Specific/solinas32_2e174m17_7limbs/compilerxx.sh
new file mode 100755
index 000000000..dd77702a6
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17_7limbs/feadd.v b/src/Specific/solinas32_2e174m17_7limbs/feadd.v
new file mode 100644
index 000000000..1fe4a8e9c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..a5c2b98ed
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/femul.v b/src/Specific/solinas32_2e174m17_7limbs/femul.v
new file mode 100644
index 000000000..ccb7dde90
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.v b/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..f02c2c1b6
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesquare.v b/src/Specific/solinas32_2e174m17_7limbs/fesquare.v
new file mode 100644
index 000000000..268ae6242
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6f3a26531
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesub.v b/src/Specific/solinas32_2e174m17_7limbs/fesub.v
new file mode 100644
index 000000000..c5d767095
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..306fe7e2b
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/freeze.v b/src/Specific/solinas32_2e174m17_7limbs/freeze.v
new file mode 100644
index 000000000..e697b2858
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..fde77ecbe
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e174m17_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e174m17_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..a435a20f5
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 17' -Dmodulus_bytes='24 + 6/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m17_8limbs/CurveParameters.v b/src/Specific/solinas32_2e174m17_8limbs/CurveParameters.v
new file mode 100644
index 000000000..d52bc5881
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 17
+Base: 21.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 21 + 3/4;
+ bitwidth := 32;
+ s := 2^174;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/Synthesis.v b/src/Specific/solinas32_2e174m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..a55a43ab9
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/compiler.sh b/src/Specific/solinas32_2e174m17_8limbs/compiler.sh
new file mode 100755
index 000000000..aecdf9473
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17_8limbs/compilerxx.sh b/src/Specific/solinas32_2e174m17_8limbs/compilerxx.sh
new file mode 100755
index 000000000..ac9ec5b1c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas32_2e174m17_8limbs/feadd.v b/src/Specific/solinas32_2e174m17_8limbs/feadd.v
new file mode 100644
index 000000000..8e428acf3
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..ff03d94d2
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/femul.v b/src/Specific/solinas32_2e174m17_8limbs/femul.v
new file mode 100644
index 000000000..4259cd205
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.v b/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..de22c43f6
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesquare.v b/src/Specific/solinas32_2e174m17_8limbs/fesquare.v
new file mode 100644
index 000000000..fe4808c34
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5f297ccb1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesub.v b/src/Specific/solinas32_2e174m17_8limbs/fesub.v
new file mode 100644
index 000000000..11d49c286
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..de7dfecbf
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/freeze.v b/src/Specific/solinas32_2e174m17_8limbs/freeze.v
new file mode 100644
index 000000000..7e5537d46
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..319b30eb2
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m17_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e174m17_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e174m17_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..a66ba22ea
--- /dev/null
+++ b/src/Specific/solinas32_2e174m17_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 17' -Dmodulus_bytes='21.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m3/CurveParameters.v b/src/Specific/solinas32_2e174m3/CurveParameters.v
deleted file mode 100644
index a183ef6ba..000000000
--- a/src/Specific/solinas32_2e174m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^174 - 3
-Base: 29
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 6%nat;
- base := 29;
- bitwidth := 32;
- s := 2^174;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m3/Synthesis.v b/src/Specific/solinas32_2e174m3/Synthesis.v
deleted file mode 100644
index 18ee7ec40..000000000
--- a/src/Specific/solinas32_2e174m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e174m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m3/compiler.sh b/src/Specific/solinas32_2e174m3/compiler.sh
deleted file mode 100755
index f72af9e79..000000000
--- a/src/Specific/solinas32_2e174m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,29,29,29,29,29}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3/compilerxx.sh b/src/Specific/solinas32_2e174m3/compilerxx.sh
deleted file mode 100755
index bb450733c..000000000
--- a/src/Specific/solinas32_2e174m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,29,29,29,29,29}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3/feadd.c b/src/Specific/solinas32_2e174m3/feadd.c
deleted file mode 100644
index 5b654b294..000000000
--- a/src/Specific/solinas32_2e174m3/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m3/feadd.v b/src/Specific/solinas32_2e174m3/feadd.v
deleted file mode 100644
index cfbf22078..000000000
--- a/src/Specific/solinas32_2e174m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m3/feaddDisplay.log b/src/Specific/solinas32_2e174m3/feaddDisplay.log
deleted file mode 100644
index 1084b2659..000000000
--- a/src/Specific/solinas32_2e174m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3/feaddDisplay.v b/src/Specific/solinas32_2e174m3/feaddDisplay.v
deleted file mode 100644
index 9d681358f..000000000
--- a/src/Specific/solinas32_2e174m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e174m3/femul.c b/src/Specific/solinas32_2e174m3/femul.c
deleted file mode 100644
index 3ad886b74..000000000
--- a/src/Specific/solinas32_2e174m3/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- { ℤ x24 = (((uint64_t)x5 * x22) +ℤ (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- { ℤ x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) +ℤ (0x3 * ((uint64_t)x12 * x22)));
- { ℤ x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- { ℤ x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
- { ℤ x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- { ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x3 *ℤ (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
- { uint64_t x30 = (x29 >> 0x1d);
- { uint32_t x31 = (x29 & 0x1fffffff);
- { ℤ x32 = (x30 +ℤ x28);
- { uint64_t x33 = (x32 >> 0x1d);
- { uint32_t x34 = (x32 & 0x1fffffff);
- { ℤ x35 = (x33 +ℤ x27);
- { uint64_t x36 = (x35 >> 0x1d);
- { uint32_t x37 = (x35 & 0x1fffffff);
- { ℤ x38 = (x36 +ℤ x26);
- { uint64_t x39 = (x38 >> 0x1d);
- { uint32_t x40 = (x38 & 0x1fffffff);
- { ℤ x41 = (x39 +ℤ x25);
- { uint64_t x42 = (x41 >> 0x1d);
- { uint32_t x43 = (x41 & 0x1fffffff);
- { ℤ x44 = (x42 +ℤ x24);
- { uint64_t x45 = (x44 >> 0x1d);
- { uint32_t x46 = (x44 & 0x1fffffff);
- { uint64_t x47 = (x31 + (0x3 * x45));
- { uint32_t x48 = (uint32_t) (x47 >> 0x1d);
- { uint32_t x49 = ((uint32_t)x47 & 0x1fffffff);
- { uint32_t x50 = (x48 + x34);
- { uint32_t x51 = (x50 >> 0x1d);
- { uint32_t x52 = (x50 & 0x1fffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m3/femul.v b/src/Specific/solinas32_2e174m3/femul.v
deleted file mode 100644
index 3db80edf4..000000000
--- a/src/Specific/solinas32_2e174m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m3/femulDisplay.log b/src/Specific/solinas32_2e174m3/femulDisplay.log
deleted file mode 100644
index 0352248f9..000000000
--- a/src/Specific/solinas32_2e174m3/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ℤ x24 = (((uint64_t)x5 * x22) +ℤ (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
- ℤ x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) +ℤ (0x3 * ((uint64_t)x12 * x22)));
- ℤ x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
- ℤ x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
- ℤ x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
- ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x3 *ℤ (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
- uint64_t x30 = (x29 >> 0x1d);
- uint32_t x31 = (x29 & 0x1fffffff);
- ℤ x32 = (x30 +ℤ x28);
- uint64_t x33 = (x32 >> 0x1d);
- uint32_t x34 = (x32 & 0x1fffffff);
- ℤ x35 = (x33 +ℤ x27);
- uint64_t x36 = (x35 >> 0x1d);
- uint32_t x37 = (x35 & 0x1fffffff);
- ℤ x38 = (x36 +ℤ x26);
- uint64_t x39 = (x38 >> 0x1d);
- uint32_t x40 = (x38 & 0x1fffffff);
- ℤ x41 = (x39 +ℤ x25);
- uint64_t x42 = (x41 >> 0x1d);
- uint32_t x43 = (x41 & 0x1fffffff);
- ℤ x44 = (x42 +ℤ x24);
- uint64_t x45 = (x44 >> 0x1d);
- uint32_t x46 = (x44 & 0x1fffffff);
- uint64_t x47 = (x31 + (0x3 * x45));
- uint32_t x48 = (uint32_t) (x47 >> 0x1d);
- uint32_t x49 = ((uint32_t)x47 & 0x1fffffff);
- uint32_t x50 = (x48 + x34);
- uint32_t x51 = (x50 >> 0x1d);
- uint32_t x52 = (x50 & 0x1fffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3/femulDisplay.v b/src/Specific/solinas32_2e174m3/femulDisplay.v
deleted file mode 100644
index b05262720..000000000
--- a/src/Specific/solinas32_2e174m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e174m3/fesquare.c b/src/Specific/solinas32_2e174m3/fesquare.c
deleted file mode 100644
index 043ae7ba3..000000000
--- a/src/Specific/solinas32_2e174m3/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { ℤ x11 = (((uint64_t)x2 * x9) +ℤ (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- { ℤ x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0x3 * ((uint64_t)x9 * x9)));
- { ℤ x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- { ℤ x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
- { ℤ x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- { ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
- { uint64_t x17 = (x16 >> 0x1d);
- { uint32_t x18 = (x16 & 0x1fffffff);
- { ℤ x19 = (x17 +ℤ x15);
- { uint64_t x20 = (x19 >> 0x1d);
- { uint32_t x21 = (x19 & 0x1fffffff);
- { ℤ x22 = (x20 +ℤ x14);
- { uint64_t x23 = (x22 >> 0x1d);
- { uint32_t x24 = (x22 & 0x1fffffff);
- { ℤ x25 = (x23 +ℤ x13);
- { uint64_t x26 = (x25 >> 0x1d);
- { uint32_t x27 = (x25 & 0x1fffffff);
- { ℤ x28 = (x26 +ℤ x12);
- { uint64_t x29 = (x28 >> 0x1d);
- { uint32_t x30 = (x28 & 0x1fffffff);
- { ℤ x31 = (x29 +ℤ x11);
- { uint64_t x32 = (x31 >> 0x1d);
- { uint32_t x33 = (x31 & 0x1fffffff);
- { uint64_t x34 = (x18 + (0x3 * x32));
- { uint32_t x35 = (uint32_t) (x34 >> 0x1d);
- { uint32_t x36 = ((uint32_t)x34 & 0x1fffffff);
- { uint32_t x37 = (x35 + x21);
- { uint32_t x38 = (x37 >> 0x1d);
- { uint32_t x39 = (x37 & 0x1fffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m3/fesquare.v b/src/Specific/solinas32_2e174m3/fesquare.v
deleted file mode 100644
index dc58a2432..000000000
--- a/src/Specific/solinas32_2e174m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m3/fesquareDisplay.log b/src/Specific/solinas32_2e174m3/fesquareDisplay.log
deleted file mode 100644
index cbaabcfd5..000000000
--- a/src/Specific/solinas32_2e174m3/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- ℤ x11 = (((uint64_t)x2 * x9) +ℤ (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
- ℤ x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0x3 * ((uint64_t)x9 * x9)));
- ℤ x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
- ℤ x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
- ℤ x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
- ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
- uint64_t x17 = (x16 >> 0x1d);
- uint32_t x18 = (x16 & 0x1fffffff);
- ℤ x19 = (x17 +ℤ x15);
- uint64_t x20 = (x19 >> 0x1d);
- uint32_t x21 = (x19 & 0x1fffffff);
- ℤ x22 = (x20 +ℤ x14);
- uint64_t x23 = (x22 >> 0x1d);
- uint32_t x24 = (x22 & 0x1fffffff);
- ℤ x25 = (x23 +ℤ x13);
- uint64_t x26 = (x25 >> 0x1d);
- uint32_t x27 = (x25 & 0x1fffffff);
- ℤ x28 = (x26 +ℤ x12);
- uint64_t x29 = (x28 >> 0x1d);
- uint32_t x30 = (x28 & 0x1fffffff);
- ℤ x31 = (x29 +ℤ x11);
- uint64_t x32 = (x31 >> 0x1d);
- uint32_t x33 = (x31 & 0x1fffffff);
- uint64_t x34 = (x18 + (0x3 * x32));
- uint32_t x35 = (uint32_t) (x34 >> 0x1d);
- uint32_t x36 = ((uint32_t)x34 & 0x1fffffff);
- uint32_t x37 = (x35 + x21);
- uint32_t x38 = (x37 >> 0x1d);
- uint32_t x39 = (x37 & 0x1fffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3/fesquareDisplay.v b/src/Specific/solinas32_2e174m3/fesquareDisplay.v
deleted file mode 100644
index a1cc9b022..000000000
--- a/src/Specific/solinas32_2e174m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e174m3/fesub.c b/src/Specific/solinas32_2e174m3/fesub.c
deleted file mode 100644
index 15f7e6010..000000000
--- a/src/Specific/solinas32_2e174m3/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
- { const uint32_t x12 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x22 = in2[5];
- { const uint32_t x23 = in2[4];
- { const uint32_t x21 = in2[3];
- { const uint32_t x19 = in2[2];
- { const uint32_t x17 = in2[1];
- { const uint32_t x15 = in2[0];
- out[0] = ((0x3ffffffa + x5) - x15);
- out[1] = ((0x3ffffffe + x7) - x17);
- out[2] = ((0x3ffffffe + x9) - x19);
- out[3] = ((0x3ffffffe + x11) - x21);
- out[4] = ((0x3ffffffe + x13) - x23);
- out[5] = ((0x3ffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m3/fesub.v b/src/Specific/solinas32_2e174m3/fesub.v
deleted file mode 100644
index 1fc092034..000000000
--- a/src/Specific/solinas32_2e174m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m3/fesubDisplay.log b/src/Specific/solinas32_2e174m3/fesubDisplay.log
deleted file mode 100644
index 1299dc361..000000000
--- a/src/Specific/solinas32_2e174m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3ffffffe + x12) - x22), ((0x3ffffffe + x13) - x23), ((0x3ffffffe + x11) - x21), ((0x3ffffffe + x9) - x19), ((0x3ffffffe + x7) - x17), ((0x3ffffffa + x5) - x15)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3/fesubDisplay.v b/src/Specific/solinas32_2e174m3/fesubDisplay.v
deleted file mode 100644
index 43916a2de..000000000
--- a/src/Specific/solinas32_2e174m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e174m3/freeze.c b/src/Specific/solinas32_2e174m3/freeze.c
deleted file mode 100644
index 0c152773f..000000000
--- a/src/Specific/solinas32_2e174m3/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint32_t out[6], const uint32_t in1[6]) {
- { const uint32_t x9 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffd);
- { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffff);
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffff);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffff);
- { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & 0x1ffffffd);
- { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint32_t x34 = (x29 & 0x1fffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint32_t x38 = (x29 & 0x1fffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint32_t x42 = (x29 & 0x1fffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint32_t x46 = (x29 & 0x1fffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint32_t x50 = (x29 & 0x1fffffff);
- { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e174m3/freeze.v b/src/Specific/solinas32_2e174m3/freeze.v
deleted file mode 100644
index 92975e8b1..000000000
--- a/src/Specific/solinas32_2e174m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m3/freezeDisplay.log b/src/Specific/solinas32_2e174m3/freezeDisplay.log
deleted file mode 100644
index 87e105a0a..000000000
--- a/src/Specific/solinas32_2e174m3/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffd);
- uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffff);
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffff);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffff);
- uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & 0x1ffffffd);
- uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint32_t x34 = (x29 & 0x1fffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint32_t x38 = (x29 & 0x1fffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint32_t x42 = (x29 & 0x1fffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint32_t x46 = (x29 & 0x1fffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint32_t x50 = (x29 & 0x1fffffff);
- uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e174m3/freezeDisplay.v b/src/Specific/solinas32_2e174m3/freezeDisplay.v
deleted file mode 100644
index 5304c1262..000000000
--- a/src/Specific/solinas32_2e174m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e174m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e174m3/py_interpreter.sh b/src/Specific/solinas32_2e174m3/py_interpreter.sh
deleted file mode 100755
index 052beaad6..000000000
--- a/src/Specific/solinas32_2e174m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**174 - 3' -Dmodulus_bytes='29' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m3_7limbs/CurveParameters.v b/src/Specific/solinas32_2e174m3_7limbs/CurveParameters.v
new file mode 100644
index 000000000..7b581a52f
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 3
+Base: 24 + 6/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 24 + 6/7;
+ bitwidth := 32;
+ s := 2^174;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/Synthesis.v b/src/Specific/solinas32_2e174m3_7limbs/Synthesis.v
new file mode 100644
index 000000000..863f765c2
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/compiler.sh b/src/Specific/solinas32_2e174m3_7limbs/compiler.sh
new file mode 100755
index 000000000..50d213e20
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3_7limbs/compilerxx.sh b/src/Specific/solinas32_2e174m3_7limbs/compilerxx.sh
new file mode 100755
index 000000000..3c4ed9ffb
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3_7limbs/feadd.v b/src/Specific/solinas32_2e174m3_7limbs/feadd.v
new file mode 100644
index 000000000..cddbf9f98
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..714c7ca6b
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/femul.v b/src/Specific/solinas32_2e174m3_7limbs/femul.v
new file mode 100644
index 000000000..1604714de
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.v b/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.v
new file mode 100644
index 000000000..3b74cd2d1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesquare.v b/src/Specific/solinas32_2e174m3_7limbs/fesquare.v
new file mode 100644
index 000000000..70d24937e
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..0570f81fc
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesub.v b/src/Specific/solinas32_2e174m3_7limbs/fesub.v
new file mode 100644
index 000000000..fc08b511c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..e838bbc9c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/freeze.v b/src/Specific/solinas32_2e174m3_7limbs/freeze.v
new file mode 100644
index 000000000..2f64271f1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..23c17c3a4
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e174m3_7limbs/py_interpreter.sh b/src/Specific/solinas32_2e174m3_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..0e2055ed4
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 3' -Dmodulus_bytes='24 + 6/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e174m3_8limbs/CurveParameters.v b/src/Specific/solinas32_2e174m3_8limbs/CurveParameters.v
new file mode 100644
index 000000000..ba2940378
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 3
+Base: 21.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 21 + 3/4;
+ bitwidth := 32;
+ s := 2^174;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/Synthesis.v b/src/Specific/solinas32_2e174m3_8limbs/Synthesis.v
new file mode 100644
index 000000000..e488096a8
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/compiler.sh b/src/Specific/solinas32_2e174m3_8limbs/compiler.sh
new file mode 100755
index 000000000..748c58a01
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3_8limbs/compilerxx.sh b/src/Specific/solinas32_2e174m3_8limbs/compilerxx.sh
new file mode 100755
index 000000000..c8d1df5c1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas32_2e174m3_8limbs/feadd.v b/src/Specific/solinas32_2e174m3_8limbs/feadd.v
new file mode 100644
index 000000000..5ba5f5524
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..b741518f3
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/femul.v b/src/Specific/solinas32_2e174m3_8limbs/femul.v
new file mode 100644
index 000000000..32cd5ab5e
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.v b/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.v
new file mode 100644
index 000000000..c3ed3492a
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesquare.v b/src/Specific/solinas32_2e174m3_8limbs/fesquare.v
new file mode 100644
index 000000000..e8927b7d7
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8f317bd49
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesub.v b/src/Specific/solinas32_2e174m3_8limbs/fesub.v
new file mode 100644
index 000000000..2a963b774
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..1ad149e4e
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/freeze.v b/src/Specific/solinas32_2e174m3_8limbs/freeze.v
new file mode 100644
index 000000000..bf9f6fe83
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..74c85acf1
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e174m3_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e174m3_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e174m3_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..8fdc6b46c
--- /dev/null
+++ b/src/Specific/solinas32_2e174m3_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 3' -Dmodulus_bytes='21.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e189m25/Synthesis.v b/src/Specific/solinas32_2e189m25/Synthesis.v
deleted file mode 100644
index eabe5480c..000000000
--- a/src/Specific/solinas32_2e189m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e189m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e189m25/feadd.c b/src/Specific/solinas32_2e189m25/feadd.c
deleted file mode 100644
index 5288d0bef..000000000
--- a/src/Specific/solinas32_2e189m25/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e189m25/feadd.v b/src/Specific/solinas32_2e189m25/feadd.v
deleted file mode 100644
index 666399b2d..000000000
--- a/src/Specific/solinas32_2e189m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e189m25/feaddDisplay.log b/src/Specific/solinas32_2e189m25/feaddDisplay.log
deleted file mode 100644
index d22997dcb..000000000
--- a/src/Specific/solinas32_2e189m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25/feaddDisplay.v b/src/Specific/solinas32_2e189m25/feaddDisplay.v
deleted file mode 100644
index ed661179f..000000000
--- a/src/Specific/solinas32_2e189m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e189m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e189m25/femul.c b/src/Specific/solinas32_2e189m25/femul.c
deleted file mode 100644
index 9da02e886..000000000
--- a/src/Specific/solinas32_2e189m25/femul.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
- { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x19 * ((uint64_t)x14 * x26)));
- { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x19 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- { ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0x19 *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- { ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0x19 *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- { ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0x19 *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
- { uint64_t x35 = (x34 >> 0x1b);
- { uint32_t x36 = (x34 & 0x7ffffff);
- { ℤ x37 = (x35 +ℤ x33);
- { uint64_t x38 = (x37 >> 0x1b);
- { uint32_t x39 = (x37 & 0x7ffffff);
- { ℤ x40 = (x38 +ℤ x32);
- { uint64_t x41 = (x40 >> 0x1b);
- { uint32_t x42 = (x40 & 0x7ffffff);
- { uint64_t x43 = (x41 + x31);
- { uint64_t x44 = (x43 >> 0x1b);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- { uint64_t x46 = (x44 + x30);
- { uint64_t x47 = (x46 >> 0x1b);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x1b);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x1b);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- { uint64_t x55 = (x36 + (0x19 * x53));
- { uint32_t x56 = (uint32_t) (x55 >> 0x1b);
- { uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
- { uint32_t x58 = (x56 + x39);
- { uint32_t x59 = (x58 >> 0x1b);
- { uint32_t x60 = (x58 & 0x7ffffff);
- out[0] = x57;
- out[1] = x60;
- out[2] = (x59 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e189m25/femul.v b/src/Specific/solinas32_2e189m25/femul.v
deleted file mode 100644
index 2aa850874..000000000
--- a/src/Specific/solinas32_2e189m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e189m25/femulDisplay.log b/src/Specific/solinas32_2e189m25/femulDisplay.log
deleted file mode 100644
index 6f1d5362e..000000000
--- a/src/Specific/solinas32_2e189m25/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
- uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x19 * ((uint64_t)x14 * x26)));
- uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x19 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0x19 *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0x19 *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0x19 *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
- uint64_t x35 = (x34 >> 0x1b);
- uint32_t x36 = (x34 & 0x7ffffff);
- ℤ x37 = (x35 +ℤ x33);
- uint64_t x38 = (x37 >> 0x1b);
- uint32_t x39 = (x37 & 0x7ffffff);
- ℤ x40 = (x38 +ℤ x32);
- uint64_t x41 = (x40 >> 0x1b);
- uint32_t x42 = (x40 & 0x7ffffff);
- uint64_t x43 = (x41 + x31);
- uint64_t x44 = (x43 >> 0x1b);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- uint64_t x46 = (x44 + x30);
- uint64_t x47 = (x46 >> 0x1b);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x1b);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x1b);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- uint64_t x55 = (x36 + (0x19 * x53));
- uint32_t x56 = (uint32_t) (x55 >> 0x1b);
- uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
- uint32_t x58 = (x56 + x39);
- uint32_t x59 = (x58 >> 0x1b);
- uint32_t x60 = (x58 & 0x7ffffff);
- return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25/femulDisplay.v b/src/Specific/solinas32_2e189m25/femulDisplay.v
deleted file mode 100644
index f103d3006..000000000
--- a/src/Specific/solinas32_2e189m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e189m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e189m25/fesquare.c b/src/Specific/solinas32_2e189m25/fesquare.c
deleted file mode 100644
index 2d8ae4b5a..000000000
--- a/src/Specific/solinas32_2e189m25/fesquare.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
- { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * ((uint64_t)x11 * x11)));
- { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- { ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x19 *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- { ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x19 *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- { ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0x19 *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
- { uint64_t x20 = (x19 >> 0x1b);
- { uint32_t x21 = (x19 & 0x7ffffff);
- { ℤ x22 = (x20 +ℤ x18);
- { uint64_t x23 = (x22 >> 0x1b);
- { uint32_t x24 = (x22 & 0x7ffffff);
- { ℤ x25 = (x23 +ℤ x17);
- { uint64_t x26 = (x25 >> 0x1b);
- { uint32_t x27 = (x25 & 0x7ffffff);
- { uint64_t x28 = (x26 + x16);
- { uint64_t x29 = (x28 >> 0x1b);
- { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- { uint64_t x31 = (x29 + x15);
- { uint64_t x32 = (x31 >> 0x1b);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- { uint64_t x34 = (x32 + x14);
- { uint64_t x35 = (x34 >> 0x1b);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- { uint64_t x37 = (x35 + x13);
- { uint64_t x38 = (x37 >> 0x1b);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- { uint64_t x40 = (x21 + (0x19 * x38));
- { uint32_t x41 = (uint32_t) (x40 >> 0x1b);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- { uint32_t x43 = (x41 + x24);
- { uint32_t x44 = (x43 >> 0x1b);
- { uint32_t x45 = (x43 & 0x7ffffff);
- out[0] = x42;
- out[1] = x45;
- out[2] = (x44 + x27);
- out[3] = x30;
- out[4] = x33;
- out[5] = x36;
- out[6] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e189m25/fesquare.v b/src/Specific/solinas32_2e189m25/fesquare.v
deleted file mode 100644
index 6dc0219b5..000000000
--- a/src/Specific/solinas32_2e189m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e189m25/fesquareDisplay.log b/src/Specific/solinas32_2e189m25/fesquareDisplay.log
deleted file mode 100644
index efc8e6c28..000000000
--- a/src/Specific/solinas32_2e189m25/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
- uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * ((uint64_t)x11 * x11)));
- uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x19 *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x19 *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0x19 *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
- uint64_t x20 = (x19 >> 0x1b);
- uint32_t x21 = (x19 & 0x7ffffff);
- ℤ x22 = (x20 +ℤ x18);
- uint64_t x23 = (x22 >> 0x1b);
- uint32_t x24 = (x22 & 0x7ffffff);
- ℤ x25 = (x23 +ℤ x17);
- uint64_t x26 = (x25 >> 0x1b);
- uint32_t x27 = (x25 & 0x7ffffff);
- uint64_t x28 = (x26 + x16);
- uint64_t x29 = (x28 >> 0x1b);
- uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- uint64_t x31 = (x29 + x15);
- uint64_t x32 = (x31 >> 0x1b);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- uint64_t x34 = (x32 + x14);
- uint64_t x35 = (x34 >> 0x1b);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- uint64_t x37 = (x35 + x13);
- uint64_t x38 = (x37 >> 0x1b);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- uint64_t x40 = (x21 + (0x19 * x38));
- uint32_t x41 = (uint32_t) (x40 >> 0x1b);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- uint32_t x43 = (x41 + x24);
- uint32_t x44 = (x43 >> 0x1b);
- uint32_t x45 = (x43 & 0x7ffffff);
- return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25/fesquareDisplay.v b/src/Specific/solinas32_2e189m25/fesquareDisplay.v
deleted file mode 100644
index 1abd94e69..000000000
--- a/src/Specific/solinas32_2e189m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e189m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e189m25/fesub.c b/src/Specific/solinas32_2e189m25/fesub.c
deleted file mode 100644
index c8d4d9289..000000000
--- a/src/Specific/solinas32_2e189m25/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = ((0xfffffce + x5) - x17);
- out[1] = ((0xffffffe + x7) - x19);
- out[2] = ((0xffffffe + x9) - x21);
- out[3] = ((0xffffffe + x11) - x23);
- out[4] = ((0xffffffe + x13) - x25);
- out[5] = ((0xffffffe + x15) - x27);
- out[6] = ((0xffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e189m25/fesub.v b/src/Specific/solinas32_2e189m25/fesub.v
deleted file mode 100644
index 821bfdfe7..000000000
--- a/src/Specific/solinas32_2e189m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e189m25/fesubDisplay.log b/src/Specific/solinas32_2e189m25/fesubDisplay.log
deleted file mode 100644
index 74fbc0216..000000000
--- a/src/Specific/solinas32_2e189m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0xffffffe + x14) - x26), ((0xffffffe + x15) - x27), ((0xffffffe + x13) - x25), ((0xffffffe + x11) - x23), ((0xffffffe + x9) - x21), ((0xffffffe + x7) - x19), ((0xfffffce + x5) - x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25/fesubDisplay.v b/src/Specific/solinas32_2e189m25/fesubDisplay.v
deleted file mode 100644
index 0e3d4e923..000000000
--- a/src/Specific/solinas32_2e189m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e189m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e189m25/freeze.c b/src/Specific/solinas32_2e189m25/freeze.c
deleted file mode 100644
index 861a4917d..000000000
--- a/src/Specific/solinas32_2e189m25/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe7);
- { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
- { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- { uint32_t x35 = (x34 & 0x7ffffe7);
- { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint32_t x39 = (x34 & 0x7ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint32_t x43 = (x34 & 0x7ffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint32_t x47 = (x34 & 0x7ffffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint32_t x51 = (x34 & 0x7ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint32_t x55 = (x34 & 0x7ffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint32_t x59 = (x34 & 0x7ffffff);
- { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e189m25/freeze.v b/src/Specific/solinas32_2e189m25/freeze.v
deleted file mode 100644
index cfef00a04..000000000
--- a/src/Specific/solinas32_2e189m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e189m25/freezeDisplay.log b/src/Specific/solinas32_2e189m25/freezeDisplay.log
deleted file mode 100644
index 8094a8368..000000000
--- a/src/Specific/solinas32_2e189m25/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe7);
- uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
- uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0x7ffffe7);
- uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint32_t x39 = (x34 & 0x7ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint32_t x43 = (x34 & 0x7ffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint32_t x47 = (x34 & 0x7ffffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint32_t x51 = (x34 & 0x7ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint32_t x55 = (x34 & 0x7ffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint32_t x59 = (x34 & 0x7ffffff);
- uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25/freezeDisplay.v b/src/Specific/solinas32_2e189m25/freezeDisplay.v
deleted file mode 100644
index d49f5e853..000000000
--- a/src/Specific/solinas32_2e189m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e189m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e189m25/CurveParameters.v b/src/Specific/solinas32_2e189m25_7limbs/CurveParameters.v
index f846046f4..f846046f4 100644
--- a/src/Specific/solinas32_2e189m25/CurveParameters.v
+++ b/src/Specific/solinas32_2e189m25_7limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e189m25_7limbs/Synthesis.v b/src/Specific/solinas32_2e189m25_7limbs/Synthesis.v
new file mode 100644
index 000000000..ea0e13506
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e189m25/compiler.sh b/src/Specific/solinas32_2e189m25_7limbs/compiler.sh
index fd68ffec5..fd68ffec5 100755
--- a/src/Specific/solinas32_2e189m25/compiler.sh
+++ b/src/Specific/solinas32_2e189m25_7limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e189m25/compilerxx.sh b/src/Specific/solinas32_2e189m25_7limbs/compilerxx.sh
index 240814799..240814799 100755
--- a/src/Specific/solinas32_2e189m25/compilerxx.sh
+++ b/src/Specific/solinas32_2e189m25_7limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e189m25_7limbs/feadd.v b/src/Specific/solinas32_2e189m25_7limbs/feadd.v
new file mode 100644
index 000000000..5331c84ae
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..6e3f89708
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/femul.v b/src/Specific/solinas32_2e189m25_7limbs/femul.v
new file mode 100644
index 000000000..613e6e001
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.v b/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.v
new file mode 100644
index 000000000..ce02f1dac
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesquare.v b/src/Specific/solinas32_2e189m25_7limbs/fesquare.v
new file mode 100644
index 000000000..3d0fa3105
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ea38791e7
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesub.v b/src/Specific/solinas32_2e189m25_7limbs/fesub.v
new file mode 100644
index 000000000..00d24b1dc
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..824e2d447
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/freeze.v b/src/Specific/solinas32_2e189m25_7limbs/freeze.v
new file mode 100644
index 000000000..1d6de764f
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..bc2d527a9
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e189m25/py_interpreter.sh b/src/Specific/solinas32_2e189m25_7limbs/py_interpreter.sh
index 080fca164..080fca164 100755
--- a/src/Specific/solinas32_2e189m25/py_interpreter.sh
+++ b/src/Specific/solinas32_2e189m25_7limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e189m25_8limbs/CurveParameters.v b/src/Specific/solinas32_2e189m25_8limbs/CurveParameters.v
new file mode 100644
index 000000000..7eda70018
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^189 - 25
+Base: 23.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 23 + 5/8;
+ bitwidth := 32;
+ s := 2^189;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/Synthesis.v b/src/Specific/solinas32_2e189m25_8limbs/Synthesis.v
new file mode 100644
index 000000000..1a8ccfbef
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/compiler.sh b/src/Specific/solinas32_2e189m25_8limbs/compiler.sh
new file mode 100755
index 000000000..f30d6d9e4
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<189) - 25' "$@"
diff --git a/src/Specific/solinas32_2e189m25_8limbs/compilerxx.sh b/src/Specific/solinas32_2e189m25_8limbs/compilerxx.sh
new file mode 100755
index 000000000..3068fcacf
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<189) - 25' "$@"
diff --git a/src/Specific/solinas32_2e189m25_8limbs/feadd.v b/src/Specific/solinas32_2e189m25_8limbs/feadd.v
new file mode 100644
index 000000000..371a2f2d4
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..cc84243ed
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/femul.v b/src/Specific/solinas32_2e189m25_8limbs/femul.v
new file mode 100644
index 000000000..0ffd1ba90
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.v b/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.v
new file mode 100644
index 000000000..7bf49539a
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesquare.v b/src/Specific/solinas32_2e189m25_8limbs/fesquare.v
new file mode 100644
index 000000000..fd70ea682
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..deba2cc23
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesub.v b/src/Specific/solinas32_2e189m25_8limbs/fesub.v
new file mode 100644
index 000000000..3fedc6033
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..8944bec30
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/freeze.v b/src/Specific/solinas32_2e189m25_8limbs/freeze.v
new file mode 100644
index 000000000..317b401d8
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..10f2601a2
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e189m25_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e189m25_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e189m25_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..a4a74ccf2
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**189 - 25' -Dmodulus_bytes='23.625' -Da24='121665'
diff --git a/src/Specific/solinas32_2e190m11/Synthesis.v b/src/Specific/solinas32_2e190m11/Synthesis.v
deleted file mode 100644
index 4884228a2..000000000
--- a/src/Specific/solinas32_2e190m11/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e190m11.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e190m11/feadd.c b/src/Specific/solinas32_2e190m11/feadd.c
deleted file mode 100644
index 5288d0bef..000000000
--- a/src/Specific/solinas32_2e190m11/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e190m11/feadd.v b/src/Specific/solinas32_2e190m11/feadd.v
deleted file mode 100644
index a72dfa164..000000000
--- a/src/Specific/solinas32_2e190m11/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e190m11/feaddDisplay.log b/src/Specific/solinas32_2e190m11/feaddDisplay.log
deleted file mode 100644
index d22997dcb..000000000
--- a/src/Specific/solinas32_2e190m11/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11/feaddDisplay.v b/src/Specific/solinas32_2e190m11/feaddDisplay.v
deleted file mode 100644
index 19a5b8342..000000000
--- a/src/Specific/solinas32_2e190m11/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e190m11.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e190m11/femul.c b/src/Specific/solinas32_2e190m11/femul.c
deleted file mode 100644
index ed25ed8f1..000000000
--- a/src/Specific/solinas32_2e190m11/femul.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
- { uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xb * ((uint64_t)x14 * x26)));
- { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0xb * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- { uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xb * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0xb * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xb * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- { ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
- { uint64_t x35 = (x34 >> 0x1c);
- { uint32_t x36 = (x34 & 0xfffffff);
- { uint64_t x37 = (x35 + x33);
- { uint64_t x38 = (x37 >> 0x1b);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- { uint64_t x40 = (x38 + x32);
- { uint64_t x41 = (x40 >> 0x1b);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- { uint64_t x43 = (x41 + x31);
- { uint64_t x44 = (x43 >> 0x1b);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- { uint64_t x46 = (x44 + x30);
- { uint64_t x47 = (x46 >> 0x1b);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x1b);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x1b);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- { uint64_t x55 = (x36 + (0xb * x53));
- { uint32_t x56 = (uint32_t) (x55 >> 0x1c);
- { uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- { uint32_t x58 = (x56 + x39);
- { uint32_t x59 = (x58 >> 0x1b);
- { uint32_t x60 = (x58 & 0x7ffffff);
- out[0] = x57;
- out[1] = x60;
- out[2] = (x59 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e190m11/femul.v b/src/Specific/solinas32_2e190m11/femul.v
deleted file mode 100644
index 71c98ac4d..000000000
--- a/src/Specific/solinas32_2e190m11/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e190m11/femulDisplay.log b/src/Specific/solinas32_2e190m11/femulDisplay.log
deleted file mode 100644
index 8e4dfcb20..000000000
--- a/src/Specific/solinas32_2e190m11/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
- uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xb * ((uint64_t)x14 * x26)));
- uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0xb * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xb * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0xb * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xb * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
- uint64_t x35 = (x34 >> 0x1c);
- uint32_t x36 = (x34 & 0xfffffff);
- uint64_t x37 = (x35 + x33);
- uint64_t x38 = (x37 >> 0x1b);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- uint64_t x40 = (x38 + x32);
- uint64_t x41 = (x40 >> 0x1b);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- uint64_t x43 = (x41 + x31);
- uint64_t x44 = (x43 >> 0x1b);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- uint64_t x46 = (x44 + x30);
- uint64_t x47 = (x46 >> 0x1b);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x1b);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x1b);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- uint64_t x55 = (x36 + (0xb * x53));
- uint32_t x56 = (uint32_t) (x55 >> 0x1c);
- uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- uint32_t x58 = (x56 + x39);
- uint32_t x59 = (x58 >> 0x1b);
- uint32_t x60 = (x58 & 0x7ffffff);
- return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11/femulDisplay.v b/src/Specific/solinas32_2e190m11/femulDisplay.v
deleted file mode 100644
index a54dac2ec..000000000
--- a/src/Specific/solinas32_2e190m11/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e190m11.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e190m11/fesquare.c b/src/Specific/solinas32_2e190m11/fesquare.c
deleted file mode 100644
index ece920735..000000000
--- a/src/Specific/solinas32_2e190m11/fesquare.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
- { uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xb * ((uint64_t)x11 * x11)));
- { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- { uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xb * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- { ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
- { uint64_t x20 = (x19 >> 0x1c);
- { uint32_t x21 = (x19 & 0xfffffff);
- { uint64_t x22 = (x20 + x18);
- { uint64_t x23 = (x22 >> 0x1b);
- { uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
- { uint64_t x25 = (x23 + x17);
- { uint64_t x26 = (x25 >> 0x1b);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- { uint64_t x28 = (x26 + x16);
- { uint64_t x29 = (x28 >> 0x1b);
- { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- { uint64_t x31 = (x29 + x15);
- { uint64_t x32 = (x31 >> 0x1b);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- { uint64_t x34 = (x32 + x14);
- { uint64_t x35 = (x34 >> 0x1b);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- { uint64_t x37 = (x35 + x13);
- { uint64_t x38 = (x37 >> 0x1b);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- { uint64_t x40 = (x21 + (0xb * x38));
- { uint32_t x41 = (uint32_t) (x40 >> 0x1c);
- { uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- { uint32_t x43 = (x41 + x24);
- { uint32_t x44 = (x43 >> 0x1b);
- { uint32_t x45 = (x43 & 0x7ffffff);
- out[0] = x42;
- out[1] = x45;
- out[2] = (x44 + x27);
- out[3] = x30;
- out[4] = x33;
- out[5] = x36;
- out[6] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e190m11/fesquare.v b/src/Specific/solinas32_2e190m11/fesquare.v
deleted file mode 100644
index 578c334c3..000000000
--- a/src/Specific/solinas32_2e190m11/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e190m11/fesquareDisplay.log b/src/Specific/solinas32_2e190m11/fesquareDisplay.log
deleted file mode 100644
index f6685bd3a..000000000
--- a/src/Specific/solinas32_2e190m11/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
- uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xb * ((uint64_t)x11 * x11)));
- uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xb * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
- uint64_t x20 = (x19 >> 0x1c);
- uint32_t x21 = (x19 & 0xfffffff);
- uint64_t x22 = (x20 + x18);
- uint64_t x23 = (x22 >> 0x1b);
- uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
- uint64_t x25 = (x23 + x17);
- uint64_t x26 = (x25 >> 0x1b);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- uint64_t x28 = (x26 + x16);
- uint64_t x29 = (x28 >> 0x1b);
- uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- uint64_t x31 = (x29 + x15);
- uint64_t x32 = (x31 >> 0x1b);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- uint64_t x34 = (x32 + x14);
- uint64_t x35 = (x34 >> 0x1b);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- uint64_t x37 = (x35 + x13);
- uint64_t x38 = (x37 >> 0x1b);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- uint64_t x40 = (x21 + (0xb * x38));
- uint32_t x41 = (uint32_t) (x40 >> 0x1c);
- uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- uint32_t x43 = (x41 + x24);
- uint32_t x44 = (x43 >> 0x1b);
- uint32_t x45 = (x43 & 0x7ffffff);
- return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11/fesquareDisplay.v b/src/Specific/solinas32_2e190m11/fesquareDisplay.v
deleted file mode 100644
index 0bad51ab0..000000000
--- a/src/Specific/solinas32_2e190m11/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e190m11.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e190m11/fesub.c b/src/Specific/solinas32_2e190m11/fesub.c
deleted file mode 100644
index ff043a07f..000000000
--- a/src/Specific/solinas32_2e190m11/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = ((0x1fffffea + x5) - x17);
- out[1] = ((0xffffffe + x7) - x19);
- out[2] = ((0xffffffe + x9) - x21);
- out[3] = ((0xffffffe + x11) - x23);
- out[4] = ((0xffffffe + x13) - x25);
- out[5] = ((0xffffffe + x15) - x27);
- out[6] = ((0xffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e190m11/fesub.v b/src/Specific/solinas32_2e190m11/fesub.v
deleted file mode 100644
index e9845c9ec..000000000
--- a/src/Specific/solinas32_2e190m11/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e190m11/fesubDisplay.log b/src/Specific/solinas32_2e190m11/fesubDisplay.log
deleted file mode 100644
index e7a7f3328..000000000
--- a/src/Specific/solinas32_2e190m11/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0xffffffe + x14) - x26), ((0xffffffe + x15) - x27), ((0xffffffe + x13) - x25), ((0xffffffe + x11) - x23), ((0xffffffe + x9) - x21), ((0xffffffe + x7) - x19), ((0x1fffffea + x5) - x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11/fesubDisplay.v b/src/Specific/solinas32_2e190m11/fesubDisplay.v
deleted file mode 100644
index 5f401131b..000000000
--- a/src/Specific/solinas32_2e190m11/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e190m11.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e190m11/freeze.c b/src/Specific/solinas32_2e190m11/freeze.c
deleted file mode 100644
index 6e4e52017..000000000
--- a/src/Specific/solinas32_2e190m11/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff5);
- { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
- { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- { uint32_t x35 = (x34 & 0xffffff5);
- { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint32_t x39 = (x34 & 0x7ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint32_t x43 = (x34 & 0x7ffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint32_t x47 = (x34 & 0x7ffffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint32_t x51 = (x34 & 0x7ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint32_t x55 = (x34 & 0x7ffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint32_t x59 = (x34 & 0x7ffffff);
- { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e190m11/freeze.v b/src/Specific/solinas32_2e190m11/freeze.v
deleted file mode 100644
index 9e3e70fc8..000000000
--- a/src/Specific/solinas32_2e190m11/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e190m11/freezeDisplay.log b/src/Specific/solinas32_2e190m11/freezeDisplay.log
deleted file mode 100644
index 1e9673e6c..000000000
--- a/src/Specific/solinas32_2e190m11/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff5);
- uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
- uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffff5);
- uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint32_t x39 = (x34 & 0x7ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint32_t x43 = (x34 & 0x7ffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint32_t x47 = (x34 & 0x7ffffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint32_t x51 = (x34 & 0x7ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint32_t x55 = (x34 & 0x7ffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint32_t x59 = (x34 & 0x7ffffff);
- uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11/freezeDisplay.v b/src/Specific/solinas32_2e190m11/freezeDisplay.v
deleted file mode 100644
index a7ce74a91..000000000
--- a/src/Specific/solinas32_2e190m11/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e190m11.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e190m11/CurveParameters.v b/src/Specific/solinas32_2e190m11_7limbs/CurveParameters.v
index b610a7925..b610a7925 100644
--- a/src/Specific/solinas32_2e190m11/CurveParameters.v
+++ b/src/Specific/solinas32_2e190m11_7limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e190m11_7limbs/Synthesis.v b/src/Specific/solinas32_2e190m11_7limbs/Synthesis.v
new file mode 100644
index 000000000..2f41c5a2b
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e190m11/compiler.sh b/src/Specific/solinas32_2e190m11_7limbs/compiler.sh
index f51a0bd0c..f51a0bd0c 100755
--- a/src/Specific/solinas32_2e190m11/compiler.sh
+++ b/src/Specific/solinas32_2e190m11_7limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e190m11/compilerxx.sh b/src/Specific/solinas32_2e190m11_7limbs/compilerxx.sh
index 6958b5bd3..6958b5bd3 100755
--- a/src/Specific/solinas32_2e190m11/compilerxx.sh
+++ b/src/Specific/solinas32_2e190m11_7limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e190m11_7limbs/feadd.v b/src/Specific/solinas32_2e190m11_7limbs/feadd.v
new file mode 100644
index 000000000..1086f8748
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.v b/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..9876eb0f8
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/femul.v b/src/Specific/solinas32_2e190m11_7limbs/femul.v
new file mode 100644
index 000000000..3d2fdb2bc
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.v b/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.v
new file mode 100644
index 000000000..6d113d693
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesquare.v b/src/Specific/solinas32_2e190m11_7limbs/fesquare.v
new file mode 100644
index 000000000..d5c311935
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.v b/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..771822249
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesub.v b/src/Specific/solinas32_2e190m11_7limbs/fesub.v
new file mode 100644
index 000000000..424ffb740
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.v b/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..c75acdcb7
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/freeze.v b/src/Specific/solinas32_2e190m11_7limbs/freeze.v
new file mode 100644
index 000000000..9575c9334
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.v b/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..896456b37
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e190m11/py_interpreter.sh b/src/Specific/solinas32_2e190m11_7limbs/py_interpreter.sh
index 6f930b167..6f930b167 100755
--- a/src/Specific/solinas32_2e190m11/py_interpreter.sh
+++ b/src/Specific/solinas32_2e190m11_7limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e190m11_8limbs/CurveParameters.v b/src/Specific/solinas32_2e190m11_8limbs/CurveParameters.v
new file mode 100644
index 000000000..4f2a91005
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^190 - 11
+Base: 23.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 23 + 3/4;
+ bitwidth := 32;
+ s := 2^190;
+ c := [(1, 11)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/Synthesis.v b/src/Specific/solinas32_2e190m11_8limbs/Synthesis.v
new file mode 100644
index 000000000..8c729f68e
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/compiler.sh b/src/Specific/solinas32_2e190m11_8limbs/compiler.sh
new file mode 100755
index 000000000..479a51aac
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<190) - 11' "$@"
diff --git a/src/Specific/solinas32_2e190m11_8limbs/compilerxx.sh b/src/Specific/solinas32_2e190m11_8limbs/compilerxx.sh
new file mode 100755
index 000000000..7fede2e84
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<190) - 11' "$@"
diff --git a/src/Specific/solinas32_2e190m11_8limbs/feadd.v b/src/Specific/solinas32_2e190m11_8limbs/feadd.v
new file mode 100644
index 000000000..2004db577
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..524582fc7
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/femul.v b/src/Specific/solinas32_2e190m11_8limbs/femul.v
new file mode 100644
index 000000000..f14bb113d
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.v b/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.v
new file mode 100644
index 000000000..817c92267
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesquare.v b/src/Specific/solinas32_2e190m11_8limbs/fesquare.v
new file mode 100644
index 000000000..4f42c731e
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..496f03857
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesub.v b/src/Specific/solinas32_2e190m11_8limbs/fesub.v
new file mode 100644
index 000000000..0b7bbff01
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..eb883b881
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/freeze.v b/src/Specific/solinas32_2e190m11_8limbs/freeze.v
new file mode 100644
index 000000000..cac4d098a
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..877a90eb4
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e190m11_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e190m11_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e190m11_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..4633c6942
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**190 - 11' -Dmodulus_bytes='23.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e191m19/CurveParameters.v b/src/Specific/solinas32_2e191m19/CurveParameters.v
deleted file mode 100644
index d07863ecc..000000000
--- a/src/Specific/solinas32_2e191m19/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^191 - 19
-Base: 19.1
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 19 + 1/10;
- bitwidth := 32;
- s := 2^191;
- c := [(1, 19)];
- carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e191m19/Synthesis.v b/src/Specific/solinas32_2e191m19/Synthesis.v
deleted file mode 100644
index 446c76576..000000000
--- a/src/Specific/solinas32_2e191m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e191m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e191m19/compiler.sh b/src/Specific/solinas32_2e191m19/compiler.sh
deleted file mode 100755
index 6af05b071..000000000
--- a/src/Specific/solinas32_2e191m19/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19/compilerxx.sh b/src/Specific/solinas32_2e191m19/compilerxx.sh
deleted file mode 100755
index edbfadbd5..000000000
--- a/src/Specific/solinas32_2e191m19/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19/feadd.c b/src/Specific/solinas32_2e191m19/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e191m19/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e191m19/feadd.v b/src/Specific/solinas32_2e191m19/feadd.v
deleted file mode 100644
index 22593daa8..000000000
--- a/src/Specific/solinas32_2e191m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e191m19/feaddDisplay.log b/src/Specific/solinas32_2e191m19/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e191m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19/feaddDisplay.v b/src/Specific/solinas32_2e191m19/feaddDisplay.v
deleted file mode 100644
index 942d599f0..000000000
--- a/src/Specific/solinas32_2e191m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e191m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e191m19/femul.c b/src/Specific/solinas32_2e191m19/femul.c
deleted file mode 100644
index b5f6c1657..000000000
--- a/src/Specific/solinas32_2e191m19/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x13 * ((uint64_t)x20 * x38)));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x13 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x13 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x13 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x13 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x13 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x13 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x13 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x13 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- { uint32_t x50 = (uint32_t) (x49 >> 0x14);
- { uint32_t x51 = ((uint32_t)x49 & 0xfffff);
- { uint64_t x52 = (x50 + x48);
- { uint32_t x53 = (uint32_t) (x52 >> 0x13);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- { uint64_t x55 = (x53 + x47);
- { uint32_t x56 = (uint32_t) (x55 >> 0x13);
- { uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- { uint64_t x58 = (x56 + x46);
- { uint32_t x59 = (uint32_t) (x58 >> 0x13);
- { uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
- { uint64_t x61 = (x59 + x45);
- { uint32_t x62 = (uint32_t) (x61 >> 0x13);
- { uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- { uint64_t x64 = (x62 + x44);
- { uint32_t x65 = (uint32_t) (x64 >> 0x13);
- { uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- { uint64_t x67 = (x65 + x43);
- { uint32_t x68 = (uint32_t) (x67 >> 0x13);
- { uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- { uint64_t x70 = (x68 + x42);
- { uint32_t x71 = (uint32_t) (x70 >> 0x13);
- { uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- { uint64_t x73 = (x71 + x41);
- { uint32_t x74 = (uint32_t) (x73 >> 0x13);
- { uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- { uint64_t x76 = (x74 + x40);
- { uint32_t x77 = (uint32_t) (x76 >> 0x13);
- { uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- { uint32_t x79 = (x51 + (0x13 * x77));
- { uint32_t x80 = (x79 >> 0x14);
- { uint32_t x81 = (x79 & 0xfffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x13);
- { uint32_t x84 = (x82 & 0x7ffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e191m19/femul.v b/src/Specific/solinas32_2e191m19/femul.v
deleted file mode 100644
index 338ec5ce2..000000000
--- a/src/Specific/solinas32_2e191m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e191m19/femulDisplay.log b/src/Specific/solinas32_2e191m19/femulDisplay.log
deleted file mode 100644
index 6f0882845..000000000
--- a/src/Specific/solinas32_2e191m19/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x13 * ((uint64_t)x20 * x38)));
- uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x13 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x13 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x13 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x13 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x13 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x13 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x13 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x13 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- uint32_t x50 = (uint32_t) (x49 >> 0x14);
- uint32_t x51 = ((uint32_t)x49 & 0xfffff);
- uint64_t x52 = (x50 + x48);
- uint32_t x53 = (uint32_t) (x52 >> 0x13);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- uint64_t x55 = (x53 + x47);
- uint32_t x56 = (uint32_t) (x55 >> 0x13);
- uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- uint64_t x58 = (x56 + x46);
- uint32_t x59 = (uint32_t) (x58 >> 0x13);
- uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
- uint64_t x61 = (x59 + x45);
- uint32_t x62 = (uint32_t) (x61 >> 0x13);
- uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- uint64_t x64 = (x62 + x44);
- uint32_t x65 = (uint32_t) (x64 >> 0x13);
- uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- uint64_t x67 = (x65 + x43);
- uint32_t x68 = (uint32_t) (x67 >> 0x13);
- uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- uint64_t x70 = (x68 + x42);
- uint32_t x71 = (uint32_t) (x70 >> 0x13);
- uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- uint64_t x73 = (x71 + x41);
- uint32_t x74 = (uint32_t) (x73 >> 0x13);
- uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- uint64_t x76 = (x74 + x40);
- uint32_t x77 = (uint32_t) (x76 >> 0x13);
- uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- uint32_t x79 = (x51 + (0x13 * x77));
- uint32_t x80 = (x79 >> 0x14);
- uint32_t x81 = (x79 & 0xfffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x13);
- uint32_t x84 = (x82 & 0x7ffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19/femulDisplay.v b/src/Specific/solinas32_2e191m19/femulDisplay.v
deleted file mode 100644
index a9c1288dc..000000000
--- a/src/Specific/solinas32_2e191m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e191m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e191m19/fesquare.c b/src/Specific/solinas32_2e191m19/fesquare.c
deleted file mode 100644
index 095228c4c..000000000
--- a/src/Specific/solinas32_2e191m19/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((uint64_t)x17 * x17)));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- { uint32_t x29 = (uint32_t) (x28 >> 0x14);
- { uint32_t x30 = ((uint32_t)x28 & 0xfffff);
- { uint64_t x31 = (x29 + x27);
- { uint32_t x32 = (uint32_t) (x31 >> 0x13);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- { uint64_t x34 = (x32 + x26);
- { uint32_t x35 = (uint32_t) (x34 >> 0x13);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- { uint64_t x37 = (x35 + x25);
- { uint32_t x38 = (uint32_t) (x37 >> 0x13);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- { uint64_t x40 = (x38 + x24);
- { uint32_t x41 = (uint32_t) (x40 >> 0x13);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- { uint64_t x43 = (x41 + x23);
- { uint32_t x44 = (uint32_t) (x43 >> 0x13);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- { uint64_t x46 = (x44 + x22);
- { uint32_t x47 = (uint32_t) (x46 >> 0x13);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- { uint64_t x49 = (x47 + x21);
- { uint32_t x50 = (uint32_t) (x49 >> 0x13);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- { uint64_t x52 = (x50 + x20);
- { uint32_t x53 = (uint32_t) (x52 >> 0x13);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- { uint64_t x55 = (x53 + x19);
- { uint32_t x56 = (uint32_t) (x55 >> 0x13);
- { uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- { uint32_t x58 = (x30 + (0x13 * x56));
- { uint32_t x59 = (x58 >> 0x14);
- { uint32_t x60 = (x58 & 0xfffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x13);
- { uint32_t x63 = (x61 & 0x7ffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e191m19/fesquare.v b/src/Specific/solinas32_2e191m19/fesquare.v
deleted file mode 100644
index 86dd9f161..000000000
--- a/src/Specific/solinas32_2e191m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e191m19/fesquareDisplay.log b/src/Specific/solinas32_2e191m19/fesquareDisplay.log
deleted file mode 100644
index 5033dd0e4..000000000
--- a/src/Specific/solinas32_2e191m19/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((uint64_t)x17 * x17)));
- uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- uint32_t x29 = (uint32_t) (x28 >> 0x14);
- uint32_t x30 = ((uint32_t)x28 & 0xfffff);
- uint64_t x31 = (x29 + x27);
- uint32_t x32 = (uint32_t) (x31 >> 0x13);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffff);
- uint64_t x34 = (x32 + x26);
- uint32_t x35 = (uint32_t) (x34 >> 0x13);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffff);
- uint64_t x37 = (x35 + x25);
- uint32_t x38 = (uint32_t) (x37 >> 0x13);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffff);
- uint64_t x40 = (x38 + x24);
- uint32_t x41 = (uint32_t) (x40 >> 0x13);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffff);
- uint64_t x43 = (x41 + x23);
- uint32_t x44 = (uint32_t) (x43 >> 0x13);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- uint64_t x46 = (x44 + x22);
- uint32_t x47 = (uint32_t) (x46 >> 0x13);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- uint64_t x49 = (x47 + x21);
- uint32_t x50 = (uint32_t) (x49 >> 0x13);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- uint64_t x52 = (x50 + x20);
- uint32_t x53 = (uint32_t) (x52 >> 0x13);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- uint64_t x55 = (x53 + x19);
- uint32_t x56 = (uint32_t) (x55 >> 0x13);
- uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- uint32_t x58 = (x30 + (0x13 * x56));
- uint32_t x59 = (x58 >> 0x14);
- uint32_t x60 = (x58 & 0xfffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x13);
- uint32_t x63 = (x61 & 0x7ffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19/fesquareDisplay.v b/src/Specific/solinas32_2e191m19/fesquareDisplay.v
deleted file mode 100644
index 754b6846c..000000000
--- a/src/Specific/solinas32_2e191m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e191m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e191m19/fesub.c b/src/Specific/solinas32_2e191m19/fesub.c
deleted file mode 100644
index 0f6205aaa..000000000
--- a/src/Specific/solinas32_2e191m19/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0x1fffda + x5) - x23);
- out[1] = ((0xffffe + x7) - x25);
- out[2] = ((0xffffe + x9) - x27);
- out[3] = ((0xffffe + x11) - x29);
- out[4] = ((0xffffe + x13) - x31);
- out[5] = ((0xffffe + x15) - x33);
- out[6] = ((0xffffe + x17) - x35);
- out[7] = ((0xffffe + x19) - x37);
- out[8] = ((0xffffe + x21) - x39);
- out[9] = ((0xffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e191m19/fesub.v b/src/Specific/solinas32_2e191m19/fesub.v
deleted file mode 100644
index 42896821f..000000000
--- a/src/Specific/solinas32_2e191m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e191m19/fesubDisplay.log b/src/Specific/solinas32_2e191m19/fesubDisplay.log
deleted file mode 100644
index ca10cda56..000000000
--- a/src/Specific/solinas32_2e191m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xffffe + x20) - x38), ((0xffffe + x21) - x39), ((0xffffe + x19) - x37), ((0xffffe + x17) - x35), ((0xffffe + x15) - x33), ((0xffffe + x13) - x31), ((0xffffe + x11) - x29), ((0xffffe + x9) - x27), ((0xffffe + x7) - x25), ((0x1fffda + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19/fesubDisplay.v b/src/Specific/solinas32_2e191m19/fesubDisplay.v
deleted file mode 100644
index 28f8772af..000000000
--- a/src/Specific/solinas32_2e191m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e191m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e191m19/freeze.c b/src/Specific/solinas32_2e191m19/freeze.c
deleted file mode 100644
index 554152fcd..000000000
--- a/src/Specific/solinas32_2e191m19/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffed);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7ffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x7ffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7ffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x7ffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7ffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7ffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7ffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7ffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7ffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0xfffed);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x7ffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x7ffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x7ffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x7ffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x7ffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x7ffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x7ffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x7ffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x7ffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e191m19/freeze.v b/src/Specific/solinas32_2e191m19/freeze.v
deleted file mode 100644
index 67d4809b5..000000000
--- a/src/Specific/solinas32_2e191m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e191m19/freezeDisplay.log b/src/Specific/solinas32_2e191m19/freezeDisplay.log
deleted file mode 100644
index 3a3e1c4b1..000000000
--- a/src/Specific/solinas32_2e191m19/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffed);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7ffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x7ffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7ffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x7ffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7ffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7ffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7ffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7ffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7ffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0xfffed);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x7ffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x7ffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x7ffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x7ffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x7ffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x7ffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x7ffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x7ffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x7ffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e191m19/freezeDisplay.v b/src/Specific/solinas32_2e191m19/freezeDisplay.v
deleted file mode 100644
index 8b6998eff..000000000
--- a/src/Specific/solinas32_2e191m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e191m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e191m19/py_interpreter.sh b/src/Specific/solinas32_2e191m19/py_interpreter.sh
deleted file mode 100755
index 83cbe690d..000000000
--- a/src/Specific/solinas32_2e191m19/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**191 - 19' -Dmodulus_bytes='19.1' -Da24='121665'
diff --git a/src/Specific/solinas32_2e191m19_8limbs/CurveParameters.v b/src/Specific/solinas32_2e191m19_8limbs/CurveParameters.v
new file mode 100644
index 000000000..f096bdc5e
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^191 - 19
+Base: 23.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 23 + 7/8;
+ bitwidth := 32;
+ s := 2^191;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/Synthesis.v b/src/Specific/solinas32_2e191m19_8limbs/Synthesis.v
new file mode 100644
index 000000000..fd6b16375
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/compiler.sh b/src/Specific/solinas32_2e191m19_8limbs/compiler.sh
new file mode 100755
index 000000000..c4d332b62
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19_8limbs/compilerxx.sh b/src/Specific/solinas32_2e191m19_8limbs/compilerxx.sh
new file mode 100755
index 000000000..de9c06214
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19_8limbs/feadd.v b/src/Specific/solinas32_2e191m19_8limbs/feadd.v
new file mode 100644
index 000000000..ac3ff8362
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..5cb2b8ffb
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/femul.v b/src/Specific/solinas32_2e191m19_8limbs/femul.v
new file mode 100644
index 000000000..346cc167d
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.v b/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.v
new file mode 100644
index 000000000..973b8c90e
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesquare.v b/src/Specific/solinas32_2e191m19_8limbs/fesquare.v
new file mode 100644
index 000000000..bd21f804a
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4c3bcc97c
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesub.v b/src/Specific/solinas32_2e191m19_8limbs/fesub.v
new file mode 100644
index 000000000..7914a06d8
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..3f50790bb
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/freeze.v b/src/Specific/solinas32_2e191m19_8limbs/freeze.v
new file mode 100644
index 000000000..fac64429a
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..9bcd64f5c
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e191m19_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e191m19_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..14e582461
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**191 - 19' -Dmodulus_bytes='23.875' -Da24='121665'
diff --git a/src/Specific/solinas32_2e191m19_9limbs/CurveParameters.v b/src/Specific/solinas32_2e191m19_9limbs/CurveParameters.v
new file mode 100644
index 000000000..df449528f
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^191 - 19
+Base: 21 + 2/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 21 + 2/9;
+ bitwidth := 32;
+ s := 2^191;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/Synthesis.v b/src/Specific/solinas32_2e191m19_9limbs/Synthesis.v
new file mode 100644
index 000000000..ce60e0e58
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/compiler.sh b/src/Specific/solinas32_2e191m19_9limbs/compiler.sh
new file mode 100755
index 000000000..72ebb724e
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19_9limbs/compilerxx.sh b/src/Specific/solinas32_2e191m19_9limbs/compilerxx.sh
new file mode 100755
index 000000000..a3f92349d
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas32_2e191m19_9limbs/feadd.v b/src/Specific/solinas32_2e191m19_9limbs/feadd.v
new file mode 100644
index 000000000..b550d9fa0
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..62c4da4c6
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/femul.v b/src/Specific/solinas32_2e191m19_9limbs/femul.v
new file mode 100644
index 000000000..2b4d49af8
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.v b/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.v
new file mode 100644
index 000000000..f53cff5c1
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesquare.v b/src/Specific/solinas32_2e191m19_9limbs/fesquare.v
new file mode 100644
index 000000000..d83afa84d
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..538d70712
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesub.v b/src/Specific/solinas32_2e191m19_9limbs/fesub.v
new file mode 100644
index 000000000..c844a2503
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..ae73fb6b4
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/freeze.v b/src/Specific/solinas32_2e191m19_9limbs/freeze.v
new file mode 100644
index 000000000..aa36e0dc3
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..6d2c50dcd
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e191m19_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e191m19_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e191m19_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..4e33ed2f4
--- /dev/null
+++ b/src/Specific/solinas32_2e191m19_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**191 - 19' -Dmodulus_bytes='21 + 2/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v b/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v
deleted file mode 100644
index 7f67556c1..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^192 - 2^64 - 1
-Base: 24
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 24;
- bitwidth := 32;
- s := 2^192;
- c := [(1, 1); (2^64, 1)];
- carry_chains := Some [[1; 7]; [2; 0; 3; 1; 4; 5; 6; 7]; [2; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e192m2e64m1/Synthesis.v b/src/Specific/solinas32_2e192m2e64m1/Synthesis.v
deleted file mode 100644
index 1ea6c6a07..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e192m2e64m1/compiler.sh b/src/Specific/solinas32_2e192m2e64m1/compiler.sh
deleted file mode 100755
index 94797a3d9..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1/compilerxx.sh b/src/Specific/solinas32_2e192m2e64m1/compilerxx.sh
deleted file mode 100755
index 36e127076..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1/feadd.c b/src/Specific/solinas32_2e192m2e64m1/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e192m2e64m1/feadd.v b/src/Specific/solinas32_2e192m2e64m1/feadd.v
deleted file mode 100644
index af0fa34e6..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.log b/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.v b/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.v
deleted file mode 100644
index cb0939133..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e192m2e64m1/femul.c b/src/Specific/solinas32_2e192m2e64m1/femul.c
deleted file mode 100644
index 766b7a024..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/femul.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { ℤ x32 = ((((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19)))))))) +ℤ ((0x10000 *ℤ (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))) +ℤ (0x10000000000 *ℤ ((uint64_t)x16 * x30))));
- { ℤ x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) +ℤ (((uint64_t)x16 * x30) +ℤ (0x10000 *ℤ (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29))))));
- { ℤ x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) +ℤ ((((uint64_t)x17 * x30) + ((uint64_t)x16 * x31)) +ℤ (0x10000 *ℤ (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))))));
- { ℤ x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) +ℤ ((((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29))) +ℤ (0x10000 *ℤ (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25))))))));
- { ℤ x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) +ℤ ((((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))) +ℤ (0x10000 *ℤ (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23)))))))));
- { ℤ x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) +ℤ ((((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25))))) +ℤ (0x10000 *ℤ (((uint64_t)x7 * x30) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x16 * x21))))))))));
- { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23)))))));
- { uint64_t x39 = (((uint64_t)x5 * x19) + (((uint64_t)x7 * x30) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x16 * x21))))))));
- { uint32_t x40 = (uint32_t) (x38 >> 0x18);
- { uint32_t x41 = ((uint32_t)x38 & 0xffffff);
- { ℤ x42 = (x32 >>ℤ 0x18);
- { uint32_t x43 = (x32 & 0xffffff);
- { ℤ x44 = ((0x1000000 *ℤ x42) +ℤ x43);
- { ℤ x45 = (x44 >>ℤ 0x18);
- { uint32_t x46 = (x44 & 0xffffff);
- { ℤ x47 = ((x40 +ℤ x37) +ℤ (0x10000 *ℤ x45));
- { uint64_t x48 = (x47 >> 0x18);
- { uint32_t x49 = (x47 & 0xffffff);
- { ℤ x50 = (x39 +ℤ x45);
- { uint64_t x51 = (x50 >> 0x18);
- { uint32_t x52 = (x50 & 0xffffff);
- { ℤ x53 = (x48 +ℤ x36);
- { uint64_t x54 = (x53 >> 0x18);
- { uint32_t x55 = (x53 & 0xffffff);
- { uint64_t x56 = (x51 + x41);
- { uint32_t x57 = (uint32_t) (x56 >> 0x18);
- { uint32_t x58 = ((uint32_t)x56 & 0xffffff);
- { ℤ x59 = (x54 +ℤ x35);
- { uint64_t x60 = (x59 >> 0x18);
- { uint32_t x61 = (x59 & 0xffffff);
- { ℤ x62 = (x60 +ℤ x34);
- { uint64_t x63 = (x62 >> 0x18);
- { uint32_t x64 = (x62 & 0xffffff);
- { ℤ x65 = (x63 +ℤ x33);
- { uint64_t x66 = (x65 >> 0x18);
- { uint32_t x67 = (x65 & 0xffffff);
- { uint64_t x68 = (x66 + x46);
- { uint32_t x69 = (uint32_t) (x68 >> 0x18);
- { uint32_t x70 = ((uint32_t)x68 & 0xffffff);
- { uint64_t x71 = (((uint64_t)0x1000000 * x69) + x70);
- { uint32_t x72 = (uint32_t) (x71 >> 0x18);
- { uint32_t x73 = ((uint32_t)x71 & 0xffffff);
- { uint64_t x74 = ((x57 + x49) + ((uint64_t)0x10000 * x72));
- { uint32_t x75 = (uint32_t) (x74 >> 0x18);
- { uint32_t x76 = ((uint32_t)x74 & 0xffffff);
- { uint32_t x77 = (x52 + x72);
- { uint32_t x78 = (x77 >> 0x18);
- { uint32_t x79 = (x77 & 0xffffff);
- out[0] = x79;
- out[1] = (x78 + x58);
- out[2] = x76;
- out[3] = (x75 + x55);
- out[4] = x61;
- out[5] = x64;
- out[6] = x67;
- out[7] = x73;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e192m2e64m1/femul.v b/src/Specific/solinas32_2e192m2e64m1/femul.v
deleted file mode 100644
index e65e58094..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1/femulDisplay.log b/src/Specific/solinas32_2e192m2e64m1/femulDisplay.log
deleted file mode 100644
index ddaf54e48..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/femulDisplay.log
+++ /dev/null
@@ -1,55 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ℤ x32 = ((((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19)))))))) +ℤ ((0x10000 *ℤ (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))) +ℤ (0x10000000000 *ℤ ((uint64_t)x16 * x30))));
- ℤ x33 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x17 * x19))))))) +ℤ (((uint64_t)x16 * x30) +ℤ (0x10000 *ℤ (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29))))));
- ℤ x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) +ℤ ((((uint64_t)x17 * x30) + ((uint64_t)x16 * x31)) +ℤ (0x10000 *ℤ (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))))));
- ℤ x35 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + ((uint64_t)x13 * x19))))) +ℤ ((((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29))) +ℤ (0x10000 *ℤ (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25))))))));
- ℤ x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) +ℤ ((((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))) +ℤ (0x10000 *ℤ (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23)))))))));
- ℤ x37 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) +ℤ ((((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25))))) +ℤ (0x10000 *ℤ (((uint64_t)x7 * x30) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x16 * x21))))))))));
- uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23)))))));
- uint64_t x39 = (((uint64_t)x5 * x19) + (((uint64_t)x7 * x30) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x16 * x21))))))));
- uint32_t x40 = (uint32_t) (x38 >> 0x18);
- uint32_t x41 = ((uint32_t)x38 & 0xffffff);
- ℤ x42 = (x32 >>ℤ 0x18);
- uint32_t x43 = (x32 & 0xffffff);
- ℤ x44 = ((0x1000000 *ℤ x42) +ℤ x43);
- ℤ x45 = (x44 >>ℤ 0x18);
- uint32_t x46 = (x44 & 0xffffff);
- ℤ x47 = ((x40 +ℤ x37) +ℤ (0x10000 *ℤ x45));
- uint64_t x48 = (x47 >> 0x18);
- uint32_t x49 = (x47 & 0xffffff);
- ℤ x50 = (x39 +ℤ x45);
- uint64_t x51 = (x50 >> 0x18);
- uint32_t x52 = (x50 & 0xffffff);
- ℤ x53 = (x48 +ℤ x36);
- uint64_t x54 = (x53 >> 0x18);
- uint32_t x55 = (x53 & 0xffffff);
- uint64_t x56 = (x51 + x41);
- uint32_t x57 = (uint32_t) (x56 >> 0x18);
- uint32_t x58 = ((uint32_t)x56 & 0xffffff);
- ℤ x59 = (x54 +ℤ x35);
- uint64_t x60 = (x59 >> 0x18);
- uint32_t x61 = (x59 & 0xffffff);
- ℤ x62 = (x60 +ℤ x34);
- uint64_t x63 = (x62 >> 0x18);
- uint32_t x64 = (x62 & 0xffffff);
- ℤ x65 = (x63 +ℤ x33);
- uint64_t x66 = (x65 >> 0x18);
- uint32_t x67 = (x65 & 0xffffff);
- uint64_t x68 = (x66 + x46);
- uint32_t x69 = (uint32_t) (x68 >> 0x18);
- uint32_t x70 = ((uint32_t)x68 & 0xffffff);
- uint64_t x71 = (((uint64_t)0x1000000 * x69) + x70);
- uint32_t x72 = (uint32_t) (x71 >> 0x18);
- uint32_t x73 = ((uint32_t)x71 & 0xffffff);
- uint64_t x74 = ((x57 + x49) + ((uint64_t)0x10000 * x72));
- uint32_t x75 = (uint32_t) (x74 >> 0x18);
- uint32_t x76 = ((uint32_t)x74 & 0xffffff);
- uint32_t x77 = (x52 + x72);
- uint32_t x78 = (x77 >> 0x18);
- uint32_t x79 = (x77 & 0xffffff);
- return (Return x73, Return x67, Return x64, Return x61, (x75 + x55), Return x76, (x78 + x58), Return x79))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v b/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v
deleted file mode 100644
index f0294dfc9..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquare.c b/src/Specific/solinas32_2e192m2e64m1/fesquare.c
deleted file mode 100644
index 7d8009ef3..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesquare.c
+++ /dev/null
@@ -1,67 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { ℤ x15 = ((((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2)))))))) +ℤ ((0x10000 *ℤ (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))) +ℤ (0x10000000000 *ℤ ((uint64_t)x13 * x13))));
- { ℤ x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) +ℤ (((uint64_t)x13 * x13) +ℤ (0x10000 *ℤ (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12))))));
- { ℤ x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ ((((uint64_t)x14 * x13) + ((uint64_t)x13 * x14)) +ℤ (0x10000 *ℤ (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))))));
- { ℤ x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ ((((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12))) +ℤ (0x10000 *ℤ (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8))))))));
- { ℤ x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ ((((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))) +ℤ (0x10000 *ℤ (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6)))))))));
- { ℤ x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ ((((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8))))) +ℤ (0x10000 *ℤ (((uint64_t)x4 * x13) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x13 * x4))))))))));
- { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6)))))));
- { uint64_t x22 = (((uint64_t)x2 * x2) + (((uint64_t)x4 * x13) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x13 * x4))))))));
- { uint32_t x23 = (uint32_t) (x21 >> 0x18);
- { uint32_t x24 = ((uint32_t)x21 & 0xffffff);
- { ℤ x25 = (x15 >>ℤ 0x18);
- { uint32_t x26 = (x15 & 0xffffff);
- { ℤ x27 = ((0x1000000 *ℤ x25) +ℤ x26);
- { ℤ x28 = (x27 >>ℤ 0x18);
- { uint32_t x29 = (x27 & 0xffffff);
- { ℤ x30 = ((x23 +ℤ x20) +ℤ (0x10000 *ℤ x28));
- { uint64_t x31 = (x30 >> 0x18);
- { uint32_t x32 = (x30 & 0xffffff);
- { ℤ x33 = (x22 +ℤ x28);
- { uint64_t x34 = (x33 >> 0x18);
- { uint32_t x35 = (x33 & 0xffffff);
- { ℤ x36 = (x31 +ℤ x19);
- { uint64_t x37 = (x36 >> 0x18);
- { uint32_t x38 = (x36 & 0xffffff);
- { uint64_t x39 = (x34 + x24);
- { uint32_t x40 = (uint32_t) (x39 >> 0x18);
- { uint32_t x41 = ((uint32_t)x39 & 0xffffff);
- { ℤ x42 = (x37 +ℤ x18);
- { uint64_t x43 = (x42 >> 0x18);
- { uint32_t x44 = (x42 & 0xffffff);
- { ℤ x45 = (x43 +ℤ x17);
- { uint64_t x46 = (x45 >> 0x18);
- { uint32_t x47 = (x45 & 0xffffff);
- { ℤ x48 = (x46 +ℤ x16);
- { uint64_t x49 = (x48 >> 0x18);
- { uint32_t x50 = (x48 & 0xffffff);
- { uint64_t x51 = (x49 + x29);
- { uint32_t x52 = (uint32_t) (x51 >> 0x18);
- { uint32_t x53 = ((uint32_t)x51 & 0xffffff);
- { uint64_t x54 = (((uint64_t)0x1000000 * x52) + x53);
- { uint32_t x55 = (uint32_t) (x54 >> 0x18);
- { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
- { uint64_t x57 = ((x40 + x32) + ((uint64_t)0x10000 * x55));
- { uint32_t x58 = (uint32_t) (x57 >> 0x18);
- { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
- { uint32_t x60 = (x35 + x55);
- { uint32_t x61 = (x60 >> 0x18);
- { uint32_t x62 = (x60 & 0xffffff);
- out[0] = x62;
- out[1] = (x61 + x41);
- out[2] = x59;
- out[3] = (x58 + x38);
- out[4] = x44;
- out[5] = x47;
- out[6] = x50;
- out[7] = x56;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquare.v b/src/Specific/solinas32_2e192m2e64m1/fesquare.v
deleted file mode 100644
index 645bfcb81..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.log b/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.log
deleted file mode 100644
index c9adca713..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.log
+++ /dev/null
@@ -1,55 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- ℤ x15 = ((((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2)))))))) +ℤ ((0x10000 *ℤ (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))) +ℤ (0x10000000000 *ℤ ((uint64_t)x13 * x13))));
- ℤ x16 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) +ℤ (((uint64_t)x13 * x13) +ℤ (0x10000 *ℤ (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12))))));
- ℤ x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ ((((uint64_t)x14 * x13) + ((uint64_t)x13 * x14)) +ℤ (0x10000 *ℤ (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))))));
- ℤ x18 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ ((((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12))) +ℤ (0x10000 *ℤ (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8))))))));
- ℤ x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ ((((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))) +ℤ (0x10000 *ℤ (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6)))))))));
- ℤ x20 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ ((((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8))))) +ℤ (0x10000 *ℤ (((uint64_t)x4 * x13) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x13 * x4))))))))));
- uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6)))))));
- uint64_t x22 = (((uint64_t)x2 * x2) + (((uint64_t)x4 * x13) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x13 * x4))))))));
- uint32_t x23 = (uint32_t) (x21 >> 0x18);
- uint32_t x24 = ((uint32_t)x21 & 0xffffff);
- ℤ x25 = (x15 >>ℤ 0x18);
- uint32_t x26 = (x15 & 0xffffff);
- ℤ x27 = ((0x1000000 *ℤ x25) +ℤ x26);
- ℤ x28 = (x27 >>ℤ 0x18);
- uint32_t x29 = (x27 & 0xffffff);
- ℤ x30 = ((x23 +ℤ x20) +ℤ (0x10000 *ℤ x28));
- uint64_t x31 = (x30 >> 0x18);
- uint32_t x32 = (x30 & 0xffffff);
- ℤ x33 = (x22 +ℤ x28);
- uint64_t x34 = (x33 >> 0x18);
- uint32_t x35 = (x33 & 0xffffff);
- ℤ x36 = (x31 +ℤ x19);
- uint64_t x37 = (x36 >> 0x18);
- uint32_t x38 = (x36 & 0xffffff);
- uint64_t x39 = (x34 + x24);
- uint32_t x40 = (uint32_t) (x39 >> 0x18);
- uint32_t x41 = ((uint32_t)x39 & 0xffffff);
- ℤ x42 = (x37 +ℤ x18);
- uint64_t x43 = (x42 >> 0x18);
- uint32_t x44 = (x42 & 0xffffff);
- ℤ x45 = (x43 +ℤ x17);
- uint64_t x46 = (x45 >> 0x18);
- uint32_t x47 = (x45 & 0xffffff);
- ℤ x48 = (x46 +ℤ x16);
- uint64_t x49 = (x48 >> 0x18);
- uint32_t x50 = (x48 & 0xffffff);
- uint64_t x51 = (x49 + x29);
- uint32_t x52 = (uint32_t) (x51 >> 0x18);
- uint32_t x53 = ((uint32_t)x51 & 0xffffff);
- uint64_t x54 = (((uint64_t)0x1000000 * x52) + x53);
- uint32_t x55 = (uint32_t) (x54 >> 0x18);
- uint32_t x56 = ((uint32_t)x54 & 0xffffff);
- uint64_t x57 = ((x40 + x32) + ((uint64_t)0x10000 * x55));
- uint32_t x58 = (uint32_t) (x57 >> 0x18);
- uint32_t x59 = ((uint32_t)x57 & 0xffffff);
- uint32_t x60 = (x35 + x55);
- uint32_t x61 = (x60 >> 0x18);
- uint32_t x62 = (x60 & 0xffffff);
- return (Return x56, Return x50, Return x47, Return x44, (x58 + x38), Return x59, (x61 + x41), Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v b/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v
deleted file mode 100644
index e715d3b50..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesub.c b/src/Specific/solinas32_2e192m2e64m1/fesub.c
deleted file mode 100644
index f088fb055..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0x1fffffe + x5) - x19);
- out[1] = ((0x1fffffe + x7) - x21);
- out[2] = ((0x1fdfffe + x9) - x23);
- out[3] = ((0x1fffffe + x11) - x25);
- out[4] = ((0x1fffffe + x13) - x27);
- out[5] = ((0x1fffffe + x15) - x29);
- out[6] = ((0x1fffffe + x17) - x31);
- out[7] = ((0x1fffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesub.v b/src/Specific/solinas32_2e192m2e64m1/fesub.v
deleted file mode 100644
index 5c5838ffe..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.log b/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.log
deleted file mode 100644
index 094fa5bc5..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffe + x16) - x30), ((0x1fffffe + x17) - x31), ((0x1fffffe + x15) - x29), ((0x1fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0x1fdfffe + x9) - x23), ((0x1fffffe + x7) - x21), ((0x1fffffe + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.v b/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.v
deleted file mode 100644
index fa6a5d701..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1/freeze.c b/src/Specific/solinas32_2e192m2e64m1/freeze.c
deleted file mode 100644
index daca882d5..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfeffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0xffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0xffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0xfeffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0xffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0xffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0xffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0xffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0xffffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e192m2e64m1/freeze.v b/src/Specific/solinas32_2e192m2e64m1/freeze.v
deleted file mode 100644
index 7132474ff..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.log b/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.log
deleted file mode 100644
index 61e584107..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfeffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0xffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0xffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0xfeffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0xffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0xffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0xffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0xffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0xffffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v b/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v
deleted file mode 100644
index 25d9d37bf..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e192m2e64m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1/py_interpreter.sh b/src/Specific/solinas32_2e192m2e64m1/py_interpreter.sh
deleted file mode 100755
index 7aeb4e2ed..000000000
--- a/src/Specific/solinas32_2e192m2e64m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**192 - 2**64 - 1' -Dmodulus_bytes='24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/CurveParameters.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..7c68d0045
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^192 - 2^64 - 1
+Base: 19.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 19 + 1/5;
+ bitwidth := 32;
+ s := 2^192;
+ c := [(1, 1); (2^64, 1)];
+ carry_chains := Some [[2; 9]; [3; 0; 4; 1; 5; 2; 6; 7; 8; 9]; [3; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/Synthesis.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..7b49b0189
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/compiler.sh b/src/Specific/solinas32_2e192m2e64m1_10limbs/compiler.sh
new file mode 100755
index 000000000..77265da2a
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,20,19,19,19,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/compilerxx.sh b/src/Specific/solinas32_2e192m2e64m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..abf007c34
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,20,19,19,19,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/feadd.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/feadd.v
new file mode 100644
index 000000000..b35b8e904
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..fc1e2eb52
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/femul.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/femul.v
new file mode 100644
index 000000000..64764d49e
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/femulDisplay.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..4af82497a
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquare.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquare.v
new file mode 100644
index 000000000..1884f4e6c
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..62177e9ff
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/fesub.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesub.v
new file mode 100644
index 000000000..39a8fba9b
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..4f48166a0
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/freeze.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/freeze.v
new file mode 100644
index 000000000..ed69efd85
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e192m2e64m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..84461a6f2
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e192m2e64m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..945a2bd90
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**192 - 2**64 - 1' -Dmodulus_bytes='19.2' -Da24='121665'
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/CurveParameters.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/CurveParameters.v
new file mode 100644
index 000000000..05e5d26b1
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^192 - 2^64 - 1
+Base: 21 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 21 + 1/3;
+ bitwidth := 32;
+ s := 2^192;
+ c := [(1, 1); (2^64, 1)];
+ carry_chains := Some [[2; 8]; [3; 0; 4; 1; 5; 2; 6; 7; 8]; [3; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/Synthesis.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/Synthesis.v
new file mode 100644
index 000000000..26111fb7a
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/compiler.sh b/src/Specific/solinas32_2e192m2e64m1_9limbs/compiler.sh
new file mode 100755
index 000000000..800026c4a
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/compilerxx.sh b/src/Specific/solinas32_2e192m2e64m1_9limbs/compilerxx.sh
new file mode 100755
index 000000000..f7f3b535f
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/feadd.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/feadd.v
new file mode 100644
index 000000000..0d79c50ba
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..48e966089
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/femul.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/femul.v
new file mode 100644
index 000000000..71b1d3999
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/femulDisplay.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/femulDisplay.v
new file mode 100644
index 000000000..7a36bc052
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquare.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquare.v
new file mode 100644
index 000000000..165cd403c
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9183e6cec
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/fesub.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesub.v
new file mode 100644
index 000000000..259526f4d
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..5278df5f7
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/freeze.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/freeze.v
new file mode 100644
index 000000000..a1a4b61ae
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e192m2e64m1_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..bdcbc09d0
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e192m2e64m1_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e192m2e64m1_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e192m2e64m1_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..79b7e37f6
--- /dev/null
+++ b/src/Specific/solinas32_2e192m2e64m1_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**192 - 2**64 - 1' -Dmodulus_bytes='21 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e194m33/Synthesis.v b/src/Specific/solinas32_2e194m33/Synthesis.v
deleted file mode 100644
index 32e89adb6..000000000
--- a/src/Specific/solinas32_2e194m33/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e194m33.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e194m33/feadd.c b/src/Specific/solinas32_2e194m33/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e194m33/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e194m33/feadd.v b/src/Specific/solinas32_2e194m33/feadd.v
deleted file mode 100644
index 4773fc0fc..000000000
--- a/src/Specific/solinas32_2e194m33/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e194m33/feaddDisplay.log b/src/Specific/solinas32_2e194m33/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e194m33/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33/feaddDisplay.v b/src/Specific/solinas32_2e194m33/feaddDisplay.v
deleted file mode 100644
index 3875db09a..000000000
--- a/src/Specific/solinas32_2e194m33/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e194m33.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e194m33/femul.c b/src/Specific/solinas32_2e194m33/femul.c
deleted file mode 100644
index 59c62a65b..000000000
--- a/src/Specific/solinas32_2e194m33/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x21 * ((uint64_t)x16 * x30)));
- { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x21 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x21 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
- { uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x21 * (((uint64_t)x13 * x30) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x16 * x27))))));
- { uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0x21 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x21 * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- { uint64_t x39 = (((uint64_t)x5 * x19) + (0x21 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- { uint64_t x40 = (x39 >> 0x19);
- { uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
- { uint64_t x42 = (x40 + x38);
- { uint64_t x43 = (x42 >> 0x18);
- { uint32_t x44 = ((uint32_t)x42 & 0xffffff);
- { uint64_t x45 = (x43 + x37);
- { uint64_t x46 = (x45 >> 0x18);
- { uint32_t x47 = ((uint32_t)x45 & 0xffffff);
- { uint64_t x48 = (x46 + x36);
- { uint64_t x49 = (x48 >> 0x18);
- { uint32_t x50 = ((uint32_t)x48 & 0xffffff);
- { uint64_t x51 = (x49 + x35);
- { uint64_t x52 = (x51 >> 0x19);
- { uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
- { uint64_t x54 = (x52 + x34);
- { uint64_t x55 = (x54 >> 0x18);
- { uint32_t x56 = ((uint32_t)x54 & 0xffffff);
- { uint64_t x57 = (x55 + x33);
- { uint64_t x58 = (x57 >> 0x18);
- { uint32_t x59 = ((uint32_t)x57 & 0xffffff);
- { uint64_t x60 = (x58 + x32);
- { uint32_t x61 = (uint32_t) (x60 >> 0x18);
- { uint32_t x62 = ((uint32_t)x60 & 0xffffff);
- { uint64_t x63 = (x41 + ((uint64_t)0x21 * x61));
- { uint32_t x64 = (uint32_t) (x63 >> 0x19);
- { uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
- { uint32_t x66 = (x64 + x44);
- { uint32_t x67 = (x66 >> 0x18);
- { uint32_t x68 = (x66 & 0xffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e194m33/femul.v b/src/Specific/solinas32_2e194m33/femul.v
deleted file mode 100644
index 10cecae52..000000000
--- a/src/Specific/solinas32_2e194m33/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e194m33/femulDisplay.log b/src/Specific/solinas32_2e194m33/femulDisplay.log
deleted file mode 100644
index d47f7631a..000000000
--- a/src/Specific/solinas32_2e194m33/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x21 * ((uint64_t)x16 * x30)));
- uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x21 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x21 * ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
- uint64_t x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) + (0x21 * (((uint64_t)x13 * x30) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x16 * x27))))));
- uint64_t x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) + (0x21 * (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x21 * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- uint64_t x39 = (((uint64_t)x5 * x19) + (0x21 * ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- uint64_t x40 = (x39 >> 0x19);
- uint32_t x41 = ((uint32_t)x39 & 0x1ffffff);
- uint64_t x42 = (x40 + x38);
- uint64_t x43 = (x42 >> 0x18);
- uint32_t x44 = ((uint32_t)x42 & 0xffffff);
- uint64_t x45 = (x43 + x37);
- uint64_t x46 = (x45 >> 0x18);
- uint32_t x47 = ((uint32_t)x45 & 0xffffff);
- uint64_t x48 = (x46 + x36);
- uint64_t x49 = (x48 >> 0x18);
- uint32_t x50 = ((uint32_t)x48 & 0xffffff);
- uint64_t x51 = (x49 + x35);
- uint64_t x52 = (x51 >> 0x19);
- uint32_t x53 = ((uint32_t)x51 & 0x1ffffff);
- uint64_t x54 = (x52 + x34);
- uint64_t x55 = (x54 >> 0x18);
- uint32_t x56 = ((uint32_t)x54 & 0xffffff);
- uint64_t x57 = (x55 + x33);
- uint64_t x58 = (x57 >> 0x18);
- uint32_t x59 = ((uint32_t)x57 & 0xffffff);
- uint64_t x60 = (x58 + x32);
- uint32_t x61 = (uint32_t) (x60 >> 0x18);
- uint32_t x62 = ((uint32_t)x60 & 0xffffff);
- uint64_t x63 = (x41 + ((uint64_t)0x21 * x61));
- uint32_t x64 = (uint32_t) (x63 >> 0x19);
- uint32_t x65 = ((uint32_t)x63 & 0x1ffffff);
- uint32_t x66 = (x64 + x44);
- uint32_t x67 = (x66 >> 0x18);
- uint32_t x68 = (x66 & 0xffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33/femulDisplay.v b/src/Specific/solinas32_2e194m33/femulDisplay.v
deleted file mode 100644
index 2dd83bec7..000000000
--- a/src/Specific/solinas32_2e194m33/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e194m33.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e194m33/fesquare.c b/src/Specific/solinas32_2e194m33/fesquare.c
deleted file mode 100644
index c5d941438..000000000
--- a/src/Specific/solinas32_2e194m33/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x21 * ((uint64_t)x13 * x13)));
- { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x21 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x21 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
- { uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x21 * (((uint64_t)x10 * x13) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((uint64_t)x13 * x10))))));
- { uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x21 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x21 * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- { uint64_t x22 = (((uint64_t)x2 * x2) + (0x21 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- { uint64_t x23 = (x22 >> 0x19);
- { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- { uint64_t x25 = (x23 + x21);
- { uint64_t x26 = (x25 >> 0x18);
- { uint32_t x27 = ((uint32_t)x25 & 0xffffff);
- { uint64_t x28 = (x26 + x20);
- { uint64_t x29 = (x28 >> 0x18);
- { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
- { uint64_t x31 = (x29 + x19);
- { uint64_t x32 = (x31 >> 0x18);
- { uint32_t x33 = ((uint32_t)x31 & 0xffffff);
- { uint64_t x34 = (x32 + x18);
- { uint64_t x35 = (x34 >> 0x19);
- { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- { uint64_t x37 = (x35 + x17);
- { uint64_t x38 = (x37 >> 0x18);
- { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
- { uint64_t x40 = (x38 + x16);
- { uint64_t x41 = (x40 >> 0x18);
- { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- { uint64_t x43 = (x41 + x15);
- { uint32_t x44 = (uint32_t) (x43 >> 0x18);
- { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- { uint64_t x46 = (x24 + ((uint64_t)0x21 * x44));
- { uint32_t x47 = (uint32_t) (x46 >> 0x19);
- { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- { uint32_t x49 = (x47 + x27);
- { uint32_t x50 = (x49 >> 0x18);
- { uint32_t x51 = (x49 & 0xffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e194m33/fesquare.v b/src/Specific/solinas32_2e194m33/fesquare.v
deleted file mode 100644
index 689c82aee..000000000
--- a/src/Specific/solinas32_2e194m33/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e194m33/fesquareDisplay.log b/src/Specific/solinas32_2e194m33/fesquareDisplay.log
deleted file mode 100644
index 49b2ae021..000000000
--- a/src/Specific/solinas32_2e194m33/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x21 * ((uint64_t)x13 * x13)));
- uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x21 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x21 * ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
- uint64_t x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x21 * (((uint64_t)x10 * x13) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((uint64_t)x13 * x10))))));
- uint64_t x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x21 * (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x21 * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- uint64_t x22 = (((uint64_t)x2 * x2) + (0x21 * ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- uint64_t x23 = (x22 >> 0x19);
- uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
- uint64_t x25 = (x23 + x21);
- uint64_t x26 = (x25 >> 0x18);
- uint32_t x27 = ((uint32_t)x25 & 0xffffff);
- uint64_t x28 = (x26 + x20);
- uint64_t x29 = (x28 >> 0x18);
- uint32_t x30 = ((uint32_t)x28 & 0xffffff);
- uint64_t x31 = (x29 + x19);
- uint64_t x32 = (x31 >> 0x18);
- uint32_t x33 = ((uint32_t)x31 & 0xffffff);
- uint64_t x34 = (x32 + x18);
- uint64_t x35 = (x34 >> 0x19);
- uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- uint64_t x37 = (x35 + x17);
- uint64_t x38 = (x37 >> 0x18);
- uint32_t x39 = ((uint32_t)x37 & 0xffffff);
- uint64_t x40 = (x38 + x16);
- uint64_t x41 = (x40 >> 0x18);
- uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- uint64_t x43 = (x41 + x15);
- uint32_t x44 = (uint32_t) (x43 >> 0x18);
- uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- uint64_t x46 = (x24 + ((uint64_t)0x21 * x44));
- uint32_t x47 = (uint32_t) (x46 >> 0x19);
- uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- uint32_t x49 = (x47 + x27);
- uint32_t x50 = (x49 >> 0x18);
- uint32_t x51 = (x49 & 0xffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33/fesquareDisplay.v b/src/Specific/solinas32_2e194m33/fesquareDisplay.v
deleted file mode 100644
index 9cd9d778b..000000000
--- a/src/Specific/solinas32_2e194m33/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e194m33.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e194m33/fesub.c b/src/Specific/solinas32_2e194m33/fesub.c
deleted file mode 100644
index 970c77da5..000000000
--- a/src/Specific/solinas32_2e194m33/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0x3ffffbe + x5) - x19);
- out[1] = ((0x1fffffe + x7) - x21);
- out[2] = ((0x1fffffe + x9) - x23);
- out[3] = ((0x1fffffe + x11) - x25);
- out[4] = ((0x3fffffe + x13) - x27);
- out[5] = ((0x1fffffe + x15) - x29);
- out[6] = ((0x1fffffe + x17) - x31);
- out[7] = ((0x1fffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e194m33/fesub.v b/src/Specific/solinas32_2e194m33/fesub.v
deleted file mode 100644
index 2c334d362..000000000
--- a/src/Specific/solinas32_2e194m33/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e194m33/fesubDisplay.log b/src/Specific/solinas32_2e194m33/fesubDisplay.log
deleted file mode 100644
index ed0218289..000000000
--- a/src/Specific/solinas32_2e194m33/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffe + x16) - x30), ((0x1fffffe + x17) - x31), ((0x1fffffe + x15) - x29), ((0x3fffffe + x13) - x27), ((0x1fffffe + x11) - x25), ((0x1fffffe + x9) - x23), ((0x1fffffe + x7) - x21), ((0x3ffffbe + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33/fesubDisplay.v b/src/Specific/solinas32_2e194m33/fesubDisplay.v
deleted file mode 100644
index 91bc1c61a..000000000
--- a/src/Specific/solinas32_2e194m33/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e194m33.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e194m33/freeze.c b/src/Specific/solinas32_2e194m33/freeze.c
deleted file mode 100644
index a56db3e82..000000000
--- a/src/Specific/solinas32_2e194m33/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffdf);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0x1ffffdf);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0xffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0xffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0xffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0x1ffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0xffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0xffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0xffffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e194m33/freeze.v b/src/Specific/solinas32_2e194m33/freeze.v
deleted file mode 100644
index 9aefcd8bd..000000000
--- a/src/Specific/solinas32_2e194m33/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e194m33/freezeDisplay.log b/src/Specific/solinas32_2e194m33/freezeDisplay.log
deleted file mode 100644
index 64df88137..000000000
--- a/src/Specific/solinas32_2e194m33/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffdf);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0x1ffffdf);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0xffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0xffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0xffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0x1ffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0xffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0xffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0xffffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e194m33/freezeDisplay.v b/src/Specific/solinas32_2e194m33/freezeDisplay.v
deleted file mode 100644
index 43ee6e6e2..000000000
--- a/src/Specific/solinas32_2e194m33/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e194m33.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e194m33/CurveParameters.v b/src/Specific/solinas32_2e194m33_8limbs/CurveParameters.v
index ac84fa183..ac84fa183 100644
--- a/src/Specific/solinas32_2e194m33/CurveParameters.v
+++ b/src/Specific/solinas32_2e194m33_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e194m33_8limbs/Synthesis.v b/src/Specific/solinas32_2e194m33_8limbs/Synthesis.v
new file mode 100644
index 000000000..b714606f9
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e194m33/compiler.sh b/src/Specific/solinas32_2e194m33_8limbs/compiler.sh
index 7ac4cd55c..7ac4cd55c 100755
--- a/src/Specific/solinas32_2e194m33/compiler.sh
+++ b/src/Specific/solinas32_2e194m33_8limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e194m33/compilerxx.sh b/src/Specific/solinas32_2e194m33_8limbs/compilerxx.sh
index 083d9e9d1..083d9e9d1 100755
--- a/src/Specific/solinas32_2e194m33/compilerxx.sh
+++ b/src/Specific/solinas32_2e194m33_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e194m33_8limbs/feadd.v b/src/Specific/solinas32_2e194m33_8limbs/feadd.v
new file mode 100644
index 000000000..21347e97b
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e194m33_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..3db83e06d
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/femul.v b/src/Specific/solinas32_2e194m33_8limbs/femul.v
new file mode 100644
index 000000000..198f99f08
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/femulDisplay.v b/src/Specific/solinas32_2e194m33_8limbs/femulDisplay.v
new file mode 100644
index 000000000..d4de41ebd
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/fesquare.v b/src/Specific/solinas32_2e194m33_8limbs/fesquare.v
new file mode 100644
index 000000000..2c3a6c96f
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e194m33_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2c34724cd
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/fesub.v b/src/Specific/solinas32_2e194m33_8limbs/fesub.v
new file mode 100644
index 000000000..374b77573
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e194m33_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..ffdd120e3
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/freeze.v b/src/Specific/solinas32_2e194m33_8limbs/freeze.v
new file mode 100644
index 000000000..87951d0a4
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e194m33_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e194m33_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..a828f6a6b
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e194m33/py_interpreter.sh b/src/Specific/solinas32_2e194m33_8limbs/py_interpreter.sh
index b44eb42c5..b44eb42c5 100755
--- a/src/Specific/solinas32_2e194m33/py_interpreter.sh
+++ b/src/Specific/solinas32_2e194m33_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e194m33_9limbs/CurveParameters.v b/src/Specific/solinas32_2e194m33_9limbs/CurveParameters.v
new file mode 100644
index 000000000..75adb53e4
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^194 - 33
+Base: 21 + 5/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 21 + 5/9;
+ bitwidth := 32;
+ s := 2^194;
+ c := [(1, 33)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/Synthesis.v b/src/Specific/solinas32_2e194m33_9limbs/Synthesis.v
new file mode 100644
index 000000000..05f47ca44
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/compiler.sh b/src/Specific/solinas32_2e194m33_9limbs/compiler.sh
new file mode 100755
index 000000000..d035fe42b
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,21,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<194) - 33' "$@"
diff --git a/src/Specific/solinas32_2e194m33_9limbs/compilerxx.sh b/src/Specific/solinas32_2e194m33_9limbs/compilerxx.sh
new file mode 100755
index 000000000..bbcd71bb8
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,21,22,21}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<194) - 33' "$@"
diff --git a/src/Specific/solinas32_2e194m33_9limbs/feadd.v b/src/Specific/solinas32_2e194m33_9limbs/feadd.v
new file mode 100644
index 000000000..cde2a6e3e
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..ef29a5528
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/femul.v b/src/Specific/solinas32_2e194m33_9limbs/femul.v
new file mode 100644
index 000000000..25610b0ab
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.v b/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.v
new file mode 100644
index 000000000..95b91b49f
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesquare.v b/src/Specific/solinas32_2e194m33_9limbs/fesquare.v
new file mode 100644
index 000000000..398d9b535
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e18e26100
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesub.v b/src/Specific/solinas32_2e194m33_9limbs/fesub.v
new file mode 100644
index 000000000..3c9734829
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..d6d62ffcb
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/freeze.v b/src/Specific/solinas32_2e194m33_9limbs/freeze.v
new file mode 100644
index 000000000..2c293a61e
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..738d3e3a1
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e194m33_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e194m33_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e194m33_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..40e7a0c1a
--- /dev/null
+++ b/src/Specific/solinas32_2e194m33_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**194 - 33' -Dmodulus_bytes='21 + 5/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e196m15/CurveParameters.v b/src/Specific/solinas32_2e196m15/CurveParameters.v
deleted file mode 100644
index f650aa6fe..000000000
--- a/src/Specific/solinas32_2e196m15/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^196 - 15
-Base: 28
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 7%nat;
- base := 28;
- bitwidth := 32;
- s := 2^196;
- c := [(1, 15)];
- carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e196m15/Synthesis.v b/src/Specific/solinas32_2e196m15/Synthesis.v
deleted file mode 100644
index fefb3c60b..000000000
--- a/src/Specific/solinas32_2e196m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e196m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e196m15/compiler.sh b/src/Specific/solinas32_2e196m15/compiler.sh
deleted file mode 100755
index a48471256..000000000
--- a/src/Specific/solinas32_2e196m15/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15/compilerxx.sh b/src/Specific/solinas32_2e196m15/compilerxx.sh
deleted file mode 100755
index 90c65c6fa..000000000
--- a/src/Specific/solinas32_2e196m15/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15/feadd.c b/src/Specific/solinas32_2e196m15/feadd.c
deleted file mode 100644
index 5288d0bef..000000000
--- a/src/Specific/solinas32_2e196m15/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e196m15/feadd.v b/src/Specific/solinas32_2e196m15/feadd.v
deleted file mode 100644
index 0373d98b1..000000000
--- a/src/Specific/solinas32_2e196m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e196m15/feaddDisplay.log b/src/Specific/solinas32_2e196m15/feaddDisplay.log
deleted file mode 100644
index d22997dcb..000000000
--- a/src/Specific/solinas32_2e196m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15/feaddDisplay.v b/src/Specific/solinas32_2e196m15/feaddDisplay.v
deleted file mode 100644
index c689ab4ac..000000000
--- a/src/Specific/solinas32_2e196m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e196m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e196m15/femul.c b/src/Specific/solinas32_2e196m15/femul.c
deleted file mode 100644
index 7490e55da..000000000
--- a/src/Specific/solinas32_2e196m15/femul.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
- { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0xf * ((uint64_t)x14 * x26)));
- { ℤ x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) +ℤ (0xf *ℤ (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- { ℤ x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) +ℤ (0xf *ℤ (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- { ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0xf *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- { ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0xf *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- { ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xf *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
- { uint64_t x35 = (x34 >> 0x1c);
- { uint32_t x36 = (x34 & 0xfffffff);
- { ℤ x37 = (x35 +ℤ x33);
- { uint64_t x38 = (x37 >> 0x1c);
- { uint32_t x39 = (x37 & 0xfffffff);
- { ℤ x40 = (x38 +ℤ x32);
- { uint64_t x41 = (x40 >> 0x1c);
- { uint32_t x42 = (x40 & 0xfffffff);
- { ℤ x43 = (x41 +ℤ x31);
- { uint64_t x44 = (x43 >> 0x1c);
- { uint32_t x45 = (x43 & 0xfffffff);
- { ℤ x46 = (x44 +ℤ x30);
- { uint64_t x47 = (x46 >> 0x1c);
- { uint32_t x48 = (x46 & 0xfffffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x1c);
- { uint32_t x51 = ((uint32_t)x49 & 0xfffffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x1c);
- { uint32_t x54 = ((uint32_t)x52 & 0xfffffff);
- { uint64_t x55 = (x36 + (0xf * x53));
- { uint32_t x56 = (uint32_t) (x55 >> 0x1c);
- { uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- { uint32_t x58 = (x56 + x39);
- { uint32_t x59 = (x58 >> 0x1c);
- { uint32_t x60 = (x58 & 0xfffffff);
- out[0] = x57;
- out[1] = x60;
- out[2] = (x59 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e196m15/femul.v b/src/Specific/solinas32_2e196m15/femul.v
deleted file mode 100644
index 968d22081..000000000
--- a/src/Specific/solinas32_2e196m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e196m15/femulDisplay.log b/src/Specific/solinas32_2e196m15/femulDisplay.log
deleted file mode 100644
index 0fa41ba56..000000000
--- a/src/Specific/solinas32_2e196m15/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
- uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0xf * ((uint64_t)x14 * x26)));
- ℤ x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) +ℤ (0xf *ℤ (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
- ℤ x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) +ℤ (0xf *ℤ (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
- ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0xf *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
- ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0xf *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
- ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xf *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
- uint64_t x35 = (x34 >> 0x1c);
- uint32_t x36 = (x34 & 0xfffffff);
- ℤ x37 = (x35 +ℤ x33);
- uint64_t x38 = (x37 >> 0x1c);
- uint32_t x39 = (x37 & 0xfffffff);
- ℤ x40 = (x38 +ℤ x32);
- uint64_t x41 = (x40 >> 0x1c);
- uint32_t x42 = (x40 & 0xfffffff);
- ℤ x43 = (x41 +ℤ x31);
- uint64_t x44 = (x43 >> 0x1c);
- uint32_t x45 = (x43 & 0xfffffff);
- ℤ x46 = (x44 +ℤ x30);
- uint64_t x47 = (x46 >> 0x1c);
- uint32_t x48 = (x46 & 0xfffffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x1c);
- uint32_t x51 = ((uint32_t)x49 & 0xfffffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x1c);
- uint32_t x54 = ((uint32_t)x52 & 0xfffffff);
- uint64_t x55 = (x36 + (0xf * x53));
- uint32_t x56 = (uint32_t) (x55 >> 0x1c);
- uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- uint32_t x58 = (x56 + x39);
- uint32_t x59 = (x58 >> 0x1c);
- uint32_t x60 = (x58 & 0xfffffff);
- return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15/femulDisplay.v b/src/Specific/solinas32_2e196m15/femulDisplay.v
deleted file mode 100644
index 2bda971d1..000000000
--- a/src/Specific/solinas32_2e196m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e196m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e196m15/fesquare.c b/src/Specific/solinas32_2e196m15/fesquare.c
deleted file mode 100644
index 08f1b982f..000000000
--- a/src/Specific/solinas32_2e196m15/fesquare.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
- { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * ((uint64_t)x11 * x11)));
- { ℤ x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0xf *ℤ (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- { ℤ x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0xf *ℤ (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- { ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0xf *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- { ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0xf *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- { ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xf *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
- { uint64_t x20 = (x19 >> 0x1c);
- { uint32_t x21 = (x19 & 0xfffffff);
- { ℤ x22 = (x20 +ℤ x18);
- { uint64_t x23 = (x22 >> 0x1c);
- { uint32_t x24 = (x22 & 0xfffffff);
- { ℤ x25 = (x23 +ℤ x17);
- { uint64_t x26 = (x25 >> 0x1c);
- { uint32_t x27 = (x25 & 0xfffffff);
- { ℤ x28 = (x26 +ℤ x16);
- { uint64_t x29 = (x28 >> 0x1c);
- { uint32_t x30 = (x28 & 0xfffffff);
- { ℤ x31 = (x29 +ℤ x15);
- { uint64_t x32 = (x31 >> 0x1c);
- { uint32_t x33 = (x31 & 0xfffffff);
- { uint64_t x34 = (x32 + x14);
- { uint64_t x35 = (x34 >> 0x1c);
- { uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
- { uint64_t x37 = (x35 + x13);
- { uint64_t x38 = (x37 >> 0x1c);
- { uint32_t x39 = ((uint32_t)x37 & 0xfffffff);
- { uint64_t x40 = (x21 + (0xf * x38));
- { uint32_t x41 = (uint32_t) (x40 >> 0x1c);
- { uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- { uint32_t x43 = (x41 + x24);
- { uint32_t x44 = (x43 >> 0x1c);
- { uint32_t x45 = (x43 & 0xfffffff);
- out[0] = x42;
- out[1] = x45;
- out[2] = (x44 + x27);
- out[3] = x30;
- out[4] = x33;
- out[5] = x36;
- out[6] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e196m15/fesquare.v b/src/Specific/solinas32_2e196m15/fesquare.v
deleted file mode 100644
index 351ce5094..000000000
--- a/src/Specific/solinas32_2e196m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e196m15/fesquareDisplay.log b/src/Specific/solinas32_2e196m15/fesquareDisplay.log
deleted file mode 100644
index fba521b7f..000000000
--- a/src/Specific/solinas32_2e196m15/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
- uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * ((uint64_t)x11 * x11)));
- ℤ x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0xf *ℤ (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
- ℤ x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0xf *ℤ (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
- ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0xf *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
- ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0xf *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
- ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xf *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
- uint64_t x20 = (x19 >> 0x1c);
- uint32_t x21 = (x19 & 0xfffffff);
- ℤ x22 = (x20 +ℤ x18);
- uint64_t x23 = (x22 >> 0x1c);
- uint32_t x24 = (x22 & 0xfffffff);
- ℤ x25 = (x23 +ℤ x17);
- uint64_t x26 = (x25 >> 0x1c);
- uint32_t x27 = (x25 & 0xfffffff);
- ℤ x28 = (x26 +ℤ x16);
- uint64_t x29 = (x28 >> 0x1c);
- uint32_t x30 = (x28 & 0xfffffff);
- ℤ x31 = (x29 +ℤ x15);
- uint64_t x32 = (x31 >> 0x1c);
- uint32_t x33 = (x31 & 0xfffffff);
- uint64_t x34 = (x32 + x14);
- uint64_t x35 = (x34 >> 0x1c);
- uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
- uint64_t x37 = (x35 + x13);
- uint64_t x38 = (x37 >> 0x1c);
- uint32_t x39 = ((uint32_t)x37 & 0xfffffff);
- uint64_t x40 = (x21 + (0xf * x38));
- uint32_t x41 = (uint32_t) (x40 >> 0x1c);
- uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- uint32_t x43 = (x41 + x24);
- uint32_t x44 = (x43 >> 0x1c);
- uint32_t x45 = (x43 & 0xfffffff);
- return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15/fesquareDisplay.v b/src/Specific/solinas32_2e196m15/fesquareDisplay.v
deleted file mode 100644
index 3db8b9104..000000000
--- a/src/Specific/solinas32_2e196m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e196m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e196m15/fesub.c b/src/Specific/solinas32_2e196m15/fesub.c
deleted file mode 100644
index 0e278a97e..000000000
--- a/src/Specific/solinas32_2e196m15/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
- { const uint32_t x14 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x26 = in2[6];
- { const uint32_t x27 = in2[5];
- { const uint32_t x25 = in2[4];
- { const uint32_t x23 = in2[3];
- { const uint32_t x21 = in2[2];
- { const uint32_t x19 = in2[1];
- { const uint32_t x17 = in2[0];
- out[0] = ((0x1fffffe2 + x5) - x17);
- out[1] = ((0x1ffffffe + x7) - x19);
- out[2] = ((0x1ffffffe + x9) - x21);
- out[3] = ((0x1ffffffe + x11) - x23);
- out[4] = ((0x1ffffffe + x13) - x25);
- out[5] = ((0x1ffffffe + x15) - x27);
- out[6] = ((0x1ffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e196m15/fesub.v b/src/Specific/solinas32_2e196m15/fesub.v
deleted file mode 100644
index 1898273d6..000000000
--- a/src/Specific/solinas32_2e196m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e196m15/fesubDisplay.log b/src/Specific/solinas32_2e196m15/fesubDisplay.log
deleted file mode 100644
index eaf509e2c..000000000
--- a/src/Specific/solinas32_2e196m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x1ffffffe + x14) - x26), ((0x1ffffffe + x15) - x27), ((0x1ffffffe + x13) - x25), ((0x1ffffffe + x11) - x23), ((0x1ffffffe + x9) - x21), ((0x1ffffffe + x7) - x19), ((0x1fffffe2 + x5) - x17)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15/fesubDisplay.v b/src/Specific/solinas32_2e196m15/fesubDisplay.v
deleted file mode 100644
index b2ce1c85f..000000000
--- a/src/Specific/solinas32_2e196m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e196m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e196m15/freeze.c b/src/Specific/solinas32_2e196m15/freeze.c
deleted file mode 100644
index 705ff1718..000000000
--- a/src/Specific/solinas32_2e196m15/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint32_t out[7], const uint32_t in1[7]) {
- { const uint32_t x11 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff1);
- { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffffff);
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffffff);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffffff);
- { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- { uint32_t x35 = (x34 & 0xffffff1);
- { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint32_t x39 = (x34 & 0xfffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint32_t x43 = (x34 & 0xfffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint32_t x47 = (x34 & 0xfffffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint32_t x51 = (x34 & 0xfffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint32_t x55 = (x34 & 0xfffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint32_t x59 = (x34 & 0xfffffff);
- { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e196m15/freeze.v b/src/Specific/solinas32_2e196m15/freeze.v
deleted file mode 100644
index 676146078..000000000
--- a/src/Specific/solinas32_2e196m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e196m15/freezeDisplay.log b/src/Specific/solinas32_2e196m15/freezeDisplay.log
deleted file mode 100644
index 9c4dbc31b..000000000
--- a/src/Specific/solinas32_2e196m15/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff1);
- uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0xfffffff);
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0xfffffff);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0xfffffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0xfffffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0xfffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0xfffffff);
- uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
- uint32_t x35 = (x34 & 0xffffff1);
- uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint32_t x39 = (x34 & 0xfffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint32_t x43 = (x34 & 0xfffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint32_t x47 = (x34 & 0xfffffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint32_t x51 = (x34 & 0xfffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint32_t x55 = (x34 & 0xfffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint32_t x59 = (x34 & 0xfffffff);
- uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e196m15/freezeDisplay.v b/src/Specific/solinas32_2e196m15/freezeDisplay.v
deleted file mode 100644
index 17dd5bc06..000000000
--- a/src/Specific/solinas32_2e196m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e196m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e196m15/py_interpreter.sh b/src/Specific/solinas32_2e196m15/py_interpreter.sh
deleted file mode 100755
index 44a6df8c4..000000000
--- a/src/Specific/solinas32_2e196m15/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**196 - 15' -Dmodulus_bytes='28' -Da24='121665'
diff --git a/src/Specific/solinas32_2e196m15_8limbs/CurveParameters.v b/src/Specific/solinas32_2e196m15_8limbs/CurveParameters.v
new file mode 100644
index 000000000..79fc27c23
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^196 - 15
+Base: 24.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 24 + 1/2;
+ bitwidth := 32;
+ s := 2^196;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/Synthesis.v b/src/Specific/solinas32_2e196m15_8limbs/Synthesis.v
new file mode 100644
index 000000000..dd1c992a2
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/compiler.sh b/src/Specific/solinas32_2e196m15_8limbs/compiler.sh
new file mode 100755
index 000000000..0ab90e0da
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15_8limbs/compilerxx.sh b/src/Specific/solinas32_2e196m15_8limbs/compilerxx.sh
new file mode 100755
index 000000000..18bb69284
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15_8limbs/feadd.v b/src/Specific/solinas32_2e196m15_8limbs/feadd.v
new file mode 100644
index 000000000..b7e8d06ef
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..a6972c448
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/femul.v b/src/Specific/solinas32_2e196m15_8limbs/femul.v
new file mode 100644
index 000000000..e630ad9a5
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.v b/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.v
new file mode 100644
index 000000000..417b82fba
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesquare.v b/src/Specific/solinas32_2e196m15_8limbs/fesquare.v
new file mode 100644
index 000000000..1cf956f88
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f1551f274
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesub.v b/src/Specific/solinas32_2e196m15_8limbs/fesub.v
new file mode 100644
index 000000000..b0174d3c8
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..96eb9d29e
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/freeze.v b/src/Specific/solinas32_2e196m15_8limbs/freeze.v
new file mode 100644
index 000000000..186ab2833
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..f62c59452
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e196m15_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e196m15_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..1957689bd
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**196 - 15' -Dmodulus_bytes='24.5' -Da24='121665'
diff --git a/src/Specific/solinas32_2e196m15_9limbs/CurveParameters.v b/src/Specific/solinas32_2e196m15_9limbs/CurveParameters.v
new file mode 100644
index 000000000..2b6f7a220
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^196 - 15
+Base: 21 + 7/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 21 + 7/9;
+ bitwidth := 32;
+ s := 2^196;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/Synthesis.v b/src/Specific/solinas32_2e196m15_9limbs/Synthesis.v
new file mode 100644
index 000000000..45d8fabec
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/compiler.sh b/src/Specific/solinas32_2e196m15_9limbs/compiler.sh
new file mode 100755
index 000000000..770021b0a
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15_9limbs/compilerxx.sh b/src/Specific/solinas32_2e196m15_9limbs/compilerxx.sh
new file mode 100755
index 000000000..33765f0f5
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,22,22,21,22,22,22,21}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas32_2e196m15_9limbs/feadd.v b/src/Specific/solinas32_2e196m15_9limbs/feadd.v
new file mode 100644
index 000000000..27443e78b
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..20432b1c2
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/femul.v b/src/Specific/solinas32_2e196m15_9limbs/femul.v
new file mode 100644
index 000000000..7153bc34c
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.v b/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.v
new file mode 100644
index 000000000..3b63c620f
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesquare.v b/src/Specific/solinas32_2e196m15_9limbs/fesquare.v
new file mode 100644
index 000000000..a24f4bc52
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..580ac6b8c
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesub.v b/src/Specific/solinas32_2e196m15_9limbs/fesub.v
new file mode 100644
index 000000000..f2065d046
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..ed0dac9f2
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/freeze.v b/src/Specific/solinas32_2e196m15_9limbs/freeze.v
new file mode 100644
index 000000000..3cd60aabc
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..f26cb0369
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e196m15_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e196m15_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e196m15_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..3d67c7178
--- /dev/null
+++ b/src/Specific/solinas32_2e196m15_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**196 - 15' -Dmodulus_bytes='21 + 7/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e198m17/Synthesis.v b/src/Specific/solinas32_2e198m17/Synthesis.v
deleted file mode 100644
index a33fec378..000000000
--- a/src/Specific/solinas32_2e198m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e198m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e198m17/feadd.c b/src/Specific/solinas32_2e198m17/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e198m17/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e198m17/feadd.v b/src/Specific/solinas32_2e198m17/feadd.v
deleted file mode 100644
index ac18e91eb..000000000
--- a/src/Specific/solinas32_2e198m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e198m17/feaddDisplay.log b/src/Specific/solinas32_2e198m17/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e198m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17/feaddDisplay.v b/src/Specific/solinas32_2e198m17/feaddDisplay.v
deleted file mode 100644
index fe599ab16..000000000
--- a/src/Specific/solinas32_2e198m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e198m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e198m17/femul.c b/src/Specific/solinas32_2e198m17/femul.c
deleted file mode 100644
index fa8aadc0c..000000000
--- a/src/Specific/solinas32_2e198m17/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x11 * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x11 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x11 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x11 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x11 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x11 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x11 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0x11 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- { uint64_t x45 = (x44 >> 0x16);
- { uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
- { uint64_t x47 = (x45 + x43);
- { uint64_t x48 = (x47 >> 0x16);
- { uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
- { uint64_t x50 = (x48 + x42);
- { uint64_t x51 = (x50 >> 0x16);
- { uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
- { uint64_t x53 = (x51 + x41);
- { uint32_t x54 = (uint32_t) (x53 >> 0x16);
- { uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
- { uint64_t x56 = (x54 + x40);
- { uint32_t x57 = (uint32_t) (x56 >> 0x16);
- { uint32_t x58 = ((uint32_t)x56 & 0x3fffff);
- { uint64_t x59 = (x57 + x39);
- { uint32_t x60 = (uint32_t) (x59 >> 0x16);
- { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- { uint64_t x62 = (x60 + x38);
- { uint32_t x63 = (uint32_t) (x62 >> 0x16);
- { uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
- { uint64_t x65 = (x63 + x37);
- { uint32_t x66 = (uint32_t) (x65 >> 0x16);
- { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
- { uint64_t x68 = (x66 + x36);
- { uint32_t x69 = (uint32_t) (x68 >> 0x16);
- { uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- { uint64_t x71 = (x46 + ((uint64_t)0x11 * x69));
- { uint32_t x72 = (uint32_t) (x71 >> 0x16);
- { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x16);
- { uint32_t x76 = (x74 & 0x3fffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e198m17/femul.v b/src/Specific/solinas32_2e198m17/femul.v
deleted file mode 100644
index 39dfa377e..000000000
--- a/src/Specific/solinas32_2e198m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e198m17/femulDisplay.log b/src/Specific/solinas32_2e198m17/femulDisplay.log
deleted file mode 100644
index 6d3e2ee24..000000000
--- a/src/Specific/solinas32_2e198m17/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x11 * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x11 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x11 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x11 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x11 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x11 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x11 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0x11 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- uint64_t x45 = (x44 >> 0x16);
- uint32_t x46 = ((uint32_t)x44 & 0x3fffff);
- uint64_t x47 = (x45 + x43);
- uint64_t x48 = (x47 >> 0x16);
- uint32_t x49 = ((uint32_t)x47 & 0x3fffff);
- uint64_t x50 = (x48 + x42);
- uint64_t x51 = (x50 >> 0x16);
- uint32_t x52 = ((uint32_t)x50 & 0x3fffff);
- uint64_t x53 = (x51 + x41);
- uint32_t x54 = (uint32_t) (x53 >> 0x16);
- uint32_t x55 = ((uint32_t)x53 & 0x3fffff);
- uint64_t x56 = (x54 + x40);
- uint32_t x57 = (uint32_t) (x56 >> 0x16);
- uint32_t x58 = ((uint32_t)x56 & 0x3fffff);
- uint64_t x59 = (x57 + x39);
- uint32_t x60 = (uint32_t) (x59 >> 0x16);
- uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- uint64_t x62 = (x60 + x38);
- uint32_t x63 = (uint32_t) (x62 >> 0x16);
- uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
- uint64_t x65 = (x63 + x37);
- uint32_t x66 = (uint32_t) (x65 >> 0x16);
- uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
- uint64_t x68 = (x66 + x36);
- uint32_t x69 = (uint32_t) (x68 >> 0x16);
- uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- uint64_t x71 = (x46 + ((uint64_t)0x11 * x69));
- uint32_t x72 = (uint32_t) (x71 >> 0x16);
- uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x16);
- uint32_t x76 = (x74 & 0x3fffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17/femulDisplay.v b/src/Specific/solinas32_2e198m17/femulDisplay.v
deleted file mode 100644
index 076c2a4a7..000000000
--- a/src/Specific/solinas32_2e198m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e198m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e198m17/fesquare.c b/src/Specific/solinas32_2e198m17/fesquare.c
deleted file mode 100644
index c146341e3..000000000
--- a/src/Specific/solinas32_2e198m17/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- { uint64_t x26 = (x25 >> 0x16);
- { uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
- { uint64_t x28 = (x26 + x24);
- { uint64_t x29 = (x28 >> 0x16);
- { uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
- { uint64_t x31 = (x29 + x23);
- { uint64_t x32 = (x31 >> 0x16);
- { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- { uint64_t x34 = (x32 + x22);
- { uint32_t x35 = (uint32_t) (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x35 + x21);
- { uint32_t x38 = (uint32_t) (x37 >> 0x16);
- { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- { uint64_t x40 = (x38 + x20);
- { uint32_t x41 = (uint32_t) (x40 >> 0x16);
- { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- { uint64_t x43 = (x41 + x19);
- { uint32_t x44 = (uint32_t) (x43 >> 0x16);
- { uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- { uint64_t x46 = (x44 + x18);
- { uint32_t x47 = (uint32_t) (x46 >> 0x16);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- { uint64_t x49 = (x47 + x17);
- { uint32_t x50 = (uint32_t) (x49 >> 0x16);
- { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- { uint64_t x52 = (x27 + ((uint64_t)0x11 * x50));
- { uint32_t x53 = (uint32_t) (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x16);
- { uint32_t x57 = (x55 & 0x3fffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e198m17/fesquare.v b/src/Specific/solinas32_2e198m17/fesquare.v
deleted file mode 100644
index 2ff426ae0..000000000
--- a/src/Specific/solinas32_2e198m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e198m17/fesquareDisplay.log b/src/Specific/solinas32_2e198m17/fesquareDisplay.log
deleted file mode 100644
index 3b0ec9b78..000000000
--- a/src/Specific/solinas32_2e198m17/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- uint64_t x26 = (x25 >> 0x16);
- uint32_t x27 = ((uint32_t)x25 & 0x3fffff);
- uint64_t x28 = (x26 + x24);
- uint64_t x29 = (x28 >> 0x16);
- uint32_t x30 = ((uint32_t)x28 & 0x3fffff);
- uint64_t x31 = (x29 + x23);
- uint64_t x32 = (x31 >> 0x16);
- uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- uint64_t x34 = (x32 + x22);
- uint32_t x35 = (uint32_t) (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x35 + x21);
- uint32_t x38 = (uint32_t) (x37 >> 0x16);
- uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- uint64_t x40 = (x38 + x20);
- uint32_t x41 = (uint32_t) (x40 >> 0x16);
- uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- uint64_t x43 = (x41 + x19);
- uint32_t x44 = (uint32_t) (x43 >> 0x16);
- uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- uint64_t x46 = (x44 + x18);
- uint32_t x47 = (uint32_t) (x46 >> 0x16);
- uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- uint64_t x49 = (x47 + x17);
- uint32_t x50 = (uint32_t) (x49 >> 0x16);
- uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- uint64_t x52 = (x27 + ((uint64_t)0x11 * x50));
- uint32_t x53 = (uint32_t) (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x16);
- uint32_t x57 = (x55 & 0x3fffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17/fesquareDisplay.v b/src/Specific/solinas32_2e198m17/fesquareDisplay.v
deleted file mode 100644
index f7f8b4ad9..000000000
--- a/src/Specific/solinas32_2e198m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e198m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e198m17/fesub.c b/src/Specific/solinas32_2e198m17/fesub.c
deleted file mode 100644
index d591ab209..000000000
--- a/src/Specific/solinas32_2e198m17/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0x7fffde + x5) - x21);
- out[1] = ((0x7ffffe + x7) - x23);
- out[2] = ((0x7ffffe + x9) - x25);
- out[3] = ((0x7ffffe + x11) - x27);
- out[4] = ((0x7ffffe + x13) - x29);
- out[5] = ((0x7ffffe + x15) - x31);
- out[6] = ((0x7ffffe + x17) - x33);
- out[7] = ((0x7ffffe + x19) - x35);
- out[8] = ((0x7ffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e198m17/fesub.v b/src/Specific/solinas32_2e198m17/fesub.v
deleted file mode 100644
index ab32097bb..000000000
--- a/src/Specific/solinas32_2e198m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e198m17/fesubDisplay.log b/src/Specific/solinas32_2e198m17/fesubDisplay.log
deleted file mode 100644
index 16ff09f9d..000000000
--- a/src/Specific/solinas32_2e198m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7ffffe + x18) - x34), ((0x7ffffe + x19) - x35), ((0x7ffffe + x17) - x33), ((0x7ffffe + x15) - x31), ((0x7ffffe + x13) - x29), ((0x7ffffe + x11) - x27), ((0x7ffffe + x9) - x25), ((0x7ffffe + x7) - x23), ((0x7fffde + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17/fesubDisplay.v b/src/Specific/solinas32_2e198m17/fesubDisplay.v
deleted file mode 100644
index a65e45b7e..000000000
--- a/src/Specific/solinas32_2e198m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e198m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e198m17/freeze.c b/src/Specific/solinas32_2e198m17/freeze.c
deleted file mode 100644
index 869e5f82d..000000000
--- a/src/Specific/solinas32_2e198m17/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x3fffef);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x3fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x3fffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x3fffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x3fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x3fffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x3fffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x3fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x3fffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e198m17/freeze.v b/src/Specific/solinas32_2e198m17/freeze.v
deleted file mode 100644
index 9197499f0..000000000
--- a/src/Specific/solinas32_2e198m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e198m17/freezeDisplay.log b/src/Specific/solinas32_2e198m17/freezeDisplay.log
deleted file mode 100644
index e249734b6..000000000
--- a/src/Specific/solinas32_2e198m17/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffef);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x3fffef);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x3fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x3fffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x3fffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x3fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x3fffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x3fffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x3fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x3fffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e198m17/freezeDisplay.v b/src/Specific/solinas32_2e198m17/freezeDisplay.v
deleted file mode 100644
index 73356817b..000000000
--- a/src/Specific/solinas32_2e198m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e198m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/CurveParameters.v b/src/Specific/solinas32_2e198m17_8limbs/CurveParameters.v
new file mode 100644
index 000000000..bc64ca7c6
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^198 - 17
+Base: 24.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 24 + 3/4;
+ bitwidth := 32;
+ s := 2^198;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/Synthesis.v b/src/Specific/solinas32_2e198m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..4c1b64f9b
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/compiler.sh b/src/Specific/solinas32_2e198m17_8limbs/compiler.sh
new file mode 100755
index 000000000..d566b8ec6
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<198) - 17' "$@"
diff --git a/src/Specific/solinas32_2e198m17_8limbs/compilerxx.sh b/src/Specific/solinas32_2e198m17_8limbs/compilerxx.sh
new file mode 100755
index 000000000..55009befd
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<198) - 17' "$@"
diff --git a/src/Specific/solinas32_2e198m17_8limbs/feadd.v b/src/Specific/solinas32_2e198m17_8limbs/feadd.v
new file mode 100644
index 000000000..11c033c76
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..a7953ab4a
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/femul.v b/src/Specific/solinas32_2e198m17_8limbs/femul.v
new file mode 100644
index 000000000..f7f66c3d7
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.v b/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..2b19a709d
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesquare.v b/src/Specific/solinas32_2e198m17_8limbs/fesquare.v
new file mode 100644
index 000000000..5e59fa6a7
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..444464890
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesub.v b/src/Specific/solinas32_2e198m17_8limbs/fesub.v
new file mode 100644
index 000000000..658c5bc91
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..865a36ec5
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/freeze.v b/src/Specific/solinas32_2e198m17_8limbs/freeze.v
new file mode 100644
index 000000000..3cddf0fd6
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..69acf7b2e
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e198m17_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e198m17_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..c03da2be8
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**198 - 17' -Dmodulus_bytes='24.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e198m17/CurveParameters.v b/src/Specific/solinas32_2e198m17_9limbs/CurveParameters.v
index edf315311..edf315311 100644
--- a/src/Specific/solinas32_2e198m17/CurveParameters.v
+++ b/src/Specific/solinas32_2e198m17_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e198m17_9limbs/Synthesis.v b/src/Specific/solinas32_2e198m17_9limbs/Synthesis.v
new file mode 100644
index 000000000..ccaa0a50c
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e198m17/compiler.sh b/src/Specific/solinas32_2e198m17_9limbs/compiler.sh
index 0f6b4e3e8..0f6b4e3e8 100755
--- a/src/Specific/solinas32_2e198m17/compiler.sh
+++ b/src/Specific/solinas32_2e198m17_9limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e198m17/compilerxx.sh b/src/Specific/solinas32_2e198m17_9limbs/compilerxx.sh
index 7b1186596..7b1186596 100755
--- a/src/Specific/solinas32_2e198m17/compilerxx.sh
+++ b/src/Specific/solinas32_2e198m17_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e198m17_9limbs/feadd.v b/src/Specific/solinas32_2e198m17_9limbs/feadd.v
new file mode 100644
index 000000000..f2712a272
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e198m17_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..52b584310
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/femul.v b/src/Specific/solinas32_2e198m17_9limbs/femul.v
new file mode 100644
index 000000000..15fea2dd1
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/femulDisplay.v b/src/Specific/solinas32_2e198m17_9limbs/femulDisplay.v
new file mode 100644
index 000000000..095a12236
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/fesquare.v b/src/Specific/solinas32_2e198m17_9limbs/fesquare.v
new file mode 100644
index 000000000..4125f1ab5
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e198m17_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..403c4c74f
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/fesub.v b/src/Specific/solinas32_2e198m17_9limbs/fesub.v
new file mode 100644
index 000000000..d9db93bed
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e198m17_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..5d1a252a1
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/freeze.v b/src/Specific/solinas32_2e198m17_9limbs/freeze.v
new file mode 100644
index 000000000..c61727074
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e198m17_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e198m17_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..98bd3a044
--- /dev/null
+++ b/src/Specific/solinas32_2e198m17_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e198m17_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e198m17/py_interpreter.sh b/src/Specific/solinas32_2e198m17_9limbs/py_interpreter.sh
index 21efd4b00..21efd4b00 100755
--- a/src/Specific/solinas32_2e198m17/py_interpreter.sh
+++ b/src/Specific/solinas32_2e198m17_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/CurveParameters.v b/src/Specific/solinas32_2e205m45x2e198m1/CurveParameters.v
deleted file mode 100644
index 0d9676ba1..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^205 - 45*2^198 - 1
-Base: 20.5
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 20 + 1/2;
- bitwidth := 32;
- s := 2^205;
- c := [(1, 1); (45, 2^198)];
- carry_chains := Some [[8; 9]; [9; 0; 1; 2; 3; 4; 5; 6; 7; 8]; [9; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/Synthesis.v b/src/Specific/solinas32_2e205m45x2e198m1/Synthesis.v
deleted file mode 100644
index 95495afea..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/compiler.sh b/src/Specific/solinas32_2e205m45x2e198m1/compiler.sh
deleted file mode 100755
index 5bb02ee0f..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1' "$@"
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/compilerxx.sh b/src/Specific/solinas32_2e205m45x2e198m1/compilerxx.sh
deleted file mode 100755
index 9a277ffd6..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1' "$@"
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/feadd.c b/src/Specific/solinas32_2e205m45x2e198m1/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/feadd.v b/src/Specific/solinas32_2e205m45x2e198m1/feadd.v
deleted file mode 100644
index c7e5998e8..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.log b/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.v b/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.v
deleted file mode 100644
index 82b312bd8..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/femul.v b/src/Specific/solinas32_2e205m45x2e198m1/femul.v
deleted file mode 100644
index 88de6779a..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/femulDisplay.v b/src/Specific/solinas32_2e205m45x2e198m1/femulDisplay.v
deleted file mode 100644
index ba3060ad0..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesquare.v b/src/Specific/solinas32_2e205m45x2e198m1/fesquare.v
deleted file mode 100644
index 15a72f059..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesquareDisplay.v b/src/Specific/solinas32_2e205m45x2e198m1/fesquareDisplay.v
deleted file mode 100644
index 4a60c468a..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesub.c b/src/Specific/solinas32_2e205m45x2e198m1/fesub.c
deleted file mode 100644
index 4765a9a13..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0x3ffffe + x5) - x23);
- out[1] = ((0x1ffffe + x7) - x25);
- out[2] = ((0x3ffffe + x9) - x27);
- out[3] = ((0x1ffffe + x11) - x29);
- out[4] = ((0x3ffffe + x13) - x31);
- out[5] = ((0x1ffffe + x15) - x33);
- out[6] = ((0x3ffffe + x17) - x35);
- out[7] = ((0x1ffffe + x19) - x37);
- out[8] = ((0x3ffffe + x21) - x39);
- out[9] = ((0x14bffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesub.v b/src/Specific/solinas32_2e205m45x2e198m1/fesub.v
deleted file mode 100644
index 01127dd05..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.log b/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.log
deleted file mode 100644
index 44e21f164..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x14bffe + x20) - x38), ((0x3ffffe + x21) - x39), ((0x1ffffe + x19) - x37), ((0x3ffffe + x17) - x35), ((0x1ffffe + x15) - x33), ((0x3ffffe + x13) - x31), ((0x1ffffe + x11) - x29), ((0x3ffffe + x9) - x27), ((0x1ffffe + x7) - x25), ((0x3ffffe + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.v b/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.v
deleted file mode 100644
index b7ad69bdd..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/freeze.c b/src/Specific/solinas32_2e205m45x2e198m1/freeze.c
deleted file mode 100644
index e408b8d5b..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0xfffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1fffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0xfffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1fffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1fffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0xfffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x1fffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0xa5fff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x1fffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0xfffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x1fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0xfffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x1fffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0xfffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x1fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0xfffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x1fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0xa5fff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/freeze.v b/src/Specific/solinas32_2e205m45x2e198m1/freeze.v
deleted file mode 100644
index 91afcc946..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.log b/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.log
deleted file mode 100644
index cbcc0584c..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffff);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0xfffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1fffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0xfffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1fffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1fffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0xfffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x1fffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0xa5fff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x1fffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0xfffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x1fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0xfffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x1fffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0xfffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x1fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0xfffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x1fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0xa5fff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.v b/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.v
deleted file mode 100644
index 263fe2940..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e205m45x2e198m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e205m45x2e198m1/py_interpreter.sh b/src/Specific/solinas32_2e205m45x2e198m1/py_interpreter.sh
deleted file mode 100755
index 6f2513500..000000000
--- a/src/Specific/solinas32_2e205m45x2e198m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**205 - 45*2**198 - 1' -Dmodulus_bytes='20.5' -Da24='121665'
diff --git a/src/Specific/solinas32_2e206m5/CurveParameters.v b/src/Specific/solinas32_2e206m5/CurveParameters.v
deleted file mode 100644
index 11912b12b..000000000
--- a/src/Specific/solinas32_2e206m5/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^206 - 5
-Base: 17 + 1/6
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 12%nat;
- base := 17 + 1/6;
- bitwidth := 32;
- s := 2^206;
- c := [(1, 5)];
- carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e206m5/Synthesis.v b/src/Specific/solinas32_2e206m5/Synthesis.v
deleted file mode 100644
index 777314029..000000000
--- a/src/Specific/solinas32_2e206m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e206m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e206m5/compiler.sh b/src/Specific/solinas32_2e206m5/compiler.sh
deleted file mode 100755
index ec2239878..000000000
--- a/src/Specific/solinas32_2e206m5/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{18,17,17,17,17,17,18,17,17,17,17,17}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5/compilerxx.sh b/src/Specific/solinas32_2e206m5/compilerxx.sh
deleted file mode 100755
index daec377d4..000000000
--- a/src/Specific/solinas32_2e206m5/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{18,17,17,17,17,17,18,17,17,17,17,17}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5/feadd.c b/src/Specific/solinas32_2e206m5/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e206m5/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e206m5/feadd.v b/src/Specific/solinas32_2e206m5/feadd.v
deleted file mode 100644
index e0fb6161d..000000000
--- a/src/Specific/solinas32_2e206m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e206m5/feaddDisplay.log b/src/Specific/solinas32_2e206m5/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e206m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5/feaddDisplay.v b/src/Specific/solinas32_2e206m5/feaddDisplay.v
deleted file mode 100644
index 37de91a16..000000000
--- a/src/Specific/solinas32_2e206m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e206m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e206m5/femul.c b/src/Specific/solinas32_2e206m5/femul.c
deleted file mode 100644
index 131af4e31..000000000
--- a/src/Specific/solinas32_2e206m5/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x5 * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0x5 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x5 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x5 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0x5 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x5 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x5 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x5 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x5 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0x5 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint32_t x60 = (uint32_t) (x59 >> 0x12);
- { uint32_t x61 = ((uint32_t)x59 & 0x3ffff);
- { uint64_t x62 = (x60 + x58);
- { uint32_t x63 = (uint32_t) (x62 >> 0x11);
- { uint32_t x64 = ((uint32_t)x62 & 0x1ffff);
- { uint64_t x65 = (x63 + x57);
- { uint32_t x66 = (uint32_t) (x65 >> 0x11);
- { uint32_t x67 = ((uint32_t)x65 & 0x1ffff);
- { uint64_t x68 = (x66 + x56);
- { uint32_t x69 = (uint32_t) (x68 >> 0x11);
- { uint32_t x70 = ((uint32_t)x68 & 0x1ffff);
- { uint64_t x71 = (x69 + x55);
- { uint32_t x72 = (uint32_t) (x71 >> 0x11);
- { uint32_t x73 = ((uint32_t)x71 & 0x1ffff);
- { uint64_t x74 = (x72 + x54);
- { uint32_t x75 = (uint32_t) (x74 >> 0x11);
- { uint32_t x76 = ((uint32_t)x74 & 0x1ffff);
- { uint64_t x77 = (x75 + x53);
- { uint32_t x78 = (uint32_t) (x77 >> 0x12);
- { uint32_t x79 = ((uint32_t)x77 & 0x3ffff);
- { uint64_t x80 = (x78 + x52);
- { uint32_t x81 = (uint32_t) (x80 >> 0x11);
- { uint32_t x82 = ((uint32_t)x80 & 0x1ffff);
- { uint64_t x83 = (x81 + x51);
- { uint32_t x84 = (uint32_t) (x83 >> 0x11);
- { uint32_t x85 = ((uint32_t)x83 & 0x1ffff);
- { uint64_t x86 = (x84 + x50);
- { uint32_t x87 = (uint32_t) (x86 >> 0x11);
- { uint32_t x88 = ((uint32_t)x86 & 0x1ffff);
- { uint64_t x89 = (x87 + x49);
- { uint32_t x90 = (uint32_t) (x89 >> 0x11);
- { uint32_t x91 = ((uint32_t)x89 & 0x1ffff);
- { uint64_t x92 = (x90 + x48);
- { uint32_t x93 = (uint32_t) (x92 >> 0x11);
- { uint32_t x94 = ((uint32_t)x92 & 0x1ffff);
- { uint32_t x95 = (x61 + (0x5 * x93));
- { uint32_t x96 = (x95 >> 0x12);
- { uint32_t x97 = (x95 & 0x3ffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x11);
- { uint32_t x100 = (x98 & 0x1ffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e206m5/femul.v b/src/Specific/solinas32_2e206m5/femul.v
deleted file mode 100644
index e6e01d571..000000000
--- a/src/Specific/solinas32_2e206m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e206m5/femulDisplay.log b/src/Specific/solinas32_2e206m5/femulDisplay.log
deleted file mode 100644
index 4f813e0e4..000000000
--- a/src/Specific/solinas32_2e206m5/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x5 * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0x5 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x5 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x5 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x5 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0x5 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x5 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x5 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x5 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x5 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0x5 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint32_t x60 = (uint32_t) (x59 >> 0x12);
- uint32_t x61 = ((uint32_t)x59 & 0x3ffff);
- uint64_t x62 = (x60 + x58);
- uint32_t x63 = (uint32_t) (x62 >> 0x11);
- uint32_t x64 = ((uint32_t)x62 & 0x1ffff);
- uint64_t x65 = (x63 + x57);
- uint32_t x66 = (uint32_t) (x65 >> 0x11);
- uint32_t x67 = ((uint32_t)x65 & 0x1ffff);
- uint64_t x68 = (x66 + x56);
- uint32_t x69 = (uint32_t) (x68 >> 0x11);
- uint32_t x70 = ((uint32_t)x68 & 0x1ffff);
- uint64_t x71 = (x69 + x55);
- uint32_t x72 = (uint32_t) (x71 >> 0x11);
- uint32_t x73 = ((uint32_t)x71 & 0x1ffff);
- uint64_t x74 = (x72 + x54);
- uint32_t x75 = (uint32_t) (x74 >> 0x11);
- uint32_t x76 = ((uint32_t)x74 & 0x1ffff);
- uint64_t x77 = (x75 + x53);
- uint32_t x78 = (uint32_t) (x77 >> 0x12);
- uint32_t x79 = ((uint32_t)x77 & 0x3ffff);
- uint64_t x80 = (x78 + x52);
- uint32_t x81 = (uint32_t) (x80 >> 0x11);
- uint32_t x82 = ((uint32_t)x80 & 0x1ffff);
- uint64_t x83 = (x81 + x51);
- uint32_t x84 = (uint32_t) (x83 >> 0x11);
- uint32_t x85 = ((uint32_t)x83 & 0x1ffff);
- uint64_t x86 = (x84 + x50);
- uint32_t x87 = (uint32_t) (x86 >> 0x11);
- uint32_t x88 = ((uint32_t)x86 & 0x1ffff);
- uint64_t x89 = (x87 + x49);
- uint32_t x90 = (uint32_t) (x89 >> 0x11);
- uint32_t x91 = ((uint32_t)x89 & 0x1ffff);
- uint64_t x92 = (x90 + x48);
- uint32_t x93 = (uint32_t) (x92 >> 0x11);
- uint32_t x94 = ((uint32_t)x92 & 0x1ffff);
- uint32_t x95 = (x61 + (0x5 * x93));
- uint32_t x96 = (x95 >> 0x12);
- uint32_t x97 = (x95 & 0x3ffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x11);
- uint32_t x100 = (x98 & 0x1ffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5/femulDisplay.v b/src/Specific/solinas32_2e206m5/femulDisplay.v
deleted file mode 100644
index 6d1cf3375..000000000
--- a/src/Specific/solinas32_2e206m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e206m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e206m5/fesquare.c b/src/Specific/solinas32_2e206m5/fesquare.c
deleted file mode 100644
index d2fc4606a..000000000
--- a/src/Specific/solinas32_2e206m5/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x5 * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x5 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint32_t x35 = (uint32_t) (x34 >> 0x12);
- { uint32_t x36 = ((uint32_t)x34 & 0x3ffff);
- { uint64_t x37 = (x35 + x33);
- { uint32_t x38 = (uint32_t) (x37 >> 0x11);
- { uint32_t x39 = ((uint32_t)x37 & 0x1ffff);
- { uint64_t x40 = (x38 + x32);
- { uint32_t x41 = (uint32_t) (x40 >> 0x11);
- { uint32_t x42 = ((uint32_t)x40 & 0x1ffff);
- { uint64_t x43 = (x41 + x31);
- { uint32_t x44 = (uint32_t) (x43 >> 0x11);
- { uint32_t x45 = ((uint32_t)x43 & 0x1ffff);
- { uint64_t x46 = (x44 + x30);
- { uint32_t x47 = (uint32_t) (x46 >> 0x11);
- { uint32_t x48 = ((uint32_t)x46 & 0x1ffff);
- { uint64_t x49 = (x47 + x29);
- { uint32_t x50 = (uint32_t) (x49 >> 0x11);
- { uint32_t x51 = ((uint32_t)x49 & 0x1ffff);
- { uint64_t x52 = (x50 + x28);
- { uint32_t x53 = (uint32_t) (x52 >> 0x12);
- { uint32_t x54 = ((uint32_t)x52 & 0x3ffff);
- { uint64_t x55 = (x53 + x27);
- { uint32_t x56 = (uint32_t) (x55 >> 0x11);
- { uint32_t x57 = ((uint32_t)x55 & 0x1ffff);
- { uint64_t x58 = (x56 + x26);
- { uint32_t x59 = (uint32_t) (x58 >> 0x11);
- { uint32_t x60 = ((uint32_t)x58 & 0x1ffff);
- { uint64_t x61 = (x59 + x25);
- { uint32_t x62 = (uint32_t) (x61 >> 0x11);
- { uint32_t x63 = ((uint32_t)x61 & 0x1ffff);
- { uint64_t x64 = (x62 + x24);
- { uint32_t x65 = (uint32_t) (x64 >> 0x11);
- { uint32_t x66 = ((uint32_t)x64 & 0x1ffff);
- { uint64_t x67 = (x65 + x23);
- { uint32_t x68 = (uint32_t) (x67 >> 0x11);
- { uint32_t x69 = ((uint32_t)x67 & 0x1ffff);
- { uint32_t x70 = (x36 + (0x5 * x68));
- { uint32_t x71 = (x70 >> 0x12);
- { uint32_t x72 = (x70 & 0x3ffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x11);
- { uint32_t x75 = (x73 & 0x1ffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e206m5/fesquare.v b/src/Specific/solinas32_2e206m5/fesquare.v
deleted file mode 100644
index d6a440352..000000000
--- a/src/Specific/solinas32_2e206m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e206m5/fesquareDisplay.log b/src/Specific/solinas32_2e206m5/fesquareDisplay.log
deleted file mode 100644
index 4d83fc22d..000000000
--- a/src/Specific/solinas32_2e206m5/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x5 * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x5 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x5 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x5 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x5 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0x5 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint32_t x35 = (uint32_t) (x34 >> 0x12);
- uint32_t x36 = ((uint32_t)x34 & 0x3ffff);
- uint64_t x37 = (x35 + x33);
- uint32_t x38 = (uint32_t) (x37 >> 0x11);
- uint32_t x39 = ((uint32_t)x37 & 0x1ffff);
- uint64_t x40 = (x38 + x32);
- uint32_t x41 = (uint32_t) (x40 >> 0x11);
- uint32_t x42 = ((uint32_t)x40 & 0x1ffff);
- uint64_t x43 = (x41 + x31);
- uint32_t x44 = (uint32_t) (x43 >> 0x11);
- uint32_t x45 = ((uint32_t)x43 & 0x1ffff);
- uint64_t x46 = (x44 + x30);
- uint32_t x47 = (uint32_t) (x46 >> 0x11);
- uint32_t x48 = ((uint32_t)x46 & 0x1ffff);
- uint64_t x49 = (x47 + x29);
- uint32_t x50 = (uint32_t) (x49 >> 0x11);
- uint32_t x51 = ((uint32_t)x49 & 0x1ffff);
- uint64_t x52 = (x50 + x28);
- uint32_t x53 = (uint32_t) (x52 >> 0x12);
- uint32_t x54 = ((uint32_t)x52 & 0x3ffff);
- uint64_t x55 = (x53 + x27);
- uint32_t x56 = (uint32_t) (x55 >> 0x11);
- uint32_t x57 = ((uint32_t)x55 & 0x1ffff);
- uint64_t x58 = (x56 + x26);
- uint32_t x59 = (uint32_t) (x58 >> 0x11);
- uint32_t x60 = ((uint32_t)x58 & 0x1ffff);
- uint64_t x61 = (x59 + x25);
- uint32_t x62 = (uint32_t) (x61 >> 0x11);
- uint32_t x63 = ((uint32_t)x61 & 0x1ffff);
- uint64_t x64 = (x62 + x24);
- uint32_t x65 = (uint32_t) (x64 >> 0x11);
- uint32_t x66 = ((uint32_t)x64 & 0x1ffff);
- uint64_t x67 = (x65 + x23);
- uint32_t x68 = (uint32_t) (x67 >> 0x11);
- uint32_t x69 = ((uint32_t)x67 & 0x1ffff);
- uint32_t x70 = (x36 + (0x5 * x68));
- uint32_t x71 = (x70 >> 0x12);
- uint32_t x72 = (x70 & 0x3ffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x11);
- uint32_t x75 = (x73 & 0x1ffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5/fesquareDisplay.v b/src/Specific/solinas32_2e206m5/fesquareDisplay.v
deleted file mode 100644
index a08585dc4..000000000
--- a/src/Specific/solinas32_2e206m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e206m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e206m5/fesub.c b/src/Specific/solinas32_2e206m5/fesub.c
deleted file mode 100644
index ed3632859..000000000
--- a/src/Specific/solinas32_2e206m5/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x7fff6 + x5) - x27);
- out[1] = ((0x3fffe + x7) - x29);
- out[2] = ((0x3fffe + x9) - x31);
- out[3] = ((0x3fffe + x11) - x33);
- out[4] = ((0x3fffe + x13) - x35);
- out[5] = ((0x3fffe + x15) - x37);
- out[6] = ((0x7fffe + x17) - x39);
- out[7] = ((0x3fffe + x19) - x41);
- out[8] = ((0x3fffe + x21) - x43);
- out[9] = ((0x3fffe + x23) - x45);
- out[10] = ((0x3fffe + x25) - x47);
- out[11] = ((0x3fffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e206m5/fesub.v b/src/Specific/solinas32_2e206m5/fesub.v
deleted file mode 100644
index 53c8b8006..000000000
--- a/src/Specific/solinas32_2e206m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e206m5/fesubDisplay.log b/src/Specific/solinas32_2e206m5/fesubDisplay.log
deleted file mode 100644
index 78c95fd38..000000000
--- a/src/Specific/solinas32_2e206m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x3fffe + x24) - x46), ((0x3fffe + x25) - x47), ((0x3fffe + x23) - x45), ((0x3fffe + x21) - x43), ((0x3fffe + x19) - x41), ((0x7fffe + x17) - x39), ((0x3fffe + x15) - x37), ((0x3fffe + x13) - x35), ((0x3fffe + x11) - x33), ((0x3fffe + x9) - x31), ((0x3fffe + x7) - x29), ((0x7fff6 + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5/fesubDisplay.v b/src/Specific/solinas32_2e206m5/fesubDisplay.v
deleted file mode 100644
index 267ebeec5..000000000
--- a/src/Specific/solinas32_2e206m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e206m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e206m5/freeze.c b/src/Specific/solinas32_2e206m5/freeze.c
deleted file mode 100644
index 1a59cce08..000000000
--- a/src/Specific/solinas32_2e206m5/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffb);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1ffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1ffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x1ffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1ffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1ffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3ffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1ffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1ffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x1ffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1ffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1ffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3fffb);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1ffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1ffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x1ffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x1ffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x1ffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x3ffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x1ffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x1ffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x1ffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x1ffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x1ffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e206m5/freeze.v b/src/Specific/solinas32_2e206m5/freeze.v
deleted file mode 100644
index d093193db..000000000
--- a/src/Specific/solinas32_2e206m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e206m5/freezeDisplay.log b/src/Specific/solinas32_2e206m5/freezeDisplay.log
deleted file mode 100644
index 5a2a8d831..000000000
--- a/src/Specific/solinas32_2e206m5/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffb);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1ffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1ffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x1ffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1ffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1ffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3ffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1ffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1ffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x1ffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1ffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1ffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3fffb);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1ffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1ffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x1ffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x1ffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x1ffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x3ffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x1ffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x1ffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x1ffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x1ffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x1ffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 17 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e206m5/freezeDisplay.v b/src/Specific/solinas32_2e206m5/freezeDisplay.v
deleted file mode 100644
index 4ae9e9588..000000000
--- a/src/Specific/solinas32_2e206m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e206m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e206m5/py_interpreter.sh b/src/Specific/solinas32_2e206m5/py_interpreter.sh
deleted file mode 100755
index 57e901f93..000000000
--- a/src/Specific/solinas32_2e206m5/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**206 - 5' -Dmodulus_bytes='17 + 1/6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e206m5_8limbs/CurveParameters.v b/src/Specific/solinas32_2e206m5_8limbs/CurveParameters.v
new file mode 100644
index 000000000..ffb4e025d
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^206 - 5
+Base: 25.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 25 + 3/4;
+ bitwidth := 32;
+ s := 2^206;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/Synthesis.v b/src/Specific/solinas32_2e206m5_8limbs/Synthesis.v
new file mode 100644
index 000000000..e6c4f42de
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/compiler.sh b/src/Specific/solinas32_2e206m5_8limbs/compiler.sh
new file mode 100755
index 000000000..26d5f9542
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5_8limbs/compilerxx.sh b/src/Specific/solinas32_2e206m5_8limbs/compilerxx.sh
new file mode 100755
index 000000000..dca1157ba
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5_8limbs/feadd.v b/src/Specific/solinas32_2e206m5_8limbs/feadd.v
new file mode 100644
index 000000000..c16d5ff4c
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..29caa7929
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/femul.v b/src/Specific/solinas32_2e206m5_8limbs/femul.v
new file mode 100644
index 000000000..31f2f0750
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.v b/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.v
new file mode 100644
index 000000000..205110d4b
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesquare.v b/src/Specific/solinas32_2e206m5_8limbs/fesquare.v
new file mode 100644
index 000000000..22bf36d41
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..75c5cd16c
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesub.v b/src/Specific/solinas32_2e206m5_8limbs/fesub.v
new file mode 100644
index 000000000..d26b4f7ee
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..12bf2fb8f
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/freeze.v b/src/Specific/solinas32_2e206m5_8limbs/freeze.v
new file mode 100644
index 000000000..302bfef65
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..eba4ff820
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e206m5_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e206m5_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..a7f4db74a
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**206 - 5' -Dmodulus_bytes='25.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e206m5_9limbs/CurveParameters.v b/src/Specific/solinas32_2e206m5_9limbs/CurveParameters.v
new file mode 100644
index 000000000..23426fa78
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^206 - 5
+Base: 22 + 8/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 22 + 8/9;
+ bitwidth := 32;
+ s := 2^206;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/Synthesis.v b/src/Specific/solinas32_2e206m5_9limbs/Synthesis.v
new file mode 100644
index 000000000..9da8fd388
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/compiler.sh b/src/Specific/solinas32_2e206m5_9limbs/compiler.sh
new file mode 100755
index 000000000..16720a344
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5_9limbs/compilerxx.sh b/src/Specific/solinas32_2e206m5_9limbs/compilerxx.sh
new file mode 100755
index 000000000..69957e1cd
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas32_2e206m5_9limbs/feadd.v b/src/Specific/solinas32_2e206m5_9limbs/feadd.v
new file mode 100644
index 000000000..cab39f267
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..fd25cad8d
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/femul.v b/src/Specific/solinas32_2e206m5_9limbs/femul.v
new file mode 100644
index 000000000..a9b79f3d7
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.v b/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.v
new file mode 100644
index 000000000..fe111ff20
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesquare.v b/src/Specific/solinas32_2e206m5_9limbs/fesquare.v
new file mode 100644
index 000000000..98cd34d50
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..fd5d8c814
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesub.v b/src/Specific/solinas32_2e206m5_9limbs/fesub.v
new file mode 100644
index 000000000..a88c7e41c
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..2bdf9bd2b
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/freeze.v b/src/Specific/solinas32_2e206m5_9limbs/freeze.v
new file mode 100644
index 000000000..20eda67fc
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..52b7b0e75
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e206m5_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e206m5_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e206m5_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..e0a33f9d2
--- /dev/null
+++ b/src/Specific/solinas32_2e206m5_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**206 - 5' -Dmodulus_bytes='22 + 8/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e212m29/Synthesis.v b/src/Specific/solinas32_2e212m29/Synthesis.v
deleted file mode 100644
index 0eed33383..000000000
--- a/src/Specific/solinas32_2e212m29/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e212m29.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e212m29/feadd.c b/src/Specific/solinas32_2e212m29/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e212m29/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e212m29/feadd.v b/src/Specific/solinas32_2e212m29/feadd.v
deleted file mode 100644
index 31e21fc73..000000000
--- a/src/Specific/solinas32_2e212m29/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e212m29/feaddDisplay.log b/src/Specific/solinas32_2e212m29/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e212m29/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29/feaddDisplay.v b/src/Specific/solinas32_2e212m29/feaddDisplay.v
deleted file mode 100644
index e7983ffe4..000000000
--- a/src/Specific/solinas32_2e212m29/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e212m29.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e212m29/femul.c b/src/Specific/solinas32_2e212m29/femul.c
deleted file mode 100644
index bdce0055e..000000000
--- a/src/Specific/solinas32_2e212m29/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
- { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x1d * (0x2 * ((uint64_t)x16 * x30))));
- { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x1d * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- { uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x1d * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
- { uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x1d * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
- { ℤ x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
- { uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x1d * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- { ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x7 * x30)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + (0x2 * ((uint64_t)x16 * x21))))))))));
- { uint64_t x40 = (x39 >> 0x1b);
- { uint32_t x41 = (x39 & 0x7ffffff);
- { uint64_t x42 = (x40 + x38);
- { uint64_t x43 = (x42 >> 0x1a);
- { uint32_t x44 = ((uint32_t)x42 & 0x3ffffff);
- { ℤ x45 = (x43 +ℤ x37);
- { uint64_t x46 = (x45 >> 0x1b);
- { uint32_t x47 = (x45 & 0x7ffffff);
- { uint64_t x48 = (x46 + x36);
- { uint64_t x49 = (x48 >> 0x1a);
- { uint32_t x50 = ((uint32_t)x48 & 0x3ffffff);
- { uint64_t x51 = (x49 + x35);
- { uint64_t x52 = (x51 >> 0x1b);
- { uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
- { uint64_t x54 = (x52 + x34);
- { uint64_t x55 = (x54 >> 0x1a);
- { uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
- { uint64_t x57 = (x55 + x33);
- { uint64_t x58 = (x57 >> 0x1b);
- { uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
- { uint64_t x60 = (x58 + x32);
- { uint64_t x61 = (x60 >> 0x1a);
- { uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
- { uint64_t x63 = (x41 + (0x1d * x61));
- { uint32_t x64 = (uint32_t) (x63 >> 0x1b);
- { uint32_t x65 = ((uint32_t)x63 & 0x7ffffff);
- { uint32_t x66 = (x64 + x44);
- { uint32_t x67 = (x66 >> 0x1a);
- { uint32_t x68 = (x66 & 0x3ffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e212m29/femul.v b/src/Specific/solinas32_2e212m29/femul.v
deleted file mode 100644
index 71b98540f..000000000
--- a/src/Specific/solinas32_2e212m29/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e212m29/femulDisplay.log b/src/Specific/solinas32_2e212m29/femulDisplay.log
deleted file mode 100644
index 79e94597f..000000000
--- a/src/Specific/solinas32_2e212m29/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x32 = (((uint64_t)x5 * x30) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + (((uint64_t)x17 * x21) + ((uint64_t)x16 * x19))))))));
- uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x1d * (0x2 * ((uint64_t)x16 * x30))));
- uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x1d * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- uint64_t x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) + (0x1d * ((0x2 * ((uint64_t)x15 * x30)) + (((uint64_t)x17 * x31) + (0x2 * ((uint64_t)x16 * x29))))));
- uint64_t x36 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (0x1d * (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27))))));
- ℤ x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x11 * x30)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + (0x2 * ((uint64_t)x16 * x25))))))));
- uint64_t x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (0x1d * (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x7 * x30)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + (((uint64_t)x17 * x23) + (0x2 * ((uint64_t)x16 * x21))))))))));
- uint64_t x40 = (x39 >> 0x1b);
- uint32_t x41 = (x39 & 0x7ffffff);
- uint64_t x42 = (x40 + x38);
- uint64_t x43 = (x42 >> 0x1a);
- uint32_t x44 = ((uint32_t)x42 & 0x3ffffff);
- ℤ x45 = (x43 +ℤ x37);
- uint64_t x46 = (x45 >> 0x1b);
- uint32_t x47 = (x45 & 0x7ffffff);
- uint64_t x48 = (x46 + x36);
- uint64_t x49 = (x48 >> 0x1a);
- uint32_t x50 = ((uint32_t)x48 & 0x3ffffff);
- uint64_t x51 = (x49 + x35);
- uint64_t x52 = (x51 >> 0x1b);
- uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
- uint64_t x54 = (x52 + x34);
- uint64_t x55 = (x54 >> 0x1a);
- uint32_t x56 = ((uint32_t)x54 & 0x3ffffff);
- uint64_t x57 = (x55 + x33);
- uint64_t x58 = (x57 >> 0x1b);
- uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
- uint64_t x60 = (x58 + x32);
- uint64_t x61 = (x60 >> 0x1a);
- uint32_t x62 = ((uint32_t)x60 & 0x3ffffff);
- uint64_t x63 = (x41 + (0x1d * x61));
- uint32_t x64 = (uint32_t) (x63 >> 0x1b);
- uint32_t x65 = ((uint32_t)x63 & 0x7ffffff);
- uint32_t x66 = (x64 + x44);
- uint32_t x67 = (x66 >> 0x1a);
- uint32_t x68 = (x66 & 0x3ffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29/femulDisplay.v b/src/Specific/solinas32_2e212m29/femulDisplay.v
deleted file mode 100644
index 86214acad..000000000
--- a/src/Specific/solinas32_2e212m29/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e212m29.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e212m29/fesquare.c b/src/Specific/solinas32_2e212m29/fesquare.c
deleted file mode 100644
index 0ee4a8a9e..000000000
--- a/src/Specific/solinas32_2e212m29/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
- { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x1d * (0x2 * ((uint64_t)x13 * x13))));
- { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1d * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- { uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x1d * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
- { uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1d * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
- { ℤ x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
- { uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1d * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- { ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x4 * x13)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (0x2 * ((uint64_t)x13 * x4))))))))));
- { uint64_t x23 = (x22 >> 0x1b);
- { uint32_t x24 = (x22 & 0x7ffffff);
- { uint64_t x25 = (x23 + x21);
- { uint64_t x26 = (x25 >> 0x1a);
- { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- { ℤ x28 = (x26 +ℤ x20);
- { uint64_t x29 = (x28 >> 0x1b);
- { uint32_t x30 = (x28 & 0x7ffffff);
- { uint64_t x31 = (x29 + x19);
- { uint64_t x32 = (x31 >> 0x1a);
- { uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- { uint64_t x34 = (x32 + x18);
- { uint64_t x35 = (x34 >> 0x1b);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- { uint64_t x37 = (x35 + x17);
- { uint64_t x38 = (x37 >> 0x1a);
- { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- { uint64_t x40 = (x38 + x16);
- { uint64_t x41 = (x40 >> 0x1b);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- { uint64_t x43 = (x41 + x15);
- { uint64_t x44 = (x43 >> 0x1a);
- { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- { uint64_t x46 = (x24 + (0x1d * x44));
- { uint32_t x47 = (uint32_t) (x46 >> 0x1b);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- { uint32_t x49 = (x47 + x27);
- { uint32_t x50 = (x49 >> 0x1a);
- { uint32_t x51 = (x49 & 0x3ffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e212m29/fesquare.v b/src/Specific/solinas32_2e212m29/fesquare.v
deleted file mode 100644
index 77d8a1267..000000000
--- a/src/Specific/solinas32_2e212m29/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e212m29/fesquareDisplay.log b/src/Specific/solinas32_2e212m29/fesquareDisplay.log
deleted file mode 100644
index 8acca1388..000000000
--- a/src/Specific/solinas32_2e212m29/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (((uint64_t)x2 * x13) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x13 * x2))))))));
- uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x1d * (0x2 * ((uint64_t)x13 * x13))));
- uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1d * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- uint64_t x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x1d * ((0x2 * ((uint64_t)x12 * x13)) + (((uint64_t)x14 * x14) + (0x2 * ((uint64_t)x13 * x12))))));
- uint64_t x19 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1d * (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10))))));
- ℤ x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x8 * x13)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (0x2 * ((uint64_t)x13 * x8))))))));
- uint64_t x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1d * (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x1d *ℤ ((0x2 * ((uint64_t)x4 * x13)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (0x2 * ((uint64_t)x13 * x4))))))))));
- uint64_t x23 = (x22 >> 0x1b);
- uint32_t x24 = (x22 & 0x7ffffff);
- uint64_t x25 = (x23 + x21);
- uint64_t x26 = (x25 >> 0x1a);
- uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
- ℤ x28 = (x26 +ℤ x20);
- uint64_t x29 = (x28 >> 0x1b);
- uint32_t x30 = (x28 & 0x7ffffff);
- uint64_t x31 = (x29 + x19);
- uint64_t x32 = (x31 >> 0x1a);
- uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- uint64_t x34 = (x32 + x18);
- uint64_t x35 = (x34 >> 0x1b);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- uint64_t x37 = (x35 + x17);
- uint64_t x38 = (x37 >> 0x1a);
- uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- uint64_t x40 = (x38 + x16);
- uint64_t x41 = (x40 >> 0x1b);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- uint64_t x43 = (x41 + x15);
- uint64_t x44 = (x43 >> 0x1a);
- uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- uint64_t x46 = (x24 + (0x1d * x44));
- uint32_t x47 = (uint32_t) (x46 >> 0x1b);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- uint32_t x49 = (x47 + x27);
- uint32_t x50 = (x49 >> 0x1a);
- uint32_t x51 = (x49 & 0x3ffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29/fesquareDisplay.v b/src/Specific/solinas32_2e212m29/fesquareDisplay.v
deleted file mode 100644
index 114dab6ca..000000000
--- a/src/Specific/solinas32_2e212m29/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e212m29.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e212m29/fesub.c b/src/Specific/solinas32_2e212m29/fesub.c
deleted file mode 100644
index fe6806c49..000000000
--- a/src/Specific/solinas32_2e212m29/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0xfffffc6 + x5) - x19);
- out[1] = ((0x7fffffe + x7) - x21);
- out[2] = ((0xffffffe + x9) - x23);
- out[3] = ((0x7fffffe + x11) - x25);
- out[4] = ((0xffffffe + x13) - x27);
- out[5] = ((0x7fffffe + x15) - x29);
- out[6] = ((0xffffffe + x17) - x31);
- out[7] = ((0x7fffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e212m29/fesub.v b/src/Specific/solinas32_2e212m29/fesub.v
deleted file mode 100644
index 769e9c41a..000000000
--- a/src/Specific/solinas32_2e212m29/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e212m29/fesubDisplay.log b/src/Specific/solinas32_2e212m29/fesubDisplay.log
deleted file mode 100644
index 06372c648..000000000
--- a/src/Specific/solinas32_2e212m29/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x7fffffe + x16) - x30), ((0xffffffe + x17) - x31), ((0x7fffffe + x15) - x29), ((0xffffffe + x13) - x27), ((0x7fffffe + x11) - x25), ((0xffffffe + x9) - x23), ((0x7fffffe + x7) - x21), ((0xfffffc6 + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29/fesubDisplay.v b/src/Specific/solinas32_2e212m29/fesubDisplay.v
deleted file mode 100644
index 09db7f40c..000000000
--- a/src/Specific/solinas32_2e212m29/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e212m29.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e212m29/freeze.c b/src/Specific/solinas32_2e212m29/freeze.c
deleted file mode 100644
index 6c723743b..000000000
--- a/src/Specific/solinas32_2e212m29/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe3);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0x7ffffe3);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0x3ffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0x7ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0x3ffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0x7ffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0x3ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0x7ffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0x3ffffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e212m29/freeze.v b/src/Specific/solinas32_2e212m29/freeze.v
deleted file mode 100644
index 4b39409ef..000000000
--- a/src/Specific/solinas32_2e212m29/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e212m29/freezeDisplay.log b/src/Specific/solinas32_2e212m29/freezeDisplay.log
deleted file mode 100644
index a8e542125..000000000
--- a/src/Specific/solinas32_2e212m29/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe3);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0x7ffffe3);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0x3ffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0x7ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0x3ffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0x7ffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0x3ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0x7ffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0x3ffffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e212m29/freezeDisplay.v b/src/Specific/solinas32_2e212m29/freezeDisplay.v
deleted file mode 100644
index a43e8c1be..000000000
--- a/src/Specific/solinas32_2e212m29/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e212m29.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e212m29/CurveParameters.v b/src/Specific/solinas32_2e212m29_8limbs/CurveParameters.v
index 608767c8b..608767c8b 100644
--- a/src/Specific/solinas32_2e212m29/CurveParameters.v
+++ b/src/Specific/solinas32_2e212m29_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e212m29_8limbs/Synthesis.v b/src/Specific/solinas32_2e212m29_8limbs/Synthesis.v
new file mode 100644
index 000000000..e8bc77753
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e212m29/compiler.sh b/src/Specific/solinas32_2e212m29_8limbs/compiler.sh
index 75ed85d05..75ed85d05 100755
--- a/src/Specific/solinas32_2e212m29/compiler.sh
+++ b/src/Specific/solinas32_2e212m29_8limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e212m29/compilerxx.sh b/src/Specific/solinas32_2e212m29_8limbs/compilerxx.sh
index b3000ec86..b3000ec86 100755
--- a/src/Specific/solinas32_2e212m29/compilerxx.sh
+++ b/src/Specific/solinas32_2e212m29_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e212m29_8limbs/feadd.v b/src/Specific/solinas32_2e212m29_8limbs/feadd.v
new file mode 100644
index 000000000..70665dd31
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e212m29_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..522bba3e0
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/femul.v b/src/Specific/solinas32_2e212m29_8limbs/femul.v
new file mode 100644
index 000000000..a68939af1
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/femulDisplay.v b/src/Specific/solinas32_2e212m29_8limbs/femulDisplay.v
new file mode 100644
index 000000000..e037a0935
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/fesquare.v b/src/Specific/solinas32_2e212m29_8limbs/fesquare.v
new file mode 100644
index 000000000..982aec57c
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e212m29_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d31e2a10d
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/fesub.v b/src/Specific/solinas32_2e212m29_8limbs/fesub.v
new file mode 100644
index 000000000..551b9cdaf
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e212m29_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..fca1bf265
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/freeze.v b/src/Specific/solinas32_2e212m29_8limbs/freeze.v
new file mode 100644
index 000000000..0c35146ed
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e212m29_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e212m29_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..d284af4b2
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e212m29/py_interpreter.sh b/src/Specific/solinas32_2e212m29_8limbs/py_interpreter.sh
index d9173c05f..d9173c05f 100755
--- a/src/Specific/solinas32_2e212m29/py_interpreter.sh
+++ b/src/Specific/solinas32_2e212m29_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e212m29_9limbs/CurveParameters.v b/src/Specific/solinas32_2e212m29_9limbs/CurveParameters.v
new file mode 100644
index 000000000..d28740e42
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^212 - 29
+Base: 23 + 5/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 23 + 5/9;
+ bitwidth := 32;
+ s := 2^212;
+ c := [(1, 29)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/Synthesis.v b/src/Specific/solinas32_2e212m29_9limbs/Synthesis.v
new file mode 100644
index 000000000..6068e518e
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/compiler.sh b/src/Specific/solinas32_2e212m29_9limbs/compiler.sh
new file mode 100755
index 000000000..4b1963525
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<212) - 29' "$@"
diff --git a/src/Specific/solinas32_2e212m29_9limbs/compilerxx.sh b/src/Specific/solinas32_2e212m29_9limbs/compilerxx.sh
new file mode 100755
index 000000000..c4c24ee84
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<212) - 29' "$@"
diff --git a/src/Specific/solinas32_2e212m29_9limbs/feadd.v b/src/Specific/solinas32_2e212m29_9limbs/feadd.v
new file mode 100644
index 000000000..744793ca0
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..bf21b94ba
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/femul.v b/src/Specific/solinas32_2e212m29_9limbs/femul.v
new file mode 100644
index 000000000..bfa069204
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.v b/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.v
new file mode 100644
index 000000000..08f524c0d
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesquare.v b/src/Specific/solinas32_2e212m29_9limbs/fesquare.v
new file mode 100644
index 000000000..bb0afddcc
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ba9fca67d
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesub.v b/src/Specific/solinas32_2e212m29_9limbs/fesub.v
new file mode 100644
index 000000000..30de65bff
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..c715cd0d8
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/freeze.v b/src/Specific/solinas32_2e212m29_9limbs/freeze.v
new file mode 100644
index 000000000..db6b61d2a
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..81617bc41
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e212m29_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e212m29_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e212m29_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..d070ee491
--- /dev/null
+++ b/src/Specific/solinas32_2e212m29_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**212 - 29' -Dmodulus_bytes='23 + 5/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e213m3/CurveParameters.v b/src/Specific/solinas32_2e213m3/CurveParameters.v
deleted file mode 100644
index fb3ffa3b2..000000000
--- a/src/Specific/solinas32_2e213m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^213 - 3
-Base: 14.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 15%nat;
- base := 14 + 1/5;
- bitwidth := 32;
- s := 2^213;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e213m3/Synthesis.v b/src/Specific/solinas32_2e213m3/Synthesis.v
deleted file mode 100644
index 549f7c2f6..000000000
--- a/src/Specific/solinas32_2e213m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e213m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e213m3/compiler.sh b/src/Specific/solinas32_2e213m3/compiler.sh
deleted file mode 100755
index 3e6059ea2..000000000
--- a/src/Specific/solinas32_2e213m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{15,14,14,14,14,15,14,14,14,14,15,14,14,14,14}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3/compilerxx.sh b/src/Specific/solinas32_2e213m3/compilerxx.sh
deleted file mode 100755
index cc76a18f4..000000000
--- a/src/Specific/solinas32_2e213m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{15,14,14,14,14,15,14,14,14,14,15,14,14,14,14}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3/feadd.c b/src/Specific/solinas32_2e213m3/feadd.c
deleted file mode 100644
index 72a59425b..000000000
--- a/src/Specific/solinas32_2e213m3/feadd.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = (x5 + x33);
- out[1] = (x7 + x35);
- out[2] = (x9 + x37);
- out[3] = (x11 + x39);
- out[4] = (x13 + x41);
- out[5] = (x15 + x43);
- out[6] = (x17 + x45);
- out[7] = (x19 + x47);
- out[8] = (x21 + x49);
- out[9] = (x23 + x51);
- out[10] = (x25 + x53);
- out[11] = (x27 + x55);
- out[12] = (x29 + x57);
- out[13] = (x31 + x59);
- out[14] = (x30 + x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e213m3/feadd.v b/src/Specific/solinas32_2e213m3/feadd.v
deleted file mode 100644
index c7e482a38..000000000
--- a/src/Specific/solinas32_2e213m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e213m3/feaddDisplay.log b/src/Specific/solinas32_2e213m3/feaddDisplay.log
deleted file mode 100644
index 08d611628..000000000
--- a/src/Specific/solinas32_2e213m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- ((x30 + x58), (x31 + x59), (x29 + x57), (x27 + x55), (x25 + x53), (x23 + x51), (x21 + x49), (x19 + x47), (x17 + x45), (x15 + x43), (x13 + x41), (x11 + x39), (x9 + x37), (x7 + x35), (x5 + x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3/feaddDisplay.v b/src/Specific/solinas32_2e213m3/feaddDisplay.v
deleted file mode 100644
index 9defcfc6b..000000000
--- a/src/Specific/solinas32_2e213m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e213m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e213m3/femul.c b/src/Specific/solinas32_2e213m3/femul.c
deleted file mode 100644
index 897023ace..000000000
--- a/src/Specific/solinas32_2e213m3/femul.c
+++ /dev/null
@@ -1,113 +0,0 @@
-static void femul(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)0x2 * (x7 * x59)) + (((uint64_t)0x2 * (x9 * x57)) + (((uint64_t)0x2 * (x11 * x55)) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)0x2 * (x17 * x49)) + (((uint64_t)0x2 * (x19 * x47)) + (((uint64_t)0x2 * (x21 * x45)) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)0x2 * (x27 * x39)) + (((uint64_t)0x2 * (x29 * x37)) + (((uint64_t)0x2 * (x31 * x35)) + ((uint64_t)x30 * x33)))))))))))))));
- { uint64_t x61 = ((((uint64_t)x5 * x59) + (((uint64_t)0x2 * (x7 * x57)) + (((uint64_t)0x2 * (x9 * x55)) + (((uint64_t)x11 * x53) + ((x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)0x2 * (x17 * x47)) + (((uint64_t)0x2 * (x19 * x45)) + (((uint64_t)x21 * x43) + ((x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)0x2 * (x27 * x37)) + (((uint64_t)0x2 * (x29 * x35)) + ((uint64_t)x31 * x33)))))))))))))) + ((uint64_t)0x3 * (x30 * x58)));
- { uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)0x2 * (x7 * x55)) + (((uint64_t)x9 * x53) + ((x11 * x51) + ((x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)0x2 * (x17 * x45)) + (((uint64_t)x19 * x43) + ((x21 * x41) + ((x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)0x2 * (x27 * x35)) + ((uint64_t)x29 * x33))))))))))))) + (0x3 * ((uint64_t)(x31 * x58) + (x30 * x59))));
- { uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + ((x9 * x51) + ((x11 * x49) + ((x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((x19 * x41) + ((x21 * x39) + ((x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x3 * ((x29 * x58) + ((uint64_t)(x31 * x59) + (x30 * x57)))));
- { uint64_t x64 = ((((uint64_t)x5 * x53) + (((uint64_t)0x2 * (x7 * x51)) + (((uint64_t)0x2 * (x9 * x49)) + (((uint64_t)0x2 * (x11 * x47)) + (((uint64_t)0x2 * (x13 * x45)) + (((uint64_t)x15 * x43) + (((uint64_t)0x2 * (x17 * x41)) + (((uint64_t)0x2 * (x19 * x39)) + (((uint64_t)0x2 * (x21 * x37)) + (((uint64_t)0x2 * (x23 * x35)) + ((uint64_t)x25 * x33))))))))))) + (0x3 * (((uint64_t)0x2 * (x27 * x58)) + (((uint64_t)0x2 * (x29 * x59)) + (((uint64_t)0x2 * (x31 * x57)) + ((uint64_t)0x2 * (x30 * x55)))))));
- { uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)0x2 * (x7 * x49)) + (((uint64_t)0x2 * (x9 * x47)) + (((uint64_t)0x2 * (x11 * x45)) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)0x2 * (x17 * x39)) + (((uint64_t)0x2 * (x19 * x37)) + (((uint64_t)0x2 * (x21 * x35)) + ((uint64_t)x23 * x33)))))))))) + (0x3 * (((uint64_t)x25 * x58) + (((uint64_t)0x2 * (x27 * x59)) + (((uint64_t)0x2 * (x29 * x57)) + (((uint64_t)0x2 * (x31 * x55)) + ((uint64_t)x30 * x53)))))));
- { uint64_t x66 = ((((uint64_t)x5 * x49) + (((uint64_t)0x2 * (x7 * x47)) + (((uint64_t)0x2 * (x9 * x45)) + (((uint64_t)x11 * x43) + ((x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)0x2 * (x17 * x37)) + (((uint64_t)0x2 * (x19 * x35)) + ((uint64_t)x21 * x33))))))))) + (0x3 * ((x23 * x58) + (((uint64_t)x25 * x59) + (((uint64_t)0x2 * (x27 * x57)) + (((uint64_t)0x2 * (x29 * x55)) + (((uint64_t)x31 * x53) + (x30 * x51))))))));
- { uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)0x2 * (x7 * x45)) + (((uint64_t)x9 * x43) + ((x11 * x41) + ((x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)0x2 * (x17 * x35)) + ((uint64_t)x19 * x33)))))))) + (0x3 * ((x21 * x58) + ((x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)0x2 * (x27 * x55)) + (((uint64_t)x29 * x53) + ((uint64_t)(x31 * x51) + (x30 * x49)))))))));
- { uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((x9 * x41) + ((x11 * x39) + ((x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x3 * ((x19 * x58) + ((x21 * x59) + ((x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((x29 * x51) + ((uint64_t)(x31 * x49) + (x30 * x47))))))))));
- { uint64_t x69 = ((((uint64_t)x5 * x43) + (((uint64_t)0x2 * (x7 * x41)) + (((uint64_t)0x2 * (x9 * x39)) + (((uint64_t)0x2 * (x11 * x37)) + (((uint64_t)0x2 * (x13 * x35)) + ((uint64_t)x15 * x33)))))) + (0x3 * (((uint64_t)0x2 * (x17 * x58)) + (((uint64_t)0x2 * (x19 * x59)) + (((uint64_t)0x2 * (x21 * x57)) + (((uint64_t)0x2 * (x23 * x55)) + (((uint64_t)x25 * x53) + (((uint64_t)0x2 * (x27 * x51)) + (((uint64_t)0x2 * (x29 * x49)) + (((uint64_t)0x2 * (x31 * x47)) + ((uint64_t)0x2 * (x30 * x45))))))))))));
- { uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)0x2 * (x7 * x39)) + (((uint64_t)0x2 * (x9 * x37)) + (((uint64_t)0x2 * (x11 * x35)) + ((uint64_t)x13 * x33))))) + (0x3 * (((uint64_t)x15 * x58) + (((uint64_t)0x2 * (x17 * x59)) + (((uint64_t)0x2 * (x19 * x57)) + (((uint64_t)0x2 * (x21 * x55)) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)0x2 * (x27 * x49)) + (((uint64_t)0x2 * (x29 * x47)) + (((uint64_t)0x2 * (x31 * x45)) + ((uint64_t)x30 * x43))))))))))));
- { uint64_t x71 = ((((uint64_t)x5 * x39) + (((uint64_t)0x2 * (x7 * x37)) + (((uint64_t)0x2 * (x9 * x35)) + ((uint64_t)x11 * x33)))) + (0x3 * ((x13 * x58) + (((uint64_t)x15 * x59) + (((uint64_t)0x2 * (x17 * x57)) + (((uint64_t)0x2 * (x19 * x55)) + (((uint64_t)x21 * x53) + ((x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)0x2 * (x27 * x47)) + (((uint64_t)0x2 * (x29 * x45)) + (((uint64_t)x31 * x43) + (x30 * x41)))))))))))));
- { uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)0x2 * (x7 * x35)) + ((uint64_t)x9 * x33))) + (0x3 * ((x11 * x58) + ((x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)0x2 * (x17 * x55)) + (((uint64_t)x19 * x53) + ((x21 * x51) + ((x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)0x2 * (x27 * x45)) + (((uint64_t)x29 * x43) + ((uint64_t)(x31 * x41) + (x30 * x39))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x3 * ((x9 * x58) + ((x11 * x59) + ((x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((x19 * x51) + ((x21 * x49) + ((x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((x29 * x41) + ((uint64_t)(x31 * x39) + (x30 * x37)))))))))))))));
- { uint64_t x74 = (((uint64_t)x5 * x33) + (0x3 * (((uint64_t)0x2 * (x7 * x58)) + (((uint64_t)0x2 * (x9 * x59)) + (((uint64_t)0x2 * (x11 * x57)) + (((uint64_t)0x2 * (x13 * x55)) + (((uint64_t)x15 * x53) + (((uint64_t)0x2 * (x17 * x51)) + (((uint64_t)0x2 * (x19 * x49)) + (((uint64_t)0x2 * (x21 * x47)) + (((uint64_t)0x2 * (x23 * x45)) + (((uint64_t)x25 * x43) + (((uint64_t)0x2 * (x27 * x41)) + (((uint64_t)0x2 * (x29 * x39)) + (((uint64_t)0x2 * (x31 * x37)) + ((uint64_t)0x2 * (x30 * x35)))))))))))))))));
- { uint32_t x75 = (uint32_t) (x74 >> 0xf);
- { uint32_t x76 = ((uint32_t)x74 & 0x7fff);
- { uint64_t x77 = (x75 + x73);
- { uint32_t x78 = (uint32_t) (x77 >> 0xe);
- { uint32_t x79 = ((uint32_t)x77 & 0x3fff);
- { uint64_t x80 = (x78 + x72);
- { uint32_t x81 = (uint32_t) (x80 >> 0xe);
- { uint32_t x82 = ((uint32_t)x80 & 0x3fff);
- { uint64_t x83 = (x81 + x71);
- { uint32_t x84 = (uint32_t) (x83 >> 0xe);
- { uint32_t x85 = ((uint32_t)x83 & 0x3fff);
- { uint64_t x86 = (x84 + x70);
- { uint32_t x87 = (uint32_t) (x86 >> 0xe);
- { uint32_t x88 = ((uint32_t)x86 & 0x3fff);
- { uint64_t x89 = (x87 + x69);
- { uint32_t x90 = (uint32_t) (x89 >> 0xf);
- { uint32_t x91 = ((uint32_t)x89 & 0x7fff);
- { uint64_t x92 = (x90 + x68);
- { uint32_t x93 = (uint32_t) (x92 >> 0xe);
- { uint32_t x94 = ((uint32_t)x92 & 0x3fff);
- { uint64_t x95 = (x93 + x67);
- { uint32_t x96 = (uint32_t) (x95 >> 0xe);
- { uint32_t x97 = ((uint32_t)x95 & 0x3fff);
- { uint64_t x98 = (x96 + x66);
- { uint32_t x99 = (uint32_t) (x98 >> 0xe);
- { uint32_t x100 = ((uint32_t)x98 & 0x3fff);
- { uint64_t x101 = (x99 + x65);
- { uint32_t x102 = (uint32_t) (x101 >> 0xe);
- { uint32_t x103 = ((uint32_t)x101 & 0x3fff);
- { uint64_t x104 = (x102 + x64);
- { uint32_t x105 = (uint32_t) (x104 >> 0xf);
- { uint32_t x106 = ((uint32_t)x104 & 0x7fff);
- { uint64_t x107 = (x105 + x63);
- { uint32_t x108 = (uint32_t) (x107 >> 0xe);
- { uint32_t x109 = ((uint32_t)x107 & 0x3fff);
- { uint64_t x110 = (x108 + x62);
- { uint32_t x111 = (uint32_t) (x110 >> 0xe);
- { uint32_t x112 = ((uint32_t)x110 & 0x3fff);
- { uint64_t x113 = (x111 + x61);
- { uint32_t x114 = (uint32_t) (x113 >> 0xe);
- { uint32_t x115 = ((uint32_t)x113 & 0x3fff);
- { uint64_t x116 = (x114 + x60);
- { uint32_t x117 = (uint32_t) (x116 >> 0xe);
- { uint32_t x118 = ((uint32_t)x116 & 0x3fff);
- { uint32_t x119 = (x76 + (0x3 * x117));
- { uint32_t x120 = (x119 >> 0xf);
- { uint32_t x121 = (x119 & 0x7fff);
- { uint32_t x122 = (x120 + x79);
- { uint32_t x123 = (x122 >> 0xe);
- { uint32_t x124 = (x122 & 0x3fff);
- out[0] = x121;
- out[1] = x124;
- out[2] = (x123 + x82);
- out[3] = x85;
- out[4] = x88;
- out[5] = x91;
- out[6] = x94;
- out[7] = x97;
- out[8] = x100;
- out[9] = x103;
- out[10] = x106;
- out[11] = x109;
- out[12] = x112;
- out[13] = x115;
- out[14] = x118;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e213m3/femul.v b/src/Specific/solinas32_2e213m3/femul.v
deleted file mode 100644
index 5c1ec5789..000000000
--- a/src/Specific/solinas32_2e213m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e213m3/femulDisplay.log b/src/Specific/solinas32_2e213m3/femulDisplay.log
deleted file mode 100644
index 97fcc212f..000000000
--- a/src/Specific/solinas32_2e213m3/femulDisplay.log
+++ /dev/null
@@ -1,72 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)0x2 * (x7 * x59)) + (((uint64_t)0x2 * (x9 * x57)) + (((uint64_t)0x2 * (x11 * x55)) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)0x2 * (x17 * x49)) + (((uint64_t)0x2 * (x19 * x47)) + (((uint64_t)0x2 * (x21 * x45)) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)0x2 * (x27 * x39)) + (((uint64_t)0x2 * (x29 * x37)) + (((uint64_t)0x2 * (x31 * x35)) + ((uint64_t)x30 * x33)))))))))))))));
- uint64_t x61 = ((((uint64_t)x5 * x59) + (((uint64_t)0x2 * (x7 * x57)) + (((uint64_t)0x2 * (x9 * x55)) + (((uint64_t)x11 * x53) + ((x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)0x2 * (x17 * x47)) + (((uint64_t)0x2 * (x19 * x45)) + (((uint64_t)x21 * x43) + ((x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)0x2 * (x27 * x37)) + (((uint64_t)0x2 * (x29 * x35)) + ((uint64_t)x31 * x33)))))))))))))) + ((uint64_t)0x3 * (x30 * x58)));
- uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)0x2 * (x7 * x55)) + (((uint64_t)x9 * x53) + ((x11 * x51) + ((x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)0x2 * (x17 * x45)) + (((uint64_t)x19 * x43) + ((x21 * x41) + ((x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)0x2 * (x27 * x35)) + ((uint64_t)x29 * x33))))))))))))) + (0x3 * ((uint64_t)(x31 * x58) + (x30 * x59))));
- uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + ((x9 * x51) + ((x11 * x49) + ((x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((x19 * x41) + ((x21 * x39) + ((x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x3 * ((x29 * x58) + ((uint64_t)(x31 * x59) + (x30 * x57)))));
- uint64_t x64 = ((((uint64_t)x5 * x53) + (((uint64_t)0x2 * (x7 * x51)) + (((uint64_t)0x2 * (x9 * x49)) + (((uint64_t)0x2 * (x11 * x47)) + (((uint64_t)0x2 * (x13 * x45)) + (((uint64_t)x15 * x43) + (((uint64_t)0x2 * (x17 * x41)) + (((uint64_t)0x2 * (x19 * x39)) + (((uint64_t)0x2 * (x21 * x37)) + (((uint64_t)0x2 * (x23 * x35)) + ((uint64_t)x25 * x33))))))))))) + (0x3 * (((uint64_t)0x2 * (x27 * x58)) + (((uint64_t)0x2 * (x29 * x59)) + (((uint64_t)0x2 * (x31 * x57)) + ((uint64_t)0x2 * (x30 * x55)))))));
- uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)0x2 * (x7 * x49)) + (((uint64_t)0x2 * (x9 * x47)) + (((uint64_t)0x2 * (x11 * x45)) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)0x2 * (x17 * x39)) + (((uint64_t)0x2 * (x19 * x37)) + (((uint64_t)0x2 * (x21 * x35)) + ((uint64_t)x23 * x33)))))))))) + (0x3 * (((uint64_t)x25 * x58) + (((uint64_t)0x2 * (x27 * x59)) + (((uint64_t)0x2 * (x29 * x57)) + (((uint64_t)0x2 * (x31 * x55)) + ((uint64_t)x30 * x53)))))));
- uint64_t x66 = ((((uint64_t)x5 * x49) + (((uint64_t)0x2 * (x7 * x47)) + (((uint64_t)0x2 * (x9 * x45)) + (((uint64_t)x11 * x43) + ((x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)0x2 * (x17 * x37)) + (((uint64_t)0x2 * (x19 * x35)) + ((uint64_t)x21 * x33))))))))) + (0x3 * ((x23 * x58) + (((uint64_t)x25 * x59) + (((uint64_t)0x2 * (x27 * x57)) + (((uint64_t)0x2 * (x29 * x55)) + (((uint64_t)x31 * x53) + (x30 * x51))))))));
- uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)0x2 * (x7 * x45)) + (((uint64_t)x9 * x43) + ((x11 * x41) + ((x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)0x2 * (x17 * x35)) + ((uint64_t)x19 * x33)))))))) + (0x3 * ((x21 * x58) + ((x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)0x2 * (x27 * x55)) + (((uint64_t)x29 * x53) + ((uint64_t)(x31 * x51) + (x30 * x49)))))))));
- uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + ((x9 * x41) + ((x11 * x39) + ((x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x3 * ((x19 * x58) + ((x21 * x59) + ((x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((x29 * x51) + ((uint64_t)(x31 * x49) + (x30 * x47))))))))));
- uint64_t x69 = ((((uint64_t)x5 * x43) + (((uint64_t)0x2 * (x7 * x41)) + (((uint64_t)0x2 * (x9 * x39)) + (((uint64_t)0x2 * (x11 * x37)) + (((uint64_t)0x2 * (x13 * x35)) + ((uint64_t)x15 * x33)))))) + (0x3 * (((uint64_t)0x2 * (x17 * x58)) + (((uint64_t)0x2 * (x19 * x59)) + (((uint64_t)0x2 * (x21 * x57)) + (((uint64_t)0x2 * (x23 * x55)) + (((uint64_t)x25 * x53) + (((uint64_t)0x2 * (x27 * x51)) + (((uint64_t)0x2 * (x29 * x49)) + (((uint64_t)0x2 * (x31 * x47)) + ((uint64_t)0x2 * (x30 * x45))))))))))));
- uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)0x2 * (x7 * x39)) + (((uint64_t)0x2 * (x9 * x37)) + (((uint64_t)0x2 * (x11 * x35)) + ((uint64_t)x13 * x33))))) + (0x3 * (((uint64_t)x15 * x58) + (((uint64_t)0x2 * (x17 * x59)) + (((uint64_t)0x2 * (x19 * x57)) + (((uint64_t)0x2 * (x21 * x55)) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)0x2 * (x27 * x49)) + (((uint64_t)0x2 * (x29 * x47)) + (((uint64_t)0x2 * (x31 * x45)) + ((uint64_t)x30 * x43))))))))))));
- uint64_t x71 = ((((uint64_t)x5 * x39) + (((uint64_t)0x2 * (x7 * x37)) + (((uint64_t)0x2 * (x9 * x35)) + ((uint64_t)x11 * x33)))) + (0x3 * ((x13 * x58) + (((uint64_t)x15 * x59) + (((uint64_t)0x2 * (x17 * x57)) + (((uint64_t)0x2 * (x19 * x55)) + (((uint64_t)x21 * x53) + ((x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)0x2 * (x27 * x47)) + (((uint64_t)0x2 * (x29 * x45)) + (((uint64_t)x31 * x43) + (x30 * x41)))))))))))));
- uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)0x2 * (x7 * x35)) + ((uint64_t)x9 * x33))) + (0x3 * ((x11 * x58) + ((x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)0x2 * (x17 * x55)) + (((uint64_t)x19 * x53) + ((x21 * x51) + ((x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)0x2 * (x27 * x45)) + (((uint64_t)x29 * x43) + ((uint64_t)(x31 * x41) + (x30 * x39))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x3 * ((x9 * x58) + ((x11 * x59) + ((x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((x19 * x51) + ((x21 * x49) + ((x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((x29 * x41) + ((uint64_t)(x31 * x39) + (x30 * x37)))))))))))))));
- uint64_t x74 = (((uint64_t)x5 * x33) + (0x3 * (((uint64_t)0x2 * (x7 * x58)) + (((uint64_t)0x2 * (x9 * x59)) + (((uint64_t)0x2 * (x11 * x57)) + (((uint64_t)0x2 * (x13 * x55)) + (((uint64_t)x15 * x53) + (((uint64_t)0x2 * (x17 * x51)) + (((uint64_t)0x2 * (x19 * x49)) + (((uint64_t)0x2 * (x21 * x47)) + (((uint64_t)0x2 * (x23 * x45)) + (((uint64_t)x25 * x43) + (((uint64_t)0x2 * (x27 * x41)) + (((uint64_t)0x2 * (x29 * x39)) + (((uint64_t)0x2 * (x31 * x37)) + ((uint64_t)0x2 * (x30 * x35)))))))))))))))));
- uint32_t x75 = (uint32_t) (x74 >> 0xf);
- uint32_t x76 = ((uint32_t)x74 & 0x7fff);
- uint64_t x77 = (x75 + x73);
- uint32_t x78 = (uint32_t) (x77 >> 0xe);
- uint32_t x79 = ((uint32_t)x77 & 0x3fff);
- uint64_t x80 = (x78 + x72);
- uint32_t x81 = (uint32_t) (x80 >> 0xe);
- uint32_t x82 = ((uint32_t)x80 & 0x3fff);
- uint64_t x83 = (x81 + x71);
- uint32_t x84 = (uint32_t) (x83 >> 0xe);
- uint32_t x85 = ((uint32_t)x83 & 0x3fff);
- uint64_t x86 = (x84 + x70);
- uint32_t x87 = (uint32_t) (x86 >> 0xe);
- uint32_t x88 = ((uint32_t)x86 & 0x3fff);
- uint64_t x89 = (x87 + x69);
- uint32_t x90 = (uint32_t) (x89 >> 0xf);
- uint32_t x91 = ((uint32_t)x89 & 0x7fff);
- uint64_t x92 = (x90 + x68);
- uint32_t x93 = (uint32_t) (x92 >> 0xe);
- uint32_t x94 = ((uint32_t)x92 & 0x3fff);
- uint64_t x95 = (x93 + x67);
- uint32_t x96 = (uint32_t) (x95 >> 0xe);
- uint32_t x97 = ((uint32_t)x95 & 0x3fff);
- uint64_t x98 = (x96 + x66);
- uint32_t x99 = (uint32_t) (x98 >> 0xe);
- uint32_t x100 = ((uint32_t)x98 & 0x3fff);
- uint64_t x101 = (x99 + x65);
- uint32_t x102 = (uint32_t) (x101 >> 0xe);
- uint32_t x103 = ((uint32_t)x101 & 0x3fff);
- uint64_t x104 = (x102 + x64);
- uint32_t x105 = (uint32_t) (x104 >> 0xf);
- uint32_t x106 = ((uint32_t)x104 & 0x7fff);
- uint64_t x107 = (x105 + x63);
- uint32_t x108 = (uint32_t) (x107 >> 0xe);
- uint32_t x109 = ((uint32_t)x107 & 0x3fff);
- uint64_t x110 = (x108 + x62);
- uint32_t x111 = (uint32_t) (x110 >> 0xe);
- uint32_t x112 = ((uint32_t)x110 & 0x3fff);
- uint64_t x113 = (x111 + x61);
- uint32_t x114 = (uint32_t) (x113 >> 0xe);
- uint32_t x115 = ((uint32_t)x113 & 0x3fff);
- uint64_t x116 = (x114 + x60);
- uint32_t x117 = (uint32_t) (x116 >> 0xe);
- uint32_t x118 = ((uint32_t)x116 & 0x3fff);
- uint32_t x119 = (x76 + (0x3 * x117));
- uint32_t x120 = (x119 >> 0xf);
- uint32_t x121 = (x119 & 0x7fff);
- uint32_t x122 = (x120 + x79);
- uint32_t x123 = (x122 >> 0xe);
- uint32_t x124 = (x122 & 0x3fff);
- return (Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, Return x97, Return x94, Return x91, Return x88, Return x85, (x123 + x82), Return x124, Return x121))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3/femulDisplay.v b/src/Specific/solinas32_2e213m3/femulDisplay.v
deleted file mode 100644
index 36c15a42f..000000000
--- a/src/Specific/solinas32_2e213m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e213m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e213m3/fesquare.c b/src/Specific/solinas32_2e213m3/fesquare.c
deleted file mode 100644
index 0fd4c1fe4..000000000
--- a/src/Specific/solinas32_2e213m3/fesquare.c
+++ /dev/null
@@ -1,98 +0,0 @@
-static void fesquare(uint32_t out[15], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)0x2 * (x4 * x28)) + (((uint64_t)0x2 * (x6 * x26)) + (((uint64_t)0x2 * (x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)0x2 * (x14 * x18)) + (((uint64_t)0x2 * (x16 * x16)) + (((uint64_t)0x2 * (x18 * x14)) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)0x2 * (x24 * x8)) + (((uint64_t)0x2 * (x26 * x6)) + (((uint64_t)0x2 * (x28 * x4)) + ((uint64_t)x27 * x2)))))))))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x28) + (((uint64_t)0x2 * (x4 * x26)) + (((uint64_t)0x2 * (x6 * x24)) + (((uint64_t)x8 * x22) + ((x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)0x2 * (x14 * x16)) + (((uint64_t)0x2 * (x16 * x14)) + (((uint64_t)x18 * x12) + ((x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)0x2 * (x24 * x6)) + (((uint64_t)0x2 * (x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + ((uint64_t)0x3 * (x27 * x27)));
- { uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)0x2 * (x4 * x24)) + (((uint64_t)x6 * x22) + ((x8 * x20) + ((x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)0x2 * (x14 * x14)) + (((uint64_t)x16 * x12) + ((x18 * x10) + ((x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)0x2 * (x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x3 * ((uint64_t)(x28 * x27) + (x27 * x28))));
- { uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((x6 * x20) + ((x8 * x18) + ((x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((x16 * x10) + ((x18 * x8) + ((x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x3 * ((x26 * x27) + ((uint64_t)(x28 * x28) + (x27 * x26)))));
- { uint64_t x33 = ((((uint64_t)x2 * x22) + (((uint64_t)0x2 * (x4 * x20)) + (((uint64_t)0x2 * (x6 * x18)) + (((uint64_t)0x2 * (x8 * x16)) + (((uint64_t)0x2 * (x10 * x14)) + (((uint64_t)x12 * x12) + (((uint64_t)0x2 * (x14 * x10)) + (((uint64_t)0x2 * (x16 * x8)) + (((uint64_t)0x2 * (x18 * x6)) + (((uint64_t)0x2 * (x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x3 * (((uint64_t)0x2 * (x24 * x27)) + (((uint64_t)0x2 * (x26 * x28)) + (((uint64_t)0x2 * (x28 * x26)) + ((uint64_t)0x2 * (x27 * x24)))))));
- { uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)0x2 * (x4 * x18)) + (((uint64_t)0x2 * (x6 * x16)) + (((uint64_t)0x2 * (x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)0x2 * (x14 * x8)) + (((uint64_t)0x2 * (x16 * x6)) + (((uint64_t)0x2 * (x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x27) + (((uint64_t)0x2 * (x24 * x28)) + (((uint64_t)0x2 * (x26 * x26)) + (((uint64_t)0x2 * (x28 * x24)) + ((uint64_t)x27 * x22)))))));
- { uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)0x2 * (x4 * x16)) + (((uint64_t)0x2 * (x6 * x14)) + (((uint64_t)x8 * x12) + ((x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)0x2 * (x14 * x6)) + (((uint64_t)0x2 * (x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)0x2 * (x24 * x26)) + (((uint64_t)0x2 * (x26 * x24)) + (((uint64_t)x28 * x22) + (x27 * x20))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)0x2 * (x4 * x14)) + (((uint64_t)x6 * x12) + ((x8 * x10) + ((x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)0x2 * (x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * ((x18 * x27) + ((x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)0x2 * (x24 * x24)) + (((uint64_t)x26 * x22) + ((uint64_t)(x28 * x20) + (x27 * x18)))))))));
- { uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((x6 * x10) + ((x8 * x8) + ((x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * ((x16 * x27) + ((x18 * x28) + ((x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((x26 * x20) + ((uint64_t)(x28 * x18) + (x27 * x16))))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x12) + (((uint64_t)0x2 * (x4 * x10)) + (((uint64_t)0x2 * (x6 * x8)) + (((uint64_t)0x2 * (x8 * x6)) + (((uint64_t)0x2 * (x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)0x2 * (x14 * x27)) + (((uint64_t)0x2 * (x16 * x28)) + (((uint64_t)0x2 * (x18 * x26)) + (((uint64_t)0x2 * (x20 * x24)) + (((uint64_t)x22 * x22) + (((uint64_t)0x2 * (x24 * x20)) + (((uint64_t)0x2 * (x26 * x18)) + (((uint64_t)0x2 * (x28 * x16)) + ((uint64_t)0x2 * (x27 * x14))))))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)0x2 * (x4 * x8)) + (((uint64_t)0x2 * (x6 * x6)) + (((uint64_t)0x2 * (x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x27) + (((uint64_t)0x2 * (x14 * x28)) + (((uint64_t)0x2 * (x16 * x26)) + (((uint64_t)0x2 * (x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)0x2 * (x24 * x18)) + (((uint64_t)0x2 * (x26 * x16)) + (((uint64_t)0x2 * (x28 * x14)) + ((uint64_t)x27 * x12))))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x8) + (((uint64_t)0x2 * (x4 * x6)) + (((uint64_t)0x2 * (x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((x10 * x27) + (((uint64_t)x12 * x28) + (((uint64_t)0x2 * (x14 * x26)) + (((uint64_t)0x2 * (x16 * x24)) + (((uint64_t)x18 * x22) + ((x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)0x2 * (x24 * x16)) + (((uint64_t)0x2 * (x26 * x14)) + (((uint64_t)x28 * x12) + (x27 * x10)))))))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)0x2 * (x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * ((x8 * x27) + ((x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)0x2 * (x14 * x24)) + (((uint64_t)x16 * x22) + ((x18 * x20) + ((x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)0x2 * (x24 * x14)) + (((uint64_t)x26 * x12) + ((uint64_t)(x28 * x10) + (x27 * x8))))))))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((x6 * x27) + ((x8 * x28) + ((x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((x16 * x20) + ((x18 * x18) + ((x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((x26 * x10) + ((uint64_t)(x28 * x8) + (x27 * x6)))))))))))))));
- { uint64_t x43 = (((uint64_t)x2 * x2) + (0x3 * (((uint64_t)0x2 * (x4 * x27)) + (((uint64_t)0x2 * (x6 * x28)) + (((uint64_t)0x2 * (x8 * x26)) + (((uint64_t)0x2 * (x10 * x24)) + (((uint64_t)x12 * x22) + (((uint64_t)0x2 * (x14 * x20)) + (((uint64_t)0x2 * (x16 * x18)) + (((uint64_t)0x2 * (x18 * x16)) + (((uint64_t)0x2 * (x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)0x2 * (x24 * x10)) + (((uint64_t)0x2 * (x26 * x8)) + (((uint64_t)0x2 * (x28 * x6)) + ((uint64_t)0x2 * (x27 * x4)))))))))))))))));
- { uint32_t x44 = (uint32_t) (x43 >> 0xf);
- { uint32_t x45 = ((uint32_t)x43 & 0x7fff);
- { uint64_t x46 = (x44 + x42);
- { uint32_t x47 = (uint32_t) (x46 >> 0xe);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fff);
- { uint64_t x49 = (x47 + x41);
- { uint32_t x50 = (uint32_t) (x49 >> 0xe);
- { uint32_t x51 = ((uint32_t)x49 & 0x3fff);
- { uint64_t x52 = (x50 + x40);
- { uint32_t x53 = (uint32_t) (x52 >> 0xe);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fff);
- { uint64_t x55 = (x53 + x39);
- { uint32_t x56 = (uint32_t) (x55 >> 0xe);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fff);
- { uint64_t x58 = (x56 + x38);
- { uint32_t x59 = (uint32_t) (x58 >> 0xf);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fff);
- { uint64_t x61 = (x59 + x37);
- { uint32_t x62 = (uint32_t) (x61 >> 0xe);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fff);
- { uint64_t x64 = (x62 + x36);
- { uint32_t x65 = (uint32_t) (x64 >> 0xe);
- { uint32_t x66 = ((uint32_t)x64 & 0x3fff);
- { uint64_t x67 = (x65 + x35);
- { uint32_t x68 = (uint32_t) (x67 >> 0xe);
- { uint32_t x69 = ((uint32_t)x67 & 0x3fff);
- { uint64_t x70 = (x68 + x34);
- { uint32_t x71 = (uint32_t) (x70 >> 0xe);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fff);
- { uint64_t x73 = (x71 + x33);
- { uint32_t x74 = (uint32_t) (x73 >> 0xf);
- { uint32_t x75 = ((uint32_t)x73 & 0x7fff);
- { uint64_t x76 = (x74 + x32);
- { uint32_t x77 = (uint32_t) (x76 >> 0xe);
- { uint32_t x78 = ((uint32_t)x76 & 0x3fff);
- { uint64_t x79 = (x77 + x31);
- { uint32_t x80 = (uint32_t) (x79 >> 0xe);
- { uint32_t x81 = ((uint32_t)x79 & 0x3fff);
- { uint64_t x82 = (x80 + x30);
- { uint32_t x83 = (uint32_t) (x82 >> 0xe);
- { uint32_t x84 = ((uint32_t)x82 & 0x3fff);
- { uint64_t x85 = (x83 + x29);
- { uint32_t x86 = (uint32_t) (x85 >> 0xe);
- { uint32_t x87 = ((uint32_t)x85 & 0x3fff);
- { uint32_t x88 = (x45 + (0x3 * x86));
- { uint32_t x89 = (x88 >> 0xf);
- { uint32_t x90 = (x88 & 0x7fff);
- { uint32_t x91 = (x89 + x48);
- { uint32_t x92 = (x91 >> 0xe);
- { uint32_t x93 = (x91 & 0x3fff);
- out[0] = x90;
- out[1] = x93;
- out[2] = (x92 + x51);
- out[3] = x54;
- out[4] = x57;
- out[5] = x60;
- out[6] = x63;
- out[7] = x66;
- out[8] = x69;
- out[9] = x72;
- out[10] = x75;
- out[11] = x78;
- out[12] = x81;
- out[13] = x84;
- out[14] = x87;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e213m3/fesquare.v b/src/Specific/solinas32_2e213m3/fesquare.v
deleted file mode 100644
index c10c2b7d2..000000000
--- a/src/Specific/solinas32_2e213m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e213m3/fesquareDisplay.log b/src/Specific/solinas32_2e213m3/fesquareDisplay.log
deleted file mode 100644
index 912a186ea..000000000
--- a/src/Specific/solinas32_2e213m3/fesquareDisplay.log
+++ /dev/null
@@ -1,72 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)0x2 * (x4 * x28)) + (((uint64_t)0x2 * (x6 * x26)) + (((uint64_t)0x2 * (x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)0x2 * (x14 * x18)) + (((uint64_t)0x2 * (x16 * x16)) + (((uint64_t)0x2 * (x18 * x14)) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)0x2 * (x24 * x8)) + (((uint64_t)0x2 * (x26 * x6)) + (((uint64_t)0x2 * (x28 * x4)) + ((uint64_t)x27 * x2)))))))))))))));
- uint64_t x30 = ((((uint64_t)x2 * x28) + (((uint64_t)0x2 * (x4 * x26)) + (((uint64_t)0x2 * (x6 * x24)) + (((uint64_t)x8 * x22) + ((x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)0x2 * (x14 * x16)) + (((uint64_t)0x2 * (x16 * x14)) + (((uint64_t)x18 * x12) + ((x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)0x2 * (x24 * x6)) + (((uint64_t)0x2 * (x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + ((uint64_t)0x3 * (x27 * x27)));
- uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)0x2 * (x4 * x24)) + (((uint64_t)x6 * x22) + ((x8 * x20) + ((x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)0x2 * (x14 * x14)) + (((uint64_t)x16 * x12) + ((x18 * x10) + ((x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)0x2 * (x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x3 * ((uint64_t)(x28 * x27) + (x27 * x28))));
- uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + ((x6 * x20) + ((x8 * x18) + ((x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((x16 * x10) + ((x18 * x8) + ((x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x3 * ((x26 * x27) + ((uint64_t)(x28 * x28) + (x27 * x26)))));
- uint64_t x33 = ((((uint64_t)x2 * x22) + (((uint64_t)0x2 * (x4 * x20)) + (((uint64_t)0x2 * (x6 * x18)) + (((uint64_t)0x2 * (x8 * x16)) + (((uint64_t)0x2 * (x10 * x14)) + (((uint64_t)x12 * x12) + (((uint64_t)0x2 * (x14 * x10)) + (((uint64_t)0x2 * (x16 * x8)) + (((uint64_t)0x2 * (x18 * x6)) + (((uint64_t)0x2 * (x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x3 * (((uint64_t)0x2 * (x24 * x27)) + (((uint64_t)0x2 * (x26 * x28)) + (((uint64_t)0x2 * (x28 * x26)) + ((uint64_t)0x2 * (x27 * x24)))))));
- uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)0x2 * (x4 * x18)) + (((uint64_t)0x2 * (x6 * x16)) + (((uint64_t)0x2 * (x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)0x2 * (x14 * x8)) + (((uint64_t)0x2 * (x16 * x6)) + (((uint64_t)0x2 * (x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x27) + (((uint64_t)0x2 * (x24 * x28)) + (((uint64_t)0x2 * (x26 * x26)) + (((uint64_t)0x2 * (x28 * x24)) + ((uint64_t)x27 * x22)))))));
- uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)0x2 * (x4 * x16)) + (((uint64_t)0x2 * (x6 * x14)) + (((uint64_t)x8 * x12) + ((x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)0x2 * (x14 * x6)) + (((uint64_t)0x2 * (x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)0x2 * (x24 * x26)) + (((uint64_t)0x2 * (x26 * x24)) + (((uint64_t)x28 * x22) + (x27 * x20))))))));
- uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)0x2 * (x4 * x14)) + (((uint64_t)x6 * x12) + ((x8 * x10) + ((x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)0x2 * (x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * ((x18 * x27) + ((x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)0x2 * (x24 * x24)) + (((uint64_t)x26 * x22) + ((uint64_t)(x28 * x20) + (x27 * x18)))))))));
- uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + ((x6 * x10) + ((x8 * x8) + ((x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * ((x16 * x27) + ((x18 * x28) + ((x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((x26 * x20) + ((uint64_t)(x28 * x18) + (x27 * x16))))))))));
- uint64_t x38 = ((((uint64_t)x2 * x12) + (((uint64_t)0x2 * (x4 * x10)) + (((uint64_t)0x2 * (x6 * x8)) + (((uint64_t)0x2 * (x8 * x6)) + (((uint64_t)0x2 * (x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)0x2 * (x14 * x27)) + (((uint64_t)0x2 * (x16 * x28)) + (((uint64_t)0x2 * (x18 * x26)) + (((uint64_t)0x2 * (x20 * x24)) + (((uint64_t)x22 * x22) + (((uint64_t)0x2 * (x24 * x20)) + (((uint64_t)0x2 * (x26 * x18)) + (((uint64_t)0x2 * (x28 * x16)) + ((uint64_t)0x2 * (x27 * x14))))))))))));
- uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)0x2 * (x4 * x8)) + (((uint64_t)0x2 * (x6 * x6)) + (((uint64_t)0x2 * (x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x27) + (((uint64_t)0x2 * (x14 * x28)) + (((uint64_t)0x2 * (x16 * x26)) + (((uint64_t)0x2 * (x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)0x2 * (x24 * x18)) + (((uint64_t)0x2 * (x26 * x16)) + (((uint64_t)0x2 * (x28 * x14)) + ((uint64_t)x27 * x12))))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x8) + (((uint64_t)0x2 * (x4 * x6)) + (((uint64_t)0x2 * (x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * ((x10 * x27) + (((uint64_t)x12 * x28) + (((uint64_t)0x2 * (x14 * x26)) + (((uint64_t)0x2 * (x16 * x24)) + (((uint64_t)x18 * x22) + ((x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)0x2 * (x24 * x16)) + (((uint64_t)0x2 * (x26 * x14)) + (((uint64_t)x28 * x12) + (x27 * x10)))))))))))));
- uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)0x2 * (x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * ((x8 * x27) + ((x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)0x2 * (x14 * x24)) + (((uint64_t)x16 * x22) + ((x18 * x20) + ((x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)0x2 * (x24 * x14)) + (((uint64_t)x26 * x12) + ((uint64_t)(x28 * x10) + (x27 * x8))))))))))))));
- uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * ((x6 * x27) + ((x8 * x28) + ((x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((x16 * x20) + ((x18 * x18) + ((x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((x26 * x10) + ((uint64_t)(x28 * x8) + (x27 * x6)))))))))))))));
- uint64_t x43 = (((uint64_t)x2 * x2) + (0x3 * (((uint64_t)0x2 * (x4 * x27)) + (((uint64_t)0x2 * (x6 * x28)) + (((uint64_t)0x2 * (x8 * x26)) + (((uint64_t)0x2 * (x10 * x24)) + (((uint64_t)x12 * x22) + (((uint64_t)0x2 * (x14 * x20)) + (((uint64_t)0x2 * (x16 * x18)) + (((uint64_t)0x2 * (x18 * x16)) + (((uint64_t)0x2 * (x20 * x14)) + (((uint64_t)x22 * x12) + (((uint64_t)0x2 * (x24 * x10)) + (((uint64_t)0x2 * (x26 * x8)) + (((uint64_t)0x2 * (x28 * x6)) + ((uint64_t)0x2 * (x27 * x4)))))))))))))))));
- uint32_t x44 = (uint32_t) (x43 >> 0xf);
- uint32_t x45 = ((uint32_t)x43 & 0x7fff);
- uint64_t x46 = (x44 + x42);
- uint32_t x47 = (uint32_t) (x46 >> 0xe);
- uint32_t x48 = ((uint32_t)x46 & 0x3fff);
- uint64_t x49 = (x47 + x41);
- uint32_t x50 = (uint32_t) (x49 >> 0xe);
- uint32_t x51 = ((uint32_t)x49 & 0x3fff);
- uint64_t x52 = (x50 + x40);
- uint32_t x53 = (uint32_t) (x52 >> 0xe);
- uint32_t x54 = ((uint32_t)x52 & 0x3fff);
- uint64_t x55 = (x53 + x39);
- uint32_t x56 = (uint32_t) (x55 >> 0xe);
- uint32_t x57 = ((uint32_t)x55 & 0x3fff);
- uint64_t x58 = (x56 + x38);
- uint32_t x59 = (uint32_t) (x58 >> 0xf);
- uint32_t x60 = ((uint32_t)x58 & 0x7fff);
- uint64_t x61 = (x59 + x37);
- uint32_t x62 = (uint32_t) (x61 >> 0xe);
- uint32_t x63 = ((uint32_t)x61 & 0x3fff);
- uint64_t x64 = (x62 + x36);
- uint32_t x65 = (uint32_t) (x64 >> 0xe);
- uint32_t x66 = ((uint32_t)x64 & 0x3fff);
- uint64_t x67 = (x65 + x35);
- uint32_t x68 = (uint32_t) (x67 >> 0xe);
- uint32_t x69 = ((uint32_t)x67 & 0x3fff);
- uint64_t x70 = (x68 + x34);
- uint32_t x71 = (uint32_t) (x70 >> 0xe);
- uint32_t x72 = ((uint32_t)x70 & 0x3fff);
- uint64_t x73 = (x71 + x33);
- uint32_t x74 = (uint32_t) (x73 >> 0xf);
- uint32_t x75 = ((uint32_t)x73 & 0x7fff);
- uint64_t x76 = (x74 + x32);
- uint32_t x77 = (uint32_t) (x76 >> 0xe);
- uint32_t x78 = ((uint32_t)x76 & 0x3fff);
- uint64_t x79 = (x77 + x31);
- uint32_t x80 = (uint32_t) (x79 >> 0xe);
- uint32_t x81 = ((uint32_t)x79 & 0x3fff);
- uint64_t x82 = (x80 + x30);
- uint32_t x83 = (uint32_t) (x82 >> 0xe);
- uint32_t x84 = ((uint32_t)x82 & 0x3fff);
- uint64_t x85 = (x83 + x29);
- uint32_t x86 = (uint32_t) (x85 >> 0xe);
- uint32_t x87 = ((uint32_t)x85 & 0x3fff);
- uint32_t x88 = (x45 + (0x3 * x86));
- uint32_t x89 = (x88 >> 0xf);
- uint32_t x90 = (x88 & 0x7fff);
- uint32_t x91 = (x89 + x48);
- uint32_t x92 = (x91 >> 0xe);
- uint32_t x93 = (x91 & 0x3fff);
- return (Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, (x92 + x51), Return x93, Return x90))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3/fesquareDisplay.v b/src/Specific/solinas32_2e213m3/fesquareDisplay.v
deleted file mode 100644
index 5954c3e8f..000000000
--- a/src/Specific/solinas32_2e213m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e213m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e213m3/fesub.c b/src/Specific/solinas32_2e213m3/fesub.c
deleted file mode 100644
index 48cf0fac4..000000000
--- a/src/Specific/solinas32_2e213m3/fesub.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void fesub(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = ((0xfffa + x5) - x33);
- out[1] = ((0x7ffe + x7) - x35);
- out[2] = ((0x7ffe + x9) - x37);
- out[3] = ((0x7ffe + x11) - x39);
- out[4] = ((0x7ffe + x13) - x41);
- out[5] = ((0xfffe + x15) - x43);
- out[6] = ((0x7ffe + x17) - x45);
- out[7] = ((0x7ffe + x19) - x47);
- out[8] = ((0x7ffe + x21) - x49);
- out[9] = ((0x7ffe + x23) - x51);
- out[10] = ((0xfffe + x25) - x53);
- out[11] = ((0x7ffe + x27) - x55);
- out[12] = ((0x7ffe + x29) - x57);
- out[13] = ((0x7ffe + x31) - x59);
- out[14] = ((0x7ffe + x30) - x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e213m3/fesub.v b/src/Specific/solinas32_2e213m3/fesub.v
deleted file mode 100644
index 830a747da..000000000
--- a/src/Specific/solinas32_2e213m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e213m3/fesubDisplay.log b/src/Specific/solinas32_2e213m3/fesubDisplay.log
deleted file mode 100644
index e52f93f6b..000000000
--- a/src/Specific/solinas32_2e213m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- (((0x7ffe + x30) - x58), ((0x7ffe + x31) - x59), ((0x7ffe + x29) - x57), ((0x7ffe + x27) - x55), ((0xfffe + x25) - x53), ((0x7ffe + x23) - x51), ((0x7ffe + x21) - x49), ((0x7ffe + x19) - x47), ((0x7ffe + x17) - x45), ((0xfffe + x15) - x43), ((0x7ffe + x13) - x41), ((0x7ffe + x11) - x39), ((0x7ffe + x9) - x37), ((0x7ffe + x7) - x35), ((0xfffa + x5) - x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3/fesubDisplay.v b/src/Specific/solinas32_2e213m3/fesubDisplay.v
deleted file mode 100644
index 5905d9dd2..000000000
--- a/src/Specific/solinas32_2e213m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e213m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e213m3/freeze.c b/src/Specific/solinas32_2e213m3/freeze.c
deleted file mode 100644
index 5c4380cbd..000000000
--- a/src/Specific/solinas32_2e213m3/freeze.c
+++ /dev/null
@@ -1,79 +0,0 @@
-static void freeze(uint32_t out[15], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffd);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x3fff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x3fff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3fff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x3fff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x7fff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x3fff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3fff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x3fff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x3fff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x7fff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3fff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x3fff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x3fff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x3fff);
- { uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- { uint32_t x75 = (x74 & 0x7ffd);
- { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- { uint32_t x79 = (x74 & 0x3fff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- { uint32_t x83 = (x74 & 0x3fff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- { uint32_t x87 = (x74 & 0x3fff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- { uint32_t x91 = (x74 & 0x3fff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- { uint32_t x95 = (x74 & 0x7fff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- { uint32_t x99 = (x74 & 0x3fff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- { uint32_t x103 = (x74 & 0x3fff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- { uint32_t x107 = (x74 & 0x3fff);
- { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- { uint32_t x111 = (x74 & 0x3fff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- { uint32_t x115 = (x74 & 0x7fff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- { uint32_t x119 = (x74 & 0x3fff);
- { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- { uint32_t x123 = (x74 & 0x3fff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- { uint32_t x127 = (x74 & 0x3fff);
- { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- { uint32_t x131 = (x74 & 0x3fff);
- { uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- out[0] = x77;
- out[1] = x81;
- out[2] = x85;
- out[3] = x89;
- out[4] = x93;
- out[5] = x97;
- out[6] = x101;
- out[7] = x105;
- out[8] = x109;
- out[9] = x113;
- out[10] = x117;
- out[11] = x121;
- out[12] = x125;
- out[13] = x129;
- out[14] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e213m3/freeze.v b/src/Specific/solinas32_2e213m3/freeze.v
deleted file mode 100644
index a20850e49..000000000
--- a/src/Specific/solinas32_2e213m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e213m3/freezeDisplay.log b/src/Specific/solinas32_2e213m3/freezeDisplay.log
deleted file mode 100644
index 6601ccdc1..000000000
--- a/src/Specific/solinas32_2e213m3/freezeDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffd);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x3fff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x3fff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3fff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x3fff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x7fff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x3fff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3fff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x3fff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x3fff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x7fff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3fff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x3fff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x3fff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x3fff);
- uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- uint32_t x75 = (x74 & 0x7ffd);
- uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- uint32_t x79 = (x74 & 0x3fff);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- uint32_t x83 = (x74 & 0x3fff);
- uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- uint32_t x87 = (x74 & 0x3fff);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- uint32_t x91 = (x74 & 0x3fff);
- uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- uint32_t x95 = (x74 & 0x7fff);
- uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- uint32_t x99 = (x74 & 0x3fff);
- uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- uint32_t x103 = (x74 & 0x3fff);
- uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- uint32_t x107 = (x74 & 0x3fff);
- uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- uint32_t x111 = (x74 & 0x3fff);
- uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- uint32_t x115 = (x74 & 0x7fff);
- uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 15 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- uint32_t x119 = (x74 & 0x3fff);
- uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- uint32_t x123 = (x74 & 0x3fff);
- uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- uint32_t x127 = (x74 & 0x3fff);
- uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- uint32_t x131 = (x74 & 0x3fff);
- uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 14 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- (Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97, Return x93, Return x89, Return x85, Return x81, Return x77))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e213m3/freezeDisplay.v b/src/Specific/solinas32_2e213m3/freezeDisplay.v
deleted file mode 100644
index 497d81673..000000000
--- a/src/Specific/solinas32_2e213m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e213m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e213m3/py_interpreter.sh b/src/Specific/solinas32_2e213m3/py_interpreter.sh
deleted file mode 100755
index d74c1874d..000000000
--- a/src/Specific/solinas32_2e213m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**213 - 3' -Dmodulus_bytes='14.2' -Da24='121665'
diff --git a/src/Specific/solinas32_2e213m3_8limbs/CurveParameters.v b/src/Specific/solinas32_2e213m3_8limbs/CurveParameters.v
new file mode 100644
index 000000000..e68d2c787
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^213 - 3
+Base: 26.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 26 + 5/8;
+ bitwidth := 32;
+ s := 2^213;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/Synthesis.v b/src/Specific/solinas32_2e213m3_8limbs/Synthesis.v
new file mode 100644
index 000000000..ace9b845f
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/compiler.sh b/src/Specific/solinas32_2e213m3_8limbs/compiler.sh
new file mode 100755
index 000000000..4e804551f
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,26}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3_8limbs/compilerxx.sh b/src/Specific/solinas32_2e213m3_8limbs/compilerxx.sh
new file mode 100755
index 000000000..4c83f8781
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,26}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3_8limbs/feadd.v b/src/Specific/solinas32_2e213m3_8limbs/feadd.v
new file mode 100644
index 000000000..893fbdcd7
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..9d2b2acba
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/femul.v b/src/Specific/solinas32_2e213m3_8limbs/femul.v
new file mode 100644
index 000000000..09a023c91
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.v b/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.v
new file mode 100644
index 000000000..1a896fe4c
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesquare.v b/src/Specific/solinas32_2e213m3_8limbs/fesquare.v
new file mode 100644
index 000000000..fe77858dc
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a2df52f17
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesub.v b/src/Specific/solinas32_2e213m3_8limbs/fesub.v
new file mode 100644
index 000000000..b3694e20a
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..998b32af5
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/freeze.v b/src/Specific/solinas32_2e213m3_8limbs/freeze.v
new file mode 100644
index 000000000..352b8f5b8
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..eb355cdb0
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e213m3_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e213m3_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..6efdefa9f
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**213 - 3' -Dmodulus_bytes='26.625' -Da24='121665'
diff --git a/src/Specific/solinas32_2e213m3_9limbs/CurveParameters.v b/src/Specific/solinas32_2e213m3_9limbs/CurveParameters.v
new file mode 100644
index 000000000..afcbb362c
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^213 - 3
+Base: 23 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 23 + 2/3;
+ bitwidth := 32;
+ s := 2^213;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/Synthesis.v b/src/Specific/solinas32_2e213m3_9limbs/Synthesis.v
new file mode 100644
index 000000000..a74316f73
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/compiler.sh b/src/Specific/solinas32_2e213m3_9limbs/compiler.sh
new file mode 100755
index 000000000..f547116d5
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3_9limbs/compilerxx.sh b/src/Specific/solinas32_2e213m3_9limbs/compilerxx.sh
new file mode 100755
index 000000000..810a75afa
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas32_2e213m3_9limbs/feadd.v b/src/Specific/solinas32_2e213m3_9limbs/feadd.v
new file mode 100644
index 000000000..fbfcdf746
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..61ab0fbfc
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/femul.v b/src/Specific/solinas32_2e213m3_9limbs/femul.v
new file mode 100644
index 000000000..75f619b40
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.v b/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.v
new file mode 100644
index 000000000..1324dc802
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesquare.v b/src/Specific/solinas32_2e213m3_9limbs/fesquare.v
new file mode 100644
index 000000000..a012664f4
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..48bea70a3
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesub.v b/src/Specific/solinas32_2e213m3_9limbs/fesub.v
new file mode 100644
index 000000000..7ca08daa4
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..b19c9641c
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/freeze.v b/src/Specific/solinas32_2e213m3_9limbs/freeze.v
new file mode 100644
index 000000000..238bb4b42
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..2129057a8
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e213m3_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e213m3_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e213m3_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..fa919b1f7
--- /dev/null
+++ b/src/Specific/solinas32_2e213m3_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**213 - 3' -Dmodulus_bytes='23 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e216m2e108m1/Synthesis.v b/src/Specific/solinas32_2e216m2e108m1/Synthesis.v
deleted file mode 100644
index 8e4ac57fa..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e216m2e108m1/feadd.c b/src/Specific/solinas32_2e216m2e108m1/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e216m2e108m1/feadd.v b/src/Specific/solinas32_2e216m2e108m1/feadd.v
deleted file mode 100644
index ef16df9f8..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.log b/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.v b/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.v
deleted file mode 100644
index f35ee2db1..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e216m2e108m1/femul.c b/src/Specific/solinas32_2e216m2e108m1/femul.c
deleted file mode 100644
index 4a4e096c7..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/femul.c
+++ /dev/null
@@ -1,81 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint64_t x32 = (((uint64_t)(x11 + x16) * (x25 + x30)) - ((uint64_t)x11 * x25));
- { uint64_t x33 = ((((uint64_t)(x9 + x17) * (x25 + x30)) + ((uint64_t)(x11 + x16) * (x23 + x31))) - (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)));
- { uint64_t x34 = ((((uint64_t)(x7 + x15) * (x25 + x30)) + (((uint64_t)(x9 + x17) * (x23 + x31)) + ((uint64_t)(x11 + x16) * (x21 + x29)))) - (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21))));
- { uint64_t x35 = ((((uint64_t)(x5 + x13) * (x25 + x30)) + (((uint64_t)(x7 + x15) * (x23 + x31)) + (((uint64_t)(x9 + x17) * (x21 + x29)) + ((uint64_t)(x11 + x16) * (x19 + x27))))) - (((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))));
- { uint64_t x36 = ((((uint64_t)(x5 + x13) * (x23 + x31)) + (((uint64_t)(x7 + x15) * (x21 + x29)) + ((uint64_t)(x9 + x17) * (x19 + x27)))) - (((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))));
- { uint64_t x37 = ((((uint64_t)(x5 + x13) * (x21 + x29)) + ((uint64_t)(x7 + x15) * (x19 + x27))) - (((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)));
- { uint64_t x38 = (((uint64_t)(x5 + x13) * (x19 + x27)) - ((uint64_t)x5 * x19));
- { uint64_t x39 = (((((uint64_t)x11 * x25) + ((uint64_t)x16 * x30)) + x36) + x32);
- { uint64_t x40 = ((((((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)) + (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))) + x37) + x33);
- { uint64_t x41 = ((((((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21))) + (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29)))) + x38) + x34);
- { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))));
- { uint64_t x43 = (((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27)))) + x32);
- { uint64_t x44 = (((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27))) + x33);
- { uint64_t x45 = ((((uint64_t)x5 * x19) + ((uint64_t)x13 * x27)) + x34);
- { uint64_t x46 = (x42 >> 0x1b);
- { uint32_t x47 = ((uint32_t)x42 & 0x7ffffff);
- { uint64_t x48 = (x35 >> 0x1b);
- { uint32_t x49 = ((uint32_t)x35 & 0x7ffffff);
- { uint64_t x50 = ((0x8000000 * x48) + x49);
- { uint64_t x51 = (x50 >> 0x1b);
- { uint32_t x52 = ((uint32_t)x50 & 0x7ffffff);
- { uint64_t x53 = ((x46 + x41) + x51);
- { uint64_t x54 = (x53 >> 0x1b);
- { uint32_t x55 = ((uint32_t)x53 & 0x7ffffff);
- { uint64_t x56 = (x45 + x51);
- { uint64_t x57 = (x56 >> 0x1b);
- { uint32_t x58 = ((uint32_t)x56 & 0x7ffffff);
- { uint64_t x59 = (x54 + x40);
- { uint64_t x60 = (x59 >> 0x1b);
- { uint32_t x61 = ((uint32_t)x59 & 0x7ffffff);
- { uint64_t x62 = (x57 + x44);
- { uint64_t x63 = (x62 >> 0x1b);
- { uint32_t x64 = ((uint32_t)x62 & 0x7ffffff);
- { uint64_t x65 = (x60 + x39);
- { uint64_t x66 = (x65 >> 0x1b);
- { uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
- { uint64_t x68 = (x63 + x43);
- { uint64_t x69 = (x68 >> 0x1b);
- { uint32_t x70 = ((uint32_t)x68 & 0x7ffffff);
- { uint64_t x71 = (x66 + x52);
- { uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- { uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- { uint64_t x74 = (x69 + x47);
- { uint32_t x75 = (uint32_t) (x74 >> 0x1b);
- { uint32_t x76 = ((uint32_t)x74 & 0x7ffffff);
- { uint64_t x77 = (((uint64_t)0x8000000 * x72) + x73);
- { uint32_t x78 = (uint32_t) (x77 >> 0x1b);
- { uint32_t x79 = ((uint32_t)x77 & 0x7ffffff);
- { uint32_t x80 = ((x75 + x55) + x78);
- { uint32_t x81 = (x80 >> 0x1b);
- { uint32_t x82 = (x80 & 0x7ffffff);
- { uint32_t x83 = (x58 + x78);
- { uint32_t x84 = (x83 >> 0x1b);
- { uint32_t x85 = (x83 & 0x7ffffff);
- out[0] = x85;
- out[1] = (x84 + x64);
- out[2] = x70;
- out[3] = x76;
- out[4] = x82;
- out[5] = (x81 + x61);
- out[6] = x67;
- out[7] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e216m2e108m1/femul.v b/src/Specific/solinas32_2e216m2e108m1/femul.v
deleted file mode 100644
index 12d38bb21..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1/femulDisplay.log b/src/Specific/solinas32_2e216m2e108m1/femulDisplay.log
deleted file mode 100644
index 64839d2fe..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x32 = (((uint64_t)(x11 + x16) * (x25 + x30)) - ((uint64_t)x11 * x25));
- uint64_t x33 = ((((uint64_t)(x9 + x17) * (x25 + x30)) + ((uint64_t)(x11 + x16) * (x23 + x31))) - (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)));
- uint64_t x34 = ((((uint64_t)(x7 + x15) * (x25 + x30)) + (((uint64_t)(x9 + x17) * (x23 + x31)) + ((uint64_t)(x11 + x16) * (x21 + x29)))) - (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21))));
- uint64_t x35 = ((((uint64_t)(x5 + x13) * (x25 + x30)) + (((uint64_t)(x7 + x15) * (x23 + x31)) + (((uint64_t)(x9 + x17) * (x21 + x29)) + ((uint64_t)(x11 + x16) * (x19 + x27))))) - (((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))));
- uint64_t x36 = ((((uint64_t)(x5 + x13) * (x23 + x31)) + (((uint64_t)(x7 + x15) * (x21 + x29)) + ((uint64_t)(x9 + x17) * (x19 + x27)))) - (((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))));
- uint64_t x37 = ((((uint64_t)(x5 + x13) * (x21 + x29)) + ((uint64_t)(x7 + x15) * (x19 + x27))) - (((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)));
- uint64_t x38 = (((uint64_t)(x5 + x13) * (x19 + x27)) - ((uint64_t)x5 * x19));
- uint64_t x39 = (((((uint64_t)x11 * x25) + ((uint64_t)x16 * x30)) + x36) + x32);
- uint64_t x40 = ((((((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)) + (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))) + x37) + x33);
- uint64_t x41 = ((((((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21))) + (((uint64_t)x15 * x30) + (((uint64_t)x17 * x31) + ((uint64_t)x16 * x29)))) + x38) + x34);
- uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + ((uint64_t)x11 * x19)))) + (((uint64_t)x13 * x30) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x16 * x27)))));
- uint64_t x43 = (((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((uint64_t)x9 * x19))) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27)))) + x32);
- uint64_t x44 = (((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27))) + x33);
- uint64_t x45 = ((((uint64_t)x5 * x19) + ((uint64_t)x13 * x27)) + x34);
- uint64_t x46 = (x42 >> 0x1b);
- uint32_t x47 = ((uint32_t)x42 & 0x7ffffff);
- uint64_t x48 = (x35 >> 0x1b);
- uint32_t x49 = ((uint32_t)x35 & 0x7ffffff);
- uint64_t x50 = ((0x8000000 * x48) + x49);
- uint64_t x51 = (x50 >> 0x1b);
- uint32_t x52 = ((uint32_t)x50 & 0x7ffffff);
- uint64_t x53 = ((x46 + x41) + x51);
- uint64_t x54 = (x53 >> 0x1b);
- uint32_t x55 = ((uint32_t)x53 & 0x7ffffff);
- uint64_t x56 = (x45 + x51);
- uint64_t x57 = (x56 >> 0x1b);
- uint32_t x58 = ((uint32_t)x56 & 0x7ffffff);
- uint64_t x59 = (x54 + x40);
- uint64_t x60 = (x59 >> 0x1b);
- uint32_t x61 = ((uint32_t)x59 & 0x7ffffff);
- uint64_t x62 = (x57 + x44);
- uint64_t x63 = (x62 >> 0x1b);
- uint32_t x64 = ((uint32_t)x62 & 0x7ffffff);
- uint64_t x65 = (x60 + x39);
- uint64_t x66 = (x65 >> 0x1b);
- uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
- uint64_t x68 = (x63 + x43);
- uint64_t x69 = (x68 >> 0x1b);
- uint32_t x70 = ((uint32_t)x68 & 0x7ffffff);
- uint64_t x71 = (x66 + x52);
- uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- uint64_t x74 = (x69 + x47);
- uint32_t x75 = (uint32_t) (x74 >> 0x1b);
- uint32_t x76 = ((uint32_t)x74 & 0x7ffffff);
- uint64_t x77 = (((uint64_t)0x8000000 * x72) + x73);
- uint32_t x78 = (uint32_t) (x77 >> 0x1b);
- uint32_t x79 = ((uint32_t)x77 & 0x7ffffff);
- uint32_t x80 = ((x75 + x55) + x78);
- uint32_t x81 = (x80 >> 0x1b);
- uint32_t x82 = (x80 & 0x7ffffff);
- uint32_t x83 = (x58 + x78);
- uint32_t x84 = (x83 >> 0x1b);
- uint32_t x85 = (x83 & 0x7ffffff);
- return (Return x79, Return x67, (x81 + x61), Return x82, Return x76, Return x70, (x84 + x64), Return x85))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v b/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v
deleted file mode 100644
index bc2d813de..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquare.c b/src/Specific/solinas32_2e216m2e108m1/fesquare.c
deleted file mode 100644
index aee2bd170..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesquare.c
+++ /dev/null
@@ -1,73 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x15 = (((uint64_t)(x8 + x13) * (x8 + x13)) - ((uint64_t)x8 * x8));
- { uint64_t x16 = ((((uint64_t)(x6 + x14) * (x8 + x13)) + ((uint64_t)(x8 + x13) * (x6 + x14))) - (((uint64_t)x6 * x8) + ((uint64_t)x8 * x6)));
- { uint64_t x17 = ((((uint64_t)(x4 + x12) * (x8 + x13)) + (((uint64_t)(x6 + x14) * (x6 + x14)) + ((uint64_t)(x8 + x13) * (x4 + x12)))) - (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + ((uint64_t)x8 * x4))));
- { uint64_t x18 = ((((uint64_t)(x2 + x10) * (x8 + x13)) + (((uint64_t)(x4 + x12) * (x6 + x14)) + (((uint64_t)(x6 + x14) * (x4 + x12)) + ((uint64_t)(x8 + x13) * (x2 + x10))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- { uint64_t x19 = ((((uint64_t)(x2 + x10) * (x6 + x14)) + (((uint64_t)(x4 + x12) * (x4 + x12)) + ((uint64_t)(x6 + x14) * (x2 + x10)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- { uint64_t x20 = ((((uint64_t)(x2 + x10) * (x4 + x12)) + ((uint64_t)(x4 + x12) * (x2 + x10))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- { uint64_t x21 = (((uint64_t)(x2 + x10) * (x2 + x10)) - ((uint64_t)x2 * x2));
- { uint64_t x22 = (((((uint64_t)x8 * x8) + ((uint64_t)x13 * x13)) + x19) + x15);
- { uint64_t x23 = ((((((uint64_t)x6 * x8) + ((uint64_t)x8 * x6)) + (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))) + x20) + x16);
- { uint64_t x24 = ((((((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + ((uint64_t)x8 * x4))) + (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12)))) + x21) + x17);
- { uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))));
- { uint64_t x26 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10)))) + x15);
- { uint64_t x27 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x10 * x12) + ((uint64_t)x12 * x10))) + x16);
- { uint64_t x28 = ((((uint64_t)x2 * x2) + ((uint64_t)x10 * x10)) + x17);
- { uint64_t x29 = (x25 >> 0x1b);
- { uint32_t x30 = ((uint32_t)x25 & 0x7ffffff);
- { uint64_t x31 = (x18 >> 0x1b);
- { uint32_t x32 = ((uint32_t)x18 & 0x7ffffff);
- { uint64_t x33 = ((0x8000000 * x31) + x32);
- { uint64_t x34 = (x33 >> 0x1b);
- { uint32_t x35 = ((uint32_t)x33 & 0x7ffffff);
- { uint64_t x36 = ((x29 + x24) + x34);
- { uint64_t x37 = (x36 >> 0x1b);
- { uint32_t x38 = ((uint32_t)x36 & 0x7ffffff);
- { uint64_t x39 = (x28 + x34);
- { uint64_t x40 = (x39 >> 0x1b);
- { uint32_t x41 = ((uint32_t)x39 & 0x7ffffff);
- { uint64_t x42 = (x37 + x23);
- { uint64_t x43 = (x42 >> 0x1b);
- { uint32_t x44 = ((uint32_t)x42 & 0x7ffffff);
- { uint64_t x45 = (x40 + x27);
- { uint64_t x46 = (x45 >> 0x1b);
- { uint32_t x47 = ((uint32_t)x45 & 0x7ffffff);
- { uint64_t x48 = (x43 + x22);
- { uint64_t x49 = (x48 >> 0x1b);
- { uint32_t x50 = ((uint32_t)x48 & 0x7ffffff);
- { uint64_t x51 = (x46 + x26);
- { uint64_t x52 = (x51 >> 0x1b);
- { uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
- { uint64_t x54 = (x49 + x35);
- { uint32_t x55 = (uint32_t) (x54 >> 0x1b);
- { uint32_t x56 = ((uint32_t)x54 & 0x7ffffff);
- { uint64_t x57 = (x52 + x30);
- { uint32_t x58 = (uint32_t) (x57 >> 0x1b);
- { uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
- { uint64_t x60 = (((uint64_t)0x8000000 * x55) + x56);
- { uint32_t x61 = (uint32_t) (x60 >> 0x1b);
- { uint32_t x62 = ((uint32_t)x60 & 0x7ffffff);
- { uint32_t x63 = ((x58 + x38) + x61);
- { uint32_t x64 = (x63 >> 0x1b);
- { uint32_t x65 = (x63 & 0x7ffffff);
- { uint32_t x66 = (x41 + x61);
- { uint32_t x67 = (x66 >> 0x1b);
- { uint32_t x68 = (x66 & 0x7ffffff);
- out[0] = x68;
- out[1] = (x67 + x47);
- out[2] = x53;
- out[3] = x59;
- out[4] = x65;
- out[5] = (x64 + x44);
- out[6] = x50;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquare.v b/src/Specific/solinas32_2e216m2e108m1/fesquare.v
deleted file mode 100644
index a7839aa17..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.log b/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.log
deleted file mode 100644
index fe3bc9190..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (((uint64_t)(x8 + x13) * (x8 + x13)) - ((uint64_t)x8 * x8));
- uint64_t x16 = ((((uint64_t)(x6 + x14) * (x8 + x13)) + ((uint64_t)(x8 + x13) * (x6 + x14))) - (((uint64_t)x6 * x8) + ((uint64_t)x8 * x6)));
- uint64_t x17 = ((((uint64_t)(x4 + x12) * (x8 + x13)) + (((uint64_t)(x6 + x14) * (x6 + x14)) + ((uint64_t)(x8 + x13) * (x4 + x12)))) - (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + ((uint64_t)x8 * x4))));
- uint64_t x18 = ((((uint64_t)(x2 + x10) * (x8 + x13)) + (((uint64_t)(x4 + x12) * (x6 + x14)) + (((uint64_t)(x6 + x14) * (x4 + x12)) + ((uint64_t)(x8 + x13) * (x2 + x10))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- uint64_t x19 = ((((uint64_t)(x2 + x10) * (x6 + x14)) + (((uint64_t)(x4 + x12) * (x4 + x12)) + ((uint64_t)(x6 + x14) * (x2 + x10)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- uint64_t x20 = ((((uint64_t)(x2 + x10) * (x4 + x12)) + ((uint64_t)(x4 + x12) * (x2 + x10))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- uint64_t x21 = (((uint64_t)(x2 + x10) * (x2 + x10)) - ((uint64_t)x2 * x2));
- uint64_t x22 = (((((uint64_t)x8 * x8) + ((uint64_t)x13 * x13)) + x19) + x15);
- uint64_t x23 = ((((((uint64_t)x6 * x8) + ((uint64_t)x8 * x6)) + (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))) + x20) + x16);
- uint64_t x24 = ((((((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + ((uint64_t)x8 * x4))) + (((uint64_t)x12 * x13) + (((uint64_t)x14 * x14) + ((uint64_t)x13 * x12)))) + x21) + x17);
- uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x13) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x13 * x10)))));
- uint64_t x26 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10)))) + x15);
- uint64_t x27 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x10 * x12) + ((uint64_t)x12 * x10))) + x16);
- uint64_t x28 = ((((uint64_t)x2 * x2) + ((uint64_t)x10 * x10)) + x17);
- uint64_t x29 = (x25 >> 0x1b);
- uint32_t x30 = ((uint32_t)x25 & 0x7ffffff);
- uint64_t x31 = (x18 >> 0x1b);
- uint32_t x32 = ((uint32_t)x18 & 0x7ffffff);
- uint64_t x33 = ((0x8000000 * x31) + x32);
- uint64_t x34 = (x33 >> 0x1b);
- uint32_t x35 = ((uint32_t)x33 & 0x7ffffff);
- uint64_t x36 = ((x29 + x24) + x34);
- uint64_t x37 = (x36 >> 0x1b);
- uint32_t x38 = ((uint32_t)x36 & 0x7ffffff);
- uint64_t x39 = (x28 + x34);
- uint64_t x40 = (x39 >> 0x1b);
- uint32_t x41 = ((uint32_t)x39 & 0x7ffffff);
- uint64_t x42 = (x37 + x23);
- uint64_t x43 = (x42 >> 0x1b);
- uint32_t x44 = ((uint32_t)x42 & 0x7ffffff);
- uint64_t x45 = (x40 + x27);
- uint64_t x46 = (x45 >> 0x1b);
- uint32_t x47 = ((uint32_t)x45 & 0x7ffffff);
- uint64_t x48 = (x43 + x22);
- uint64_t x49 = (x48 >> 0x1b);
- uint32_t x50 = ((uint32_t)x48 & 0x7ffffff);
- uint64_t x51 = (x46 + x26);
- uint64_t x52 = (x51 >> 0x1b);
- uint32_t x53 = ((uint32_t)x51 & 0x7ffffff);
- uint64_t x54 = (x49 + x35);
- uint32_t x55 = (uint32_t) (x54 >> 0x1b);
- uint32_t x56 = ((uint32_t)x54 & 0x7ffffff);
- uint64_t x57 = (x52 + x30);
- uint32_t x58 = (uint32_t) (x57 >> 0x1b);
- uint32_t x59 = ((uint32_t)x57 & 0x7ffffff);
- uint64_t x60 = (((uint64_t)0x8000000 * x55) + x56);
- uint32_t x61 = (uint32_t) (x60 >> 0x1b);
- uint32_t x62 = ((uint32_t)x60 & 0x7ffffff);
- uint32_t x63 = ((x58 + x38) + x61);
- uint32_t x64 = (x63 >> 0x1b);
- uint32_t x65 = (x63 & 0x7ffffff);
- uint32_t x66 = (x41 + x61);
- uint32_t x67 = (x66 >> 0x1b);
- uint32_t x68 = (x66 & 0x7ffffff);
- return (Return x62, Return x50, (x64 + x44), Return x65, Return x59, Return x53, (x67 + x47), Return x68))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v b/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v
deleted file mode 100644
index 164da0fe2..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesub.c b/src/Specific/solinas32_2e216m2e108m1/fesub.c
deleted file mode 100644
index 282def963..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0xffffffe + x5) - x19);
- out[1] = ((0xffffffe + x7) - x21);
- out[2] = ((0xffffffe + x9) - x23);
- out[3] = ((0xffffffe + x11) - x25);
- out[4] = ((0xffffffc + x13) - x27);
- out[5] = ((0xffffffe + x15) - x29);
- out[6] = ((0xffffffe + x17) - x31);
- out[7] = ((0xffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesub.v b/src/Specific/solinas32_2e216m2e108m1/fesub.v
deleted file mode 100644
index 3d8678db6..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.log b/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.log
deleted file mode 100644
index 2176f748f..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xffffffe + x16) - x30), ((0xffffffe + x17) - x31), ((0xffffffe + x15) - x29), ((0xffffffc + x13) - x27), ((0xffffffe + x11) - x25), ((0xffffffe + x9) - x23), ((0xffffffe + x7) - x21), ((0xffffffe + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.v b/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.v
deleted file mode 100644
index b7d97af83..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1/freeze.c b/src/Specific/solinas32_2e216m2e108m1/freeze.c
deleted file mode 100644
index b491fbbf7..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x7ffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7ffffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7fffffe);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7ffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7ffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0x7ffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0x7ffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0x7ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0x7ffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0x7fffffe);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0x7ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0x7ffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0x7ffffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e216m2e108m1/freeze.v b/src/Specific/solinas32_2e216m2e108m1/freeze.v
deleted file mode 100644
index 7fd34e08d..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.log b/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.log
deleted file mode 100644
index 18b6d8b72..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0x7ffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0x7ffffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x7fffffe);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0x7ffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0x7ffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0x7ffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0x7ffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0x7ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0x7ffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0x7fffffe);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0x7ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0x7ffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0x7ffffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v b/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v
deleted file mode 100644
index 139156532..000000000
--- a/src/Specific/solinas32_2e216m2e108m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e216m2e108m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/CurveParameters.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..bb4a23959
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^216 - 2^108 - 1
+Base: 21.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 21 + 3/5;
+ bitwidth := 32;
+ s := 2^216;
+ c := [(1, 1); (2^108, 1)];
+ carry_chains := Some [[4; 9]; [5; 0; 6; 1; 7; 2; 8; 3; 9; 4]; [5; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/Synthesis.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..5ba21dd82
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/compiler.sh b/src/Specific/solinas32_2e216m2e108m1_10limbs/compiler.sh
new file mode 100755
index 000000000..7a3ecd314
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,22,21,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1' "$@"
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/compilerxx.sh b/src/Specific/solinas32_2e216m2e108m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..5a2f5939b
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,22,21,22,21,22,22,21,22,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1' "$@"
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.v
new file mode 100644
index 000000000..17083aa6e
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..d245c0ca3
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.v
new file mode 100644
index 000000000..2232168df
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..ef7cd3293
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.v
new file mode 100644
index 000000000..1ff9fb27f
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7030e585a
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.v
new file mode 100644
index 000000000..fcb9703ef
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..402cd4b29
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.v
new file mode 100644
index 000000000..87a324611
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..576c37352
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e216m2e108m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..b3ffc91d8
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**216 - 2**108 - 1' -Dmodulus_bytes='21.6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e216m2e108m1/CurveParameters.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/CurveParameters.v
index c780f984b..c780f984b 100644
--- a/src/Specific/solinas32_2e216m2e108m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/Synthesis.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..c5af7afed
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e216m2e108m1/compiler.sh b/src/Specific/solinas32_2e216m2e108m1_8limbs/compiler.sh
index 8ede41c59..8ede41c59 100755
--- a/src/Specific/solinas32_2e216m2e108m1/compiler.sh
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e216m2e108m1/compilerxx.sh b/src/Specific/solinas32_2e216m2e108m1_8limbs/compilerxx.sh
index 7621f5630..7621f5630 100755
--- a/src/Specific/solinas32_2e216m2e108m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/feadd.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/feadd.v
new file mode 100644
index 000000000..a8f93eea3
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..5e0c39b49
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/femul.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/femul.v
new file mode 100644
index 000000000..499abb395
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/femulDisplay.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..4df3e5f0c
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquare.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquare.v
new file mode 100644
index 000000000..4552db923
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..515965576
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/fesub.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesub.v
new file mode 100644
index 000000000..bedc691c0
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..ecd215720
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/freeze.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/freeze.v
new file mode 100644
index 000000000..51d348874
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e216m2e108m1_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..472cf9877
--- /dev/null
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e216m2e108m1_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e216m2e108m1/py_interpreter.sh b/src/Specific/solinas32_2e216m2e108m1_8limbs/py_interpreter.sh
index c2779db9b..c2779db9b 100755
--- a/src/Specific/solinas32_2e216m2e108m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e216m2e108m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e221m3/CurveParameters.v b/src/Specific/solinas32_2e221m3/CurveParameters.v
deleted file mode 100644
index 44a491d2e..000000000
--- a/src/Specific/solinas32_2e221m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^221 - 3
-Base: 22.1
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 22 + 1/10;
- bitwidth := 32;
- s := 2^221;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e221m3/Synthesis.v b/src/Specific/solinas32_2e221m3/Synthesis.v
deleted file mode 100644
index f3584bac1..000000000
--- a/src/Specific/solinas32_2e221m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e221m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e221m3/compiler.sh b/src/Specific/solinas32_2e221m3/compiler.sh
deleted file mode 100755
index cf3f554ad..000000000
--- a/src/Specific/solinas32_2e221m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,22,22,22,22,22}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3/compilerxx.sh b/src/Specific/solinas32_2e221m3/compilerxx.sh
deleted file mode 100755
index 42a1fe60c..000000000
--- a/src/Specific/solinas32_2e221m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,22,22,22,22,22}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3/feadd.c b/src/Specific/solinas32_2e221m3/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e221m3/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e221m3/feadd.v b/src/Specific/solinas32_2e221m3/feadd.v
deleted file mode 100644
index 06637ac89..000000000
--- a/src/Specific/solinas32_2e221m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e221m3/feaddDisplay.log b/src/Specific/solinas32_2e221m3/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e221m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3/feaddDisplay.v b/src/Specific/solinas32_2e221m3/feaddDisplay.v
deleted file mode 100644
index af15189a8..000000000
--- a/src/Specific/solinas32_2e221m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e221m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e221m3/femul.c b/src/Specific/solinas32_2e221m3/femul.c
deleted file mode 100644
index 92caba461..000000000
--- a/src/Specific/solinas32_2e221m3/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x3 * ((uint64_t)x20 * x38)));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x3 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x3 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x3 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x3 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x3 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x3 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x3 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x3 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- { uint32_t x50 = (uint32_t) (x49 >> 0x17);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- { uint64_t x52 = (x50 + x48);
- { uint32_t x53 = (uint32_t) (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x47);
- { uint32_t x56 = (uint32_t) (x55 >> 0x16);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- { uint64_t x58 = (x56 + x46);
- { uint32_t x59 = (uint32_t) (x58 >> 0x16);
- { uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- { uint64_t x61 = (x59 + x45);
- { uint32_t x62 = (uint32_t) (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x44);
- { uint32_t x65 = (uint32_t) (x64 >> 0x16);
- { uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- { uint64_t x67 = (x65 + x43);
- { uint32_t x68 = (uint32_t) (x67 >> 0x16);
- { uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- { uint64_t x70 = (x68 + x42);
- { uint32_t x71 = (uint32_t) (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x71 + x41);
- { uint32_t x74 = (uint32_t) (x73 >> 0x16);
- { uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
- { uint64_t x76 = (x74 + x40);
- { uint32_t x77 = (uint32_t) (x76 >> 0x16);
- { uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- { uint32_t x79 = (x51 + (0x3 * x77));
- { uint32_t x80 = (x79 >> 0x17);
- { uint32_t x81 = (x79 & 0x7fffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x16);
- { uint32_t x84 = (x82 & 0x3fffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e221m3/femul.v b/src/Specific/solinas32_2e221m3/femul.v
deleted file mode 100644
index 252dff46c..000000000
--- a/src/Specific/solinas32_2e221m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e221m3/femulDisplay.log b/src/Specific/solinas32_2e221m3/femulDisplay.log
deleted file mode 100644
index e87001b95..000000000
--- a/src/Specific/solinas32_2e221m3/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x3 * ((uint64_t)x20 * x38)));
- uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x3 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x3 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x3 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x3 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x3 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x3 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x3 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x3 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- uint32_t x50 = (uint32_t) (x49 >> 0x17);
- uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- uint64_t x52 = (x50 + x48);
- uint32_t x53 = (uint32_t) (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x47);
- uint32_t x56 = (uint32_t) (x55 >> 0x16);
- uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- uint64_t x58 = (x56 + x46);
- uint32_t x59 = (uint32_t) (x58 >> 0x16);
- uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- uint64_t x61 = (x59 + x45);
- uint32_t x62 = (uint32_t) (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x44);
- uint32_t x65 = (uint32_t) (x64 >> 0x16);
- uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- uint64_t x67 = (x65 + x43);
- uint32_t x68 = (uint32_t) (x67 >> 0x16);
- uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- uint64_t x70 = (x68 + x42);
- uint32_t x71 = (uint32_t) (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x71 + x41);
- uint32_t x74 = (uint32_t) (x73 >> 0x16);
- uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
- uint64_t x76 = (x74 + x40);
- uint32_t x77 = (uint32_t) (x76 >> 0x16);
- uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- uint32_t x79 = (x51 + (0x3 * x77));
- uint32_t x80 = (x79 >> 0x17);
- uint32_t x81 = (x79 & 0x7fffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x16);
- uint32_t x84 = (x82 & 0x3fffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3/femulDisplay.v b/src/Specific/solinas32_2e221m3/femulDisplay.v
deleted file mode 100644
index 688dd40db..000000000
--- a/src/Specific/solinas32_2e221m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e221m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e221m3/fesquare.c b/src/Specific/solinas32_2e221m3/fesquare.c
deleted file mode 100644
index 8f03a389f..000000000
--- a/src/Specific/solinas32_2e221m3/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((uint64_t)x17 * x17)));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- { uint32_t x29 = (uint32_t) (x28 >> 0x17);
- { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- { uint64_t x31 = (x29 + x27);
- { uint32_t x32 = (uint32_t) (x31 >> 0x16);
- { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- { uint64_t x34 = (x32 + x26);
- { uint32_t x35 = (uint32_t) (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x35 + x25);
- { uint32_t x38 = (uint32_t) (x37 >> 0x16);
- { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- { uint64_t x40 = (x38 + x24);
- { uint32_t x41 = (uint32_t) (x40 >> 0x16);
- { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- { uint64_t x43 = (x41 + x23);
- { uint32_t x44 = (uint32_t) (x43 >> 0x16);
- { uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- { uint64_t x46 = (x44 + x22);
- { uint32_t x47 = (uint32_t) (x46 >> 0x16);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- { uint64_t x49 = (x47 + x21);
- { uint32_t x50 = (uint32_t) (x49 >> 0x16);
- { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- { uint64_t x52 = (x50 + x20);
- { uint32_t x53 = (uint32_t) (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x19);
- { uint32_t x56 = (uint32_t) (x55 >> 0x16);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- { uint32_t x58 = (x30 + (0x3 * x56));
- { uint32_t x59 = (x58 >> 0x17);
- { uint32_t x60 = (x58 & 0x7fffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x16);
- { uint32_t x63 = (x61 & 0x3fffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e221m3/fesquare.v b/src/Specific/solinas32_2e221m3/fesquare.v
deleted file mode 100644
index f6756cf56..000000000
--- a/src/Specific/solinas32_2e221m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e221m3/fesquareDisplay.log b/src/Specific/solinas32_2e221m3/fesquareDisplay.log
deleted file mode 100644
index e931914f8..000000000
--- a/src/Specific/solinas32_2e221m3/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * ((uint64_t)x17 * x17)));
- uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- uint32_t x29 = (uint32_t) (x28 >> 0x17);
- uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- uint64_t x31 = (x29 + x27);
- uint32_t x32 = (uint32_t) (x31 >> 0x16);
- uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- uint64_t x34 = (x32 + x26);
- uint32_t x35 = (uint32_t) (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x35 + x25);
- uint32_t x38 = (uint32_t) (x37 >> 0x16);
- uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- uint64_t x40 = (x38 + x24);
- uint32_t x41 = (uint32_t) (x40 >> 0x16);
- uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- uint64_t x43 = (x41 + x23);
- uint32_t x44 = (uint32_t) (x43 >> 0x16);
- uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- uint64_t x46 = (x44 + x22);
- uint32_t x47 = (uint32_t) (x46 >> 0x16);
- uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- uint64_t x49 = (x47 + x21);
- uint32_t x50 = (uint32_t) (x49 >> 0x16);
- uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- uint64_t x52 = (x50 + x20);
- uint32_t x53 = (uint32_t) (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x19);
- uint32_t x56 = (uint32_t) (x55 >> 0x16);
- uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- uint32_t x58 = (x30 + (0x3 * x56));
- uint32_t x59 = (x58 >> 0x17);
- uint32_t x60 = (x58 & 0x7fffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x16);
- uint32_t x63 = (x61 & 0x3fffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3/fesquareDisplay.v b/src/Specific/solinas32_2e221m3/fesquareDisplay.v
deleted file mode 100644
index 62ca4bc49..000000000
--- a/src/Specific/solinas32_2e221m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e221m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e221m3/fesub.c b/src/Specific/solinas32_2e221m3/fesub.c
deleted file mode 100644
index d324a881f..000000000
--- a/src/Specific/solinas32_2e221m3/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0xfffffa + x5) - x23);
- out[1] = ((0x7ffffe + x7) - x25);
- out[2] = ((0x7ffffe + x9) - x27);
- out[3] = ((0x7ffffe + x11) - x29);
- out[4] = ((0x7ffffe + x13) - x31);
- out[5] = ((0x7ffffe + x15) - x33);
- out[6] = ((0x7ffffe + x17) - x35);
- out[7] = ((0x7ffffe + x19) - x37);
- out[8] = ((0x7ffffe + x21) - x39);
- out[9] = ((0x7ffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e221m3/fesub.v b/src/Specific/solinas32_2e221m3/fesub.v
deleted file mode 100644
index b6f2af8e0..000000000
--- a/src/Specific/solinas32_2e221m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e221m3/fesubDisplay.log b/src/Specific/solinas32_2e221m3/fesubDisplay.log
deleted file mode 100644
index b3eb238fa..000000000
--- a/src/Specific/solinas32_2e221m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x7ffffe + x20) - x38), ((0x7ffffe + x21) - x39), ((0x7ffffe + x19) - x37), ((0x7ffffe + x17) - x35), ((0x7ffffe + x15) - x33), ((0x7ffffe + x13) - x31), ((0x7ffffe + x11) - x29), ((0x7ffffe + x9) - x27), ((0x7ffffe + x7) - x25), ((0xfffffa + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3/fesubDisplay.v b/src/Specific/solinas32_2e221m3/fesubDisplay.v
deleted file mode 100644
index d36a0364d..000000000
--- a/src/Specific/solinas32_2e221m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e221m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e221m3/freeze.c b/src/Specific/solinas32_2e221m3/freeze.c
deleted file mode 100644
index 2cf1e5e15..000000000
--- a/src/Specific/solinas32_2e221m3/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffd);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x3fffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x7ffffd);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x3fffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x3fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x3fffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x3fffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x3fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x3fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x3fffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x3fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x3fffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e221m3/freeze.v b/src/Specific/solinas32_2e221m3/freeze.v
deleted file mode 100644
index 37638f083..000000000
--- a/src/Specific/solinas32_2e221m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e221m3/freezeDisplay.log b/src/Specific/solinas32_2e221m3/freezeDisplay.log
deleted file mode 100644
index ed418de2c..000000000
--- a/src/Specific/solinas32_2e221m3/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffd);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x3fffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x7ffffd);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x3fffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x3fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x3fffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x3fffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x3fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x3fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x3fffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x3fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x3fffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e221m3/freezeDisplay.v b/src/Specific/solinas32_2e221m3/freezeDisplay.v
deleted file mode 100644
index 410a669bb..000000000
--- a/src/Specific/solinas32_2e221m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e221m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e221m3/py_interpreter.sh b/src/Specific/solinas32_2e221m3/py_interpreter.sh
deleted file mode 100755
index b4abf5f8e..000000000
--- a/src/Specific/solinas32_2e221m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**221 - 3' -Dmodulus_bytes='22.1' -Da24='121665'
diff --git a/src/Specific/solinas32_2e221m3_8limbs/CurveParameters.v b/src/Specific/solinas32_2e221m3_8limbs/CurveParameters.v
new file mode 100644
index 000000000..8b481f704
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^221 - 3
+Base: 27.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 27 + 5/8;
+ bitwidth := 32;
+ s := 2^221;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/Synthesis.v b/src/Specific/solinas32_2e221m3_8limbs/Synthesis.v
new file mode 100644
index 000000000..3b9687cf0
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/compiler.sh b/src/Specific/solinas32_2e221m3_8limbs/compiler.sh
new file mode 100755
index 000000000..8addfd08c
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27,28,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3_8limbs/compilerxx.sh b/src/Specific/solinas32_2e221m3_8limbs/compilerxx.sh
new file mode 100755
index 000000000..d607013c0
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,27,28,28,27,28,27}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3_8limbs/feadd.v b/src/Specific/solinas32_2e221m3_8limbs/feadd.v
new file mode 100644
index 000000000..3c92a8a62
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.v b/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..7b29a28f9
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/femul.v b/src/Specific/solinas32_2e221m3_8limbs/femul.v
new file mode 100644
index 000000000..3e8884f19
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.v b/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.v
new file mode 100644
index 000000000..846eff827
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesquare.v b/src/Specific/solinas32_2e221m3_8limbs/fesquare.v
new file mode 100644
index 000000000..c309620a9
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.v b/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4b0de58cf
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesub.v b/src/Specific/solinas32_2e221m3_8limbs/fesub.v
new file mode 100644
index 000000000..8fef42652
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.v b/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..0207fbb6f
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/freeze.v b/src/Specific/solinas32_2e221m3_8limbs/freeze.v
new file mode 100644
index 000000000..214c8676a
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.v b/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..841706328
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e221m3_8limbs/py_interpreter.sh b/src/Specific/solinas32_2e221m3_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..19814b752
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**221 - 3' -Dmodulus_bytes='27.625' -Da24='121665'
diff --git a/src/Specific/solinas32_2e221m3_9limbs/CurveParameters.v b/src/Specific/solinas32_2e221m3_9limbs/CurveParameters.v
new file mode 100644
index 000000000..f7ed271a7
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^221 - 3
+Base: 24 + 5/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 24 + 5/9;
+ bitwidth := 32;
+ s := 2^221;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/Synthesis.v b/src/Specific/solinas32_2e221m3_9limbs/Synthesis.v
new file mode 100644
index 000000000..f9ca8e780
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/compiler.sh b/src/Specific/solinas32_2e221m3_9limbs/compiler.sh
new file mode 100755
index 000000000..8c3232b70
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3_9limbs/compilerxx.sh b/src/Specific/solinas32_2e221m3_9limbs/compilerxx.sh
new file mode 100755
index 000000000..974dc27cf
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,24,25,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas32_2e221m3_9limbs/feadd.v b/src/Specific/solinas32_2e221m3_9limbs/feadd.v
new file mode 100644
index 000000000..65b4594d5
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..11e1379be
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/femul.v b/src/Specific/solinas32_2e221m3_9limbs/femul.v
new file mode 100644
index 000000000..311587e84
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.v b/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.v
new file mode 100644
index 000000000..9fb957c7d
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesquare.v b/src/Specific/solinas32_2e221m3_9limbs/fesquare.v
new file mode 100644
index 000000000..beeda0579
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1d5fbce10
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesub.v b/src/Specific/solinas32_2e221m3_9limbs/fesub.v
new file mode 100644
index 000000000..90bbfa0bd
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..0bf002a4d
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/freeze.v b/src/Specific/solinas32_2e221m3_9limbs/freeze.v
new file mode 100644
index 000000000..efadf1a5a
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..b3de6ffdd
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e221m3_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e221m3_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e221m3_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..c7fb75c2b
--- /dev/null
+++ b/src/Specific/solinas32_2e221m3_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**221 - 3' -Dmodulus_bytes='24 + 5/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e222m117/Synthesis.v b/src/Specific/solinas32_2e222m117/Synthesis.v
deleted file mode 100644
index fd529f3fc..000000000
--- a/src/Specific/solinas32_2e222m117/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e222m117.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e222m117/feadd.c b/src/Specific/solinas32_2e222m117/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e222m117/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e222m117/feadd.v b/src/Specific/solinas32_2e222m117/feadd.v
deleted file mode 100644
index a9e0adbea..000000000
--- a/src/Specific/solinas32_2e222m117/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e222m117/feaddDisplay.log b/src/Specific/solinas32_2e222m117/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e222m117/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117/feaddDisplay.v b/src/Specific/solinas32_2e222m117/feaddDisplay.v
deleted file mode 100644
index 461e0769a..000000000
--- a/src/Specific/solinas32_2e222m117/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e222m117.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e222m117/femul.c b/src/Specific/solinas32_2e222m117/femul.c
deleted file mode 100644
index a890cbb84..000000000
--- a/src/Specific/solinas32_2e222m117/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x75 * ((uint64_t)x20 * x38)));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x75 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x75 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x75 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x75 * (((uint64_t)x15 * x38) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((uint64_t)x20 * x33)))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x75 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x75 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x75 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x75 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- { uint64_t x50 = (x49 >> 0x17);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- { uint64_t x52 = (x50 + x48);
- { uint64_t x53 = (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x47);
- { uint64_t x56 = (x55 >> 0x16);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- { uint64_t x58 = (x56 + x46);
- { uint64_t x59 = (x58 >> 0x16);
- { uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- { uint64_t x61 = (x59 + x45);
- { uint64_t x62 = (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x44);
- { uint64_t x65 = (x64 >> 0x17);
- { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- { uint64_t x67 = (x65 + x43);
- { uint64_t x68 = (x67 >> 0x16);
- { uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- { uint64_t x70 = (x68 + x42);
- { uint64_t x71 = (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x71 + x41);
- { uint64_t x74 = (x73 >> 0x16);
- { uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
- { uint64_t x76 = (x74 + x40);
- { uint32_t x77 = (uint32_t) (x76 >> 0x16);
- { uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- { uint64_t x79 = (x51 + ((uint64_t)0x75 * x77));
- { uint32_t x80 = (uint32_t) (x79 >> 0x17);
- { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x16);
- { uint32_t x84 = (x82 & 0x3fffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e222m117/femul.v b/src/Specific/solinas32_2e222m117/femul.v
deleted file mode 100644
index 2fb80aed8..000000000
--- a/src/Specific/solinas32_2e222m117/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e222m117/femulDisplay.log b/src/Specific/solinas32_2e222m117/femulDisplay.log
deleted file mode 100644
index 42ac8e79b..000000000
--- a/src/Specific/solinas32_2e222m117/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x75 * ((uint64_t)x20 * x38)));
- uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x75 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x75 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x75 * ((0x2 * ((uint64_t)x17 * x38)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + (0x2 * ((uint64_t)x20 * x35)))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x75 * (((uint64_t)x15 * x38) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((uint64_t)x20 * x33)))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x75 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + ((0x2 * ((uint64_t)x17 * x37)) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x75 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((0x2 * ((uint64_t)x17 * x35)) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x75 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x75 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- uint64_t x50 = (x49 >> 0x17);
- uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- uint64_t x52 = (x50 + x48);
- uint64_t x53 = (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x47);
- uint64_t x56 = (x55 >> 0x16);
- uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- uint64_t x58 = (x56 + x46);
- uint64_t x59 = (x58 >> 0x16);
- uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- uint64_t x61 = (x59 + x45);
- uint64_t x62 = (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x44);
- uint64_t x65 = (x64 >> 0x17);
- uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- uint64_t x67 = (x65 + x43);
- uint64_t x68 = (x67 >> 0x16);
- uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- uint64_t x70 = (x68 + x42);
- uint64_t x71 = (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x71 + x41);
- uint64_t x74 = (x73 >> 0x16);
- uint32_t x75 = ((uint32_t)x73 & 0x3fffff);
- uint64_t x76 = (x74 + x40);
- uint32_t x77 = (uint32_t) (x76 >> 0x16);
- uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- uint64_t x79 = (x51 + ((uint64_t)0x75 * x77));
- uint32_t x80 = (uint32_t) (x79 >> 0x17);
- uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x16);
- uint32_t x84 = (x82 & 0x3fffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117/femulDisplay.v b/src/Specific/solinas32_2e222m117/femulDisplay.v
deleted file mode 100644
index c67c78128..000000000
--- a/src/Specific/solinas32_2e222m117/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e222m117.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e222m117/fesquare.c b/src/Specific/solinas32_2e222m117/fesquare.c
deleted file mode 100644
index 5d1995438..000000000
--- a/src/Specific/solinas32_2e222m117/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x75 * ((uint64_t)x17 * x17)));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x75 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x75 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x75 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x75 * (((uint64_t)x12 * x17) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((uint64_t)x17 * x12)))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x75 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x75 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x75 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x75 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- { uint64_t x29 = (x28 >> 0x17);
- { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- { uint64_t x31 = (x29 + x27);
- { uint64_t x32 = (x31 >> 0x16);
- { uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- { uint64_t x34 = (x32 + x26);
- { uint64_t x35 = (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x35 + x25);
- { uint64_t x38 = (x37 >> 0x16);
- { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- { uint64_t x40 = (x38 + x24);
- { uint64_t x41 = (x40 >> 0x16);
- { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- { uint64_t x43 = (x41 + x23);
- { uint64_t x44 = (x43 >> 0x17);
- { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
- { uint64_t x46 = (x44 + x22);
- { uint64_t x47 = (x46 >> 0x16);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- { uint64_t x49 = (x47 + x21);
- { uint64_t x50 = (x49 >> 0x16);
- { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- { uint64_t x52 = (x50 + x20);
- { uint64_t x53 = (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x19);
- { uint32_t x56 = (uint32_t) (x55 >> 0x16);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- { uint64_t x58 = (x30 + ((uint64_t)0x75 * x56));
- { uint32_t x59 = (uint32_t) (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x16);
- { uint32_t x63 = (x61 & 0x3fffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e222m117/fesquare.v b/src/Specific/solinas32_2e222m117/fesquare.v
deleted file mode 100644
index 93f73e996..000000000
--- a/src/Specific/solinas32_2e222m117/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e222m117/fesquareDisplay.log b/src/Specific/solinas32_2e222m117/fesquareDisplay.log
deleted file mode 100644
index ea75716a5..000000000
--- a/src/Specific/solinas32_2e222m117/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x75 * ((uint64_t)x17 * x17)));
- uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x75 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x75 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x75 * ((0x2 * ((uint64_t)x14 * x17)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (0x2 * ((uint64_t)x17 * x14)))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x75 * (((uint64_t)x12 * x17) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((uint64_t)x17 * x12)))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x75 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x75 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x75 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x75 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- uint64_t x29 = (x28 >> 0x17);
- uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- uint64_t x31 = (x29 + x27);
- uint64_t x32 = (x31 >> 0x16);
- uint32_t x33 = ((uint32_t)x31 & 0x3fffff);
- uint64_t x34 = (x32 + x26);
- uint64_t x35 = (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x35 + x25);
- uint64_t x38 = (x37 >> 0x16);
- uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- uint64_t x40 = (x38 + x24);
- uint64_t x41 = (x40 >> 0x16);
- uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- uint64_t x43 = (x41 + x23);
- uint64_t x44 = (x43 >> 0x17);
- uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
- uint64_t x46 = (x44 + x22);
- uint64_t x47 = (x46 >> 0x16);
- uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- uint64_t x49 = (x47 + x21);
- uint64_t x50 = (x49 >> 0x16);
- uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- uint64_t x52 = (x50 + x20);
- uint64_t x53 = (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x19);
- uint32_t x56 = (uint32_t) (x55 >> 0x16);
- uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- uint64_t x58 = (x30 + ((uint64_t)0x75 * x56));
- uint32_t x59 = (uint32_t) (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x16);
- uint32_t x63 = (x61 & 0x3fffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117/fesquareDisplay.v b/src/Specific/solinas32_2e222m117/fesquareDisplay.v
deleted file mode 100644
index 04b809cab..000000000
--- a/src/Specific/solinas32_2e222m117/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e222m117.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e222m117/fesub.c b/src/Specific/solinas32_2e222m117/fesub.c
deleted file mode 100644
index ebf300def..000000000
--- a/src/Specific/solinas32_2e222m117/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0xffff16 + x5) - x23);
- out[1] = ((0x7ffffe + x7) - x25);
- out[2] = ((0x7ffffe + x9) - x27);
- out[3] = ((0x7ffffe + x11) - x29);
- out[4] = ((0x7ffffe + x13) - x31);
- out[5] = ((0xfffffe + x15) - x33);
- out[6] = ((0x7ffffe + x17) - x35);
- out[7] = ((0x7ffffe + x19) - x37);
- out[8] = ((0x7ffffe + x21) - x39);
- out[9] = ((0x7ffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e222m117/fesub.v b/src/Specific/solinas32_2e222m117/fesub.v
deleted file mode 100644
index b32f7897d..000000000
--- a/src/Specific/solinas32_2e222m117/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e222m117/fesubDisplay.log b/src/Specific/solinas32_2e222m117/fesubDisplay.log
deleted file mode 100644
index 05a560f1e..000000000
--- a/src/Specific/solinas32_2e222m117/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x7ffffe + x20) - x38), ((0x7ffffe + x21) - x39), ((0x7ffffe + x19) - x37), ((0x7ffffe + x17) - x35), ((0xfffffe + x15) - x33), ((0x7ffffe + x13) - x31), ((0x7ffffe + x11) - x29), ((0x7ffffe + x9) - x27), ((0x7ffffe + x7) - x25), ((0xffff16 + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117/fesubDisplay.v b/src/Specific/solinas32_2e222m117/fesubDisplay.v
deleted file mode 100644
index debb728a9..000000000
--- a/src/Specific/solinas32_2e222m117/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e222m117.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e222m117/freeze.c b/src/Specific/solinas32_2e222m117/freeze.c
deleted file mode 100644
index 31e1b5c00..000000000
--- a/src/Specific/solinas32_2e222m117/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff8b);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x7fff8b);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x3fffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x3fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x3fffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x3fffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x7fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x3fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x3fffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x3fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x3fffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e222m117/freeze.v b/src/Specific/solinas32_2e222m117/freeze.v
deleted file mode 100644
index 690832a82..000000000
--- a/src/Specific/solinas32_2e222m117/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e222m117/freezeDisplay.log b/src/Specific/solinas32_2e222m117/freezeDisplay.log
deleted file mode 100644
index d4ff62712..000000000
--- a/src/Specific/solinas32_2e222m117/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff8b);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x7fff8b);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x3fffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x3fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x3fffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x3fffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x7fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x3fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x3fffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x3fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x3fffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e222m117/freezeDisplay.v b/src/Specific/solinas32_2e222m117/freezeDisplay.v
deleted file mode 100644
index 1668dc77a..000000000
--- a/src/Specific/solinas32_2e222m117/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e222m117.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e222m117/CurveParameters.v b/src/Specific/solinas32_2e222m117_10limbs/CurveParameters.v
index 75c7e2c96..75c7e2c96 100644
--- a/src/Specific/solinas32_2e222m117/CurveParameters.v
+++ b/src/Specific/solinas32_2e222m117_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e222m117_10limbs/Synthesis.v b/src/Specific/solinas32_2e222m117_10limbs/Synthesis.v
new file mode 100644
index 000000000..cb0f4c535
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e222m117/compiler.sh b/src/Specific/solinas32_2e222m117_10limbs/compiler.sh
index 0b90f8c56..0b90f8c56 100755
--- a/src/Specific/solinas32_2e222m117/compiler.sh
+++ b/src/Specific/solinas32_2e222m117_10limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e222m117/compilerxx.sh b/src/Specific/solinas32_2e222m117_10limbs/compilerxx.sh
index e637ecb93..e637ecb93 100755
--- a/src/Specific/solinas32_2e222m117/compilerxx.sh
+++ b/src/Specific/solinas32_2e222m117_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e222m117_10limbs/feadd.v b/src/Specific/solinas32_2e222m117_10limbs/feadd.v
new file mode 100644
index 000000000..79b253b51
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e222m117_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..e6839b871
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/femul.v b/src/Specific/solinas32_2e222m117_10limbs/femul.v
new file mode 100644
index 000000000..1f5231692
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/femulDisplay.v b/src/Specific/solinas32_2e222m117_10limbs/femulDisplay.v
new file mode 100644
index 000000000..95f82806c
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/fesquare.v b/src/Specific/solinas32_2e222m117_10limbs/fesquare.v
new file mode 100644
index 000000000..cdfde13a0
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e222m117_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b62b59ce9
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/fesub.v b/src/Specific/solinas32_2e222m117_10limbs/fesub.v
new file mode 100644
index 000000000..7927c2447
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e222m117_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..59b000ea3
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/freeze.v b/src/Specific/solinas32_2e222m117_10limbs/freeze.v
new file mode 100644
index 000000000..a57b515f3
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e222m117_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e222m117_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..874bbe919
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e222m117/py_interpreter.sh b/src/Specific/solinas32_2e222m117_10limbs/py_interpreter.sh
index c1d96cfbd..c1d96cfbd 100755
--- a/src/Specific/solinas32_2e222m117/py_interpreter.sh
+++ b/src/Specific/solinas32_2e222m117_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e222m117_9limbs/CurveParameters.v b/src/Specific/solinas32_2e222m117_9limbs/CurveParameters.v
new file mode 100644
index 000000000..f2eeeef9a
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^222 - 117
+Base: 24 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 24 + 2/3;
+ bitwidth := 32;
+ s := 2^222;
+ c := [(1, 117)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/Synthesis.v b/src/Specific/solinas32_2e222m117_9limbs/Synthesis.v
new file mode 100644
index 000000000..28806adee
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/compiler.sh b/src/Specific/solinas32_2e222m117_9limbs/compiler.sh
new file mode 100755
index 000000000..981466a59
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<222) - 117' "$@"
diff --git a/src/Specific/solinas32_2e222m117_9limbs/compilerxx.sh b/src/Specific/solinas32_2e222m117_9limbs/compilerxx.sh
new file mode 100755
index 000000000..2436beb8a
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<222) - 117' "$@"
diff --git a/src/Specific/solinas32_2e222m117_9limbs/feadd.v b/src/Specific/solinas32_2e222m117_9limbs/feadd.v
new file mode 100644
index 000000000..729d8f4d0
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..c3d0b96cc
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/femul.v b/src/Specific/solinas32_2e222m117_9limbs/femul.v
new file mode 100644
index 000000000..1f1a6837a
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.v b/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.v
new file mode 100644
index 000000000..063f2f0b9
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesquare.v b/src/Specific/solinas32_2e222m117_9limbs/fesquare.v
new file mode 100644
index 000000000..bc237e524
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..79b202e26
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesub.v b/src/Specific/solinas32_2e222m117_9limbs/fesub.v
new file mode 100644
index 000000000..43d42a85b
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..e655cca08
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/freeze.v b/src/Specific/solinas32_2e222m117_9limbs/freeze.v
new file mode 100644
index 000000000..ce8b1e7ad
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..0b187de68
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e222m117_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e222m117_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e222m117_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..e4ce5bef0
--- /dev/null
+++ b/src/Specific/solinas32_2e222m117_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**222 - 117' -Dmodulus_bytes='24 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v b/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v
deleted file mode 100644
index 97c22e1cd..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^224 - 2^96 + 1
-Base: 28
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 28;
- bitwidth := 32;
- s := 2^224;
- c := [(1, -1); (2^96, 1)];
- carry_chains := Some [[2; 7]; [3; 0; 4; 1; 5; 2; 6; 7]; [3; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e224m2e96p1/Synthesis.v b/src/Specific/solinas32_2e224m2e96p1/Synthesis.v
deleted file mode 100644
index c0986fa95..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e224m2e96p1/compiler.sh b/src/Specific/solinas32_2e224m2e96p1/compiler.sh
deleted file mode 100755
index aff694d72..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1/compilerxx.sh b/src/Specific/solinas32_2e224m2e96p1/compilerxx.sh
deleted file mode 100755
index 1455936bf..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,28,28,28,28,28,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1/feadd.c b/src/Specific/solinas32_2e224m2e96p1/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e224m2e96p1/feadd.v b/src/Specific/solinas32_2e224m2e96p1/feadd.v
deleted file mode 100644
index 9cc515388..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.log b/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.v b/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.v
deleted file mode 100644
index be3534695..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e224m2e96p1/femul.v b/src/Specific/solinas32_2e224m2e96p1/femul.v
deleted file mode 100644
index bc1b1eeb2..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v b/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v
deleted file mode 100644
index be19b3d67..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1/fesquare.v b/src/Specific/solinas32_2e224m2e96p1/fesquare.v
deleted file mode 100644
index 7f9bcbe64..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v b/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v
deleted file mode 100644
index 07a3583e6..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e224m2e96p1/fesub.v b/src/Specific/solinas32_2e224m2e96p1/fesub.v
deleted file mode 100644
index d5ae6ae66..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1/fesubDisplay.v b/src/Specific/solinas32_2e224m2e96p1/fesubDisplay.v
deleted file mode 100644
index 74e4a4332..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1/freeze.c b/src/Specific/solinas32_2e224m2e96p1/freeze.c
deleted file mode 100644
index c08c5d55d..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/freeze.c
+++ /dev/null
@@ -1,42 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, ℤ x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (0x0, Return x2, 0x1);
- { uint32_t x19, ℤ x20 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x17, Return x4, 0x0);
- { uint32_t x22, ℤ x23 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x20, Return x6, 0x0);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffff000);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint8_t x40 = ((uint8_t)x39 & 0x1);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, 0x0);
- { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x22, 0x0);
- { uint32_t x50 = (x39 & 0xffff000);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x25, Return x50);
- { uint32_t x54 = (x39 & 0xfffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x28, Return x54);
- { uint32_t x58 = (x39 & 0xfffffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x31, Return x58);
- { uint32_t x62 = (x39 & 0xfffffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x34, Return x62);
- { uint32_t x66 = (x39 & 0xfffffff);
- { uint32_t x68, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x37, Return x66);
- out[0] = x42;
- out[1] = x45;
- out[2] = x48;
- out[3] = x52;
- out[4] = x56;
- out[5] = x60;
- out[6] = x64;
- out[7] = x68;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e224m2e96p1/freeze.v b/src/Specific/solinas32_2e224m2e96p1/freeze.v
deleted file mode 100644
index 36466e522..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.log b/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.log
deleted file mode 100644
index bd024746f..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.log
+++ /dev/null
@@ -1,30 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, ℤ x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (0x0, Return x2, 0x1);
- uint32_t x19, ℤ x20 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x17, Return x4, 0x0);
- uint32_t x22, ℤ x23 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x20, Return x6, 0x0);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xffff000);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint8_t x40 = ((uint8_t)x39 & 0x1);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, 0x0);
- uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x22, 0x0);
- uint32_t x50 = (x39 & 0xffff000);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x25, Return x50);
- uint32_t x54 = (x39 & 0xfffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x28, Return x54);
- uint32_t x58 = (x39 & 0xfffffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x31, Return x58);
- uint32_t x62 = (x39 & 0xfffffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x34, Return x62);
- uint32_t x66 = (x39 & 0xfffffff);
- uint32_t x68, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x37, Return x66);
- (Return x68, Return x64, Return x60, Return x56, Return x52, Return x48, Return x45, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v b/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v
deleted file mode 100644
index c7b88292d..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e224m2e96p1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1/py_interpreter.sh b/src/Specific/solinas32_2e224m2e96p1/py_interpreter.sh
deleted file mode 100755
index e760b4db8..000000000
--- a/src/Specific/solinas32_2e224m2e96p1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='28' -Da24='121665'
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/CurveParameters.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..63e25fda4
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^224 - 2^96 + 1
+Base: 22.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 22 + 2/5;
+ bitwidth := 32;
+ s := 2^224;
+ c := [(1, -1); (2^96, 1)];
+ carry_chains := Some [[3; 9]; [4; 0; 5; 1; 6; 2; 7; 3; 8; 9]; [4; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/Synthesis.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/Synthesis.v
new file mode 100644
index 000000000..8f71b99c5
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/compiler.sh b/src/Specific/solinas32_2e224m2e96p1_10limbs/compiler.sh
new file mode 100755
index 000000000..4d9ae5325
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,22,23,22,23,22,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/compilerxx.sh b/src/Specific/solinas32_2e224m2e96p1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..47621818e
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,22,23,22,23,22,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/feadd.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/feadd.v
new file mode 100644
index 000000000..0e3965187
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..55c1faf1a
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/femul.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/femul.v
new file mode 100644
index 000000000..9b47d09d9
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/femulDisplay.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..6dd1efe1f
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquare.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquare.v
new file mode 100644
index 000000000..ed5fc8e4c
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bd4003b15
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/fesub.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesub.v
new file mode 100644
index 000000000..1b3a09e66
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..e16f6f74a
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/freeze.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/freeze.v
new file mode 100644
index 000000000..f4e276b8d
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e224m2e96p1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..095e23dd7
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e224m2e96p1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..b5e8d1471
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='22.4' -Da24='121665'
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/CurveParameters.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/CurveParameters.v
new file mode 100644
index 000000000..e665a9604
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^224 - 2^96 + 1
+Base: 20 + 4/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 20 + 4/11;
+ bitwidth := 32;
+ s := 2^224;
+ c := [(1, -1); (2^96, 1)];
+ carry_chains := Some [[3; 10]; [4; 0; 5; 1; 6; 2; 7; 3; 8; 9; 10]; [4; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/Synthesis.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/Synthesis.v
new file mode 100644
index 000000000..78bcf1a33
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/compiler.sh b/src/Specific/solinas32_2e224m2e96p1_11limbs/compiler.sh
new file mode 100755
index 000000000..aa4649893
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/compilerxx.sh b/src/Specific/solinas32_2e224m2e96p1_11limbs/compilerxx.sh
new file mode 100755
index 000000000..bc9991fb7
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/feadd.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/feadd.v
new file mode 100644
index 000000000..f7da8b53c
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..99a427998
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/femul.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/femul.v
new file mode 100644
index 000000000..d6a06caee
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/femulDisplay.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/femulDisplay.v
new file mode 100644
index 000000000..e1416f9de
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquare.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquare.v
new file mode 100644
index 000000000..0f61217c3
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f56ac2992
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/fesub.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesub.v
new file mode 100644
index 000000000..9c24b13c9
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..e9cb23e26
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/freeze.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/freeze.v
new file mode 100644
index 000000000..4c1d44934
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e224m2e96p1_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..664a406cf
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e224m2e96p1_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e224m2e96p1_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e224m2e96p1_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..63a47591e
--- /dev/null
+++ b/src/Specific/solinas32_2e224m2e96p1_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='20 + 4/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e226m5/CurveParameters.v b/src/Specific/solinas32_2e226m5/CurveParameters.v
deleted file mode 100644
index 9aa558673..000000000
--- a/src/Specific/solinas32_2e226m5/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^226 - 5
-Base: 28.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 28 + 1/4;
- bitwidth := 32;
- s := 2^226;
- c := [(1, 5)];
- carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e226m5/Synthesis.v b/src/Specific/solinas32_2e226m5/Synthesis.v
deleted file mode 100644
index 5ca740421..000000000
--- a/src/Specific/solinas32_2e226m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e226m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e226m5/compiler.sh b/src/Specific/solinas32_2e226m5/compiler.sh
deleted file mode 100755
index d52d95dbd..000000000
--- a/src/Specific/solinas32_2e226m5/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,28,29,28,28,28}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5/compilerxx.sh b/src/Specific/solinas32_2e226m5/compilerxx.sh
deleted file mode 100755
index 5a5640fbe..000000000
--- a/src/Specific/solinas32_2e226m5/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,28,29,28,28,28}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5/feadd.c b/src/Specific/solinas32_2e226m5/feadd.c
deleted file mode 100644
index cc3671f75..000000000
--- a/src/Specific/solinas32_2e226m5/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e226m5/feadd.v b/src/Specific/solinas32_2e226m5/feadd.v
deleted file mode 100644
index 434d8ad9d..000000000
--- a/src/Specific/solinas32_2e226m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e226m5/feaddDisplay.log b/src/Specific/solinas32_2e226m5/feaddDisplay.log
deleted file mode 100644
index f25c10903..000000000
--- a/src/Specific/solinas32_2e226m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5/feaddDisplay.v b/src/Specific/solinas32_2e226m5/feaddDisplay.v
deleted file mode 100644
index 58b72c89b..000000000
--- a/src/Specific/solinas32_2e226m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e226m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e226m5/femul.c b/src/Specific/solinas32_2e226m5/femul.c
deleted file mode 100644
index 894f84ba7..000000000
--- a/src/Specific/solinas32_2e226m5/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- { uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- { uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x5 * ((uint64_t)x16 * x30)));
- { uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x5 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- { ℤ x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
- { ℤ x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) +ℤ (0x5 *ℤ (((uint64_t)x13 * x30) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x16 * x27))))));
- { ℤ x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) +ℤ (0x5 *ℤ (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- { ℤ x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) +ℤ (0x5 *ℤ (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- { ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- { uint64_t x40 = (x39 >> 0x1d);
- { uint32_t x41 = (x39 & 0x1fffffff);
- { ℤ x42 = (x40 +ℤ x38);
- { uint64_t x43 = (x42 >> 0x1c);
- { uint32_t x44 = (x42 & 0xfffffff);
- { ℤ x45 = (x43 +ℤ x37);
- { uint64_t x46 = (x45 >> 0x1c);
- { uint32_t x47 = (x45 & 0xfffffff);
- { ℤ x48 = (x46 +ℤ x36);
- { uint64_t x49 = (x48 >> 0x1c);
- { uint32_t x50 = (x48 & 0xfffffff);
- { ℤ x51 = (x49 +ℤ x35);
- { uint64_t x52 = (x51 >> 0x1d);
- { uint32_t x53 = (x51 & 0x1fffffff);
- { uint64_t x54 = (x52 + x34);
- { uint64_t x55 = (x54 >> 0x1c);
- { uint32_t x56 = ((uint32_t)x54 & 0xfffffff);
- { uint64_t x57 = (x55 + x33);
- { uint64_t x58 = (x57 >> 0x1c);
- { uint32_t x59 = ((uint32_t)x57 & 0xfffffff);
- { uint64_t x60 = (x58 + x32);
- { uint64_t x61 = (x60 >> 0x1c);
- { uint32_t x62 = ((uint32_t)x60 & 0xfffffff);
- { uint64_t x63 = (x41 + (0x5 * x61));
- { uint32_t x64 = (uint32_t) (x63 >> 0x1d);
- { uint32_t x65 = ((uint32_t)x63 & 0x1fffffff);
- { uint32_t x66 = (x64 + x44);
- { uint32_t x67 = (x66 >> 0x1c);
- { uint32_t x68 = (x66 & 0xfffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e226m5/femul.v b/src/Specific/solinas32_2e226m5/femul.v
deleted file mode 100644
index 3369e1636..000000000
--- a/src/Specific/solinas32_2e226m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e226m5/femulDisplay.log b/src/Specific/solinas32_2e226m5/femulDisplay.log
deleted file mode 100644
index c4796c2c6..000000000
--- a/src/Specific/solinas32_2e226m5/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint64_t x32 = (((uint64_t)x5 * x30) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((0x2 * ((uint64_t)x15 * x23)) + ((0x2 * ((uint64_t)x17 * x21)) + ((uint64_t)x16 * x19))))))));
- uint64_t x33 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((0x2 * ((uint64_t)x15 * x21)) + ((uint64_t)x17 * x19))))))) + (0x5 * ((uint64_t)x16 * x30)));
- uint64_t x34 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x15 * x19)))))) + (0x5 * (((uint64_t)x17 * x30) + ((uint64_t)x16 * x31))));
- ℤ x35 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((uint64_t)x13 * x19))))) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x15 * x30)) + ((0x2 * ((uint64_t)x17 * x31)) + (0x2 * ((uint64_t)x16 * x29))))));
- ℤ x36 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((uint64_t)x11 * x19)))) +ℤ (0x5 *ℤ (((uint64_t)x13 * x30) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x16 * x27))))));
- ℤ x37 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((uint64_t)x9 * x19))) +ℤ (0x5 *ℤ (((uint64_t)x11 * x30) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((uint64_t)x16 * x25)))))));
- ℤ x38 = ((((uint64_t)x5 * x21) + ((uint64_t)x7 * x19)) +ℤ (0x5 *ℤ (((uint64_t)x9 * x30) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x16 * x23))))))));
- ℤ x39 = (((uint64_t)x5 * x19) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x7 * x30)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + (0x2 * ((uint64_t)x16 * x21))))))))));
- uint64_t x40 = (x39 >> 0x1d);
- uint32_t x41 = (x39 & 0x1fffffff);
- ℤ x42 = (x40 +ℤ x38);
- uint64_t x43 = (x42 >> 0x1c);
- uint32_t x44 = (x42 & 0xfffffff);
- ℤ x45 = (x43 +ℤ x37);
- uint64_t x46 = (x45 >> 0x1c);
- uint32_t x47 = (x45 & 0xfffffff);
- ℤ x48 = (x46 +ℤ x36);
- uint64_t x49 = (x48 >> 0x1c);
- uint32_t x50 = (x48 & 0xfffffff);
- ℤ x51 = (x49 +ℤ x35);
- uint64_t x52 = (x51 >> 0x1d);
- uint32_t x53 = (x51 & 0x1fffffff);
- uint64_t x54 = (x52 + x34);
- uint64_t x55 = (x54 >> 0x1c);
- uint32_t x56 = ((uint32_t)x54 & 0xfffffff);
- uint64_t x57 = (x55 + x33);
- uint64_t x58 = (x57 >> 0x1c);
- uint32_t x59 = ((uint32_t)x57 & 0xfffffff);
- uint64_t x60 = (x58 + x32);
- uint64_t x61 = (x60 >> 0x1c);
- uint32_t x62 = ((uint32_t)x60 & 0xfffffff);
- uint64_t x63 = (x41 + (0x5 * x61));
- uint32_t x64 = (uint32_t) (x63 >> 0x1d);
- uint32_t x65 = ((uint32_t)x63 & 0x1fffffff);
- uint32_t x66 = (x64 + x44);
- uint32_t x67 = (x66 >> 0x1c);
- uint32_t x68 = (x66 & 0xfffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5/femulDisplay.v b/src/Specific/solinas32_2e226m5/femulDisplay.v
deleted file mode 100644
index 958e9cf98..000000000
--- a/src/Specific/solinas32_2e226m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e226m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e226m5/fesquare.c b/src/Specific/solinas32_2e226m5/fesquare.c
deleted file mode 100644
index 7323aea58..000000000
--- a/src/Specific/solinas32_2e226m5/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- { uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * ((uint64_t)x13 * x13)));
- { uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- { ℤ x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
- { ℤ x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x5 *ℤ (((uint64_t)x10 * x13) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((uint64_t)x13 * x10))))));
- { ℤ x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x5 *ℤ (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- { ℤ x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x5 *ℤ (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- { ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- { uint64_t x23 = (x22 >> 0x1d);
- { uint32_t x24 = (x22 & 0x1fffffff);
- { ℤ x25 = (x23 +ℤ x21);
- { uint64_t x26 = (x25 >> 0x1c);
- { uint32_t x27 = (x25 & 0xfffffff);
- { ℤ x28 = (x26 +ℤ x20);
- { uint64_t x29 = (x28 >> 0x1c);
- { uint32_t x30 = (x28 & 0xfffffff);
- { ℤ x31 = (x29 +ℤ x19);
- { uint64_t x32 = (x31 >> 0x1c);
- { uint32_t x33 = (x31 & 0xfffffff);
- { ℤ x34 = (x32 +ℤ x18);
- { uint64_t x35 = (x34 >> 0x1d);
- { uint32_t x36 = (x34 & 0x1fffffff);
- { uint64_t x37 = (x35 + x17);
- { uint64_t x38 = (x37 >> 0x1c);
- { uint32_t x39 = ((uint32_t)x37 & 0xfffffff);
- { uint64_t x40 = (x38 + x16);
- { uint64_t x41 = (x40 >> 0x1c);
- { uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- { uint64_t x43 = (x41 + x15);
- { uint64_t x44 = (x43 >> 0x1c);
- { uint32_t x45 = ((uint32_t)x43 & 0xfffffff);
- { uint64_t x46 = (x24 + (0x5 * x44));
- { uint32_t x47 = (uint32_t) (x46 >> 0x1d);
- { uint32_t x48 = ((uint32_t)x46 & 0x1fffffff);
- { uint32_t x49 = (x47 + x27);
- { uint32_t x50 = (x49 >> 0x1c);
- { uint32_t x51 = (x49 & 0xfffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e226m5/fesquare.v b/src/Specific/solinas32_2e226m5/fesquare.v
deleted file mode 100644
index 587be906c..000000000
--- a/src/Specific/solinas32_2e226m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e226m5/fesquareDisplay.log b/src/Specific/solinas32_2e226m5/fesquareDisplay.log
deleted file mode 100644
index f8421609f..000000000
--- a/src/Specific/solinas32_2e226m5/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x15 = (((uint64_t)x2 * x13) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x13 * x2))))))));
- uint64_t x16 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x5 * ((uint64_t)x13 * x13)));
- uint64_t x17 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x5 * (((uint64_t)x14 * x13) + ((uint64_t)x13 * x14))));
- ℤ x18 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x12 * x13)) + ((0x2 * ((uint64_t)x14 * x14)) + (0x2 * ((uint64_t)x13 * x12))))));
- ℤ x19 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x5 *ℤ (((uint64_t)x10 * x13) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((uint64_t)x13 * x10))))));
- ℤ x20 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x5 *ℤ (((uint64_t)x8 * x13) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((uint64_t)x13 * x8)))))));
- ℤ x21 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x5 *ℤ (((uint64_t)x6 * x13) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x13 * x6))))))));
- ℤ x22 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x4 * x13)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + (0x2 * ((uint64_t)x13 * x4))))))))));
- uint64_t x23 = (x22 >> 0x1d);
- uint32_t x24 = (x22 & 0x1fffffff);
- ℤ x25 = (x23 +ℤ x21);
- uint64_t x26 = (x25 >> 0x1c);
- uint32_t x27 = (x25 & 0xfffffff);
- ℤ x28 = (x26 +ℤ x20);
- uint64_t x29 = (x28 >> 0x1c);
- uint32_t x30 = (x28 & 0xfffffff);
- ℤ x31 = (x29 +ℤ x19);
- uint64_t x32 = (x31 >> 0x1c);
- uint32_t x33 = (x31 & 0xfffffff);
- ℤ x34 = (x32 +ℤ x18);
- uint64_t x35 = (x34 >> 0x1d);
- uint32_t x36 = (x34 & 0x1fffffff);
- uint64_t x37 = (x35 + x17);
- uint64_t x38 = (x37 >> 0x1c);
- uint32_t x39 = ((uint32_t)x37 & 0xfffffff);
- uint64_t x40 = (x38 + x16);
- uint64_t x41 = (x40 >> 0x1c);
- uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
- uint64_t x43 = (x41 + x15);
- uint64_t x44 = (x43 >> 0x1c);
- uint32_t x45 = ((uint32_t)x43 & 0xfffffff);
- uint64_t x46 = (x24 + (0x5 * x44));
- uint32_t x47 = (uint32_t) (x46 >> 0x1d);
- uint32_t x48 = ((uint32_t)x46 & 0x1fffffff);
- uint32_t x49 = (x47 + x27);
- uint32_t x50 = (x49 >> 0x1c);
- uint32_t x51 = (x49 & 0xfffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5/fesquareDisplay.v b/src/Specific/solinas32_2e226m5/fesquareDisplay.v
deleted file mode 100644
index 26d338020..000000000
--- a/src/Specific/solinas32_2e226m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e226m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e226m5/fesub.c b/src/Specific/solinas32_2e226m5/fesub.c
deleted file mode 100644
index 51f6f3902..000000000
--- a/src/Specific/solinas32_2e226m5/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint32_t out[8], const uint32_t in1[8], const uint32_t in2[8]) {
- { const uint32_t x16 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x30 = in2[7];
- { const uint32_t x31 = in2[6];
- { const uint32_t x29 = in2[5];
- { const uint32_t x27 = in2[4];
- { const uint32_t x25 = in2[3];
- { const uint32_t x23 = in2[2];
- { const uint32_t x21 = in2[1];
- { const uint32_t x19 = in2[0];
- out[0] = ((0x3ffffff6 + x5) - x19);
- out[1] = ((0x1ffffffe + x7) - x21);
- out[2] = ((0x1ffffffe + x9) - x23);
- out[3] = ((0x1ffffffe + x11) - x25);
- out[4] = ((0x3ffffffe + x13) - x27);
- out[5] = ((0x1ffffffe + x15) - x29);
- out[6] = ((0x1ffffffe + x17) - x31);
- out[7] = ((0x1ffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e226m5/fesub.v b/src/Specific/solinas32_2e226m5/fesub.v
deleted file mode 100644
index b792ebc88..000000000
--- a/src/Specific/solinas32_2e226m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e226m5/fesubDisplay.log b/src/Specific/solinas32_2e226m5/fesubDisplay.log
deleted file mode 100644
index de2ab67ea..000000000
--- a/src/Specific/solinas32_2e226m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1ffffffe + x16) - x30), ((0x1ffffffe + x17) - x31), ((0x1ffffffe + x15) - x29), ((0x3ffffffe + x13) - x27), ((0x1ffffffe + x11) - x25), ((0x1ffffffe + x9) - x23), ((0x1ffffffe + x7) - x21), ((0x3ffffff6 + x5) - x19)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5/fesubDisplay.v b/src/Specific/solinas32_2e226m5/fesubDisplay.v
deleted file mode 100644
index 5485b6c58..000000000
--- a/src/Specific/solinas32_2e226m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e226m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e226m5/freeze.c b/src/Specific/solinas32_2e226m5/freeze.c
deleted file mode 100644
index 4e1dbd3ff..000000000
--- a/src/Specific/solinas32_2e226m5/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint32_t out[8], const uint32_t in1[8]) {
- { const uint32_t x13 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffb);
- { uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffff);
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffff);
- { uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- { uint32_t x40 = (x39 & 0x1ffffffb);
- { uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint32_t x44 = (x39 & 0xfffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint32_t x48 = (x39 & 0xfffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint32_t x52 = (x39 & 0xfffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint32_t x56 = (x39 & 0x1fffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint32_t x60 = (x39 & 0xfffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint32_t x64 = (x39 & 0xfffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint32_t x68 = (x39 & 0xfffffff);
- { uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e226m5/freeze.v b/src/Specific/solinas32_2e226m5/freeze.v
deleted file mode 100644
index 9d43ef967..000000000
--- a/src/Specific/solinas32_2e226m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e226m5/freezeDisplay.log b/src/Specific/solinas32_2e226m5/freezeDisplay.log
deleted file mode 100644
index 2af887e79..000000000
--- a/src/Specific/solinas32_2e226m5/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffb);
- uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffff);
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffff);
- uint32_t x39 = cmovznz32(x38, 0x0, 0xffffffff);
- uint32_t x40 = (x39 & 0x1ffffffb);
- uint32_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint32_t x44 = (x39 & 0xfffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint32_t x48 = (x39 & 0xfffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint32_t x52 = (x39 & 0xfffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint32_t x56 = (x39 & 0x1fffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint32_t x60 = (x39 & 0xfffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint32_t x64 = (x39 & 0xfffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint32_t x68 = (x39 & 0xfffffff);
- uint32_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e226m5/freezeDisplay.v b/src/Specific/solinas32_2e226m5/freezeDisplay.v
deleted file mode 100644
index ca3647059..000000000
--- a/src/Specific/solinas32_2e226m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e226m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e226m5/py_interpreter.sh b/src/Specific/solinas32_2e226m5/py_interpreter.sh
deleted file mode 100755
index 27377b841..000000000
--- a/src/Specific/solinas32_2e226m5/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**226 - 5' -Dmodulus_bytes='28.25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e226m5_10limbs/CurveParameters.v b/src/Specific/solinas32_2e226m5_10limbs/CurveParameters.v
new file mode 100644
index 000000000..f24259a96
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^226 - 5
+Base: 22.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 22 + 3/5;
+ bitwidth := 32;
+ s := 2^226;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/Synthesis.v b/src/Specific/solinas32_2e226m5_10limbs/Synthesis.v
new file mode 100644
index 000000000..7041d9eba
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/compiler.sh b/src/Specific/solinas32_2e226m5_10limbs/compiler.sh
new file mode 100755
index 000000000..73ba811d8
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5_10limbs/compilerxx.sh b/src/Specific/solinas32_2e226m5_10limbs/compilerxx.sh
new file mode 100755
index 000000000..66f4b47d6
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5_10limbs/feadd.v b/src/Specific/solinas32_2e226m5_10limbs/feadd.v
new file mode 100644
index 000000000..ab300e83f
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..3b1cee79e
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/femul.v b/src/Specific/solinas32_2e226m5_10limbs/femul.v
new file mode 100644
index 000000000..b78840458
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.v b/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.v
new file mode 100644
index 000000000..3941a95a0
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesquare.v b/src/Specific/solinas32_2e226m5_10limbs/fesquare.v
new file mode 100644
index 000000000..f4d3eecf6
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..72209434d
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesub.v b/src/Specific/solinas32_2e226m5_10limbs/fesub.v
new file mode 100644
index 000000000..fa978c553
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..12dbf603e
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/freeze.v b/src/Specific/solinas32_2e226m5_10limbs/freeze.v
new file mode 100644
index 000000000..c8cdcf777
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..052fe3eb9
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e226m5_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e226m5_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..4d6c5df92
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**226 - 5' -Dmodulus_bytes='22.6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e226m5_9limbs/CurveParameters.v b/src/Specific/solinas32_2e226m5_9limbs/CurveParameters.v
new file mode 100644
index 000000000..cd1c394d9
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^226 - 5
+Base: 25 + 1/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 25 + 1/9;
+ bitwidth := 32;
+ s := 2^226;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/Synthesis.v b/src/Specific/solinas32_2e226m5_9limbs/Synthesis.v
new file mode 100644
index 000000000..b4e89beef
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/compiler.sh b/src/Specific/solinas32_2e226m5_9limbs/compiler.sh
new file mode 100755
index 000000000..0a95dab24
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5_9limbs/compilerxx.sh b/src/Specific/solinas32_2e226m5_9limbs/compilerxx.sh
new file mode 100755
index 000000000..ba36256af
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas32_2e226m5_9limbs/feadd.v b/src/Specific/solinas32_2e226m5_9limbs/feadd.v
new file mode 100644
index 000000000..5a75575b4
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..2531629b3
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/femul.v b/src/Specific/solinas32_2e226m5_9limbs/femul.v
new file mode 100644
index 000000000..9d10ee815
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.v b/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.v
new file mode 100644
index 000000000..2613e8b5e
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesquare.v b/src/Specific/solinas32_2e226m5_9limbs/fesquare.v
new file mode 100644
index 000000000..ea3d4d80b
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..54212e3c1
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesub.v b/src/Specific/solinas32_2e226m5_9limbs/fesub.v
new file mode 100644
index 000000000..12ef11f0a
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..e7cb220a8
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/freeze.v b/src/Specific/solinas32_2e226m5_9limbs/freeze.v
new file mode 100644
index 000000000..5c724caf5
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..3d8f485f7
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e226m5_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e226m5_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e226m5_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..da7fb307b
--- /dev/null
+++ b/src/Specific/solinas32_2e226m5_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**226 - 5' -Dmodulus_bytes='25 + 1/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e230m27/Synthesis.v b/src/Specific/solinas32_2e230m27/Synthesis.v
deleted file mode 100644
index 7d1eaba73..000000000
--- a/src/Specific/solinas32_2e230m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e230m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e230m27/feadd.c b/src/Specific/solinas32_2e230m27/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e230m27/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e230m27/feadd.v b/src/Specific/solinas32_2e230m27/feadd.v
deleted file mode 100644
index 95f43dc86..000000000
--- a/src/Specific/solinas32_2e230m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e230m27/feaddDisplay.log b/src/Specific/solinas32_2e230m27/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e230m27/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27/feaddDisplay.v b/src/Specific/solinas32_2e230m27/feaddDisplay.v
deleted file mode 100644
index ea7eef06f..000000000
--- a/src/Specific/solinas32_2e230m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e230m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e230m27/femul.c b/src/Specific/solinas32_2e230m27/femul.c
deleted file mode 100644
index 75851dd8a..000000000
--- a/src/Specific/solinas32_2e230m27/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x21 * x23))))))))) + (0x1b * ((uint64_t)x20 * x38)));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x1b * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x1b * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0x1b * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x1b * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0x1b * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x1b * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x1b * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x1b * (((uint64_t)x7 * x38) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x20 * x25)))))))))));
- { uint64_t x50 = (x49 >> 0x17);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- { uint64_t x52 = (x50 + x48);
- { uint64_t x53 = (x52 >> 0x17);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- { uint64_t x55 = (x53 + x47);
- { uint64_t x56 = (x55 >> 0x17);
- { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- { uint64_t x58 = (x56 + x46);
- { uint64_t x59 = (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint64_t x61 = (x59 + x45);
- { uint64_t x62 = (x61 >> 0x17);
- { uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- { uint64_t x64 = (x62 + x44);
- { uint64_t x65 = (x64 >> 0x17);
- { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- { uint64_t x67 = (x65 + x43);
- { uint64_t x68 = (x67 >> 0x17);
- { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- { uint64_t x70 = (x68 + x42);
- { uint64_t x71 = (x70 >> 0x17);
- { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- { uint64_t x73 = (x71 + x41);
- { uint32_t x74 = (uint32_t) (x73 >> 0x17);
- { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- { uint64_t x76 = (x74 + x40);
- { uint32_t x77 = (uint32_t) (x76 >> 0x17);
- { uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- { uint64_t x79 = (x51 + ((uint64_t)0x1b * x77));
- { uint32_t x80 = (uint32_t) (x79 >> 0x17);
- { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x17);
- { uint32_t x84 = (x82 & 0x7fffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e230m27/femul.v b/src/Specific/solinas32_2e230m27/femul.v
deleted file mode 100644
index 5977543a8..000000000
--- a/src/Specific/solinas32_2e230m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e230m27/femulDisplay.log b/src/Specific/solinas32_2e230m27/femulDisplay.log
deleted file mode 100644
index 9588152da..000000000
--- a/src/Specific/solinas32_2e230m27/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x21 * x23))))))))) + (0x1b * ((uint64_t)x20 * x38)));
- uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x1b * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x17 * x23))))))) + (0x1b * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0x1b * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((uint64_t)x13 * x23))))) + (0x1b * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0x1b * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + ((uint64_t)x9 * x23))) + (0x1b * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x1b * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x1b * (((uint64_t)x7 * x38) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + (((uint64_t)x21 * x27) + ((uint64_t)x20 * x25)))))))))));
- uint64_t x50 = (x49 >> 0x17);
- uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- uint64_t x52 = (x50 + x48);
- uint64_t x53 = (x52 >> 0x17);
- uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- uint64_t x55 = (x53 + x47);
- uint64_t x56 = (x55 >> 0x17);
- uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- uint64_t x58 = (x56 + x46);
- uint64_t x59 = (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint64_t x61 = (x59 + x45);
- uint64_t x62 = (x61 >> 0x17);
- uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- uint64_t x64 = (x62 + x44);
- uint64_t x65 = (x64 >> 0x17);
- uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- uint64_t x67 = (x65 + x43);
- uint64_t x68 = (x67 >> 0x17);
- uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- uint64_t x70 = (x68 + x42);
- uint64_t x71 = (x70 >> 0x17);
- uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- uint64_t x73 = (x71 + x41);
- uint32_t x74 = (uint32_t) (x73 >> 0x17);
- uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- uint64_t x76 = (x74 + x40);
- uint32_t x77 = (uint32_t) (x76 >> 0x17);
- uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- uint64_t x79 = (x51 + ((uint64_t)0x1b * x77));
- uint32_t x80 = (uint32_t) (x79 >> 0x17);
- uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x17);
- uint32_t x84 = (x82 & 0x7fffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27/femulDisplay.v b/src/Specific/solinas32_2e230m27/femulDisplay.v
deleted file mode 100644
index 60097ff6a..000000000
--- a/src/Specific/solinas32_2e230m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e230m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e230m27/fesquare.c b/src/Specific/solinas32_2e230m27/fesquare.c
deleted file mode 100644
index 7be6c9a29..000000000
--- a/src/Specific/solinas32_2e230m27/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x1b * ((uint64_t)x17 * x17)));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x1b * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1b * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1b * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1b * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x1b * (((uint64_t)x4 * x17) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((uint64_t)x17 * x4)))))))))));
- { uint64_t x29 = (x28 >> 0x17);
- { uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- { uint64_t x31 = (x29 + x27);
- { uint64_t x32 = (x31 >> 0x17);
- { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- { uint64_t x34 = (x32 + x26);
- { uint64_t x35 = (x34 >> 0x17);
- { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
- { uint64_t x37 = (x35 + x25);
- { uint64_t x38 = (x37 >> 0x17);
- { uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
- { uint64_t x40 = (x38 + x24);
- { uint64_t x41 = (x40 >> 0x17);
- { uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
- { uint64_t x43 = (x41 + x23);
- { uint64_t x44 = (x43 >> 0x17);
- { uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
- { uint64_t x46 = (x44 + x22);
- { uint64_t x47 = (x46 >> 0x17);
- { uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
- { uint64_t x49 = (x47 + x21);
- { uint64_t x50 = (x49 >> 0x17);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- { uint64_t x52 = (x50 + x20);
- { uint32_t x53 = (uint32_t) (x52 >> 0x17);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- { uint64_t x55 = (x53 + x19);
- { uint32_t x56 = (uint32_t) (x55 >> 0x17);
- { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- { uint64_t x58 = (x30 + ((uint64_t)0x1b * x56));
- { uint32_t x59 = (uint32_t) (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x17);
- { uint32_t x63 = (x61 & 0x7fffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e230m27/fesquare.v b/src/Specific/solinas32_2e230m27/fesquare.v
deleted file mode 100644
index f36913fb8..000000000
--- a/src/Specific/solinas32_2e230m27/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e230m27/fesquareDisplay.log b/src/Specific/solinas32_2e230m27/fesquareDisplay.log
deleted file mode 100644
index 37ac5e492..000000000
--- a/src/Specific/solinas32_2e230m27/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x1b * ((uint64_t)x17 * x17)));
- uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x1b * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x1b * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x1b * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x1b * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x1b * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x1b * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1b * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x1b * (((uint64_t)x4 * x17) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((uint64_t)x17 * x4)))))))))));
- uint64_t x29 = (x28 >> 0x17);
- uint32_t x30 = ((uint32_t)x28 & 0x7fffff);
- uint64_t x31 = (x29 + x27);
- uint64_t x32 = (x31 >> 0x17);
- uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
- uint64_t x34 = (x32 + x26);
- uint64_t x35 = (x34 >> 0x17);
- uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
- uint64_t x37 = (x35 + x25);
- uint64_t x38 = (x37 >> 0x17);
- uint32_t x39 = ((uint32_t)x37 & 0x7fffff);
- uint64_t x40 = (x38 + x24);
- uint64_t x41 = (x40 >> 0x17);
- uint32_t x42 = ((uint32_t)x40 & 0x7fffff);
- uint64_t x43 = (x41 + x23);
- uint64_t x44 = (x43 >> 0x17);
- uint32_t x45 = ((uint32_t)x43 & 0x7fffff);
- uint64_t x46 = (x44 + x22);
- uint64_t x47 = (x46 >> 0x17);
- uint32_t x48 = ((uint32_t)x46 & 0x7fffff);
- uint64_t x49 = (x47 + x21);
- uint64_t x50 = (x49 >> 0x17);
- uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- uint64_t x52 = (x50 + x20);
- uint32_t x53 = (uint32_t) (x52 >> 0x17);
- uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- uint64_t x55 = (x53 + x19);
- uint32_t x56 = (uint32_t) (x55 >> 0x17);
- uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- uint64_t x58 = (x30 + ((uint64_t)0x1b * x56));
- uint32_t x59 = (uint32_t) (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x17);
- uint32_t x63 = (x61 & 0x7fffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27/fesquareDisplay.v b/src/Specific/solinas32_2e230m27/fesquareDisplay.v
deleted file mode 100644
index 7eee226ec..000000000
--- a/src/Specific/solinas32_2e230m27/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e230m27.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e230m27/fesub.c b/src/Specific/solinas32_2e230m27/fesub.c
deleted file mode 100644
index 7a81c7e89..000000000
--- a/src/Specific/solinas32_2e230m27/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0xffffca + x5) - x23);
- out[1] = ((0xfffffe + x7) - x25);
- out[2] = ((0xfffffe + x9) - x27);
- out[3] = ((0xfffffe + x11) - x29);
- out[4] = ((0xfffffe + x13) - x31);
- out[5] = ((0xfffffe + x15) - x33);
- out[6] = ((0xfffffe + x17) - x35);
- out[7] = ((0xfffffe + x19) - x37);
- out[8] = ((0xfffffe + x21) - x39);
- out[9] = ((0xfffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e230m27/fesub.v b/src/Specific/solinas32_2e230m27/fesub.v
deleted file mode 100644
index 56d0dc25f..000000000
--- a/src/Specific/solinas32_2e230m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e230m27/fesubDisplay.log b/src/Specific/solinas32_2e230m27/fesubDisplay.log
deleted file mode 100644
index d40b94113..000000000
--- a/src/Specific/solinas32_2e230m27/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xfffffe + x20) - x38), ((0xfffffe + x21) - x39), ((0xfffffe + x19) - x37), ((0xfffffe + x17) - x35), ((0xfffffe + x15) - x33), ((0xfffffe + x13) - x31), ((0xfffffe + x11) - x29), ((0xfffffe + x9) - x27), ((0xfffffe + x7) - x25), ((0xffffca + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27/fesubDisplay.v b/src/Specific/solinas32_2e230m27/fesubDisplay.v
deleted file mode 100644
index 5fdeb41c3..000000000
--- a/src/Specific/solinas32_2e230m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e230m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e230m27/freeze.c b/src/Specific/solinas32_2e230m27/freeze.c
deleted file mode 100644
index feed33dcc..000000000
--- a/src/Specific/solinas32_2e230m27/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffe5);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x7fffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x7fffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7fffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7fffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7fffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x7fffe5);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x7fffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x7fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x7fffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x7fffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x7fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x7fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x7fffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x7fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x7fffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e230m27/freeze.v b/src/Specific/solinas32_2e230m27/freeze.v
deleted file mode 100644
index 9a64adb99..000000000
--- a/src/Specific/solinas32_2e230m27/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e230m27/freezeDisplay.log b/src/Specific/solinas32_2e230m27/freezeDisplay.log
deleted file mode 100644
index cdedba2b3..000000000
--- a/src/Specific/solinas32_2e230m27/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffe5);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x7fffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x7fffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x7fffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x7fffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x7fffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x7fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x7fffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x7fffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x7fffe5);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x7fffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x7fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x7fffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x7fffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x7fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x7fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x7fffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x7fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x7fffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e230m27/freezeDisplay.v b/src/Specific/solinas32_2e230m27/freezeDisplay.v
deleted file mode 100644
index 26eb1dbe0..000000000
--- a/src/Specific/solinas32_2e230m27/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e230m27.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e230m27/CurveParameters.v b/src/Specific/solinas32_2e230m27_10limbs/CurveParameters.v
index dfc3c0964..dfc3c0964 100644
--- a/src/Specific/solinas32_2e230m27/CurveParameters.v
+++ b/src/Specific/solinas32_2e230m27_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e230m27_10limbs/Synthesis.v b/src/Specific/solinas32_2e230m27_10limbs/Synthesis.v
new file mode 100644
index 000000000..7a71a0705
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e230m27/compiler.sh b/src/Specific/solinas32_2e230m27_10limbs/compiler.sh
index c2229954d..c2229954d 100755
--- a/src/Specific/solinas32_2e230m27/compiler.sh
+++ b/src/Specific/solinas32_2e230m27_10limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e230m27/compilerxx.sh b/src/Specific/solinas32_2e230m27_10limbs/compilerxx.sh
index c5abddd6b..c5abddd6b 100755
--- a/src/Specific/solinas32_2e230m27/compilerxx.sh
+++ b/src/Specific/solinas32_2e230m27_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e230m27_10limbs/feadd.v b/src/Specific/solinas32_2e230m27_10limbs/feadd.v
new file mode 100644
index 000000000..98f53517c
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e230m27_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..1f20a273f
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/femul.v b/src/Specific/solinas32_2e230m27_10limbs/femul.v
new file mode 100644
index 000000000..9c8a38673
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/femulDisplay.v b/src/Specific/solinas32_2e230m27_10limbs/femulDisplay.v
new file mode 100644
index 000000000..744087da0
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/fesquare.v b/src/Specific/solinas32_2e230m27_10limbs/fesquare.v
new file mode 100644
index 000000000..b4df13e13
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e230m27_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d0051e4ab
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/fesub.v b/src/Specific/solinas32_2e230m27_10limbs/fesub.v
new file mode 100644
index 000000000..1247defc8
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e230m27_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..b070b9752
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/freeze.v b/src/Specific/solinas32_2e230m27_10limbs/freeze.v
new file mode 100644
index 000000000..5cec72e1d
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e230m27_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e230m27_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..843f5cb18
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e230m27/py_interpreter.sh b/src/Specific/solinas32_2e230m27_10limbs/py_interpreter.sh
index 486f57c5c..486f57c5c 100755
--- a/src/Specific/solinas32_2e230m27/py_interpreter.sh
+++ b/src/Specific/solinas32_2e230m27_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e230m27_9limbs/CurveParameters.v b/src/Specific/solinas32_2e230m27_9limbs/CurveParameters.v
new file mode 100644
index 000000000..c9ec2e232
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^230 - 27
+Base: 25 + 5/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 25 + 5/9;
+ bitwidth := 32;
+ s := 2^230;
+ c := [(1, 27)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/Synthesis.v b/src/Specific/solinas32_2e230m27_9limbs/Synthesis.v
new file mode 100644
index 000000000..1f717402e
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/compiler.sh b/src/Specific/solinas32_2e230m27_9limbs/compiler.sh
new file mode 100755
index 000000000..35155b656
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<230) - 27' "$@"
diff --git a/src/Specific/solinas32_2e230m27_9limbs/compilerxx.sh b/src/Specific/solinas32_2e230m27_9limbs/compilerxx.sh
new file mode 100755
index 000000000..88748dc4b
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<230) - 27' "$@"
diff --git a/src/Specific/solinas32_2e230m27_9limbs/feadd.v b/src/Specific/solinas32_2e230m27_9limbs/feadd.v
new file mode 100644
index 000000000..d33980e5b
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..d4c22eb54
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/femul.v b/src/Specific/solinas32_2e230m27_9limbs/femul.v
new file mode 100644
index 000000000..a2a70e6a0
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.v b/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.v
new file mode 100644
index 000000000..0dd0b6119
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesquare.v b/src/Specific/solinas32_2e230m27_9limbs/fesquare.v
new file mode 100644
index 000000000..115aa6d1d
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7f8241b7d
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesub.v b/src/Specific/solinas32_2e230m27_9limbs/fesub.v
new file mode 100644
index 000000000..ac56bb8be
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..5b31e9725
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/freeze.v b/src/Specific/solinas32_2e230m27_9limbs/freeze.v
new file mode 100644
index 000000000..3184a0b11
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..0fa9ada14
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e230m27_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e230m27_9limbs/py_interpreter.sh b/src/Specific/solinas32_2e230m27_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..ed0d883b7
--- /dev/null
+++ b/src/Specific/solinas32_2e230m27_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**230 - 27' -Dmodulus_bytes='25 + 5/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e235m15/Synthesis.v b/src/Specific/solinas32_2e235m15/Synthesis.v
deleted file mode 100644
index 4b99415ea..000000000
--- a/src/Specific/solinas32_2e235m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e235m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e235m15/feadd.c b/src/Specific/solinas32_2e235m15/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e235m15/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e235m15/feadd.v b/src/Specific/solinas32_2e235m15/feadd.v
deleted file mode 100644
index 7c763705d..000000000
--- a/src/Specific/solinas32_2e235m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e235m15/feaddDisplay.log b/src/Specific/solinas32_2e235m15/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e235m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15/feaddDisplay.v b/src/Specific/solinas32_2e235m15/feaddDisplay.v
deleted file mode 100644
index 8ee547a02..000000000
--- a/src/Specific/solinas32_2e235m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e235m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e235m15/femul.c b/src/Specific/solinas32_2e235m15/femul.c
deleted file mode 100644
index ba306b31b..000000000
--- a/src/Specific/solinas32_2e235m15/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0xf * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0xf * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0xf * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0xf * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0xf * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0xf * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0xf * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0xf * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- { uint64_t x45 = (x44 >> 0x1b);
- { uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
- { uint64_t x47 = (x45 + x43);
- { uint64_t x48 = (x47 >> 0x1a);
- { uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
- { uint64_t x50 = (x48 + x42);
- { uint64_t x51 = (x50 >> 0x1a);
- { uint32_t x52 = ((uint32_t)x50 & 0x3ffffff);
- { uint64_t x53 = (x51 + x41);
- { uint64_t x54 = (x53 >> 0x1a);
- { uint32_t x55 = ((uint32_t)x53 & 0x3ffffff);
- { uint64_t x56 = (x54 + x40);
- { uint64_t x57 = (x56 >> 0x1a);
- { uint32_t x58 = ((uint32_t)x56 & 0x3ffffff);
- { uint64_t x59 = (x57 + x39);
- { uint64_t x60 = (x59 >> 0x1a);
- { uint32_t x61 = ((uint32_t)x59 & 0x3ffffff);
- { uint64_t x62 = (x60 + x38);
- { uint64_t x63 = (x62 >> 0x1a);
- { uint32_t x64 = ((uint32_t)x62 & 0x3ffffff);
- { uint64_t x65 = (x63 + x37);
- { uint64_t x66 = (x65 >> 0x1a);
- { uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
- { uint64_t x68 = (x66 + x36);
- { uint64_t x69 = (x68 >> 0x1a);
- { uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
- { uint64_t x71 = (x46 + (0xf * x69));
- { uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- { uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x1a);
- { uint32_t x76 = (x74 & 0x3ffffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e235m15/femul.v b/src/Specific/solinas32_2e235m15/femul.v
deleted file mode 100644
index ac5d7a3dd..000000000
--- a/src/Specific/solinas32_2e235m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e235m15/femulDisplay.log b/src/Specific/solinas32_2e235m15/femulDisplay.log
deleted file mode 100644
index 7005fad2e..000000000
--- a/src/Specific/solinas32_2e235m15/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((0x2 * ((uint64_t)x17 * x23)) + ((uint64_t)x19 * x21)))))))) + (0xf * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) + (0xf * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) + (0xf * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((uint64_t)x13 * x21))))) + (0xf * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) + (0xf * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) + (0xf * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0xf * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0xf * ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))));
- uint64_t x45 = (x44 >> 0x1b);
- uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
- uint64_t x47 = (x45 + x43);
- uint64_t x48 = (x47 >> 0x1a);
- uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
- uint64_t x50 = (x48 + x42);
- uint64_t x51 = (x50 >> 0x1a);
- uint32_t x52 = ((uint32_t)x50 & 0x3ffffff);
- uint64_t x53 = (x51 + x41);
- uint64_t x54 = (x53 >> 0x1a);
- uint32_t x55 = ((uint32_t)x53 & 0x3ffffff);
- uint64_t x56 = (x54 + x40);
- uint64_t x57 = (x56 >> 0x1a);
- uint32_t x58 = ((uint32_t)x56 & 0x3ffffff);
- uint64_t x59 = (x57 + x39);
- uint64_t x60 = (x59 >> 0x1a);
- uint32_t x61 = ((uint32_t)x59 & 0x3ffffff);
- uint64_t x62 = (x60 + x38);
- uint64_t x63 = (x62 >> 0x1a);
- uint32_t x64 = ((uint32_t)x62 & 0x3ffffff);
- uint64_t x65 = (x63 + x37);
- uint64_t x66 = (x65 >> 0x1a);
- uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
- uint64_t x68 = (x66 + x36);
- uint64_t x69 = (x68 >> 0x1a);
- uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
- uint64_t x71 = (x46 + (0xf * x69));
- uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x1a);
- uint32_t x76 = (x74 & 0x3ffffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15/femulDisplay.v b/src/Specific/solinas32_2e235m15/femulDisplay.v
deleted file mode 100644
index 2687fed63..000000000
--- a/src/Specific/solinas32_2e235m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e235m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e235m15/fesquare.c b/src/Specific/solinas32_2e235m15/fesquare.c
deleted file mode 100644
index 950713e6b..000000000
--- a/src/Specific/solinas32_2e235m15/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xf * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- { uint64_t x26 = (x25 >> 0x1b);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- { uint64_t x28 = (x26 + x24);
- { uint64_t x29 = (x28 >> 0x1a);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- { uint64_t x31 = (x29 + x23);
- { uint64_t x32 = (x31 >> 0x1a);
- { uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- { uint64_t x34 = (x32 + x22);
- { uint64_t x35 = (x34 >> 0x1a);
- { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x1a);
- { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- { uint64_t x40 = (x38 + x20);
- { uint64_t x41 = (x40 >> 0x1a);
- { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- { uint64_t x43 = (x41 + x19);
- { uint64_t x44 = (x43 >> 0x1a);
- { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- { uint64_t x46 = (x44 + x18);
- { uint64_t x47 = (x46 >> 0x1a);
- { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- { uint64_t x49 = (x47 + x17);
- { uint64_t x50 = (x49 >> 0x1a);
- { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- { uint64_t x52 = (x27 + (0xf * x50));
- { uint32_t x53 = (uint32_t) (x52 >> 0x1b);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x1a);
- { uint32_t x57 = (x55 & 0x3ffffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e235m15/fesquare.v b/src/Specific/solinas32_2e235m15/fesquare.v
deleted file mode 100644
index 20351c587..000000000
--- a/src/Specific/solinas32_2e235m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e235m15/fesquareDisplay.log b/src/Specific/solinas32_2e235m15/fesquareDisplay.log
deleted file mode 100644
index 0291ede5c..000000000
--- a/src/Specific/solinas32_2e235m15/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xf * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))));
- uint64_t x26 = (x25 >> 0x1b);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- uint64_t x28 = (x26 + x24);
- uint64_t x29 = (x28 >> 0x1a);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- uint64_t x31 = (x29 + x23);
- uint64_t x32 = (x31 >> 0x1a);
- uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
- uint64_t x34 = (x32 + x22);
- uint64_t x35 = (x34 >> 0x1a);
- uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x1a);
- uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- uint64_t x40 = (x38 + x20);
- uint64_t x41 = (x40 >> 0x1a);
- uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- uint64_t x43 = (x41 + x19);
- uint64_t x44 = (x43 >> 0x1a);
- uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- uint64_t x46 = (x44 + x18);
- uint64_t x47 = (x46 >> 0x1a);
- uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- uint64_t x49 = (x47 + x17);
- uint64_t x50 = (x49 >> 0x1a);
- uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- uint64_t x52 = (x27 + (0xf * x50));
- uint32_t x53 = (uint32_t) (x52 >> 0x1b);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x1a);
- uint32_t x57 = (x55 & 0x3ffffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15/fesquareDisplay.v b/src/Specific/solinas32_2e235m15/fesquareDisplay.v
deleted file mode 100644
index 45e57a436..000000000
--- a/src/Specific/solinas32_2e235m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e235m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e235m15/fesub.c b/src/Specific/solinas32_2e235m15/fesub.c
deleted file mode 100644
index 7fd2d1be8..000000000
--- a/src/Specific/solinas32_2e235m15/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0xfffffe2 + x5) - x21);
- out[1] = ((0x7fffffe + x7) - x23);
- out[2] = ((0x7fffffe + x9) - x25);
- out[3] = ((0x7fffffe + x11) - x27);
- out[4] = ((0x7fffffe + x13) - x29);
- out[5] = ((0x7fffffe + x15) - x31);
- out[6] = ((0x7fffffe + x17) - x33);
- out[7] = ((0x7fffffe + x19) - x35);
- out[8] = ((0x7fffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e235m15/fesub.v b/src/Specific/solinas32_2e235m15/fesub.v
deleted file mode 100644
index 9676a4a09..000000000
--- a/src/Specific/solinas32_2e235m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e235m15/fesubDisplay.log b/src/Specific/solinas32_2e235m15/fesubDisplay.log
deleted file mode 100644
index 583cd065b..000000000
--- a/src/Specific/solinas32_2e235m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7fffffe + x18) - x34), ((0x7fffffe + x19) - x35), ((0x7fffffe + x17) - x33), ((0x7fffffe + x15) - x31), ((0x7fffffe + x13) - x29), ((0x7fffffe + x11) - x27), ((0x7fffffe + x9) - x25), ((0x7fffffe + x7) - x23), ((0xfffffe2 + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15/fesubDisplay.v b/src/Specific/solinas32_2e235m15/fesubDisplay.v
deleted file mode 100644
index 617806832..000000000
--- a/src/Specific/solinas32_2e235m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e235m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e235m15/freeze.c b/src/Specific/solinas32_2e235m15/freeze.c
deleted file mode 100644
index 12fd6ce06..000000000
--- a/src/Specific/solinas32_2e235m15/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3ffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x7fffff1);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x3ffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x3ffffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x3ffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x3ffffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x3ffffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x3ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x3ffffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x3ffffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e235m15/freeze.v b/src/Specific/solinas32_2e235m15/freeze.v
deleted file mode 100644
index 64e6fb10a..000000000
--- a/src/Specific/solinas32_2e235m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e235m15/freezeDisplay.log b/src/Specific/solinas32_2e235m15/freezeDisplay.log
deleted file mode 100644
index 2b247c4a5..000000000
--- a/src/Specific/solinas32_2e235m15/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x3ffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x3ffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x3ffffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x3ffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x3ffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x3ffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x3ffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x3ffffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x7fffff1);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x3ffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x3ffffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x3ffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x3ffffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x3ffffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x3ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x3ffffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x3ffffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e235m15/freezeDisplay.v b/src/Specific/solinas32_2e235m15/freezeDisplay.v
deleted file mode 100644
index 71cac3dbe..000000000
--- a/src/Specific/solinas32_2e235m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e235m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/CurveParameters.v b/src/Specific/solinas32_2e235m15_10limbs/CurveParameters.v
new file mode 100644
index 000000000..fa37e34ac
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^235 - 15
+Base: 23.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 23 + 1/2;
+ bitwidth := 32;
+ s := 2^235;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/Synthesis.v b/src/Specific/solinas32_2e235m15_10limbs/Synthesis.v
new file mode 100644
index 000000000..54803293b
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/compiler.sh b/src/Specific/solinas32_2e235m15_10limbs/compiler.sh
new file mode 100755
index 000000000..1838b8396
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<235) - 15' "$@"
diff --git a/src/Specific/solinas32_2e235m15_10limbs/compilerxx.sh b/src/Specific/solinas32_2e235m15_10limbs/compilerxx.sh
new file mode 100755
index 000000000..9a1d37b2c
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,24,23,24,23,24,23,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<235) - 15' "$@"
diff --git a/src/Specific/solinas32_2e235m15_10limbs/feadd.v b/src/Specific/solinas32_2e235m15_10limbs/feadd.v
new file mode 100644
index 000000000..a7d6b74e6
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..22ae41c0c
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/femul.v b/src/Specific/solinas32_2e235m15_10limbs/femul.v
new file mode 100644
index 000000000..3b9d88dca
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.v b/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.v
new file mode 100644
index 000000000..514e76db4
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesquare.v b/src/Specific/solinas32_2e235m15_10limbs/fesquare.v
new file mode 100644
index 000000000..d1694f21a
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b657de578
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesub.v b/src/Specific/solinas32_2e235m15_10limbs/fesub.v
new file mode 100644
index 000000000..68c3c7a70
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..3ed30f49d
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/freeze.v b/src/Specific/solinas32_2e235m15_10limbs/freeze.v
new file mode 100644
index 000000000..22f3303a3
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..62d210782
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e235m15_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e235m15_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..59e02ee7c
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**235 - 15' -Dmodulus_bytes='23.5' -Da24='121665'
diff --git a/src/Specific/solinas32_2e235m15/CurveParameters.v b/src/Specific/solinas32_2e235m15_9limbs/CurveParameters.v
index 2c254584e..2c254584e 100644
--- a/src/Specific/solinas32_2e235m15/CurveParameters.v
+++ b/src/Specific/solinas32_2e235m15_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e235m15_9limbs/Synthesis.v b/src/Specific/solinas32_2e235m15_9limbs/Synthesis.v
new file mode 100644
index 000000000..f8a31ae08
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e235m15/compiler.sh b/src/Specific/solinas32_2e235m15_9limbs/compiler.sh
index e1ccca273..e1ccca273 100755
--- a/src/Specific/solinas32_2e235m15/compiler.sh
+++ b/src/Specific/solinas32_2e235m15_9limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e235m15/compilerxx.sh b/src/Specific/solinas32_2e235m15_9limbs/compilerxx.sh
index d2520b277..d2520b277 100755
--- a/src/Specific/solinas32_2e235m15/compilerxx.sh
+++ b/src/Specific/solinas32_2e235m15_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e235m15_9limbs/feadd.v b/src/Specific/solinas32_2e235m15_9limbs/feadd.v
new file mode 100644
index 000000000..746f3cd1b
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e235m15_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..e49cc0084
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/femul.v b/src/Specific/solinas32_2e235m15_9limbs/femul.v
new file mode 100644
index 000000000..f4b0277a2
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/femulDisplay.v b/src/Specific/solinas32_2e235m15_9limbs/femulDisplay.v
new file mode 100644
index 000000000..3baecfcf1
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/fesquare.v b/src/Specific/solinas32_2e235m15_9limbs/fesquare.v
new file mode 100644
index 000000000..8fd615a08
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e235m15_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c7b7e6d64
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/fesub.v b/src/Specific/solinas32_2e235m15_9limbs/fesub.v
new file mode 100644
index 000000000..a694ac65a
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e235m15_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..3bf9bd896
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/freeze.v b/src/Specific/solinas32_2e235m15_9limbs/freeze.v
new file mode 100644
index 000000000..0b08c7e8a
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e235m15_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e235m15_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..184472b4a
--- /dev/null
+++ b/src/Specific/solinas32_2e235m15_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e235m15_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e235m15/py_interpreter.sh b/src/Specific/solinas32_2e235m15_9limbs/py_interpreter.sh
index 0093dec06..0093dec06 100755
--- a/src/Specific/solinas32_2e235m15/py_interpreter.sh
+++ b/src/Specific/solinas32_2e235m15_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e243m9/Synthesis.v b/src/Specific/solinas32_2e243m9/Synthesis.v
deleted file mode 100644
index b9497fbdb..000000000
--- a/src/Specific/solinas32_2e243m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e243m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e243m9/feadd.c b/src/Specific/solinas32_2e243m9/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e243m9/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e243m9/feadd.v b/src/Specific/solinas32_2e243m9/feadd.v
deleted file mode 100644
index a759b66ec..000000000
--- a/src/Specific/solinas32_2e243m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e243m9/feaddDisplay.log b/src/Specific/solinas32_2e243m9/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e243m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9/feaddDisplay.v b/src/Specific/solinas32_2e243m9/feaddDisplay.v
deleted file mode 100644
index c70677822..000000000
--- a/src/Specific/solinas32_2e243m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e243m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e243m9/femul.c b/src/Specific/solinas32_2e243m9/femul.c
deleted file mode 100644
index c5e1a658b..000000000
--- a/src/Specific/solinas32_2e243m9/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- { uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x9 * ((uint64_t)x18 * x34)));
- { uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x9 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- { uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x9 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- { uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x9 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- { uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x9 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- { uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x9 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- { uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x9 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- { uint64_t x44 = (((uint64_t)x5 * x21) + (0x9 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- { uint64_t x45 = (x44 >> 0x1b);
- { uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
- { uint64_t x47 = (x45 + x43);
- { uint64_t x48 = (x47 >> 0x1b);
- { uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
- { uint64_t x50 = (x48 + x42);
- { uint64_t x51 = (x50 >> 0x1b);
- { uint32_t x52 = ((uint32_t)x50 & 0x7ffffff);
- { uint64_t x53 = (x51 + x41);
- { uint64_t x54 = (x53 >> 0x1b);
- { uint32_t x55 = ((uint32_t)x53 & 0x7ffffff);
- { uint64_t x56 = (x54 + x40);
- { uint64_t x57 = (x56 >> 0x1b);
- { uint32_t x58 = ((uint32_t)x56 & 0x7ffffff);
- { uint64_t x59 = (x57 + x39);
- { uint64_t x60 = (x59 >> 0x1b);
- { uint32_t x61 = ((uint32_t)x59 & 0x7ffffff);
- { uint64_t x62 = (x60 + x38);
- { uint64_t x63 = (x62 >> 0x1b);
- { uint32_t x64 = ((uint32_t)x62 & 0x7ffffff);
- { uint64_t x65 = (x63 + x37);
- { uint64_t x66 = (x65 >> 0x1b);
- { uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
- { uint64_t x68 = (x66 + x36);
- { uint64_t x69 = (x68 >> 0x1b);
- { uint32_t x70 = ((uint32_t)x68 & 0x7ffffff);
- { uint64_t x71 = (x46 + (0x9 * x69));
- { uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- { uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- { uint32_t x74 = (x72 + x49);
- { uint32_t x75 = (x74 >> 0x1b);
- { uint32_t x76 = (x74 & 0x7ffffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e243m9/femul.v b/src/Specific/solinas32_2e243m9/femul.v
deleted file mode 100644
index 3e34126c9..000000000
--- a/src/Specific/solinas32_2e243m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e243m9/femulDisplay.log b/src/Specific/solinas32_2e243m9/femulDisplay.log
deleted file mode 100644
index 4d5b22a3a..000000000
--- a/src/Specific/solinas32_2e243m9/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + (((uint64_t)x19 * x23) + ((uint64_t)x18 * x21)))))))));
- uint64_t x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) + (0x9 * ((uint64_t)x18 * x34)));
- uint64_t x38 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x17 * x21))))))) + (0x9 * (((uint64_t)x19 * x34) + ((uint64_t)x18 * x35))));
- uint64_t x39 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + ((uint64_t)x15 * x21)))))) + (0x9 * (((uint64_t)x17 * x34) + (((uint64_t)x19 * x35) + ((uint64_t)x18 * x33)))));
- uint64_t x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) + (0x9 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))));
- uint64_t x41 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + ((uint64_t)x11 * x21)))) + (0x9 * (((uint64_t)x13 * x34) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x18 * x29)))))));
- uint64_t x42 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + ((uint64_t)x9 * x21))) + (0x9 * (((uint64_t)x11 * x34) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x18 * x27))))))));
- uint64_t x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) + (0x9 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))));
- uint64_t x44 = (((uint64_t)x5 * x21) + (0x9 * (((uint64_t)x7 * x34) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + (((uint64_t)x17 * x27) + (((uint64_t)x19 * x25) + ((uint64_t)x18 * x23))))))))));
- uint64_t x45 = (x44 >> 0x1b);
- uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
- uint64_t x47 = (x45 + x43);
- uint64_t x48 = (x47 >> 0x1b);
- uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
- uint64_t x50 = (x48 + x42);
- uint64_t x51 = (x50 >> 0x1b);
- uint32_t x52 = ((uint32_t)x50 & 0x7ffffff);
- uint64_t x53 = (x51 + x41);
- uint64_t x54 = (x53 >> 0x1b);
- uint32_t x55 = ((uint32_t)x53 & 0x7ffffff);
- uint64_t x56 = (x54 + x40);
- uint64_t x57 = (x56 >> 0x1b);
- uint32_t x58 = ((uint32_t)x56 & 0x7ffffff);
- uint64_t x59 = (x57 + x39);
- uint64_t x60 = (x59 >> 0x1b);
- uint32_t x61 = ((uint32_t)x59 & 0x7ffffff);
- uint64_t x62 = (x60 + x38);
- uint64_t x63 = (x62 >> 0x1b);
- uint32_t x64 = ((uint32_t)x62 & 0x7ffffff);
- uint64_t x65 = (x63 + x37);
- uint64_t x66 = (x65 >> 0x1b);
- uint32_t x67 = ((uint32_t)x65 & 0x7ffffff);
- uint64_t x68 = (x66 + x36);
- uint64_t x69 = (x68 >> 0x1b);
- uint32_t x70 = ((uint32_t)x68 & 0x7ffffff);
- uint64_t x71 = (x46 + (0x9 * x69));
- uint32_t x72 = (uint32_t) (x71 >> 0x1b);
- uint32_t x73 = ((uint32_t)x71 & 0x7ffffff);
- uint32_t x74 = (x72 + x49);
- uint32_t x75 = (x74 >> 0x1b);
- uint32_t x76 = (x74 & 0x7ffffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9/femulDisplay.v b/src/Specific/solinas32_2e243m9/femulDisplay.v
deleted file mode 100644
index 74efbfb14..000000000
--- a/src/Specific/solinas32_2e243m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e243m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e243m9/fesquare.c b/src/Specific/solinas32_2e243m9/fesquare.c
deleted file mode 100644
index 01abea524..000000000
--- a/src/Specific/solinas32_2e243m9/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- { uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((uint64_t)x15 * x15)));
- { uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- { uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- { uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- { uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- { uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- { uint64_t x25 = (((uint64_t)x2 * x2) + (0x9 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- { uint64_t x26 = (x25 >> 0x1b);
- { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- { uint64_t x28 = (x26 + x24);
- { uint64_t x29 = (x28 >> 0x1b);
- { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- { uint64_t x31 = (x29 + x23);
- { uint64_t x32 = (x31 >> 0x1b);
- { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- { uint64_t x34 = (x32 + x22);
- { uint64_t x35 = (x34 >> 0x1b);
- { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x1b);
- { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- { uint64_t x40 = (x38 + x20);
- { uint64_t x41 = (x40 >> 0x1b);
- { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- { uint64_t x43 = (x41 + x19);
- { uint64_t x44 = (x43 >> 0x1b);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- { uint64_t x46 = (x44 + x18);
- { uint64_t x47 = (x46 >> 0x1b);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- { uint64_t x49 = (x47 + x17);
- { uint64_t x50 = (x49 >> 0x1b);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- { uint64_t x52 = (x27 + (0x9 * x50));
- { uint32_t x53 = (uint32_t) (x52 >> 0x1b);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- { uint32_t x55 = (x53 + x30);
- { uint32_t x56 = (x55 >> 0x1b);
- { uint32_t x57 = (x55 & 0x7ffffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e243m9/fesquare.v b/src/Specific/solinas32_2e243m9/fesquare.v
deleted file mode 100644
index 6edb3fa29..000000000
--- a/src/Specific/solinas32_2e243m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e243m9/fesquareDisplay.log b/src/Specific/solinas32_2e243m9/fesquareDisplay.log
deleted file mode 100644
index 8a4b25a51..000000000
--- a/src/Specific/solinas32_2e243m9/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x15 * x2)))))))));
- uint64_t x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * ((uint64_t)x15 * x15)));
- uint64_t x19 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x15) + ((uint64_t)x15 * x16))));
- uint64_t x20 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x15) + (((uint64_t)x16 * x16) + ((uint64_t)x15 * x14)))));
- uint64_t x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))));
- uint64_t x22 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x15) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + ((uint64_t)x15 * x10)))))));
- uint64_t x23 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x15) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + ((uint64_t)x15 * x8))))))));
- uint64_t x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))));
- uint64_t x25 = (((uint64_t)x2 * x2) + (0x9 * (((uint64_t)x4 * x15) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + ((uint64_t)x15 * x4))))))))));
- uint64_t x26 = (x25 >> 0x1b);
- uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
- uint64_t x28 = (x26 + x24);
- uint64_t x29 = (x28 >> 0x1b);
- uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
- uint64_t x31 = (x29 + x23);
- uint64_t x32 = (x31 >> 0x1b);
- uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
- uint64_t x34 = (x32 + x22);
- uint64_t x35 = (x34 >> 0x1b);
- uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x1b);
- uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
- uint64_t x40 = (x38 + x20);
- uint64_t x41 = (x40 >> 0x1b);
- uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
- uint64_t x43 = (x41 + x19);
- uint64_t x44 = (x43 >> 0x1b);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
- uint64_t x46 = (x44 + x18);
- uint64_t x47 = (x46 >> 0x1b);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
- uint64_t x49 = (x47 + x17);
- uint64_t x50 = (x49 >> 0x1b);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
- uint64_t x52 = (x27 + (0x9 * x50));
- uint32_t x53 = (uint32_t) (x52 >> 0x1b);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
- uint32_t x55 = (x53 + x30);
- uint32_t x56 = (x55 >> 0x1b);
- uint32_t x57 = (x55 & 0x7ffffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9/fesquareDisplay.v b/src/Specific/solinas32_2e243m9/fesquareDisplay.v
deleted file mode 100644
index 3bfb11509..000000000
--- a/src/Specific/solinas32_2e243m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e243m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e243m9/fesub.c b/src/Specific/solinas32_2e243m9/fesub.c
deleted file mode 100644
index 51d3a48e3..000000000
--- a/src/Specific/solinas32_2e243m9/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0xfffffee + x5) - x21);
- out[1] = ((0xffffffe + x7) - x23);
- out[2] = ((0xffffffe + x9) - x25);
- out[3] = ((0xffffffe + x11) - x27);
- out[4] = ((0xffffffe + x13) - x29);
- out[5] = ((0xffffffe + x15) - x31);
- out[6] = ((0xffffffe + x17) - x33);
- out[7] = ((0xffffffe + x19) - x35);
- out[8] = ((0xffffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e243m9/fesub.v b/src/Specific/solinas32_2e243m9/fesub.v
deleted file mode 100644
index d101da0da..000000000
--- a/src/Specific/solinas32_2e243m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e243m9/fesubDisplay.log b/src/Specific/solinas32_2e243m9/fesubDisplay.log
deleted file mode 100644
index c2adfb236..000000000
--- a/src/Specific/solinas32_2e243m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0xffffffe + x18) - x34), ((0xffffffe + x19) - x35), ((0xffffffe + x17) - x33), ((0xffffffe + x15) - x31), ((0xffffffe + x13) - x29), ((0xffffffe + x11) - x27), ((0xffffffe + x9) - x25), ((0xffffffe + x7) - x23), ((0xfffffee + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9/fesubDisplay.v b/src/Specific/solinas32_2e243m9/fesubDisplay.v
deleted file mode 100644
index 7ca701226..000000000
--- a/src/Specific/solinas32_2e243m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e243m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e243m9/freeze.c b/src/Specific/solinas32_2e243m9/freeze.c
deleted file mode 100644
index e0a268881..000000000
--- a/src/Specific/solinas32_2e243m9/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff7);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x7fffff7);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0x7ffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0x7ffffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x7ffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0x7ffffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0x7ffffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x7ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0x7ffffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0x7ffffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e243m9/freeze.v b/src/Specific/solinas32_2e243m9/freeze.v
deleted file mode 100644
index 70fdbd86c..000000000
--- a/src/Specific/solinas32_2e243m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e243m9/freezeDisplay.log b/src/Specific/solinas32_2e243m9/freezeDisplay.log
deleted file mode 100644
index 3c74627ca..000000000
--- a/src/Specific/solinas32_2e243m9/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff7);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0x7ffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0x7ffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x7ffffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0x7ffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0x7ffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x7ffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0x7ffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0x7ffffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x7fffff7);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0x7ffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0x7ffffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x7ffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0x7ffffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0x7ffffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x7ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0x7ffffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0x7ffffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e243m9/freezeDisplay.v b/src/Specific/solinas32_2e243m9/freezeDisplay.v
deleted file mode 100644
index a1acfcc2c..000000000
--- a/src/Specific/solinas32_2e243m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e243m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/CurveParameters.v b/src/Specific/solinas32_2e243m9_10limbs/CurveParameters.v
new file mode 100644
index 000000000..303a9b657
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^243 - 9
+Base: 24.3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 24 + 3/10;
+ bitwidth := 32;
+ s := 2^243;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/Synthesis.v b/src/Specific/solinas32_2e243m9_10limbs/Synthesis.v
new file mode 100644
index 000000000..eb5e6fe37
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/compiler.sh b/src/Specific/solinas32_2e243m9_10limbs/compiler.sh
new file mode 100755
index 000000000..db11382ae
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<243) - 9' "$@"
diff --git a/src/Specific/solinas32_2e243m9_10limbs/compilerxx.sh b/src/Specific/solinas32_2e243m9_10limbs/compilerxx.sh
new file mode 100755
index 000000000..078162cd5
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<243) - 9' "$@"
diff --git a/src/Specific/solinas32_2e243m9_10limbs/feadd.v b/src/Specific/solinas32_2e243m9_10limbs/feadd.v
new file mode 100644
index 000000000..0ced18c14
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..d325a3cc4
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/femul.v b/src/Specific/solinas32_2e243m9_10limbs/femul.v
new file mode 100644
index 000000000..e5816a454
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.v b/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.v
new file mode 100644
index 000000000..523b75476
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesquare.v b/src/Specific/solinas32_2e243m9_10limbs/fesquare.v
new file mode 100644
index 000000000..4e79a4179
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..591a72936
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesub.v b/src/Specific/solinas32_2e243m9_10limbs/fesub.v
new file mode 100644
index 000000000..d660bcdc3
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..d705ddff0
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/freeze.v b/src/Specific/solinas32_2e243m9_10limbs/freeze.v
new file mode 100644
index 000000000..c382d04f7
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..6c29248de
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e243m9_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e243m9_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..5388fa26c
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**243 - 9' -Dmodulus_bytes='24.3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e243m9/CurveParameters.v b/src/Specific/solinas32_2e243m9_9limbs/CurveParameters.v
index 0ced35491..0ced35491 100644
--- a/src/Specific/solinas32_2e243m9/CurveParameters.v
+++ b/src/Specific/solinas32_2e243m9_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e243m9_9limbs/Synthesis.v b/src/Specific/solinas32_2e243m9_9limbs/Synthesis.v
new file mode 100644
index 000000000..77b939798
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e243m9/compiler.sh b/src/Specific/solinas32_2e243m9_9limbs/compiler.sh
index a6a88a022..a6a88a022 100755
--- a/src/Specific/solinas32_2e243m9/compiler.sh
+++ b/src/Specific/solinas32_2e243m9_9limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e243m9/compilerxx.sh b/src/Specific/solinas32_2e243m9_9limbs/compilerxx.sh
index b0cee5ccb..b0cee5ccb 100755
--- a/src/Specific/solinas32_2e243m9/compilerxx.sh
+++ b/src/Specific/solinas32_2e243m9_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e243m9_9limbs/feadd.v b/src/Specific/solinas32_2e243m9_9limbs/feadd.v
new file mode 100644
index 000000000..15f3bb3d9
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/feaddDisplay.v b/src/Specific/solinas32_2e243m9_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..e31fd6e32
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/femul.v b/src/Specific/solinas32_2e243m9_9limbs/femul.v
new file mode 100644
index 000000000..8e1d2480b
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/femulDisplay.v b/src/Specific/solinas32_2e243m9_9limbs/femulDisplay.v
new file mode 100644
index 000000000..30f76a118
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/fesquare.v b/src/Specific/solinas32_2e243m9_9limbs/fesquare.v
new file mode 100644
index 000000000..e449f49dc
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/fesquareDisplay.v b/src/Specific/solinas32_2e243m9_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5146bca6a
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/fesub.v b/src/Specific/solinas32_2e243m9_9limbs/fesub.v
new file mode 100644
index 000000000..5f5fd4e60
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/fesubDisplay.v b/src/Specific/solinas32_2e243m9_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..ba7bf1655
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/freeze.v b/src/Specific/solinas32_2e243m9_9limbs/freeze.v
new file mode 100644
index 000000000..128da1329
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e243m9_9limbs/freezeDisplay.v b/src/Specific/solinas32_2e243m9_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..97397b072
--- /dev/null
+++ b/src/Specific/solinas32_2e243m9_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e243m9_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e243m9/py_interpreter.sh b/src/Specific/solinas32_2e243m9_9limbs/py_interpreter.sh
index 74091a60e..74091a60e 100755
--- a/src/Specific/solinas32_2e243m9/py_interpreter.sh
+++ b/src/Specific/solinas32_2e243m9_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e251m9/Synthesis.v b/src/Specific/solinas32_2e251m9/Synthesis.v
deleted file mode 100644
index 90ebde273..000000000
--- a/src/Specific/solinas32_2e251m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e251m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e251m9/feadd.c b/src/Specific/solinas32_2e251m9/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e251m9/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e251m9/feadd.v b/src/Specific/solinas32_2e251m9/feadd.v
deleted file mode 100644
index 9b02a6b9b..000000000
--- a/src/Specific/solinas32_2e251m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e251m9/feaddDisplay.log b/src/Specific/solinas32_2e251m9/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e251m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9/feaddDisplay.v b/src/Specific/solinas32_2e251m9/feaddDisplay.v
deleted file mode 100644
index 548243cf2..000000000
--- a/src/Specific/solinas32_2e251m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e251m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e251m9/femul.c b/src/Specific/solinas32_2e251m9/femul.c
deleted file mode 100644
index 62632bb16..000000000
--- a/src/Specific/solinas32_2e251m9/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x9 * ((uint64_t)x20 * x38)));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x9 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x9 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x9 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x9 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x9 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x9 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x9 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x9 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- { uint64_t x50 = (x49 >> 0x1a);
- { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- { uint64_t x52 = (x50 + x48);
- { uint64_t x53 = (x52 >> 0x19);
- { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- { uint64_t x55 = (x53 + x47);
- { uint64_t x56 = (x55 >> 0x19);
- { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- { uint64_t x58 = (x56 + x46);
- { uint64_t x59 = (x58 >> 0x19);
- { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- { uint64_t x61 = (x59 + x45);
- { uint64_t x62 = (x61 >> 0x19);
- { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
- { uint64_t x64 = (x62 + x44);
- { uint64_t x65 = (x64 >> 0x19);
- { uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- { uint64_t x67 = (x65 + x43);
- { uint64_t x68 = (x67 >> 0x19);
- { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
- { uint64_t x70 = (x68 + x42);
- { uint64_t x71 = (x70 >> 0x19);
- { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- { uint64_t x73 = (x71 + x41);
- { uint64_t x74 = (x73 >> 0x19);
- { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
- { uint64_t x76 = (x74 + x40);
- { uint64_t x77 = (x76 >> 0x19);
- { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- { uint64_t x79 = (x51 + (0x9 * x77));
- { uint32_t x80 = (uint32_t) (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x19);
- { uint32_t x84 = (x82 & 0x1ffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e251m9/femul.v b/src/Specific/solinas32_2e251m9/femul.v
deleted file mode 100644
index 41dfb8ece..000000000
--- a/src/Specific/solinas32_2e251m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e251m9/femulDisplay.log b/src/Specific/solinas32_2e251m9/femulDisplay.log
deleted file mode 100644
index f8fccef50..000000000
--- a/src/Specific/solinas32_2e251m9/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((0x2 * ((uint64_t)x11 * x35)) + ((0x2 * ((uint64_t)x13 * x33)) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((0x2 * ((uint64_t)x19 * x27)) + ((0x2 * ((uint64_t)x21 * x25)) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((0x2 * ((uint64_t)x17 * x27)) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x9 * ((uint64_t)x20 * x38)));
- uint64_t x42 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((0x2 * ((uint64_t)x15 * x27)) + ((0x2 * ((uint64_t)x17 * x25)) + ((uint64_t)x19 * x23)))))))) + (0x9 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((0x2 * ((uint64_t)x13 * x27)) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x9 * (((uint64_t)x19 * x38) + (((uint64_t)x21 * x39) + ((uint64_t)x20 * x37)))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((0x2 * ((uint64_t)x11 * x27)) + ((0x2 * ((uint64_t)x13 * x25)) + ((uint64_t)x15 * x23)))))) + (0x9 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x9 * (((uint64_t)x15 * x38) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x20 * x33)))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((uint64_t)x11 * x23)))) + (0x9 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x9 * (((uint64_t)x11 * x38) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x20 * x29)))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x9 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x9 * ((0x2 * ((uint64_t)x7 * x38)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((0x2 * ((uint64_t)x13 * x35)) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((0x2 * ((uint64_t)x21 * x27)) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- uint64_t x50 = (x49 >> 0x1a);
- uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- uint64_t x52 = (x50 + x48);
- uint64_t x53 = (x52 >> 0x19);
- uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- uint64_t x55 = (x53 + x47);
- uint64_t x56 = (x55 >> 0x19);
- uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- uint64_t x58 = (x56 + x46);
- uint64_t x59 = (x58 >> 0x19);
- uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- uint64_t x61 = (x59 + x45);
- uint64_t x62 = (x61 >> 0x19);
- uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
- uint64_t x64 = (x62 + x44);
- uint64_t x65 = (x64 >> 0x19);
- uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- uint64_t x67 = (x65 + x43);
- uint64_t x68 = (x67 >> 0x19);
- uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
- uint64_t x70 = (x68 + x42);
- uint64_t x71 = (x70 >> 0x19);
- uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- uint64_t x73 = (x71 + x41);
- uint64_t x74 = (x73 >> 0x19);
- uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
- uint64_t x76 = (x74 + x40);
- uint64_t x77 = (x76 >> 0x19);
- uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- uint64_t x79 = (x51 + (0x9 * x77));
- uint32_t x80 = (uint32_t) (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x19);
- uint32_t x84 = (x82 & 0x1ffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9/femulDisplay.v b/src/Specific/solinas32_2e251m9/femulDisplay.v
deleted file mode 100644
index 9e084bdd2..000000000
--- a/src/Specific/solinas32_2e251m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e251m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e251m9/fesquare.c b/src/Specific/solinas32_2e251m9/fesquare.c
deleted file mode 100644
index d21201afe..000000000
--- a/src/Specific/solinas32_2e251m9/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((uint64_t)x17 * x17)));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- { uint64_t x29 = (x28 >> 0x1a);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- { uint64_t x31 = (x29 + x27);
- { uint64_t x32 = (x31 >> 0x19);
- { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- { uint64_t x34 = (x32 + x26);
- { uint64_t x35 = (x34 >> 0x19);
- { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- { uint64_t x37 = (x35 + x25);
- { uint64_t x38 = (x37 >> 0x19);
- { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
- { uint64_t x40 = (x38 + x24);
- { uint64_t x41 = (x40 >> 0x19);
- { uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
- { uint64_t x43 = (x41 + x23);
- { uint64_t x44 = (x43 >> 0x19);
- { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
- { uint64_t x46 = (x44 + x22);
- { uint64_t x47 = (x46 >> 0x19);
- { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- { uint64_t x49 = (x47 + x21);
- { uint64_t x50 = (x49 >> 0x19);
- { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- { uint64_t x52 = (x50 + x20);
- { uint64_t x53 = (x52 >> 0x19);
- { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- { uint64_t x55 = (x53 + x19);
- { uint64_t x56 = (x55 >> 0x19);
- { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- { uint64_t x58 = (x30 + (0x9 * x56));
- { uint32_t x59 = (uint32_t) (x58 >> 0x1a);
- { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x19);
- { uint32_t x63 = (x61 & 0x1ffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e251m9/fesquare.v b/src/Specific/solinas32_2e251m9/fesquare.v
deleted file mode 100644
index 781d10fe3..000000000
--- a/src/Specific/solinas32_2e251m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e251m9/fesquareDisplay.log b/src/Specific/solinas32_2e251m9/fesquareDisplay.log
deleted file mode 100644
index 588ea2285..000000000
--- a/src/Specific/solinas32_2e251m9/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * ((uint64_t)x17 * x17)));
- uint64_t x21 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x17) + (((uint64_t)x18 * x18) + ((uint64_t)x17 * x16)))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x17) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((uint64_t)x17 * x12)))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x17) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + ((uint64_t)x17 * x8)))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x17)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- uint64_t x29 = (x28 >> 0x1a);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- uint64_t x31 = (x29 + x27);
- uint64_t x32 = (x31 >> 0x19);
- uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- uint64_t x34 = (x32 + x26);
- uint64_t x35 = (x34 >> 0x19);
- uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- uint64_t x37 = (x35 + x25);
- uint64_t x38 = (x37 >> 0x19);
- uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
- uint64_t x40 = (x38 + x24);
- uint64_t x41 = (x40 >> 0x19);
- uint32_t x42 = ((uint32_t)x40 & 0x1ffffff);
- uint64_t x43 = (x41 + x23);
- uint64_t x44 = (x43 >> 0x19);
- uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
- uint64_t x46 = (x44 + x22);
- uint64_t x47 = (x46 >> 0x19);
- uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- uint64_t x49 = (x47 + x21);
- uint64_t x50 = (x49 >> 0x19);
- uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- uint64_t x52 = (x50 + x20);
- uint64_t x53 = (x52 >> 0x19);
- uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- uint64_t x55 = (x53 + x19);
- uint64_t x56 = (x55 >> 0x19);
- uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- uint64_t x58 = (x30 + (0x9 * x56));
- uint32_t x59 = (uint32_t) (x58 >> 0x1a);
- uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x19);
- uint32_t x63 = (x61 & 0x1ffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9/fesquareDisplay.v b/src/Specific/solinas32_2e251m9/fesquareDisplay.v
deleted file mode 100644
index 837fa74b8..000000000
--- a/src/Specific/solinas32_2e251m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e251m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e251m9/fesub.c b/src/Specific/solinas32_2e251m9/fesub.c
deleted file mode 100644
index 1a01bec17..000000000
--- a/src/Specific/solinas32_2e251m9/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0x7ffffee + x5) - x23);
- out[1] = ((0x3fffffe + x7) - x25);
- out[2] = ((0x3fffffe + x9) - x27);
- out[3] = ((0x3fffffe + x11) - x29);
- out[4] = ((0x3fffffe + x13) - x31);
- out[5] = ((0x3fffffe + x15) - x33);
- out[6] = ((0x3fffffe + x17) - x35);
- out[7] = ((0x3fffffe + x19) - x37);
- out[8] = ((0x3fffffe + x21) - x39);
- out[9] = ((0x3fffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e251m9/fesub.v b/src/Specific/solinas32_2e251m9/fesub.v
deleted file mode 100644
index d5cf56273..000000000
--- a/src/Specific/solinas32_2e251m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e251m9/fesubDisplay.log b/src/Specific/solinas32_2e251m9/fesubDisplay.log
deleted file mode 100644
index 590e5d991..000000000
--- a/src/Specific/solinas32_2e251m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x3fffffe + x20) - x38), ((0x3fffffe + x21) - x39), ((0x3fffffe + x19) - x37), ((0x3fffffe + x17) - x35), ((0x3fffffe + x15) - x33), ((0x3fffffe + x13) - x31), ((0x3fffffe + x11) - x29), ((0x3fffffe + x9) - x27), ((0x3fffffe + x7) - x25), ((0x7ffffee + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9/fesubDisplay.v b/src/Specific/solinas32_2e251m9/fesubDisplay.v
deleted file mode 100644
index da6ba175d..000000000
--- a/src/Specific/solinas32_2e251m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e251m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e251m9/freeze.c b/src/Specific/solinas32_2e251m9/freeze.c
deleted file mode 100644
index ace9aa146..000000000
--- a/src/Specific/solinas32_2e251m9/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff7);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x3fffff7);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x1ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x1ffffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x1ffffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x1ffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x1ffffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x1ffffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x1ffffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x1ffffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x1ffffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e251m9/freeze.v b/src/Specific/solinas32_2e251m9/freeze.v
deleted file mode 100644
index d4c50d9cd..000000000
--- a/src/Specific/solinas32_2e251m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e251m9/freezeDisplay.log b/src/Specific/solinas32_2e251m9/freezeDisplay.log
deleted file mode 100644
index 740c0f5ae..000000000
--- a/src/Specific/solinas32_2e251m9/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff7);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x1ffffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x1ffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x1ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x1ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x3fffff7);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x1ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x1ffffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x1ffffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x1ffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x1ffffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x1ffffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x1ffffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x1ffffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x1ffffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e251m9/freezeDisplay.v b/src/Specific/solinas32_2e251m9/freezeDisplay.v
deleted file mode 100644
index 68960866e..000000000
--- a/src/Specific/solinas32_2e251m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e251m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e251m9/CurveParameters.v b/src/Specific/solinas32_2e251m9_10limbs/CurveParameters.v
index 1cbf603c8..1cbf603c8 100644
--- a/src/Specific/solinas32_2e251m9/CurveParameters.v
+++ b/src/Specific/solinas32_2e251m9_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e251m9_10limbs/Synthesis.v b/src/Specific/solinas32_2e251m9_10limbs/Synthesis.v
new file mode 100644
index 000000000..9ed97e86f
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e251m9/compiler.sh b/src/Specific/solinas32_2e251m9_10limbs/compiler.sh
index 962f3be60..962f3be60 100755
--- a/src/Specific/solinas32_2e251m9/compiler.sh
+++ b/src/Specific/solinas32_2e251m9_10limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e251m9/compilerxx.sh b/src/Specific/solinas32_2e251m9_10limbs/compilerxx.sh
index 7ad2fe10e..7ad2fe10e 100755
--- a/src/Specific/solinas32_2e251m9/compilerxx.sh
+++ b/src/Specific/solinas32_2e251m9_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e251m9_10limbs/feadd.v b/src/Specific/solinas32_2e251m9_10limbs/feadd.v
new file mode 100644
index 000000000..67a3a9630
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e251m9_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..ba2f12c79
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/femul.v b/src/Specific/solinas32_2e251m9_10limbs/femul.v
new file mode 100644
index 000000000..54a20cb50
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/femulDisplay.v b/src/Specific/solinas32_2e251m9_10limbs/femulDisplay.v
new file mode 100644
index 000000000..6f958eb95
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/fesquare.v b/src/Specific/solinas32_2e251m9_10limbs/fesquare.v
new file mode 100644
index 000000000..4634ea792
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e251m9_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6007b04f1
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/fesub.v b/src/Specific/solinas32_2e251m9_10limbs/fesub.v
new file mode 100644
index 000000000..227f8b9d6
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e251m9_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..ef7c325a0
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/freeze.v b/src/Specific/solinas32_2e251m9_10limbs/freeze.v
new file mode 100644
index 000000000..50d82af41
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e251m9_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e251m9_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..52ff71f6c
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e251m9/py_interpreter.sh b/src/Specific/solinas32_2e251m9_10limbs/py_interpreter.sh
index 76778413e..76778413e 100755
--- a/src/Specific/solinas32_2e251m9/py_interpreter.sh
+++ b/src/Specific/solinas32_2e251m9_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e251m9_11limbs/CurveParameters.v b/src/Specific/solinas32_2e251m9_11limbs/CurveParameters.v
new file mode 100644
index 000000000..8a5cd6090
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^251 - 9
+Base: 22 + 9/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 22 + 9/11;
+ bitwidth := 32;
+ s := 2^251;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/Synthesis.v b/src/Specific/solinas32_2e251m9_11limbs/Synthesis.v
new file mode 100644
index 000000000..5499624b8
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/compiler.sh b/src/Specific/solinas32_2e251m9_11limbs/compiler.sh
new file mode 100755
index 000000000..ddb9e57eb
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22,23,23,23,23,22}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<251) - 9' "$@"
diff --git a/src/Specific/solinas32_2e251m9_11limbs/compilerxx.sh b/src/Specific/solinas32_2e251m9_11limbs/compilerxx.sh
new file mode 100755
index 000000000..19d7400cc
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,22,23,23,23,23,22}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<251) - 9' "$@"
diff --git a/src/Specific/solinas32_2e251m9_11limbs/feadd.v b/src/Specific/solinas32_2e251m9_11limbs/feadd.v
new file mode 100644
index 000000000..099e2f6c4
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..0f42825b4
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/femul.v b/src/Specific/solinas32_2e251m9_11limbs/femul.v
new file mode 100644
index 000000000..4b48df773
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.v b/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.v
new file mode 100644
index 000000000..ab9fab85c
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesquare.v b/src/Specific/solinas32_2e251m9_11limbs/fesquare.v
new file mode 100644
index 000000000..1a866c866
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8ccc39af6
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesub.v b/src/Specific/solinas32_2e251m9_11limbs/fesub.v
new file mode 100644
index 000000000..ac56f27a4
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..12b723dd5
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/freeze.v b/src/Specific/solinas32_2e251m9_11limbs/freeze.v
new file mode 100644
index 000000000..2bb9d911d
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..f3267c25f
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e251m9_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e251m9_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e251m9_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..4f27369f1
--- /dev/null
+++ b/src/Specific/solinas32_2e251m9_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**251 - 9' -Dmodulus_bytes='22 + 9/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/CurveParameters.v b/src/Specific/solinas32_2e254m127x2e240m1/CurveParameters.v
deleted file mode 100644
index ac8cdc9d4..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^254 - 127*2^240 - 1
-Base: 23 + 1/11
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 11%nat;
- base := 23 + 1/11;
- bitwidth := 32;
- s := 2^254;
- c := [(1, 1); (127, 2^240)];
- carry_chains := Some [[9; 10]; [10; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9]; [10; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/Synthesis.v b/src/Specific/solinas32_2e254m127x2e240m1/Synthesis.v
deleted file mode 100644
index 372f58862..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/compiler.sh b/src/Specific/solinas32_2e254m127x2e240m1/compiler.sh
deleted file mode 100755
index ba167b697..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/compilerxx.sh b/src/Specific/solinas32_2e254m127x2e240m1/compilerxx.sh
deleted file mode 100755
index a06534e68..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/feadd.c b/src/Specific/solinas32_2e254m127x2e240m1/feadd.c
deleted file mode 100644
index 1763e8727..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/feadd.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void feadd(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- out[0] = (x5 + x25);
- out[1] = (x7 + x27);
- out[2] = (x9 + x29);
- out[3] = (x11 + x31);
- out[4] = (x13 + x33);
- out[5] = (x15 + x35);
- out[6] = (x17 + x37);
- out[7] = (x19 + x39);
- out[8] = (x21 + x41);
- out[9] = (x23 + x43);
- out[10] = (x22 + x42);
- }}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/feadd.v b/src/Specific/solinas32_2e254m127x2e240m1/feadd.v
deleted file mode 100644
index 9df5b640c..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.log b/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.log
deleted file mode 100644
index 433ecbc2e..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- ((x22 + x42), (x23 + x43), (x21 + x41), (x19 + x39), (x17 + x37), (x15 + x35), (x13 + x33), (x11 + x31), (x9 + x29), (x7 + x27), (x5 + x25)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.v b/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.v
deleted file mode 100644
index dbe3150c8..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/femul.v b/src/Specific/solinas32_2e254m127x2e240m1/femul.v
deleted file mode 100644
index b9fef8d2c..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/femulDisplay.v b/src/Specific/solinas32_2e254m127x2e240m1/femulDisplay.v
deleted file mode 100644
index 48555a4af..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesquare.v b/src/Specific/solinas32_2e254m127x2e240m1/fesquare.v
deleted file mode 100644
index 212913909..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesquareDisplay.v b/src/Specific/solinas32_2e254m127x2e240m1/fesquareDisplay.v
deleted file mode 100644
index 36747cb4a..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesub.c b/src/Specific/solinas32_2e254m127x2e240m1/fesub.c
deleted file mode 100644
index a26cc1722..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesub.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void fesub(uint32_t out[11], const uint32_t in1[11], const uint32_t in2[11]) {
- { const uint32_t x22 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x42 = in2[10];
- { const uint32_t x43 = in2[9];
- { const uint32_t x41 = in2[8];
- { const uint32_t x39 = in2[7];
- { const uint32_t x37 = in2[6];
- { const uint32_t x35 = in2[5];
- { const uint32_t x33 = in2[4];
- { const uint32_t x31 = in2[3];
- { const uint32_t x29 = in2[2];
- { const uint32_t x27 = in2[1];
- { const uint32_t x25 = in2[0];
- out[0] = ((0x1fffffe + x5) - x25);
- out[1] = ((0xfffffe + x7) - x27);
- out[2] = ((0xfffffe + x9) - x29);
- out[3] = ((0xfffffe + x11) - x31);
- out[4] = ((0xfffffe + x13) - x33);
- out[5] = ((0xfffffe + x15) - x35);
- out[6] = ((0xfffffe + x17) - x37);
- out[7] = ((0xfffffe + x19) - x39);
- out[8] = ((0xfffffe + x21) - x41);
- out[9] = ((0xfffffe + x23) - x43);
- out[10] = ((0xfe03fe + x22) - x42);
- }}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesub.v b/src/Specific/solinas32_2e254m127x2e240m1/fesub.v
deleted file mode 100644
index 724b1ef5b..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.log b/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.log
deleted file mode 100644
index 563bea7e2..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x22, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25))%core,
- (((0xfe03fe + x22) - x42), ((0xfffffe + x23) - x43), ((0xfffffe + x21) - x41), ((0xfffffe + x19) - x39), ((0xfffffe + x17) - x37), ((0xfffffe + x15) - x35), ((0xfffffe + x13) - x33), ((0xfffffe + x11) - x31), ((0xfffffe + x9) - x29), ((0xfffffe + x7) - x27), ((0x1fffffe + x5) - x25)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.v b/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.v
deleted file mode 100644
index e1f0dac64..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/freeze.c b/src/Specific/solinas32_2e254m127x2e240m1/freeze.c
deleted file mode 100644
index 7ddac88ba..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/freeze.c
+++ /dev/null
@@ -1,59 +0,0 @@
-static void freeze(uint32_t out[11], const uint32_t in1[11]) {
- { const uint32_t x19 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- { uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7f01ff);
- { uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
- { uint32_t x55 = (x54 & 0xffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
- { uint32_t x59 = (x54 & 0x7fffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
- { uint32_t x63 = (x54 & 0x7fffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
- { uint32_t x67 = (x54 & 0x7fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
- { uint32_t x71 = (x54 & 0x7fffff);
- { uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
- { uint32_t x75 = (x54 & 0x7fffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
- { uint32_t x79 = (x54 & 0x7fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
- { uint32_t x83 = (x54 & 0x7fffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
- { uint32_t x87 = (x54 & 0x7fffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
- { uint32_t x91 = (x54 & 0x7fffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
- { uint32_t x95 = (x54 & 0x7f01ff);
- { uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
- out[0] = x57;
- out[1] = x61;
- out[2] = x65;
- out[3] = x69;
- out[4] = x73;
- out[5] = x77;
- out[6] = x81;
- out[7] = x85;
- out[8] = x89;
- out[9] = x93;
- out[10] = x97;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/freeze.v b/src/Specific/solinas32_2e254m127x2e240m1/freeze.v
deleted file mode 100644
index f0168e8aa..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.log b/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.log
deleted file mode 100644
index a181ddab4..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x19, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- uint32_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x23, Return x4, 0x7fffff);
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x26, Return x6, 0x7fffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x8, 0x7fffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x10, 0x7fffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x12, 0x7fffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x14, 0x7fffff);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x16, 0x7fffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x18, 0x7fffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x20, 0x7fffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x19, 0x7f01ff);
- uint32_t x54 = cmovznz32(x53, 0x0, 0xffffffff);
- uint32_t x55 = (x54 & 0xffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x22, Return x55);
- uint32_t x59 = (x54 & 0x7fffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x25, Return x59);
- uint32_t x63 = (x54 & 0x7fffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x28, Return x63);
- uint32_t x67 = (x54 & 0x7fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x31, Return x67);
- uint32_t x71 = (x54 & 0x7fffff);
- uint32_t x73, uint8_t x74 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x34, Return x71);
- uint32_t x75 = (x54 & 0x7fffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x37, Return x75);
- uint32_t x79 = (x54 & 0x7fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x40, Return x79);
- uint32_t x83 = (x54 & 0x7fffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x43, Return x83);
- uint32_t x87 = (x54 & 0x7fffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x46, Return x87);
- uint32_t x91 = (x54 & 0x7fffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x49, Return x91);
- uint32_t x95 = (x54 & 0x7f01ff);
- uint32_t x97, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x52, Return x95);
- (Return x97, Return x93, Return x89, Return x85, Return x81, Return x77, Return x73, Return x69, Return x65, Return x61, Return x57))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.v b/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.v
deleted file mode 100644
index abd4980bf..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e254m127x2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e254m127x2e240m1/py_interpreter.sh b/src/Specific/solinas32_2e254m127x2e240m1/py_interpreter.sh
deleted file mode 100755
index 1a1aba1e1..000000000
--- a/src/Specific/solinas32_2e254m127x2e240m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**254 - 127*2**240 - 1' -Dmodulus_bytes='23 + 1/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e255m19/Synthesis.v b/src/Specific/solinas32_2e255m19/Synthesis.v
deleted file mode 100644
index ea9517ab0..000000000
--- a/src/Specific/solinas32_2e255m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e255m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m19/feadd.c b/src/Specific/solinas32_2e255m19/feadd.c
deleted file mode 100644
index 57dd4e1af..000000000
--- a/src/Specific/solinas32_2e255m19/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m19/feadd.v b/src/Specific/solinas32_2e255m19/feadd.v
deleted file mode 100644
index 74847801d..000000000
--- a/src/Specific/solinas32_2e255m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m19/feaddDisplay.log b/src/Specific/solinas32_2e255m19/feaddDisplay.log
deleted file mode 100644
index 8a4c51148..000000000
--- a/src/Specific/solinas32_2e255m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19/feaddDisplay.v b/src/Specific/solinas32_2e255m19/feaddDisplay.v
deleted file mode 100644
index 9be02c1f6..000000000
--- a/src/Specific/solinas32_2e255m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e255m19/femul.c b/src/Specific/solinas32_2e255m19/femul.c
deleted file mode 100644
index 74037da91..000000000
--- a/src/Specific/solinas32_2e255m19/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- { uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
- { uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x13 * (0x2 * ((uint64_t)x20 * x38))));
- { uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x13 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- { uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x13 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
- { uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0x13 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- { uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x38)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (0x2 * ((uint64_t)x20 * x33))))))));
- { uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0x13 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- { uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x13 * ((0x2 * ((uint64_t)x11 * x38)) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (0x2 * ((uint64_t)x20 * x29))))))))));
- { uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x13 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- { uint64_t x49 = (((uint64_t)x5 * x23) + (0x13 * ((0x2 * ((uint64_t)x7 * x38)) + (((uint64_t)x9 * x39) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (((uint64_t)x21 * x27) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- { uint64_t x50 = (x49 >> 0x1a);
- { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- { uint64_t x52 = (x50 + x48);
- { uint64_t x53 = (x52 >> 0x19);
- { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- { uint64_t x55 = (x53 + x47);
- { uint64_t x56 = (x55 >> 0x1a);
- { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- { uint64_t x58 = (x56 + x46);
- { uint64_t x59 = (x58 >> 0x19);
- { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- { uint64_t x61 = (x59 + x45);
- { uint64_t x62 = (x61 >> 0x1a);
- { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- { uint64_t x64 = (x62 + x44);
- { uint64_t x65 = (x64 >> 0x19);
- { uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- { uint64_t x67 = (x65 + x43);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- { uint64_t x70 = (x68 + x42);
- { uint64_t x71 = (x70 >> 0x19);
- { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- { uint64_t x73 = (x71 + x41);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- { uint64_t x76 = (x74 + x40);
- { uint64_t x77 = (x76 >> 0x19);
- { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- { uint64_t x79 = (x51 + (0x13 * x77));
- { uint32_t x80 = (uint32_t) (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint32_t x82 = (x80 + x54);
- { uint32_t x83 = (x82 >> 0x19);
- { uint32_t x84 = (x82 & 0x1ffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m19/femul.v b/src/Specific/solinas32_2e255m19/femul.v
deleted file mode 100644
index 473def500..000000000
--- a/src/Specific/solinas32_2e255m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m19/femulDisplay.log b/src/Specific/solinas32_2e255m19/femulDisplay.log
deleted file mode 100644
index a193e6b6e..000000000
--- a/src/Specific/solinas32_2e255m19/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint64_t x40 = (((uint64_t)x5 * x38) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + (((uint64_t)x21 * x25) + ((uint64_t)x20 * x23))))))))));
- uint64_t x41 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + ((0x2 * ((uint64_t)x11 * x33)) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + ((uint64_t)x21 * x23))))))))) + (0x13 * (0x2 * ((uint64_t)x20 * x38))));
- uint64_t x42 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((uint64_t)x19 * x23)))))))) + (0x13 * (((uint64_t)x21 * x38) + ((uint64_t)x20 * x39))));
- uint64_t x43 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + (((uint64_t)x9 * x31) + ((0x2 * ((uint64_t)x11 * x29)) + (((uint64_t)x13 * x27) + ((0x2 * ((uint64_t)x15 * x25)) + ((uint64_t)x17 * x23))))))) + (0x13 * ((0x2 * ((uint64_t)x19 * x38)) + (((uint64_t)x21 * x39) + (0x2 * ((uint64_t)x20 * x37))))));
- uint64_t x44 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + ((uint64_t)x15 * x23)))))) + (0x13 * (((uint64_t)x17 * x38) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x20 * x35))))));
- uint64_t x45 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + ((0x2 * ((uint64_t)x11 * x25)) + ((uint64_t)x13 * x23))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x38)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + (0x2 * ((uint64_t)x20 * x33))))))));
- uint64_t x46 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + ((uint64_t)x11 * x23)))) + (0x13 * (((uint64_t)x13 * x38) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x20 * x31))))))));
- uint64_t x47 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((uint64_t)x9 * x23))) + (0x13 * ((0x2 * ((uint64_t)x11 * x38)) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + (((uint64_t)x21 * x31) + (0x2 * ((uint64_t)x20 * x29))))))))));
- uint64_t x48 = ((((uint64_t)x5 * x25) + ((uint64_t)x7 * x23)) + (0x13 * (((uint64_t)x9 * x38) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x20 * x27))))))))));
- uint64_t x49 = (((uint64_t)x5 * x23) + (0x13 * ((0x2 * ((uint64_t)x7 * x38)) + (((uint64_t)x9 * x39) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + (((uint64_t)x21 * x27) + (0x2 * ((uint64_t)x20 * x25))))))))))));
- uint64_t x50 = (x49 >> 0x1a);
- uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- uint64_t x52 = (x50 + x48);
- uint64_t x53 = (x52 >> 0x19);
- uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- uint64_t x55 = (x53 + x47);
- uint64_t x56 = (x55 >> 0x1a);
- uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- uint64_t x58 = (x56 + x46);
- uint64_t x59 = (x58 >> 0x19);
- uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- uint64_t x61 = (x59 + x45);
- uint64_t x62 = (x61 >> 0x1a);
- uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- uint64_t x64 = (x62 + x44);
- uint64_t x65 = (x64 >> 0x19);
- uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- uint64_t x67 = (x65 + x43);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- uint64_t x70 = (x68 + x42);
- uint64_t x71 = (x70 >> 0x19);
- uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- uint64_t x73 = (x71 + x41);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- uint64_t x76 = (x74 + x40);
- uint64_t x77 = (x76 >> 0x19);
- uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- uint64_t x79 = (x51 + (0x13 * x77));
- uint32_t x80 = (uint32_t) (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint32_t x82 = (x80 + x54);
- uint32_t x83 = (x82 >> 0x19);
- uint32_t x84 = (x82 & 0x1ffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19/femulDisplay.v b/src/Specific/solinas32_2e255m19/femulDisplay.v
deleted file mode 100644
index bbc7c6f3c..000000000
--- a/src/Specific/solinas32_2e255m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e255m19/fesquare.c b/src/Specific/solinas32_2e255m19/fesquare.c
deleted file mode 100644
index 877264dce..000000000
--- a/src/Specific/solinas32_2e255m19/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
- { uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (0x2 * ((uint64_t)x17 * x17))));
- { uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- { uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
- { uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- { uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x17)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (0x2 * ((uint64_t)x17 * x12))))))));
- { uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x17)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (0x2 * ((uint64_t)x17 * x8))))))))));
- { uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- { uint64_t x28 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x17)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- { uint64_t x29 = (x28 >> 0x1a);
- { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- { uint64_t x31 = (x29 + x27);
- { uint64_t x32 = (x31 >> 0x19);
- { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- { uint64_t x34 = (x32 + x26);
- { uint64_t x35 = (x34 >> 0x1a);
- { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- { uint64_t x37 = (x35 + x25);
- { uint64_t x38 = (x37 >> 0x19);
- { uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
- { uint64_t x40 = (x38 + x24);
- { uint64_t x41 = (x40 >> 0x1a);
- { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- { uint64_t x43 = (x41 + x23);
- { uint64_t x44 = (x43 >> 0x19);
- { uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
- { uint64_t x46 = (x44 + x22);
- { uint64_t x47 = (x46 >> 0x1a);
- { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- { uint64_t x49 = (x47 + x21);
- { uint64_t x50 = (x49 >> 0x19);
- { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- { uint64_t x52 = (x50 + x20);
- { uint64_t x53 = (x52 >> 0x1a);
- { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- { uint64_t x55 = (x53 + x19);
- { uint64_t x56 = (x55 >> 0x19);
- { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- { uint64_t x58 = (x30 + (0x13 * x56));
- { uint32_t x59 = (uint32_t) (x58 >> 0x1a);
- { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- { uint32_t x61 = (x59 + x33);
- { uint32_t x62 = (x61 >> 0x19);
- { uint32_t x63 = (x61 & 0x1ffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m19/fesquare.v b/src/Specific/solinas32_2e255m19/fesquare.v
deleted file mode 100644
index 1764d1436..000000000
--- a/src/Specific/solinas32_2e255m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m19/fesquareDisplay.log b/src/Specific/solinas32_2e255m19/fesquareDisplay.log
deleted file mode 100644
index 2490dc647..000000000
--- a/src/Specific/solinas32_2e255m19/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x19 = (((uint64_t)x2 * x17) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x17 * x2))))))))));
- uint64_t x20 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (0x2 * ((uint64_t)x17 * x17))));
- uint64_t x21 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x17) + ((uint64_t)x17 * x18))));
- uint64_t x22 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * ((0x2 * ((uint64_t)x16 * x17)) + (((uint64_t)x18 * x18) + (0x2 * ((uint64_t)x17 * x16))))));
- uint64_t x23 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x17) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((uint64_t)x17 * x14))))));
- uint64_t x24 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x17)) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (0x2 * ((uint64_t)x17 * x12))))))));
- uint64_t x25 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x17) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + ((uint64_t)x17 * x10))))))));
- uint64_t x26 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * ((0x2 * ((uint64_t)x8 * x17)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + (0x2 * ((uint64_t)x17 * x8))))))))));
- uint64_t x27 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x17) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((uint64_t)x17 * x6))))))))));
- uint64_t x28 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x17)) + (((uint64_t)x6 * x18) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + (((uint64_t)x18 * x6) + (0x2 * ((uint64_t)x17 * x4))))))))))));
- uint64_t x29 = (x28 >> 0x1a);
- uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
- uint64_t x31 = (x29 + x27);
- uint64_t x32 = (x31 >> 0x19);
- uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
- uint64_t x34 = (x32 + x26);
- uint64_t x35 = (x34 >> 0x1a);
- uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
- uint64_t x37 = (x35 + x25);
- uint64_t x38 = (x37 >> 0x19);
- uint32_t x39 = ((uint32_t)x37 & 0x1ffffff);
- uint64_t x40 = (x38 + x24);
- uint64_t x41 = (x40 >> 0x1a);
- uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- uint64_t x43 = (x41 + x23);
- uint64_t x44 = (x43 >> 0x19);
- uint32_t x45 = ((uint32_t)x43 & 0x1ffffff);
- uint64_t x46 = (x44 + x22);
- uint64_t x47 = (x46 >> 0x1a);
- uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- uint64_t x49 = (x47 + x21);
- uint64_t x50 = (x49 >> 0x19);
- uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- uint64_t x52 = (x50 + x20);
- uint64_t x53 = (x52 >> 0x1a);
- uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- uint64_t x55 = (x53 + x19);
- uint64_t x56 = (x55 >> 0x19);
- uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- uint64_t x58 = (x30 + (0x13 * x56));
- uint32_t x59 = (uint32_t) (x58 >> 0x1a);
- uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- uint32_t x61 = (x59 + x33);
- uint32_t x62 = (x61 >> 0x19);
- uint32_t x63 = (x61 & 0x1ffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19/fesquareDisplay.v b/src/Specific/solinas32_2e255m19/fesquareDisplay.v
deleted file mode 100644
index 16110140a..000000000
--- a/src/Specific/solinas32_2e255m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e255m19/fesub.c b/src/Specific/solinas32_2e255m19/fesub.c
deleted file mode 100644
index b92ed2bbe..000000000
--- a/src/Specific/solinas32_2e255m19/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint32_t out[10], const uint32_t in1[10], const uint32_t in2[10]) {
- { const uint32_t x20 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x38 = in2[9];
- { const uint32_t x39 = in2[8];
- { const uint32_t x37 = in2[7];
- { const uint32_t x35 = in2[6];
- { const uint32_t x33 = in2[5];
- { const uint32_t x31 = in2[4];
- { const uint32_t x29 = in2[3];
- { const uint32_t x27 = in2[2];
- { const uint32_t x25 = in2[1];
- { const uint32_t x23 = in2[0];
- out[0] = ((0x7ffffda + x5) - x23);
- out[1] = ((0x3fffffe + x7) - x25);
- out[2] = ((0x7fffffe + x9) - x27);
- out[3] = ((0x3fffffe + x11) - x29);
- out[4] = ((0x7fffffe + x13) - x31);
- out[5] = ((0x3fffffe + x15) - x33);
- out[6] = ((0x7fffffe + x17) - x35);
- out[7] = ((0x3fffffe + x19) - x37);
- out[8] = ((0x7fffffe + x21) - x39);
- out[9] = ((0x3fffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m19/fesub.v b/src/Specific/solinas32_2e255m19/fesub.v
deleted file mode 100644
index 0b6cdb46d..000000000
--- a/src/Specific/solinas32_2e255m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m19/fesubDisplay.log b/src/Specific/solinas32_2e255m19/fesubDisplay.log
deleted file mode 100644
index bb18a6a51..000000000
--- a/src/Specific/solinas32_2e255m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x3fffffe + x20) - x38), ((0x7fffffe + x21) - x39), ((0x3fffffe + x19) - x37), ((0x7fffffe + x17) - x35), ((0x3fffffe + x15) - x33), ((0x7fffffe + x13) - x31), ((0x3fffffe + x11) - x29), ((0x7fffffe + x9) - x27), ((0x3fffffe + x7) - x25), ((0x7ffffda + x5) - x23)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19/fesubDisplay.v b/src/Specific/solinas32_2e255m19/fesubDisplay.v
deleted file mode 100644
index 6c0049754..000000000
--- a/src/Specific/solinas32_2e255m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e255m19/freeze.c b/src/Specific/solinas32_2e255m19/freeze.c
deleted file mode 100644
index 43d2310ed..000000000
--- a/src/Specific/solinas32_2e255m19/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint32_t out[10], const uint32_t in1[10]) {
- { const uint32_t x17 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffed);
- { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffff);
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffff);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
- { uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- { uint32_t x50 = (x49 & 0x3ffffed);
- { uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint32_t x54 = (x49 & 0x1ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint32_t x58 = (x49 & 0x3ffffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint32_t x62 = (x49 & 0x1ffffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint32_t x66 = (x49 & 0x3ffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint32_t x70 = (x49 & 0x1ffffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint32_t x74 = (x49 & 0x3ffffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint32_t x78 = (x49 & 0x1ffffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint32_t x82 = (x49 & 0x3ffffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint32_t x86 = (x49 & 0x1ffffff);
- { uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m19/freeze.v b/src/Specific/solinas32_2e255m19/freeze.v
deleted file mode 100644
index 050d449ce..000000000
--- a/src/Specific/solinas32_2e255m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m19/freezeDisplay.log b/src/Specific/solinas32_2e255m19/freezeDisplay.log
deleted file mode 100644
index b226eaf75..000000000
--- a/src/Specific/solinas32_2e255m19/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffed);
- uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x4, 0x1ffffff);
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x6, 0x3ffffff);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x8, 0x1ffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x10, 0x3ffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x12, 0x1ffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x14, 0x3ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x16, 0x1ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x18, 0x3ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x17, 0x1ffffff);
- uint32_t x49 = cmovznz32(x48, 0x0, 0xffffffff);
- uint32_t x50 = (x49 & 0x3ffffed);
- uint32_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint32_t x54 = (x49 & 0x1ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint32_t x58 = (x49 & 0x3ffffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint32_t x62 = (x49 & 0x1ffffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint32_t x66 = (x49 & 0x3ffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint32_t x70 = (x49 & 0x1ffffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint32_t x74 = (x49 & 0x3ffffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint32_t x78 = (x49 & 0x1ffffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint32_t x82 = (x49 & 0x3ffffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint32_t x86 = (x49 & 0x1ffffff);
- uint32_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m19/freezeDisplay.v b/src/Specific/solinas32_2e255m19/freezeDisplay.v
deleted file mode 100644
index bce4482e4..000000000
--- a/src/Specific/solinas32_2e255m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e255m19/CurveParameters.v b/src/Specific/solinas32_2e255m19_10limbs/CurveParameters.v
index 64e2e84b7..64e2e84b7 100644
--- a/src/Specific/solinas32_2e255m19/CurveParameters.v
+++ b/src/Specific/solinas32_2e255m19_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e255m19_10limbs/Synthesis.v b/src/Specific/solinas32_2e255m19_10limbs/Synthesis.v
new file mode 100644
index 000000000..2964f451e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m19/compiler.sh b/src/Specific/solinas32_2e255m19_10limbs/compiler.sh
index 94ceeba0c..94ceeba0c 100755
--- a/src/Specific/solinas32_2e255m19/compiler.sh
+++ b/src/Specific/solinas32_2e255m19_10limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e255m19/compilerxx.sh b/src/Specific/solinas32_2e255m19_10limbs/compilerxx.sh
index 129e195ba..129e195ba 100755
--- a/src/Specific/solinas32_2e255m19/compilerxx.sh
+++ b/src/Specific/solinas32_2e255m19_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e255m19_10limbs/feadd.v b/src/Specific/solinas32_2e255m19_10limbs/feadd.v
new file mode 100644
index 000000000..24cdae880
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e255m19_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..def680096
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/femul.v b/src/Specific/solinas32_2e255m19_10limbs/femul.v
new file mode 100644
index 000000000..a0eac4611
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/femulDisplay.v b/src/Specific/solinas32_2e255m19_10limbs/femulDisplay.v
new file mode 100644
index 000000000..75f315b5e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/fesquare.v b/src/Specific/solinas32_2e255m19_10limbs/fesquare.v
new file mode 100644
index 000000000..922ddacd2
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e255m19_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..dec94ac67
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/fesub.v b/src/Specific/solinas32_2e255m19_10limbs/fesub.v
new file mode 100644
index 000000000..a86e0990c
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e255m19_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..9d8793d5c
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/freeze.v b/src/Specific/solinas32_2e255m19_10limbs/freeze.v
new file mode 100644
index 000000000..0802b3851
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m19_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e255m19_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..0b6b38f33
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e255m19/py_interpreter.sh b/src/Specific/solinas32_2e255m19_10limbs/py_interpreter.sh
index c5b125c07..c5b125c07 100755
--- a/src/Specific/solinas32_2e255m19/py_interpreter.sh
+++ b/src/Specific/solinas32_2e255m19_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e255m19_11limbs/CurveParameters.v b/src/Specific/solinas32_2e255m19_11limbs/CurveParameters.v
new file mode 100644
index 000000000..b1b94c285
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^255 - 19
+Base: 23 + 2/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 23 + 2/11;
+ bitwidth := 32;
+ s := 2^255;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/Synthesis.v b/src/Specific/solinas32_2e255m19_11limbs/Synthesis.v
new file mode 100644
index 000000000..55d4ba8ca
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/compiler.sh b/src/Specific/solinas32_2e255m19_11limbs/compiler.sh
new file mode 100755
index 000000000..e505ed6a4
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,24,23,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<255) - 19' "$@"
diff --git a/src/Specific/solinas32_2e255m19_11limbs/compilerxx.sh b/src/Specific/solinas32_2e255m19_11limbs/compilerxx.sh
new file mode 100755
index 000000000..8293a0a7a
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,24,23,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<255) - 19' "$@"
diff --git a/src/Specific/solinas32_2e255m19_11limbs/feadd.v b/src/Specific/solinas32_2e255m19_11limbs/feadd.v
new file mode 100644
index 000000000..acbeb9532
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..f1d409715
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/femul.v b/src/Specific/solinas32_2e255m19_11limbs/femul.v
new file mode 100644
index 000000000..d7cf17605
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.v b/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.v
new file mode 100644
index 000000000..e3ad00de4
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesquare.v b/src/Specific/solinas32_2e255m19_11limbs/fesquare.v
new file mode 100644
index 000000000..a5554d5fc
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2cefb615c
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesub.v b/src/Specific/solinas32_2e255m19_11limbs/fesub.v
new file mode 100644
index 000000000..673a14d88
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..d2f5b1001
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/freeze.v b/src/Specific/solinas32_2e255m19_11limbs/freeze.v
new file mode 100644
index 000000000..a16b4f50d
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..74d8b3997
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m19_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e255m19_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e255m19_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..6d6e3354b
--- /dev/null
+++ b/src/Specific/solinas32_2e255m19_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**255 - 19' -Dmodulus_bytes='23 + 2/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v
deleted file mode 100644
index bdbf97b17..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^255 - 2^4 - 2^1 - 1
-Base: 28 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 9%nat;
- base := 28 + 1/3;
- bitwidth := 32;
- s := 2^255;
- c := [(1, 1); (2^1, 1); (2^4, 1)];
- carry_chains := Some [[8; 8; 8]; [0; 1; 2; 3; 4; 5; 6; 7]; [0; 0; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v
deleted file mode 100644
index 2de445d70..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh b/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh
deleted file mode 100755
index 57d08979a..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,29,28,28,29,28,28}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/compilerxx.sh b/src/Specific/solinas32_2e255m2e4m2e1m1/compilerxx.sh
deleted file mode 100755
index 6976be892..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,29,28,28,29,28,28}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.c b/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.c
deleted file mode 100644
index e1188fdec..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.v b/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.v
deleted file mode 100644
index 55ec9de3c..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.log b/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.log
deleted file mode 100644
index e26bb40f8..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.v
deleted file mode 100644
index 0e01311e3..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femul.c b/src/Specific/solinas32_2e255m2e4m2e1m1/femul.c
deleted file mode 100644
index c7206a31e..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/femul.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void femul(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- { uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- { ℤ x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) +ℤ (((uint64_t)x18 * x34) + ((0x2 * ((uint64_t)x18 * x34)) + (0x10 * ((uint64_t)x18 * x34)))));
- { ℤ x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) +ℤ (((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35))) +ℤ ((0x2 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))))));
- { ℤ x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) +ℤ ((((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33))) +ℤ ((0x2 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))) +ℤ (0x10 *ℤ (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))))));
- { ℤ x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) +ℤ ((((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31)))) +ℤ ((0x2 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))) +ℤ (0x10 *ℤ (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))))));
- { ℤ x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) +ℤ (((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29)))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))))));
- { ℤ x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) +ℤ ((((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27)))))) +ℤ ((0x2 *ℤ (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))) +ℤ (0x10 *ℤ (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))))));
- { ℤ x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) +ℤ ((((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25))))))) +ℤ ((0x2 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))) +ℤ (0x10 *ℤ (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))))));
- { ℤ x44 = (((uint64_t)x5 * x21) +ℤ (((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23))))))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))))));
- { uint64_t x45 = (x36 >> 0x1c);
- { uint32_t x46 = ((uint32_t)x36 & 0xfffffff);
- { uint64_t x47 = ((0x10000000 * x45) + x46);
- { uint64_t x48 = (x47 >> 0x1c);
- { uint32_t x49 = ((uint32_t)x47 & 0xfffffff);
- { uint64_t x50 = ((0x10000000 * x48) + x49);
- { uint64_t x51 = (x50 >> 0x1c);
- { uint32_t x52 = ((uint32_t)x50 & 0xfffffff);
- { uint64_t x53 = ((0x10000000 * x51) + x52);
- { uint64_t x54 = (x53 >> 0x1c);
- { uint32_t x55 = ((uint32_t)x53 & 0xfffffff);
- { ℤ x56 = (x44 +ℤ (x54 + ((0x2 * x54) + (0x10 * x54))));
- { uint64_t x57 = (x56 >> 0x1d);
- { uint32_t x58 = (x56 & 0x1fffffff);
- { ℤ x59 = (x57 +ℤ x43);
- { uint64_t x60 = (x59 >> 0x1c);
- { uint32_t x61 = (x59 & 0xfffffff);
- { ℤ x62 = (x60 +ℤ x42);
- { uint64_t x63 = (x62 >> 0x1c);
- { uint32_t x64 = (x62 & 0xfffffff);
- { ℤ x65 = (x63 +ℤ x41);
- { uint64_t x66 = (x65 >> 0x1d);
- { uint32_t x67 = (x65 & 0x1fffffff);
- { ℤ x68 = (x66 +ℤ x40);
- { uint64_t x69 = (x68 >> 0x1c);
- { uint32_t x70 = (x68 & 0xfffffff);
- { ℤ x71 = (x69 +ℤ x39);
- { uint64_t x72 = (x71 >> 0x1c);
- { uint32_t x73 = (x71 & 0xfffffff);
- { ℤ x74 = (x72 +ℤ x38);
- { uint64_t x75 = (x74 >> 0x1d);
- { uint32_t x76 = (x74 & 0x1fffffff);
- { ℤ x77 = (x75 +ℤ x37);
- { uint64_t x78 = (x77 >> 0x1c);
- { uint32_t x79 = (x77 & 0xfffffff);
- { uint64_t x80 = (x78 + x55);
- { uint32_t x81 = (uint32_t) (x80 >> 0x1c);
- { uint32_t x82 = ((uint32_t)x80 & 0xfffffff);
- { uint32_t x83 = (x58 + (x81 + ((0x2 * x81) + (0x10 * x81))));
- { uint32_t x84 = (x83 >> 0x1d);
- { uint32_t x85 = (x83 & 0x1fffffff);
- { uint32_t x86 = (x85 >> 0x1d);
- { uint32_t x87 = (x85 & 0x1fffffff);
- { uint32_t x88 = (x87 >> 0x1d);
- { uint32_t x89 = (x87 & 0x1fffffff);
- out[0] = x89;
- out[1] = (x88 + (x86 + (x84 + x61)));
- out[2] = x64;
- out[3] = x67;
- out[4] = x70;
- out[5] = x73;
- out[6] = x76;
- out[7] = x79;
- out[8] = x82;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v b/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v
deleted file mode 100644
index 9a3283821..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.log b/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.log
deleted file mode 100644
index 501b33ddf..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint64_t x36 = (((uint64_t)x5 * x34) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + (((uint64_t)x15 * x27) + (((uint64_t)x17 * x25) + ((0x2 * ((uint64_t)x19 * x23)) + ((uint64_t)x18 * x21)))))))));
- ℤ x37 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + (((uint64_t)x17 * x23) + ((uint64_t)x19 * x21)))))))) +ℤ (((uint64_t)x18 * x34) + ((0x2 * ((uint64_t)x18 * x34)) + (0x10 * ((uint64_t)x18 * x34)))));
- ℤ x38 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + (((uint64_t)x11 * x27) + ((0x2 * ((uint64_t)x13 * x25)) + ((0x2 * ((uint64_t)x15 * x23)) + ((uint64_t)x17 * x21))))))) +ℤ (((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35))) +ℤ ((0x2 * ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x19 * x34)) + (0x2 * ((uint64_t)x18 * x35)))))));
- ℤ x39 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x15 * x21)))))) +ℤ ((((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33))) +ℤ ((0x2 * (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))) +ℤ (0x10 *ℤ (((uint64_t)x17 * x34) + ((0x2 * ((uint64_t)x19 * x35)) + ((uint64_t)x18 * x33)))))));
- ℤ x40 = ((((uint64_t)x5 * x29) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + ((uint64_t)x13 * x21))))) +ℤ ((((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31)))) +ℤ ((0x2 * (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))) +ℤ (0x10 *ℤ (((uint64_t)x15 * x34) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x18 * x31))))))));
- ℤ x41 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((uint64_t)x11 * x21)))) +ℤ (((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29)))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x13 * x34)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + (0x2 * ((uint64_t)x18 * x29))))))))));
- ℤ x42 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((uint64_t)x9 * x21))) +ℤ ((((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27)))))) +ℤ ((0x2 *ℤ (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))) +ℤ (0x10 *ℤ (((uint64_t)x11 * x34) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x18 * x27))))))))));
- ℤ x43 = ((((uint64_t)x5 * x23) + ((uint64_t)x7 * x21)) +ℤ ((((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25))))))) +ℤ ((0x2 * (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))) +ℤ (0x10 *ℤ (((uint64_t)x9 * x34) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + (((uint64_t)x19 * x27) + ((uint64_t)x18 * x25)))))))))));
- ℤ x44 = (((uint64_t)x5 * x21) +ℤ (((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23))))))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x7 * x34)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + (((uint64_t)x17 * x27) + ((0x2 * ((uint64_t)x19 * x25)) + (0x2 * ((uint64_t)x18 * x23)))))))))))));
- uint64_t x45 = (x36 >> 0x1c);
- uint32_t x46 = ((uint32_t)x36 & 0xfffffff);
- uint64_t x47 = ((0x10000000 * x45) + x46);
- uint64_t x48 = (x47 >> 0x1c);
- uint32_t x49 = ((uint32_t)x47 & 0xfffffff);
- uint64_t x50 = ((0x10000000 * x48) + x49);
- uint64_t x51 = (x50 >> 0x1c);
- uint32_t x52 = ((uint32_t)x50 & 0xfffffff);
- uint64_t x53 = ((0x10000000 * x51) + x52);
- uint64_t x54 = (x53 >> 0x1c);
- uint32_t x55 = ((uint32_t)x53 & 0xfffffff);
- ℤ x56 = (x44 +ℤ (x54 + ((0x2 * x54) + (0x10 * x54))));
- uint64_t x57 = (x56 >> 0x1d);
- uint32_t x58 = (x56 & 0x1fffffff);
- ℤ x59 = (x57 +ℤ x43);
- uint64_t x60 = (x59 >> 0x1c);
- uint32_t x61 = (x59 & 0xfffffff);
- ℤ x62 = (x60 +ℤ x42);
- uint64_t x63 = (x62 >> 0x1c);
- uint32_t x64 = (x62 & 0xfffffff);
- ℤ x65 = (x63 +ℤ x41);
- uint64_t x66 = (x65 >> 0x1d);
- uint32_t x67 = (x65 & 0x1fffffff);
- ℤ x68 = (x66 +ℤ x40);
- uint64_t x69 = (x68 >> 0x1c);
- uint32_t x70 = (x68 & 0xfffffff);
- ℤ x71 = (x69 +ℤ x39);
- uint64_t x72 = (x71 >> 0x1c);
- uint32_t x73 = (x71 & 0xfffffff);
- ℤ x74 = (x72 +ℤ x38);
- uint64_t x75 = (x74 >> 0x1d);
- uint32_t x76 = (x74 & 0x1fffffff);
- ℤ x77 = (x75 +ℤ x37);
- uint64_t x78 = (x77 >> 0x1c);
- uint32_t x79 = (x77 & 0xfffffff);
- uint64_t x80 = (x78 + x55);
- uint32_t x81 = (uint32_t) (x80 >> 0x1c);
- uint32_t x82 = ((uint32_t)x80 & 0xfffffff);
- uint32_t x83 = (x58 + (x81 + ((0x2 * x81) + (0x10 * x81))));
- uint32_t x84 = (x83 >> 0x1d);
- uint32_t x85 = (x83 & 0x1fffffff);
- uint32_t x86 = (x85 >> 0x1d);
- uint32_t x87 = (x85 & 0x1fffffff);
- uint32_t x88 = (x87 >> 0x1d);
- uint32_t x89 = (x87 & 0x1fffffff);
- return (Return x82, Return x79, Return x76, Return x73, Return x70, Return x67, Return x64, (x88 + (x86 + (x84 + x61))), Return x89))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v
deleted file mode 100644
index 417ba638e..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.c b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.c
deleted file mode 100644
index dda248efc..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void fesquare(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- { ℤ x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) +ℤ (((uint64_t)x15 * x15) + ((0x2 * ((uint64_t)x15 * x15)) + (0x10 * ((uint64_t)x15 * x15)))));
- { ℤ x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16))) +ℤ ((0x2 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))))));
- { ℤ x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) +ℤ ((((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14))) +ℤ ((0x2 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))) +ℤ (0x10 *ℤ (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))))));
- { ℤ x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ ((((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12)))) +ℤ ((0x2 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))) +ℤ (0x10 *ℤ (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))))));
- { ℤ x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10)))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))))));
- { ℤ x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ ((((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8)))))) +ℤ ((0x2 *ℤ (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))) +ℤ (0x10 *ℤ (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))))));
- { ℤ x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ ((((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6))))))) +ℤ ((0x2 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))) +ℤ (0x10 *ℤ (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))))));
- { ℤ x25 = (((uint64_t)x2 * x2) +ℤ (((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4))))))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))))));
- { uint64_t x26 = (x17 >> 0x1c);
- { uint32_t x27 = ((uint32_t)x17 & 0xfffffff);
- { uint64_t x28 = ((0x10000000 * x26) + x27);
- { uint64_t x29 = (x28 >> 0x1c);
- { uint32_t x30 = ((uint32_t)x28 & 0xfffffff);
- { uint64_t x31 = ((0x10000000 * x29) + x30);
- { uint64_t x32 = (x31 >> 0x1c);
- { uint32_t x33 = ((uint32_t)x31 & 0xfffffff);
- { uint64_t x34 = ((0x10000000 * x32) + x33);
- { uint64_t x35 = (x34 >> 0x1c);
- { uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
- { ℤ x37 = (x25 +ℤ (x35 + ((0x2 * x35) + (0x10 * x35))));
- { uint64_t x38 = (x37 >> 0x1d);
- { uint32_t x39 = (x37 & 0x1fffffff);
- { ℤ x40 = (x38 +ℤ x24);
- { uint64_t x41 = (x40 >> 0x1c);
- { uint32_t x42 = (x40 & 0xfffffff);
- { ℤ x43 = (x41 +ℤ x23);
- { uint64_t x44 = (x43 >> 0x1c);
- { uint32_t x45 = (x43 & 0xfffffff);
- { ℤ x46 = (x44 +ℤ x22);
- { uint64_t x47 = (x46 >> 0x1d);
- { uint32_t x48 = (x46 & 0x1fffffff);
- { ℤ x49 = (x47 +ℤ x21);
- { uint64_t x50 = (x49 >> 0x1c);
- { uint32_t x51 = (x49 & 0xfffffff);
- { ℤ x52 = (x50 +ℤ x20);
- { uint64_t x53 = (x52 >> 0x1c);
- { uint32_t x54 = (x52 & 0xfffffff);
- { ℤ x55 = (x53 +ℤ x19);
- { uint64_t x56 = (x55 >> 0x1d);
- { uint32_t x57 = (x55 & 0x1fffffff);
- { ℤ x58 = (x56 +ℤ x18);
- { uint64_t x59 = (x58 >> 0x1c);
- { uint32_t x60 = (x58 & 0xfffffff);
- { uint64_t x61 = (x59 + x36);
- { uint32_t x62 = (uint32_t) (x61 >> 0x1c);
- { uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
- { uint32_t x64 = (x39 + (x62 + ((0x2 * x62) + (0x10 * x62))));
- { uint32_t x65 = (x64 >> 0x1d);
- { uint32_t x66 = (x64 & 0x1fffffff);
- { uint32_t x67 = (x66 >> 0x1d);
- { uint32_t x68 = (x66 & 0x1fffffff);
- { uint32_t x69 = (x68 >> 0x1d);
- { uint32_t x70 = (x68 & 0x1fffffff);
- out[0] = x70;
- out[1] = (x69 + (x67 + (x65 + x42)));
- out[2] = x45;
- out[3] = x48;
- out[4] = x51;
- out[5] = x54;
- out[6] = x57;
- out[7] = x60;
- out[8] = x63;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v
deleted file mode 100644
index 73bbd92c2..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.log b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.log
deleted file mode 100644
index 406515e0d..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x17 = (((uint64_t)x2 * x15) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x15 * x2)))))))));
- ℤ x18 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) +ℤ (((uint64_t)x15 * x15) + ((0x2 * ((uint64_t)x15 * x15)) + (0x10 * ((uint64_t)x15 * x15)))));
- ℤ x19 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16))) +ℤ ((0x2 * ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x16 * x15)) + (0x2 * ((uint64_t)x15 * x16)))))));
- ℤ x20 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) +ℤ ((((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14))) +ℤ ((0x2 * (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))) +ℤ (0x10 *ℤ (((uint64_t)x14 * x15) + ((0x2 * ((uint64_t)x16 * x16)) + ((uint64_t)x15 * x14)))))));
- ℤ x21 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ ((((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12)))) +ℤ ((0x2 * (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))) +ℤ (0x10 *ℤ (((uint64_t)x12 * x15) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((uint64_t)x15 * x12))))))));
- ℤ x22 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10)))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x10 * x15)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + (0x2 * ((uint64_t)x15 * x10))))))))));
- ℤ x23 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ ((((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8)))))) +ℤ ((0x2 *ℤ (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))) +ℤ (0x10 *ℤ (((uint64_t)x8 * x15) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((uint64_t)x15 * x8))))))))));
- ℤ x24 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ ((((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6))))))) +ℤ ((0x2 * (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))) +ℤ (0x10 *ℤ (((uint64_t)x6 * x15) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + ((uint64_t)x15 * x6)))))))))));
- ℤ x25 = (((uint64_t)x2 * x2) +ℤ (((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4))))))))) +ℤ ((0x2 *ℤ ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))) +ℤ (0x10 *ℤ ((0x2 * ((uint64_t)x4 * x15)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + (0x2 * ((uint64_t)x15 * x4)))))))))))));
- uint64_t x26 = (x17 >> 0x1c);
- uint32_t x27 = ((uint32_t)x17 & 0xfffffff);
- uint64_t x28 = ((0x10000000 * x26) + x27);
- uint64_t x29 = (x28 >> 0x1c);
- uint32_t x30 = ((uint32_t)x28 & 0xfffffff);
- uint64_t x31 = ((0x10000000 * x29) + x30);
- uint64_t x32 = (x31 >> 0x1c);
- uint32_t x33 = ((uint32_t)x31 & 0xfffffff);
- uint64_t x34 = ((0x10000000 * x32) + x33);
- uint64_t x35 = (x34 >> 0x1c);
- uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
- ℤ x37 = (x25 +ℤ (x35 + ((0x2 * x35) + (0x10 * x35))));
- uint64_t x38 = (x37 >> 0x1d);
- uint32_t x39 = (x37 & 0x1fffffff);
- ℤ x40 = (x38 +ℤ x24);
- uint64_t x41 = (x40 >> 0x1c);
- uint32_t x42 = (x40 & 0xfffffff);
- ℤ x43 = (x41 +ℤ x23);
- uint64_t x44 = (x43 >> 0x1c);
- uint32_t x45 = (x43 & 0xfffffff);
- ℤ x46 = (x44 +ℤ x22);
- uint64_t x47 = (x46 >> 0x1d);
- uint32_t x48 = (x46 & 0x1fffffff);
- ℤ x49 = (x47 +ℤ x21);
- uint64_t x50 = (x49 >> 0x1c);
- uint32_t x51 = (x49 & 0xfffffff);
- ℤ x52 = (x50 +ℤ x20);
- uint64_t x53 = (x52 >> 0x1c);
- uint32_t x54 = (x52 & 0xfffffff);
- ℤ x55 = (x53 +ℤ x19);
- uint64_t x56 = (x55 >> 0x1d);
- uint32_t x57 = (x55 & 0x1fffffff);
- ℤ x58 = (x56 +ℤ x18);
- uint64_t x59 = (x58 >> 0x1c);
- uint32_t x60 = (x58 & 0xfffffff);
- uint64_t x61 = (x59 + x36);
- uint32_t x62 = (uint32_t) (x61 >> 0x1c);
- uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
- uint32_t x64 = (x39 + (x62 + ((0x2 * x62) + (0x10 * x62))));
- uint32_t x65 = (x64 >> 0x1d);
- uint32_t x66 = (x64 & 0x1fffffff);
- uint32_t x67 = (x66 >> 0x1d);
- uint32_t x68 = (x66 & 0x1fffffff);
- uint32_t x69 = (x68 >> 0x1d);
- uint32_t x70 = (x68 & 0x1fffffff);
- return (Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x69 + (x67 + (x65 + x42))), Return x70))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v
deleted file mode 100644
index 724c10d18..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.c b/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.c
deleted file mode 100644
index e5f40349c..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint32_t out[9], const uint32_t in1[9], const uint32_t in2[9]) {
- { const uint32_t x18 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x34 = in2[8];
- { const uint32_t x35 = in2[7];
- { const uint32_t x33 = in2[6];
- { const uint32_t x31 = in2[5];
- { const uint32_t x29 = in2[4];
- { const uint32_t x27 = in2[3];
- { const uint32_t x25 = in2[2];
- { const uint32_t x23 = in2[1];
- { const uint32_t x21 = in2[0];
- out[0] = ((0x3fffffda + x5) - x21);
- out[1] = ((0x1ffffffe + x7) - x23);
- out[2] = ((0x1ffffffe + x9) - x25);
- out[3] = ((0x3ffffffe + x11) - x27);
- out[4] = ((0x1ffffffe + x13) - x29);
- out[5] = ((0x1ffffffe + x15) - x31);
- out[6] = ((0x3ffffffe + x17) - x33);
- out[7] = ((0x1ffffffe + x19) - x35);
- out[8] = ((0x1ffffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.v
deleted file mode 100644
index 2b1235174..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.log b/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.log
deleted file mode 100644
index fa36e6c35..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x1ffffffe + x18) - x34), ((0x1ffffffe + x19) - x35), ((0x3ffffffe + x17) - x33), ((0x1ffffffe + x15) - x31), ((0x1ffffffe + x13) - x29), ((0x3ffffffe + x11) - x27), ((0x1ffffffe + x9) - x25), ((0x1ffffffe + x7) - x23), ((0x3fffffda + x5) - x21)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.v
deleted file mode 100644
index d5b2f0337..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.c b/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.c
deleted file mode 100644
index 191f138aa..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint32_t out[9], const uint32_t in1[9]) {
- { const uint32_t x15 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffed);
- { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xfffffff);
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0xfffffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x1fffffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xfffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xfffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffff);
- { uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- { uint32_t x45 = (x44 & 0x1fffffed);
- { uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint32_t x49 = (x44 & 0xfffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint32_t x53 = (x44 & 0xfffffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint32_t x57 = (x44 & 0x1fffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint32_t x61 = (x44 & 0xfffffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint32_t x65 = (x44 & 0xfffffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint32_t x69 = (x44 & 0x1fffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint32_t x73 = (x44 & 0xfffffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint32_t x77 = (x44 & 0xfffffff);
- { uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v b/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v
deleted file mode 100644
index 1a5aa3cac..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.log b/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.log
deleted file mode 100644
index fe6c043eb..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffed);
- uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x4, 0xfffffff);
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x6, 0xfffffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x8, 0x1fffffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x10, 0xfffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x12, 0xfffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x14, 0x1fffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x16, 0xfffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x15, 0xfffffff);
- uint32_t x44 = cmovznz32(x43, 0x0, 0xffffffff);
- uint32_t x45 = (x44 & 0x1fffffed);
- uint32_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint32_t x49 = (x44 & 0xfffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint32_t x53 = (x44 & 0xfffffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint32_t x57 = (x44 & 0x1fffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint32_t x61 = (x44 & 0xfffffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint32_t x65 = (x44 & 0xfffffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint32_t x69 = (x44 & 0x1fffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint32_t x73 = (x44 & 0xfffffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint32_t x77 = (x44 & 0xfffffff);
- uint32_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v b/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v
deleted file mode 100644
index 4426b0f49..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m2e4m2e1m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e255m2e4m2e1m1/py_interpreter.sh b/src/Specific/solinas32_2e255m2e4m2e1m1/py_interpreter.sh
deleted file mode 100755
index 3e1344bb5..000000000
--- a/src/Specific/solinas32_2e255m2e4m2e1m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**255 - 2**4 - 2**1 - 1' -Dmodulus_bytes='28 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e255m765/Synthesis.v b/src/Specific/solinas32_2e255m765/Synthesis.v
deleted file mode 100644
index 8acb6a830..000000000
--- a/src/Specific/solinas32_2e255m765/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e255m765.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m765/feadd.c b/src/Specific/solinas32_2e255m765/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e255m765/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m765/feadd.v b/src/Specific/solinas32_2e255m765/feadd.v
deleted file mode 100644
index e5bc8ff5f..000000000
--- a/src/Specific/solinas32_2e255m765/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m765/feaddDisplay.log b/src/Specific/solinas32_2e255m765/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e255m765/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765/feaddDisplay.v b/src/Specific/solinas32_2e255m765/feaddDisplay.v
deleted file mode 100644
index 202ed4523..000000000
--- a/src/Specific/solinas32_2e255m765/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m765.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e255m765/femul.c b/src/Specific/solinas32_2e255m765/femul.c
deleted file mode 100644
index 6b918503d..000000000
--- a/src/Specific/solinas32_2e255m765/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x2fd * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x2fd * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x2fd * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x19 * x27)))))))) + (0x2fd * (((uint64_t)x21 * x46) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x2fd * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x2fd * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x2fd * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x2fd * (((uint64_t)x13 * x46) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x24 * x35))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x2fd * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x2fd * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0x2fd * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint64_t x60 = (x59 >> 0x16);
- { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- { uint64_t x62 = (x60 + x58);
- { uint64_t x63 = (x62 >> 0x15);
- { uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
- { uint64_t x65 = (x63 + x57);
- { uint64_t x66 = (x65 >> 0x15);
- { uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
- { uint64_t x68 = (x66 + x56);
- { uint64_t x69 = (x68 >> 0x15);
- { uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
- { uint64_t x71 = (x69 + x55);
- { uint64_t x72 = (x71 >> 0x16);
- { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- { uint64_t x74 = (x72 + x54);
- { uint64_t x75 = (x74 >> 0x15);
- { uint32_t x76 = ((uint32_t)x74 & 0x1fffff);
- { uint64_t x77 = (x75 + x53);
- { uint64_t x78 = (x77 >> 0x15);
- { uint32_t x79 = ((uint32_t)x77 & 0x1fffff);
- { uint64_t x80 = (x78 + x52);
- { uint64_t x81 = (x80 >> 0x15);
- { uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
- { uint64_t x83 = (x81 + x51);
- { uint64_t x84 = (x83 >> 0x16);
- { uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
- { uint64_t x86 = (x84 + x50);
- { uint64_t x87 = (x86 >> 0x15);
- { uint32_t x88 = ((uint32_t)x86 & 0x1fffff);
- { uint64_t x89 = (x87 + x49);
- { uint64_t x90 = (x89 >> 0x15);
- { uint32_t x91 = ((uint32_t)x89 & 0x1fffff);
- { uint64_t x92 = (x90 + x48);
- { uint32_t x93 = (uint32_t) (x92 >> 0x15);
- { uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- { uint64_t x95 = (x61 + ((uint64_t)0x2fd * x93));
- { uint32_t x96 = (uint32_t) (x95 >> 0x16);
- { uint32_t x97 = ((uint32_t)x95 & 0x3fffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x15);
- { uint32_t x100 = (x98 & 0x1fffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m765/femul.v b/src/Specific/solinas32_2e255m765/femul.v
deleted file mode 100644
index 3fc76a2f3..000000000
--- a/src/Specific/solinas32_2e255m765/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m765/femulDisplay.log b/src/Specific/solinas32_2e255m765/femulDisplay.log
deleted file mode 100644
index bd79c323a..000000000
--- a/src/Specific/solinas32_2e255m765/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x2fd * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x2fd * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x2fd * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x19 * x27)))))))) + (0x2fd * (((uint64_t)x21 * x46) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x2fd * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x2fd * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x2fd * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x2fd * (((uint64_t)x13 * x46) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x24 * x35))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x2fd * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x2fd * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0x2fd * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint64_t x60 = (x59 >> 0x16);
- uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- uint64_t x62 = (x60 + x58);
- uint64_t x63 = (x62 >> 0x15);
- uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
- uint64_t x65 = (x63 + x57);
- uint64_t x66 = (x65 >> 0x15);
- uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
- uint64_t x68 = (x66 + x56);
- uint64_t x69 = (x68 >> 0x15);
- uint32_t x70 = ((uint32_t)x68 & 0x1fffff);
- uint64_t x71 = (x69 + x55);
- uint64_t x72 = (x71 >> 0x16);
- uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- uint64_t x74 = (x72 + x54);
- uint64_t x75 = (x74 >> 0x15);
- uint32_t x76 = ((uint32_t)x74 & 0x1fffff);
- uint64_t x77 = (x75 + x53);
- uint64_t x78 = (x77 >> 0x15);
- uint32_t x79 = ((uint32_t)x77 & 0x1fffff);
- uint64_t x80 = (x78 + x52);
- uint64_t x81 = (x80 >> 0x15);
- uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
- uint64_t x83 = (x81 + x51);
- uint64_t x84 = (x83 >> 0x16);
- uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
- uint64_t x86 = (x84 + x50);
- uint64_t x87 = (x86 >> 0x15);
- uint32_t x88 = ((uint32_t)x86 & 0x1fffff);
- uint64_t x89 = (x87 + x49);
- uint64_t x90 = (x89 >> 0x15);
- uint32_t x91 = ((uint32_t)x89 & 0x1fffff);
- uint64_t x92 = (x90 + x48);
- uint32_t x93 = (uint32_t) (x92 >> 0x15);
- uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- uint64_t x95 = (x61 + ((uint64_t)0x2fd * x93));
- uint32_t x96 = (uint32_t) (x95 >> 0x16);
- uint32_t x97 = ((uint32_t)x95 & 0x3fffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x15);
- uint32_t x100 = (x98 & 0x1fffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765/femulDisplay.v b/src/Specific/solinas32_2e255m765/femulDisplay.v
deleted file mode 100644
index 566c2387f..000000000
--- a/src/Specific/solinas32_2e255m765/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m765.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e255m765/fesquare.c b/src/Specific/solinas32_2e255m765/fesquare.c
deleted file mode 100644
index c9476e253..000000000
--- a/src/Specific/solinas32_2e255m765/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x2fd * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x2fd * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x2fd * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x2fd * (((uint64_t)x18 * x21) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x2fd * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x2fd * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x2fd * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x2fd * (((uint64_t)x10 * x21) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((uint64_t)x21 * x10))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x2fd * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x2fd * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0x2fd * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint64_t x35 = (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x35 + x33);
- { uint64_t x38 = (x37 >> 0x15);
- { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
- { uint64_t x40 = (x38 + x32);
- { uint64_t x41 = (x40 >> 0x15);
- { uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
- { uint64_t x43 = (x41 + x31);
- { uint64_t x44 = (x43 >> 0x15);
- { uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
- { uint64_t x46 = (x44 + x30);
- { uint64_t x47 = (x46 >> 0x16);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x15);
- { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x15);
- { uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
- { uint64_t x55 = (x53 + x27);
- { uint64_t x56 = (x55 >> 0x15);
- { uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- { uint64_t x58 = (x56 + x26);
- { uint64_t x59 = (x58 >> 0x16);
- { uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- { uint64_t x61 = (x59 + x25);
- { uint64_t x62 = (x61 >> 0x15);
- { uint32_t x63 = ((uint32_t)x61 & 0x1fffff);
- { uint64_t x64 = (x62 + x24);
- { uint64_t x65 = (x64 >> 0x15);
- { uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- { uint64_t x67 = (x65 + x23);
- { uint32_t x68 = (uint32_t) (x67 >> 0x15);
- { uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- { uint64_t x70 = (x36 + ((uint64_t)0x2fd * x68));
- { uint32_t x71 = (uint32_t) (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x15);
- { uint32_t x75 = (x73 & 0x1fffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m765/fesquare.v b/src/Specific/solinas32_2e255m765/fesquare.v
deleted file mode 100644
index 1c7d8bfac..000000000
--- a/src/Specific/solinas32_2e255m765/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m765/fesquareDisplay.log b/src/Specific/solinas32_2e255m765/fesquareDisplay.log
deleted file mode 100644
index 7ac4be662..000000000
--- a/src/Specific/solinas32_2e255m765/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x2fd * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x2fd * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x2fd * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x2fd * (((uint64_t)x18 * x21) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x2fd * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x2fd * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x2fd * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x2fd * (((uint64_t)x10 * x21) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((uint64_t)x21 * x10))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x2fd * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x2fd * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0x2fd * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint64_t x35 = (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x35 + x33);
- uint64_t x38 = (x37 >> 0x15);
- uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
- uint64_t x40 = (x38 + x32);
- uint64_t x41 = (x40 >> 0x15);
- uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
- uint64_t x43 = (x41 + x31);
- uint64_t x44 = (x43 >> 0x15);
- uint32_t x45 = ((uint32_t)x43 & 0x1fffff);
- uint64_t x46 = (x44 + x30);
- uint64_t x47 = (x46 >> 0x16);
- uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x15);
- uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x15);
- uint32_t x54 = ((uint32_t)x52 & 0x1fffff);
- uint64_t x55 = (x53 + x27);
- uint64_t x56 = (x55 >> 0x15);
- uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- uint64_t x58 = (x56 + x26);
- uint64_t x59 = (x58 >> 0x16);
- uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- uint64_t x61 = (x59 + x25);
- uint64_t x62 = (x61 >> 0x15);
- uint32_t x63 = ((uint32_t)x61 & 0x1fffff);
- uint64_t x64 = (x62 + x24);
- uint64_t x65 = (x64 >> 0x15);
- uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- uint64_t x67 = (x65 + x23);
- uint32_t x68 = (uint32_t) (x67 >> 0x15);
- uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- uint64_t x70 = (x36 + ((uint64_t)0x2fd * x68));
- uint32_t x71 = (uint32_t) (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x15);
- uint32_t x75 = (x73 & 0x1fffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765/fesquareDisplay.v b/src/Specific/solinas32_2e255m765/fesquareDisplay.v
deleted file mode 100644
index a2b9f53e0..000000000
--- a/src/Specific/solinas32_2e255m765/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m765.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e255m765/fesub.c b/src/Specific/solinas32_2e255m765/fesub.c
deleted file mode 100644
index 97b5a5b26..000000000
--- a/src/Specific/solinas32_2e255m765/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x7ffa06 + x5) - x27);
- out[1] = ((0x3ffffe + x7) - x29);
- out[2] = ((0x3ffffe + x9) - x31);
- out[3] = ((0x3ffffe + x11) - x33);
- out[4] = ((0x7ffffe + x13) - x35);
- out[5] = ((0x3ffffe + x15) - x37);
- out[6] = ((0x3ffffe + x17) - x39);
- out[7] = ((0x3ffffe + x19) - x41);
- out[8] = ((0x7ffffe + x21) - x43);
- out[9] = ((0x3ffffe + x23) - x45);
- out[10] = ((0x3ffffe + x25) - x47);
- out[11] = ((0x3ffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m765/fesub.v b/src/Specific/solinas32_2e255m765/fesub.v
deleted file mode 100644
index e3127f41c..000000000
--- a/src/Specific/solinas32_2e255m765/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m765/fesubDisplay.log b/src/Specific/solinas32_2e255m765/fesubDisplay.log
deleted file mode 100644
index ad8b5da3c..000000000
--- a/src/Specific/solinas32_2e255m765/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x3ffffe + x24) - x46), ((0x3ffffe + x25) - x47), ((0x3ffffe + x23) - x45), ((0x7ffffe + x21) - x43), ((0x3ffffe + x19) - x41), ((0x3ffffe + x17) - x39), ((0x3ffffe + x15) - x37), ((0x7ffffe + x13) - x35), ((0x3ffffe + x11) - x33), ((0x3ffffe + x9) - x31), ((0x3ffffe + x7) - x29), ((0x7ffa06 + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765/fesubDisplay.v b/src/Specific/solinas32_2e255m765/fesubDisplay.v
deleted file mode 100644
index 1720aa0a2..000000000
--- a/src/Specific/solinas32_2e255m765/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m765.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e255m765/freeze.c b/src/Specific/solinas32_2e255m765/freeze.c
deleted file mode 100644
index 8e245f5f1..000000000
--- a/src/Specific/solinas32_2e255m765/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffd03);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x1fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x3fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x1fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x3fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3ffd03);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x1fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x3fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x1fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x1fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x3fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x1fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x1fffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e255m765/freeze.v b/src/Specific/solinas32_2e255m765/freeze.v
deleted file mode 100644
index 1ab20a667..000000000
--- a/src/Specific/solinas32_2e255m765/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m765/freezeDisplay.log b/src/Specific/solinas32_2e255m765/freezeDisplay.log
deleted file mode 100644
index 49f69fa90..000000000
--- a/src/Specific/solinas32_2e255m765/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffd03);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x1fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x3fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x1fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x3fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3ffd03);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x1fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x3fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x1fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x1fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x3fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x1fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x1fffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e255m765/freezeDisplay.v b/src/Specific/solinas32_2e255m765/freezeDisplay.v
deleted file mode 100644
index 94d915978..000000000
--- a/src/Specific/solinas32_2e255m765/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e255m765.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e255m765/CurveParameters.v b/src/Specific/solinas32_2e255m765_12limbs/CurveParameters.v
index 7e852b89d..7e852b89d 100644
--- a/src/Specific/solinas32_2e255m765/CurveParameters.v
+++ b/src/Specific/solinas32_2e255m765_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e255m765_12limbs/Synthesis.v b/src/Specific/solinas32_2e255m765_12limbs/Synthesis.v
new file mode 100644
index 000000000..ec9941b4a
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m765/compiler.sh b/src/Specific/solinas32_2e255m765_12limbs/compiler.sh
index 74339b623..74339b623 100755
--- a/src/Specific/solinas32_2e255m765/compiler.sh
+++ b/src/Specific/solinas32_2e255m765_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e255m765/compilerxx.sh b/src/Specific/solinas32_2e255m765_12limbs/compilerxx.sh
index 755946292..755946292 100755
--- a/src/Specific/solinas32_2e255m765/compilerxx.sh
+++ b/src/Specific/solinas32_2e255m765_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e255m765_12limbs/feadd.v b/src/Specific/solinas32_2e255m765_12limbs/feadd.v
new file mode 100644
index 000000000..77cf51c9a
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e255m765_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..becc9e995
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/femul.v b/src/Specific/solinas32_2e255m765_12limbs/femul.v
new file mode 100644
index 000000000..52be0d9e3
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/femulDisplay.v b/src/Specific/solinas32_2e255m765_12limbs/femulDisplay.v
new file mode 100644
index 000000000..d12ab806a
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/fesquare.v b/src/Specific/solinas32_2e255m765_12limbs/fesquare.v
new file mode 100644
index 000000000..55f121919
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e255m765_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bb7b1d2d6
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/fesub.v b/src/Specific/solinas32_2e255m765_12limbs/fesub.v
new file mode 100644
index 000000000..2082839e9
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e255m765_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..f034a61d3
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/freeze.v b/src/Specific/solinas32_2e255m765_12limbs/freeze.v
new file mode 100644
index 000000000..40dd4712e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m765_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e255m765_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..d2b047369
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e255m765/py_interpreter.sh b/src/Specific/solinas32_2e255m765_12limbs/py_interpreter.sh
index e14df90fc..e14df90fc 100755
--- a/src/Specific/solinas32_2e255m765/py_interpreter.sh
+++ b/src/Specific/solinas32_2e255m765_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e255m765_13limbs/CurveParameters.v b/src/Specific/solinas32_2e255m765_13limbs/CurveParameters.v
new file mode 100644
index 000000000..aaaed21cd
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^255 - 765
+Base: 19 + 8/13
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 13%nat;
+ base := 19 + 8/13;
+ bitwidth := 32;
+ s := 2^255;
+ c := [(1, 765)];
+ carry_chains := Some [seq 0 (pred 13); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/Synthesis.v b/src/Specific/solinas32_2e255m765_13limbs/Synthesis.v
new file mode 100644
index 000000000..9dcde15b4
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/compiler.sh b/src/Specific/solinas32_2e255m765_13limbs/compiler.sh
new file mode 100755
index 000000000..7eee4f520
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,19,20,20,19,20,19,20,20,19,20,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<255) - 765' "$@"
diff --git a/src/Specific/solinas32_2e255m765_13limbs/compilerxx.sh b/src/Specific/solinas32_2e255m765_13limbs/compilerxx.sh
new file mode 100755
index 000000000..6dc09b5d5
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,19,20,20,19,20,19,20,20,19,20,19}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<255) - 765' "$@"
diff --git a/src/Specific/solinas32_2e255m765_13limbs/feadd.v b/src/Specific/solinas32_2e255m765_13limbs/feadd.v
new file mode 100644
index 000000000..8e5e66697
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..822686565
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/femul.v b/src/Specific/solinas32_2e255m765_13limbs/femul.v
new file mode 100644
index 000000000..f787b6148
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.v b/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.v
new file mode 100644
index 000000000..0a9fd5275
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesquare.v b/src/Specific/solinas32_2e255m765_13limbs/fesquare.v
new file mode 100644
index 000000000..cb42bedcc
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4b1c7ef1b
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesub.v b/src/Specific/solinas32_2e255m765_13limbs/fesub.v
new file mode 100644
index 000000000..1fa1b54da
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..f1a295ecf
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/freeze.v b/src/Specific/solinas32_2e255m765_13limbs/freeze.v
new file mode 100644
index 000000000..b62642c57
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..142cdf11a
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e255m765_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e255m765_13limbs/py_interpreter.sh b/src/Specific/solinas32_2e255m765_13limbs/py_interpreter.sh
new file mode 100755
index 000000000..a54dd225e
--- /dev/null
+++ b/src/Specific/solinas32_2e255m765_13limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**255 - 765' -Dmodulus_bytes='19 + 8/13' -Da24='121665'
diff --git a/src/Specific/solinas32_2e256m189/Synthesis.v b/src/Specific/solinas32_2e256m189/Synthesis.v
deleted file mode 100644
index d7b9b7d93..000000000
--- a/src/Specific/solinas32_2e256m189/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e256m189.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m189/feadd.c b/src/Specific/solinas32_2e256m189/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e256m189/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m189/feadd.v b/src/Specific/solinas32_2e256m189/feadd.v
deleted file mode 100644
index f04718b7f..000000000
--- a/src/Specific/solinas32_2e256m189/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m189/feaddDisplay.log b/src/Specific/solinas32_2e256m189/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e256m189/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189/feaddDisplay.v b/src/Specific/solinas32_2e256m189/feaddDisplay.v
deleted file mode 100644
index f2cea29fe..000000000
--- a/src/Specific/solinas32_2e256m189/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m189.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e256m189/femul.c b/src/Specific/solinas32_2e256m189/femul.c
deleted file mode 100644
index f9b6991df..000000000
--- a/src/Specific/solinas32_2e256m189/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0xbd * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0xbd * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0xbd * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45)))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0xbd * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0xbd * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0xbd * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) + (0xbd * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0xbd * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35)))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0xbd * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33)))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0xbd * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0xbd * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint64_t x60 = (x59 >> 0x16);
- { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- { uint64_t x62 = (x60 + x58);
- { uint64_t x63 = (x62 >> 0x15);
- { uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
- { uint64_t x65 = (x63 + x57);
- { uint64_t x66 = (x65 >> 0x15);
- { uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
- { uint64_t x68 = (x66 + x56);
- { uint64_t x69 = (x68 >> 0x16);
- { uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- { uint64_t x71 = (x69 + x55);
- { uint64_t x72 = (x71 >> 0x15);
- { uint32_t x73 = ((uint32_t)x71 & 0x1fffff);
- { uint64_t x74 = (x72 + x54);
- { uint64_t x75 = (x74 >> 0x15);
- { uint32_t x76 = ((uint32_t)x74 & 0x1fffff);
- { uint64_t x77 = (x75 + x53);
- { uint64_t x78 = (x77 >> 0x16);
- { uint32_t x79 = ((uint32_t)x77 & 0x3fffff);
- { uint64_t x80 = (x78 + x52);
- { uint64_t x81 = (x80 >> 0x15);
- { uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
- { uint64_t x83 = (x81 + x51);
- { uint64_t x84 = (x83 >> 0x15);
- { uint32_t x85 = ((uint32_t)x83 & 0x1fffff);
- { uint64_t x86 = (x84 + x50);
- { uint64_t x87 = (x86 >> 0x16);
- { uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
- { uint64_t x89 = (x87 + x49);
- { uint64_t x90 = (x89 >> 0x15);
- { uint32_t x91 = ((uint32_t)x89 & 0x1fffff);
- { uint64_t x92 = (x90 + x48);
- { uint32_t x93 = (uint32_t) (x92 >> 0x15);
- { uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- { uint64_t x95 = (x61 + ((uint64_t)0xbd * x93));
- { uint32_t x96 = (uint32_t) (x95 >> 0x16);
- { uint32_t x97 = ((uint32_t)x95 & 0x3fffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x15);
- { uint32_t x100 = (x98 & 0x1fffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m189/femul.v b/src/Specific/solinas32_2e256m189/femul.v
deleted file mode 100644
index 01a5dabfe..000000000
--- a/src/Specific/solinas32_2e256m189/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m189/femulDisplay.log b/src/Specific/solinas32_2e256m189/femulDisplay.log
deleted file mode 100644
index 089b4132b..000000000
--- a/src/Specific/solinas32_2e256m189/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0xbd * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0xbd * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0xbd * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45)))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0xbd * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0xbd * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0xbd * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) + (0xbd * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0xbd * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35)))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0xbd * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33)))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0xbd * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0xbd * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint64_t x60 = (x59 >> 0x16);
- uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- uint64_t x62 = (x60 + x58);
- uint64_t x63 = (x62 >> 0x15);
- uint32_t x64 = ((uint32_t)x62 & 0x1fffff);
- uint64_t x65 = (x63 + x57);
- uint64_t x66 = (x65 >> 0x15);
- uint32_t x67 = ((uint32_t)x65 & 0x1fffff);
- uint64_t x68 = (x66 + x56);
- uint64_t x69 = (x68 >> 0x16);
- uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- uint64_t x71 = (x69 + x55);
- uint64_t x72 = (x71 >> 0x15);
- uint32_t x73 = ((uint32_t)x71 & 0x1fffff);
- uint64_t x74 = (x72 + x54);
- uint64_t x75 = (x74 >> 0x15);
- uint32_t x76 = ((uint32_t)x74 & 0x1fffff);
- uint64_t x77 = (x75 + x53);
- uint64_t x78 = (x77 >> 0x16);
- uint32_t x79 = ((uint32_t)x77 & 0x3fffff);
- uint64_t x80 = (x78 + x52);
- uint64_t x81 = (x80 >> 0x15);
- uint32_t x82 = ((uint32_t)x80 & 0x1fffff);
- uint64_t x83 = (x81 + x51);
- uint64_t x84 = (x83 >> 0x15);
- uint32_t x85 = ((uint32_t)x83 & 0x1fffff);
- uint64_t x86 = (x84 + x50);
- uint64_t x87 = (x86 >> 0x16);
- uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
- uint64_t x89 = (x87 + x49);
- uint64_t x90 = (x89 >> 0x15);
- uint32_t x91 = ((uint32_t)x89 & 0x1fffff);
- uint64_t x92 = (x90 + x48);
- uint32_t x93 = (uint32_t) (x92 >> 0x15);
- uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- uint64_t x95 = (x61 + ((uint64_t)0xbd * x93));
- uint32_t x96 = (uint32_t) (x95 >> 0x16);
- uint32_t x97 = ((uint32_t)x95 & 0x3fffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x15);
- uint32_t x100 = (x98 & 0x1fffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189/femulDisplay.v b/src/Specific/solinas32_2e256m189/femulDisplay.v
deleted file mode 100644
index d06d9b1f1..000000000
--- a/src/Specific/solinas32_2e256m189/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m189.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e256m189/fesquare.c b/src/Specific/solinas32_2e256m189/fesquare.c
deleted file mode 100644
index 99dbf4656..000000000
--- a/src/Specific/solinas32_2e256m189/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xbd * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbd * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xbd * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20)))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xbd * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbd * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbd * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbd * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10)))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbd * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8)))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbd * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0xbd * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint64_t x35 = (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x35 + x33);
- { uint64_t x38 = (x37 >> 0x15);
- { uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
- { uint64_t x40 = (x38 + x32);
- { uint64_t x41 = (x40 >> 0x15);
- { uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
- { uint64_t x43 = (x41 + x31);
- { uint64_t x44 = (x43 >> 0x16);
- { uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- { uint64_t x46 = (x44 + x30);
- { uint64_t x47 = (x46 >> 0x15);
- { uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x15);
- { uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x27);
- { uint64_t x56 = (x55 >> 0x15);
- { uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- { uint64_t x58 = (x56 + x26);
- { uint64_t x59 = (x58 >> 0x15);
- { uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- { uint64_t x61 = (x59 + x25);
- { uint64_t x62 = (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x24);
- { uint64_t x65 = (x64 >> 0x15);
- { uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- { uint64_t x67 = (x65 + x23);
- { uint32_t x68 = (uint32_t) (x67 >> 0x15);
- { uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- { uint64_t x70 = (x36 + ((uint64_t)0xbd * x68));
- { uint32_t x71 = (uint32_t) (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x15);
- { uint32_t x75 = (x73 & 0x1fffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m189/fesquare.v b/src/Specific/solinas32_2e256m189/fesquare.v
deleted file mode 100644
index f1ce11281..000000000
--- a/src/Specific/solinas32_2e256m189/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m189/fesquareDisplay.log b/src/Specific/solinas32_2e256m189/fesquareDisplay.log
deleted file mode 100644
index 4cb534fff..000000000
--- a/src/Specific/solinas32_2e256m189/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xbd * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0xbd * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xbd * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20)))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xbd * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbd * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xbd * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xbd * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10)))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbd * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8)))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbd * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0xbd * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint64_t x35 = (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x35 + x33);
- uint64_t x38 = (x37 >> 0x15);
- uint32_t x39 = ((uint32_t)x37 & 0x1fffff);
- uint64_t x40 = (x38 + x32);
- uint64_t x41 = (x40 >> 0x15);
- uint32_t x42 = ((uint32_t)x40 & 0x1fffff);
- uint64_t x43 = (x41 + x31);
- uint64_t x44 = (x43 >> 0x16);
- uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- uint64_t x46 = (x44 + x30);
- uint64_t x47 = (x46 >> 0x15);
- uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x15);
- uint32_t x51 = ((uint32_t)x49 & 0x1fffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x27);
- uint64_t x56 = (x55 >> 0x15);
- uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- uint64_t x58 = (x56 + x26);
- uint64_t x59 = (x58 >> 0x15);
- uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- uint64_t x61 = (x59 + x25);
- uint64_t x62 = (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x24);
- uint64_t x65 = (x64 >> 0x15);
- uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- uint64_t x67 = (x65 + x23);
- uint32_t x68 = (uint32_t) (x67 >> 0x15);
- uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- uint64_t x70 = (x36 + ((uint64_t)0xbd * x68));
- uint32_t x71 = (uint32_t) (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x15);
- uint32_t x75 = (x73 & 0x1fffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189/fesquareDisplay.v b/src/Specific/solinas32_2e256m189/fesquareDisplay.v
deleted file mode 100644
index 036751aff..000000000
--- a/src/Specific/solinas32_2e256m189/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m189.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e256m189/fesub.c b/src/Specific/solinas32_2e256m189/fesub.c
deleted file mode 100644
index 1388a548d..000000000
--- a/src/Specific/solinas32_2e256m189/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x7ffe86 + x5) - x27);
- out[1] = ((0x3ffffe + x7) - x29);
- out[2] = ((0x3ffffe + x9) - x31);
- out[3] = ((0x7ffffe + x11) - x33);
- out[4] = ((0x3ffffe + x13) - x35);
- out[5] = ((0x3ffffe + x15) - x37);
- out[6] = ((0x7ffffe + x17) - x39);
- out[7] = ((0x3ffffe + x19) - x41);
- out[8] = ((0x3ffffe + x21) - x43);
- out[9] = ((0x7ffffe + x23) - x45);
- out[10] = ((0x3ffffe + x25) - x47);
- out[11] = ((0x3ffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m189/fesub.v b/src/Specific/solinas32_2e256m189/fesub.v
deleted file mode 100644
index 2e0372485..000000000
--- a/src/Specific/solinas32_2e256m189/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m189/fesubDisplay.log b/src/Specific/solinas32_2e256m189/fesubDisplay.log
deleted file mode 100644
index 2b4f11e78..000000000
--- a/src/Specific/solinas32_2e256m189/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x3ffffe + x24) - x46), ((0x3ffffe + x25) - x47), ((0x7ffffe + x23) - x45), ((0x3ffffe + x21) - x43), ((0x3ffffe + x19) - x41), ((0x7ffffe + x17) - x39), ((0x3ffffe + x15) - x37), ((0x3ffffe + x13) - x35), ((0x7ffffe + x11) - x33), ((0x3ffffe + x9) - x31), ((0x3ffffe + x7) - x29), ((0x7ffe86 + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189/fesubDisplay.v b/src/Specific/solinas32_2e256m189/fesubDisplay.v
deleted file mode 100644
index 879a277be..000000000
--- a/src/Specific/solinas32_2e256m189/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m189.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e256m189/freeze.c b/src/Specific/solinas32_2e256m189/freeze.c
deleted file mode 100644
index 8731f955a..000000000
--- a/src/Specific/solinas32_2e256m189/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fff43);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3fff43);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x3fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x1fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x3fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x1fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x3fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x1fffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m189/freeze.v b/src/Specific/solinas32_2e256m189/freeze.v
deleted file mode 100644
index ae07863d0..000000000
--- a/src/Specific/solinas32_2e256m189/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m189/freezeDisplay.log b/src/Specific/solinas32_2e256m189/freezeDisplay.log
deleted file mode 100644
index d225c3acc..000000000
--- a/src/Specific/solinas32_2e256m189/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fff43);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3fff43);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x3fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x1fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x3fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x1fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x3fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x1fffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m189/freezeDisplay.v b/src/Specific/solinas32_2e256m189/freezeDisplay.v
deleted file mode 100644
index 14275e245..000000000
--- a/src/Specific/solinas32_2e256m189/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m189.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/CurveParameters.v b/src/Specific/solinas32_2e256m189_11limbs/CurveParameters.v
new file mode 100644
index 000000000..ff86a9395
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 189
+Base: 23 + 3/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 23 + 3/11;
+ bitwidth := 32;
+ s := 2^256;
+ c := [(1, 189)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/Synthesis.v b/src/Specific/solinas32_2e256m189_11limbs/Synthesis.v
new file mode 100644
index 000000000..528ea8e7c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/compiler.sh b/src/Specific/solinas32_2e256m189_11limbs/compiler.sh
new file mode 100755
index 000000000..ddc391c1d
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - 189' "$@"
diff --git a/src/Specific/solinas32_2e256m189_11limbs/compilerxx.sh b/src/Specific/solinas32_2e256m189_11limbs/compilerxx.sh
new file mode 100755
index 000000000..4513fb01f
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - 189' "$@"
diff --git a/src/Specific/solinas32_2e256m189_11limbs/feadd.v b/src/Specific/solinas32_2e256m189_11limbs/feadd.v
new file mode 100644
index 000000000..ac435ccde
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..b71f2df3f
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/femul.v b/src/Specific/solinas32_2e256m189_11limbs/femul.v
new file mode 100644
index 000000000..90430426c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.v b/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.v
new file mode 100644
index 000000000..05d22f11b
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesquare.v b/src/Specific/solinas32_2e256m189_11limbs/fesquare.v
new file mode 100644
index 000000000..5639f3e7d
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ac91257ef
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesub.v b/src/Specific/solinas32_2e256m189_11limbs/fesub.v
new file mode 100644
index 000000000..b06aeb084
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..184c03bdd
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/freeze.v b/src/Specific/solinas32_2e256m189_11limbs/freeze.v
new file mode 100644
index 000000000..7c370cc95
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..96a933d86
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m189_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e256m189_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..0b771a2f2
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 189' -Dmodulus_bytes='23 + 3/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e256m189/CurveParameters.v b/src/Specific/solinas32_2e256m189_12limbs/CurveParameters.v
index 6d6c9c664..6d6c9c664 100644
--- a/src/Specific/solinas32_2e256m189/CurveParameters.v
+++ b/src/Specific/solinas32_2e256m189_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e256m189_12limbs/Synthesis.v b/src/Specific/solinas32_2e256m189_12limbs/Synthesis.v
new file mode 100644
index 000000000..6b4cc6185
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m189/compiler.sh b/src/Specific/solinas32_2e256m189_12limbs/compiler.sh
index 44fcfe538..44fcfe538 100755
--- a/src/Specific/solinas32_2e256m189/compiler.sh
+++ b/src/Specific/solinas32_2e256m189_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e256m189/compilerxx.sh b/src/Specific/solinas32_2e256m189_12limbs/compilerxx.sh
index cf3de10fb..cf3de10fb 100755
--- a/src/Specific/solinas32_2e256m189/compilerxx.sh
+++ b/src/Specific/solinas32_2e256m189_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e256m189_12limbs/feadd.v b/src/Specific/solinas32_2e256m189_12limbs/feadd.v
new file mode 100644
index 000000000..d24768125
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m189_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..5696d8b7b
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/femul.v b/src/Specific/solinas32_2e256m189_12limbs/femul.v
new file mode 100644
index 000000000..c0fb8571c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/femulDisplay.v b/src/Specific/solinas32_2e256m189_12limbs/femulDisplay.v
new file mode 100644
index 000000000..9f25d1bd8
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/fesquare.v b/src/Specific/solinas32_2e256m189_12limbs/fesquare.v
new file mode 100644
index 000000000..a915474e7
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m189_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1d992e8bf
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/fesub.v b/src/Specific/solinas32_2e256m189_12limbs/fesub.v
new file mode 100644
index 000000000..e585acba1
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m189_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..219d5f437
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/freeze.v b/src/Specific/solinas32_2e256m189_12limbs/freeze.v
new file mode 100644
index 000000000..3934619cb
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m189_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m189_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..a532d9ef6
--- /dev/null
+++ b/src/Specific/solinas32_2e256m189_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m189_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m189/py_interpreter.sh b/src/Specific/solinas32_2e256m189_12limbs/py_interpreter.sh
index fab32ff04..fab32ff04 100755
--- a/src/Specific/solinas32_2e256m189/py_interpreter.sh
+++ b/src/Specific/solinas32_2e256m189_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v
deleted file mode 100644
index c2df166f6..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.c b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.v
deleted file mode 100644
index faccfd6cb..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.log b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.v
deleted file mode 100644
index e97ac1868..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v
deleted file mode 100644
index 64a7c305b..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v
deleted file mode 100644
index 173389cca..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v
deleted file mode 100644
index 2e11bb270..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v
deleted file mode 100644
index 97f3d31a2..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesub.v
deleted file mode 100644
index 295f15e8d..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesubDisplay.v
deleted file mode 100644
index c15b3af82..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.c b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.c
deleted file mode 100644
index bc4e44bea..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.c
+++ /dev/null
@@ -1,60 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- { uint32_t x36, ℤ x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) Syntax.TZ) (Return x34, Return x10, 0x3ff);
- { uint32_t x39, ℤ x40 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x37, Return x12, 0x0);
- { uint32_t x42, ℤ x43 = Op (Syntax.SubWithGetBorrow 22 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x40, Return x14, 0x0);
- { uint32_t x45, ℤ x46 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x43, Return x16, 0x0);
- { uint32_t x48, ℤ x49 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x46, Return x18, 0x0);
- { uint32_t x51, ℤ x52 = Op (Syntax.SubWithGetBorrow 22 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x49, Return x20, 0x1);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1ffc00);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3fffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x3fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x3ff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, 0x0);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x42, 0x0);
- { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x45, 0x0);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x48, 0x0);
- { uint8_t x92 = ((uint8_t)x59 & 0x1);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x51, Return x92);
- { uint32_t x96 = (x59 & 0x1ffc00);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x54, Return x96);
- { uint32_t x100 = (x59 & 0x1fffff);
- { uint32_t x102, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x57, Return x100);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x81;
- out[6] = x84;
- out[7] = x87;
- out[8] = x90;
- out[9] = x94;
- out[10] = x98;
- out[11] = x102;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v
deleted file mode 100644
index 9da474e53..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.log b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.log
deleted file mode 100644
index 78ec1d8c1..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- uint32_t x36, ℤ x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) Syntax.TZ) (Return x34, Return x10, 0x3ff);
- uint32_t x39, ℤ x40 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x37, Return x12, 0x0);
- uint32_t x42, ℤ x43 = Op (Syntax.SubWithGetBorrow 22 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x40, Return x14, 0x0);
- uint32_t x45, ℤ x46 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x43, Return x16, 0x0);
- uint32_t x48, ℤ x49 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x46, Return x18, 0x0);
- uint32_t x51, ℤ x52 = Op (Syntax.SubWithGetBorrow 22 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x49, Return x20, 0x1);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1ffc00);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3fffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x3fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x3ff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, 0x0);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x42, 0x0);
- uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x45, 0x0);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x48, 0x0);
- uint8_t x92 = ((uint8_t)x59 & 0x1);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x51, Return x92);
- uint32_t x96 = (x59 & 0x1ffc00);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x54, Return x96);
- uint32_t x100 = (x59 & 0x1fffff);
- uint32_t x102, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x57, Return x100);
- (Return x102, Return x98, Return x94, Return x90, Return x87, Return x84, Return x81, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v
deleted file mode 100644
index 02479255d..000000000
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/CurveParameters.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/CurveParameters.v
new file mode 100644
index 000000000..41d60e98f
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1
+Base: 23 + 3/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 23 + 3/11;
+ bitwidth := 32;
+ s := 2^256;
+ c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)];
+ carry_chains := Some [[8; 7; 3; 10]; [9; 8; 4; 0; 10; 5; 1; 6; 2; 7; 3]; [9; 8; 4; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/Synthesis.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/Synthesis.v
new file mode 100644
index 000000000..011d05cf7
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compiler.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compiler.sh
new file mode 100755
index 000000000..ac2659a97
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1' "$@"
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compilerxx.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compilerxx.sh
new file mode 100755
index 000000000..8acbb2ef4
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,24,23,23,23,24,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1' "$@"
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feadd.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feadd.v
new file mode 100644
index 000000000..48155d778
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..a0d9c6efb
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femul.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femul.v
new file mode 100644
index 000000000..4a49098f1
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femulDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femulDisplay.v
new file mode 100644
index 000000000..3baa25f07
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquare.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquare.v
new file mode 100644
index 000000000..3ea7cc667
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4d03964ad
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesub.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesub.v
new file mode 100644
index 000000000..91a086752
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..bf6592d62
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freeze.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freeze.v
new file mode 100644
index 000000000..fa14a3fa9
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..c4dc356d3
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..6dac33925
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 2**224 + 2**192 + 2**96 - 1' -Dmodulus_bytes='23 + 3/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/CurveParameters.v
index ed060118e..ed060118e 100644
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/Synthesis.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/Synthesis.v
new file mode 100644
index 000000000..278acfbe9
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compiler.sh
index d312abbd0..d312abbd0 100755
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compiler.sh
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compilerxx.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compilerxx.sh
index 62a4bc226..62a4bc226 100755
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feadd.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feadd.v
new file mode 100644
index 000000000..daf98edfc
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..40da7878e
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femul.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femul.v
new file mode 100644
index 000000000..3da10cdfe
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femulDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femulDisplay.v
new file mode 100644
index 000000000..ab11a3de5
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquare.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquare.v
new file mode 100644
index 000000000..02e8daeff
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2d859c0fa
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesub.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesub.v
new file mode 100644
index 000000000..665eeca73
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..d7839efb0
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freeze.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freeze.v
new file mode 100644
index 000000000..cf782146a
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..795966cf2
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e224p2e192p2e96m1_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/py_interpreter.sh b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/py_interpreter.sh
index 3ebe640df..3ebe640df 100755
--- a/src/Specific/solinas32_2e256m2e224p2e192p2e96m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e256m2e224p2e192p2e96m1_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e256m2e32m977/Synthesis.v b/src/Specific/solinas32_2e256m2e32m977/Synthesis.v
deleted file mode 100644
index 631d72856..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e32m977/feadd.c b/src/Specific/solinas32_2e256m2e32m977/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e32m977/feadd.v b/src/Specific/solinas32_2e256m2e32m977/feadd.v
deleted file mode 100644
index aa3b8f150..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.log b/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.v b/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.v
deleted file mode 100644
index f7f0f3793..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e256m2e32m977/femul.c b/src/Specific/solinas32_2e256m2e32m977/femul.c
deleted file mode 100644
index 69b723883..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/femul.c
+++ /dev/null
@@ -1,103 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = ((((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27)))))))))))) + (0x800 * ((uint64_t)x24 * x46)));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + ((0x3d1 * ((uint64_t)x24 * x46)) + (0x400 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47))))));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))) + (0x800 * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45))))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + ((0x3d1 * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45)))) + (0x800 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43)))))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + ((0x3d1 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))) + (0x400 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41)))))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))) + (0x800 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39)))))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + ((0x3d1 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))) + (0x800 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37))))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) + ((0x3d1 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))) + (0x400 * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35))))))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + ((0x3d1 * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35)))))))))) + (0x800 * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33))))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + ((0x3d1 * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33)))))))))) + (0x800 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31)))))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + ((0x3d1 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))) + (0x400 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29)))))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0x3d1 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint64_t x60 = (x59 >> 0x16);
- { uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- { uint64_t x62 = (x48 >> 0x15);
- { uint32_t x63 = ((uint32_t)x48 & 0x1fffff);
- { uint64_t x64 = ((0x200000 * x62) + x63);
- { uint64_t x65 = (x64 >> 0x15);
- { uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- { uint64_t x67 = ((x60 + x58) + (0x400 * x65));
- { uint64_t x68 = (x67 >> 0x15);
- { uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- { uint64_t x70 = (x61 + (0x3d1 * x65));
- { uint32_t x71 = (uint32_t) (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x68 + x57);
- { uint64_t x74 = (x73 >> 0x15);
- { uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- { uint64_t x76 = (x74 + x56);
- { uint64_t x77 = (x76 >> 0x16);
- { uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- { uint64_t x79 = (x77 + x55);
- { uint64_t x80 = (x79 >> 0x15);
- { uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x15);
- { uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- { uint64_t x85 = (x83 + x53);
- { uint64_t x86 = (x85 >> 0x16);
- { uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
- { uint64_t x88 = (x86 + x52);
- { uint64_t x89 = (x88 >> 0x15);
- { uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- { uint64_t x91 = (x89 + x51);
- { uint64_t x92 = (x91 >> 0x15);
- { uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- { uint64_t x94 = (x92 + x50);
- { uint64_t x95 = (x94 >> 0x16);
- { uint32_t x96 = ((uint32_t)x94 & 0x3fffff);
- { uint64_t x97 = (x95 + x49);
- { uint64_t x98 = (x97 >> 0x15);
- { uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- { uint64_t x100 = (x98 + x66);
- { uint32_t x101 = (uint32_t) (x100 >> 0x15);
- { uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- { uint64_t x103 = (((uint64_t)0x200000 * x101) + x102);
- { uint32_t x104 = (uint32_t) (x103 >> 0x15);
- { uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- { uint32_t x106 = ((x71 + x69) + (0x400 * x104));
- { uint32_t x107 = (x106 >> 0x15);
- { uint32_t x108 = (x106 & 0x1fffff);
- { uint32_t x109 = (x72 + (0x3d1 * x104));
- { uint32_t x110 = (x109 >> 0x16);
- { uint32_t x111 = (x109 & 0x3fffff);
- out[0] = x111;
- out[1] = (x110 + x108);
- out[2] = (x107 + x75);
- out[3] = x78;
- out[4] = x81;
- out[5] = x84;
- out[6] = x87;
- out[7] = x90;
- out[8] = x93;
- out[9] = x96;
- out[10] = x99;
- out[11] = x105;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e32m977/femul.v b/src/Specific/solinas32_2e256m2e32m977/femul.v
deleted file mode 100644
index 16f2f70c0..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977/femulDisplay.log b/src/Specific/solinas32_2e256m2e32m977/femulDisplay.log
deleted file mode 100644
index 238bb7bf6..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/femulDisplay.log
+++ /dev/null
@@ -1,71 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = ((((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27)))))))))))) + (0x800 * ((uint64_t)x24 * x46)));
- uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + ((0x3d1 * ((uint64_t)x24 * x46)) + (0x400 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47))))));
- uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + ((0x2 * ((uint64_t)x13 * x37)) + ((0x2 * ((uint64_t)x15 * x35)) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x25 * x46)) + (0x2 * ((uint64_t)x24 * x47)))) + (0x800 * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45))))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((0x2 * ((uint64_t)x13 * x35)) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + ((0x3d1 * (((uint64_t)x23 * x46) + ((0x2 * ((uint64_t)x25 * x47)) + ((uint64_t)x24 * x45)))) + (0x800 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43)))))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + ((0x3d1 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))) + (0x400 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41)))))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + (((uint64_t)x11 * x33) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))) + (0x800 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39)))))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + ((0x3d1 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))) + (0x800 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37))))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) + ((0x3d1 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))) + (0x400 * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35))))))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + ((0x3d1 * ((0x2 * ((uint64_t)x13 * x46)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + ((0x2 * ((uint64_t)x25 * x37)) + (0x2 * ((uint64_t)x24 * x35)))))))))) + (0x800 * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33))))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + ((0x3d1 * (((uint64_t)x11 * x46) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + ((0x2 * ((uint64_t)x25 * x35)) + ((uint64_t)x24 * x33)))))))))) + (0x800 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31)))))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + ((0x3d1 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))) + (0x400 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29)))))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0x3d1 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + (((uint64_t)x23 * x33) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint64_t x60 = (x59 >> 0x16);
- uint32_t x61 = ((uint32_t)x59 & 0x3fffff);
- uint64_t x62 = (x48 >> 0x15);
- uint32_t x63 = ((uint32_t)x48 & 0x1fffff);
- uint64_t x64 = ((0x200000 * x62) + x63);
- uint64_t x65 = (x64 >> 0x15);
- uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- uint64_t x67 = ((x60 + x58) + (0x400 * x65));
- uint64_t x68 = (x67 >> 0x15);
- uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- uint64_t x70 = (x61 + (0x3d1 * x65));
- uint32_t x71 = (uint32_t) (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x68 + x57);
- uint64_t x74 = (x73 >> 0x15);
- uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- uint64_t x76 = (x74 + x56);
- uint64_t x77 = (x76 >> 0x16);
- uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- uint64_t x79 = (x77 + x55);
- uint64_t x80 = (x79 >> 0x15);
- uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x15);
- uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- uint64_t x85 = (x83 + x53);
- uint64_t x86 = (x85 >> 0x16);
- uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
- uint64_t x88 = (x86 + x52);
- uint64_t x89 = (x88 >> 0x15);
- uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- uint64_t x91 = (x89 + x51);
- uint64_t x92 = (x91 >> 0x15);
- uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- uint64_t x94 = (x92 + x50);
- uint64_t x95 = (x94 >> 0x16);
- uint32_t x96 = ((uint32_t)x94 & 0x3fffff);
- uint64_t x97 = (x95 + x49);
- uint64_t x98 = (x97 >> 0x15);
- uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- uint64_t x100 = (x98 + x66);
- uint32_t x101 = (uint32_t) (x100 >> 0x15);
- uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- uint64_t x103 = (((uint64_t)0x200000 * x101) + x102);
- uint32_t x104 = (uint32_t) (x103 >> 0x15);
- uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- uint32_t x106 = ((x71 + x69) + (0x400 * x104));
- uint32_t x107 = (x106 >> 0x15);
- uint32_t x108 = (x106 & 0x1fffff);
- uint32_t x109 = (x72 + (0x3d1 * x104));
- uint32_t x110 = (x109 >> 0x16);
- uint32_t x111 = (x109 & 0x3fffff);
- return (Return x105, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, (x107 + x75), (x110 + x108), Return x111))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v b/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v
deleted file mode 100644
index d27027c5f..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquare.c b/src/Specific/solinas32_2e256m2e32m977/fesquare.c
deleted file mode 100644
index 7f795b431..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesquare.c
+++ /dev/null
@@ -1,91 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = ((((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2)))))))))))) + (0x800 * ((uint64_t)x21 * x21)));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + ((0x3d1 * ((uint64_t)x21 * x21)) + (0x400 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22))))));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))) + (0x800 * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20))))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + ((0x3d1 * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20)))) + (0x800 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18)))))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + ((0x3d1 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))) + (0x400 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16)))))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))) + (0x800 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14)))))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + ((0x3d1 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))) + (0x800 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12))))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + ((0x3d1 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))) + (0x400 * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10))))))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + ((0x3d1 * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10)))))))))) + (0x800 * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8))))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + ((0x3d1 * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8)))))))))) + (0x800 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6)))))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + ((0x3d1 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))) + (0x400 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4)))))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0x3d1 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint64_t x35 = (x34 >> 0x16);
- { uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- { uint64_t x37 = (x23 >> 0x15);
- { uint32_t x38 = ((uint32_t)x23 & 0x1fffff);
- { uint64_t x39 = ((0x200000 * x37) + x38);
- { uint64_t x40 = (x39 >> 0x15);
- { uint32_t x41 = ((uint32_t)x39 & 0x1fffff);
- { uint64_t x42 = ((x35 + x33) + (0x400 * x40));
- { uint64_t x43 = (x42 >> 0x15);
- { uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
- { uint64_t x45 = (x36 + (0x3d1 * x40));
- { uint32_t x46 = (uint32_t) (x45 >> 0x16);
- { uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
- { uint64_t x48 = (x43 + x32);
- { uint64_t x49 = (x48 >> 0x15);
- { uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
- { uint64_t x51 = (x49 + x31);
- { uint64_t x52 = (x51 >> 0x16);
- { uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
- { uint64_t x54 = (x52 + x30);
- { uint64_t x55 = (x54 >> 0x15);
- { uint32_t x56 = ((uint32_t)x54 & 0x1fffff);
- { uint64_t x57 = (x55 + x29);
- { uint64_t x58 = (x57 >> 0x15);
- { uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
- { uint64_t x60 = (x58 + x28);
- { uint64_t x61 = (x60 >> 0x16);
- { uint32_t x62 = ((uint32_t)x60 & 0x3fffff);
- { uint64_t x63 = (x61 + x27);
- { uint64_t x64 = (x63 >> 0x15);
- { uint32_t x65 = ((uint32_t)x63 & 0x1fffff);
- { uint64_t x66 = (x64 + x26);
- { uint64_t x67 = (x66 >> 0x15);
- { uint32_t x68 = ((uint32_t)x66 & 0x1fffff);
- { uint64_t x69 = (x67 + x25);
- { uint64_t x70 = (x69 >> 0x16);
- { uint32_t x71 = ((uint32_t)x69 & 0x3fffff);
- { uint64_t x72 = (x70 + x24);
- { uint64_t x73 = (x72 >> 0x15);
- { uint32_t x74 = ((uint32_t)x72 & 0x1fffff);
- { uint64_t x75 = (x73 + x41);
- { uint32_t x76 = (uint32_t) (x75 >> 0x15);
- { uint32_t x77 = ((uint32_t)x75 & 0x1fffff);
- { uint64_t x78 = (((uint64_t)0x200000 * x76) + x77);
- { uint32_t x79 = (uint32_t) (x78 >> 0x15);
- { uint32_t x80 = ((uint32_t)x78 & 0x1fffff);
- { uint32_t x81 = ((x46 + x44) + (0x400 * x79));
- { uint32_t x82 = (x81 >> 0x15);
- { uint32_t x83 = (x81 & 0x1fffff);
- { uint32_t x84 = (x47 + (0x3d1 * x79));
- { uint32_t x85 = (x84 >> 0x16);
- { uint32_t x86 = (x84 & 0x3fffff);
- out[0] = x86;
- out[1] = (x85 + x83);
- out[2] = (x82 + x50);
- out[3] = x53;
- out[4] = x56;
- out[5] = x59;
- out[6] = x62;
- out[7] = x65;
- out[8] = x68;
- out[9] = x71;
- out[10] = x74;
- out[11] = x80;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquare.v b/src/Specific/solinas32_2e256m2e32m977/fesquare.v
deleted file mode 100644
index aa4ab2c55..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.log b/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.log
deleted file mode 100644
index 2b6d59589..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.log
+++ /dev/null
@@ -1,71 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = ((((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2)))))))))))) + (0x800 * ((uint64_t)x21 * x21)));
- uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + ((0x3d1 * ((uint64_t)x21 * x21)) + (0x400 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22))))));
- uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x22 * x21)) + (0x2 * ((uint64_t)x21 * x22)))) + (0x800 * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20))))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + ((0x3d1 * (((uint64_t)x20 * x21) + ((0x2 * ((uint64_t)x22 * x22)) + ((uint64_t)x21 * x20)))) + (0x800 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18)))))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + ((0x3d1 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))) + (0x400 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16)))))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + ((0x3d1 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))) + (0x800 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14)))))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + ((0x3d1 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))) + (0x800 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12))))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + ((0x3d1 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))) + (0x400 * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10))))))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + ((0x3d1 * ((0x2 * ((uint64_t)x10 * x21)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (0x2 * ((uint64_t)x21 * x10)))))))))) + (0x800 * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8))))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + ((0x3d1 * (((uint64_t)x8 * x21) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + ((uint64_t)x21 * x8)))))))))) + (0x800 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6)))))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + ((0x3d1 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))) + (0x400 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4)))))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0x3d1 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint64_t x35 = (x34 >> 0x16);
- uint32_t x36 = ((uint32_t)x34 & 0x3fffff);
- uint64_t x37 = (x23 >> 0x15);
- uint32_t x38 = ((uint32_t)x23 & 0x1fffff);
- uint64_t x39 = ((0x200000 * x37) + x38);
- uint64_t x40 = (x39 >> 0x15);
- uint32_t x41 = ((uint32_t)x39 & 0x1fffff);
- uint64_t x42 = ((x35 + x33) + (0x400 * x40));
- uint64_t x43 = (x42 >> 0x15);
- uint32_t x44 = ((uint32_t)x42 & 0x1fffff);
- uint64_t x45 = (x36 + (0x3d1 * x40));
- uint32_t x46 = (uint32_t) (x45 >> 0x16);
- uint32_t x47 = ((uint32_t)x45 & 0x3fffff);
- uint64_t x48 = (x43 + x32);
- uint64_t x49 = (x48 >> 0x15);
- uint32_t x50 = ((uint32_t)x48 & 0x1fffff);
- uint64_t x51 = (x49 + x31);
- uint64_t x52 = (x51 >> 0x16);
- uint32_t x53 = ((uint32_t)x51 & 0x3fffff);
- uint64_t x54 = (x52 + x30);
- uint64_t x55 = (x54 >> 0x15);
- uint32_t x56 = ((uint32_t)x54 & 0x1fffff);
- uint64_t x57 = (x55 + x29);
- uint64_t x58 = (x57 >> 0x15);
- uint32_t x59 = ((uint32_t)x57 & 0x1fffff);
- uint64_t x60 = (x58 + x28);
- uint64_t x61 = (x60 >> 0x16);
- uint32_t x62 = ((uint32_t)x60 & 0x3fffff);
- uint64_t x63 = (x61 + x27);
- uint64_t x64 = (x63 >> 0x15);
- uint32_t x65 = ((uint32_t)x63 & 0x1fffff);
- uint64_t x66 = (x64 + x26);
- uint64_t x67 = (x66 >> 0x15);
- uint32_t x68 = ((uint32_t)x66 & 0x1fffff);
- uint64_t x69 = (x67 + x25);
- uint64_t x70 = (x69 >> 0x16);
- uint32_t x71 = ((uint32_t)x69 & 0x3fffff);
- uint64_t x72 = (x70 + x24);
- uint64_t x73 = (x72 >> 0x15);
- uint32_t x74 = ((uint32_t)x72 & 0x1fffff);
- uint64_t x75 = (x73 + x41);
- uint32_t x76 = (uint32_t) (x75 >> 0x15);
- uint32_t x77 = ((uint32_t)x75 & 0x1fffff);
- uint64_t x78 = (((uint64_t)0x200000 * x76) + x77);
- uint32_t x79 = (uint32_t) (x78 >> 0x15);
- uint32_t x80 = ((uint32_t)x78 & 0x1fffff);
- uint32_t x81 = ((x46 + x44) + (0x400 * x79));
- uint32_t x82 = (x81 >> 0x15);
- uint32_t x83 = (x81 & 0x1fffff);
- uint32_t x84 = (x47 + (0x3d1 * x79));
- uint32_t x85 = (x84 >> 0x16);
- uint32_t x86 = (x84 & 0x3fffff);
- return (Return x80, Return x74, Return x71, Return x68, Return x65, Return x62, Return x59, Return x56, Return x53, (x82 + x50), (x85 + x83), Return x86))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v
deleted file mode 100644
index 18be8cdda..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesub.c b/src/Specific/solinas32_2e256m2e32m977/fesub.c
deleted file mode 100644
index 0a45906fc..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x7ff85e + x5) - x27);
- out[1] = ((0x3ff7fe + x7) - x29);
- out[2] = ((0x3ffffe + x9) - x31);
- out[3] = ((0x7ffffe + x11) - x33);
- out[4] = ((0x3ffffe + x13) - x35);
- out[5] = ((0x3ffffe + x15) - x37);
- out[6] = ((0x7ffffe + x17) - x39);
- out[7] = ((0x3ffffe + x19) - x41);
- out[8] = ((0x3ffffe + x21) - x43);
- out[9] = ((0x7ffffe + x23) - x45);
- out[10] = ((0x3ffffe + x25) - x47);
- out[11] = ((0x3ffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesub.v b/src/Specific/solinas32_2e256m2e32m977/fesub.v
deleted file mode 100644
index db27537a7..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.log b/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.log
deleted file mode 100644
index 4c77a3d89..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x3ffffe + x24) - x46), ((0x3ffffe + x25) - x47), ((0x7ffffe + x23) - x45), ((0x3ffffe + x21) - x43), ((0x3ffffe + x19) - x41), ((0x7ffffe + x17) - x39), ((0x3ffffe + x15) - x37), ((0x3ffffe + x13) - x35), ((0x7ffffe + x11) - x33), ((0x3ffffe + x9) - x31), ((0x3ff7fe + x7) - x29), ((0x7ff85e + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.v b/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.v
deleted file mode 100644
index 4e733af25..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977/freeze.c b/src/Specific/solinas32_2e256m2e32m977/freeze.c
deleted file mode 100644
index ba45b0087..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffc2f);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1ffbff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3ffc2f);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1ffbff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x3fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x1fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x3fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x1fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x3fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x1fffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m2e32m977/freeze.v b/src/Specific/solinas32_2e256m2e32m977/freeze.v
deleted file mode 100644
index e224de51d..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.log b/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.log
deleted file mode 100644
index 5c4fc1a9a..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffc2f);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1ffbff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1fffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3ffc2f);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1ffbff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x3fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x1fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x3fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x1fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x3fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x1fffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v b/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v
deleted file mode 100644
index f75eed8ed..000000000
--- a/src/Specific/solinas32_2e256m2e32m977/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m2e32m977.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977/CurveParameters.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/CurveParameters.v
index 507c16669..507c16669 100644
--- a/src/Specific/solinas32_2e256m2e32m977/CurveParameters.v
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/Synthesis.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/Synthesis.v
new file mode 100644
index 000000000..70486bab7
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e32m977/compiler.sh b/src/Specific/solinas32_2e256m2e32m977_12limbs/compiler.sh
index 347197159..347197159 100755
--- a/src/Specific/solinas32_2e256m2e32m977/compiler.sh
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e256m2e32m977/compilerxx.sh b/src/Specific/solinas32_2e256m2e32m977_12limbs/compilerxx.sh
index 0a9d66421..0a9d66421 100755
--- a/src/Specific/solinas32_2e256m2e32m977/compilerxx.sh
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/feadd.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/feadd.v
new file mode 100644
index 000000000..81db3caf1
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..fdc8da47c
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/femul.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/femul.v
new file mode 100644
index 000000000..7c40f1335
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/femulDisplay.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/femulDisplay.v
new file mode 100644
index 000000000..4a1cc516a
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquare.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquare.v
new file mode 100644
index 000000000..19cb2d266
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e21acc95d
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/fesub.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesub.v
new file mode 100644
index 000000000..eb0caa651
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..47d12e9c2
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/freeze.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/freeze.v
new file mode 100644
index 000000000..e034f2772
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m2e32m977_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..8ce2d92cc
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977/py_interpreter.sh b/src/Specific/solinas32_2e256m2e32m977_12limbs/py_interpreter.sh
index 6041da3bd..6041da3bd 100755
--- a/src/Specific/solinas32_2e256m2e32m977/py_interpreter.sh
+++ b/src/Specific/solinas32_2e256m2e32m977_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/CurveParameters.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/CurveParameters.v
new file mode 100644
index 000000000..dc2bcf523
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 2^32 - 977
+Base: 19 + 9/13
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 13%nat;
+ base := 19 + 9/13;
+ bitwidth := 32;
+ s := 2^256;
+ c := [(1, 977); (2^32, 1)];
+ carry_chains := Some [[0; 12]; [1; 0; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12]; [1; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/Synthesis.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/Synthesis.v
new file mode 100644
index 000000000..405cf9850
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/compiler.sh b/src/Specific/solinas32_2e256m2e32m977_13limbs/compiler.sh
new file mode 100755
index 000000000..b82a9eba6
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,19,20,20,19,20,20,19,20,20,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/compilerxx.sh b/src/Specific/solinas32_2e256m2e32m977_13limbs/compilerxx.sh
new file mode 100755
index 000000000..ab961a265
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,20,20,19,20,20,19,20,20,19,20,20,19}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/feadd.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/feadd.v
new file mode 100644
index 000000000..3d99e7112
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..17a9fd694
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/femul.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/femul.v
new file mode 100644
index 000000000..b7d06daf3
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/femulDisplay.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/femulDisplay.v
new file mode 100644
index 000000000..b041f5efe
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquare.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquare.v
new file mode 100644
index 000000000..6e55ba3c3
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3cf02f6c9
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/fesub.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesub.v
new file mode 100644
index 000000000..0a59de45b
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..2fa592842
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/freeze.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/freeze.v
new file mode 100644
index 000000000..7fe163842
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e256m2e32m977_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..9b6c0d3a4
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e256m2e32m977_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e256m2e32m977_13limbs/py_interpreter.sh b/src/Specific/solinas32_2e256m2e32m977_13limbs/py_interpreter.sh
new file mode 100755
index 000000000..91c1d1166
--- /dev/null
+++ b/src/Specific/solinas32_2e256m2e32m977_13limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 2**32 - 977' -Dmodulus_bytes='19 + 9/13' -Da24='121665'
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v b/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v
deleted file mode 100644
index b86e7df67..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^256 - 88*2^240 - 1
-Base: 21 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 12%nat;
- base := 21 + 1/3;
- bitwidth := 32;
- s := 2^256;
- c := [(1, 1); (88, 2^240)];
- carry_chains := Some [[10; 11]; [11; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10]; [11; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v b/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v
deleted file mode 100644
index 805d1d77d..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh b/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh
deleted file mode 100755
index 70a953766..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/compilerxx.sh b/src/Specific/solinas32_2e256m88x2e240m1/compilerxx.sh
deleted file mode 100755
index 419575b2a..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/feadd.c b/src/Specific/solinas32_2e256m88x2e240m1/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/feadd.v b/src/Specific/solinas32_2e256m88x2e240m1/feadd.v
deleted file mode 100644
index 1f926816a..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.log b/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.v
deleted file mode 100644
index 3dfbe0edc..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/femul.v b/src/Specific/solinas32_2e256m88x2e240m1/femul.v
deleted file mode 100644
index 8dfaa7d47..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v
deleted file mode 100644
index b57bd1d00..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v b/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v
deleted file mode 100644
index 4db3dac82..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v
deleted file mode 100644
index 2318c431f..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesub.c b/src/Specific/solinas32_2e256m88x2e240m1/fesub.c
deleted file mode 100644
index d558e4f5f..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x7ffffe + x5) - x27);
- out[1] = ((0x3ffffe + x7) - x29);
- out[2] = ((0x3ffffe + x9) - x31);
- out[3] = ((0x7ffffe + x11) - x33);
- out[4] = ((0x3ffffe + x13) - x35);
- out[5] = ((0x3ffffe + x15) - x37);
- out[6] = ((0x7ffffe + x17) - x39);
- out[7] = ((0x3ffffe + x19) - x41);
- out[8] = ((0x3ffffe + x21) - x43);
- out[9] = ((0x7ffffe + x23) - x45);
- out[10] = ((0x3ffffe + x25) - x47);
- out[11] = ((0x3fe9fe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesub.v b/src/Specific/solinas32_2e256m88x2e240m1/fesub.v
deleted file mode 100644
index 5dcdf37e7..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.log b/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.log
deleted file mode 100644
index ee2d3691b..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x3fe9fe + x24) - x46), ((0x3ffffe + x25) - x47), ((0x7ffffe + x23) - x45), ((0x3ffffe + x21) - x43), ((0x3ffffe + x19) - x41), ((0x7ffffe + x17) - x39), ((0x3ffffe + x15) - x37), ((0x3ffffe + x13) - x35), ((0x7ffffe + x11) - x33), ((0x3ffffe + x9) - x31), ((0x3ffffe + x7) - x29), ((0x7ffffe + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.v
deleted file mode 100644
index 652f6b081..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freeze.c b/src/Specific/solinas32_2e256m88x2e240m1/freeze.c
deleted file mode 100644
index 1200bfd56..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1ff4ff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x3fffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x1fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x3fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x1fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x3fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x1fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x3fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x1ff4ff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freeze.v b/src/Specific/solinas32_2e256m88x2e240m1/freeze.v
deleted file mode 100644
index 8789d22bc..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.log b/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.log
deleted file mode 100644
index 5ad239064..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x1fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x1fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x3fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x1ff4ff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x3fffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x1fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x3fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x1fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x3fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x1fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x3fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x1ff4ff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v b/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v
deleted file mode 100644
index b5a4d82e6..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e256m88x2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e256m88x2e240m1/py_interpreter.sh b/src/Specific/solinas32_2e256m88x2e240m1/py_interpreter.sh
deleted file mode 100755
index 51ceb7105..000000000
--- a/src/Specific/solinas32_2e256m88x2e240m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**256 - 88*2**240 - 1' -Dmodulus_bytes='21 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e266m3/CurveParameters.v b/src/Specific/solinas32_2e266m3/CurveParameters.v
deleted file mode 100644
index 72da81c42..000000000
--- a/src/Specific/solinas32_2e266m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^266 - 3
-Base: 22 + 1/6
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 12%nat;
- base := 22 + 1/6;
- bitwidth := 32;
- s := 2^266;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e266m3/Synthesis.v b/src/Specific/solinas32_2e266m3/Synthesis.v
deleted file mode 100644
index c7e41c2c9..000000000
--- a/src/Specific/solinas32_2e266m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e266m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e266m3/compiler.sh b/src/Specific/solinas32_2e266m3/compiler.sh
deleted file mode 100755
index d5a6eb6ad..000000000
--- a/src/Specific/solinas32_2e266m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,22,23,22,22,22,22,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3/compilerxx.sh b/src/Specific/solinas32_2e266m3/compilerxx.sh
deleted file mode 100755
index 090a768db..000000000
--- a/src/Specific/solinas32_2e266m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,22,23,22,22,22,22,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3/feadd.c b/src/Specific/solinas32_2e266m3/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e266m3/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e266m3/feadd.v b/src/Specific/solinas32_2e266m3/feadd.v
deleted file mode 100644
index 0c315c427..000000000
--- a/src/Specific/solinas32_2e266m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e266m3/feaddDisplay.log b/src/Specific/solinas32_2e266m3/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e266m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3/feaddDisplay.v b/src/Specific/solinas32_2e266m3/feaddDisplay.v
deleted file mode 100644
index c1edfbe41..000000000
--- a/src/Specific/solinas32_2e266m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e266m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e266m3/femul.c b/src/Specific/solinas32_2e266m3/femul.c
deleted file mode 100644
index 6f615fcd9..000000000
--- a/src/Specific/solinas32_2e266m3/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x3 * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0x3 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x3 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x3 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0x3 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x3 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x3 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x3 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x3 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0x3 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint32_t x60 = (uint32_t) (x59 >> 0x17);
- { uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
- { uint64_t x62 = (x60 + x58);
- { uint32_t x63 = (uint32_t) (x62 >> 0x16);
- { uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
- { uint64_t x65 = (x63 + x57);
- { uint32_t x66 = (uint32_t) (x65 >> 0x16);
- { uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
- { uint64_t x68 = (x66 + x56);
- { uint32_t x69 = (uint32_t) (x68 >> 0x16);
- { uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- { uint64_t x71 = (x69 + x55);
- { uint32_t x72 = (uint32_t) (x71 >> 0x16);
- { uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- { uint64_t x74 = (x72 + x54);
- { uint32_t x75 = (uint32_t) (x74 >> 0x16);
- { uint32_t x76 = ((uint32_t)x74 & 0x3fffff);
- { uint64_t x77 = (x75 + x53);
- { uint32_t x78 = (uint32_t) (x77 >> 0x17);
- { uint32_t x79 = ((uint32_t)x77 & 0x7fffff);
- { uint64_t x80 = (x78 + x52);
- { uint32_t x81 = (uint32_t) (x80 >> 0x16);
- { uint32_t x82 = ((uint32_t)x80 & 0x3fffff);
- { uint64_t x83 = (x81 + x51);
- { uint32_t x84 = (uint32_t) (x83 >> 0x16);
- { uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
- { uint64_t x86 = (x84 + x50);
- { uint32_t x87 = (uint32_t) (x86 >> 0x16);
- { uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
- { uint64_t x89 = (x87 + x49);
- { uint32_t x90 = (uint32_t) (x89 >> 0x16);
- { uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- { uint64_t x92 = (x90 + x48);
- { uint32_t x93 = (uint32_t) (x92 >> 0x16);
- { uint32_t x94 = ((uint32_t)x92 & 0x3fffff);
- { uint32_t x95 = (x61 + (0x3 * x93));
- { uint32_t x96 = (x95 >> 0x17);
- { uint32_t x97 = (x95 & 0x7fffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x16);
- { uint32_t x100 = (x98 & 0x3fffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e266m3/femul.v b/src/Specific/solinas32_2e266m3/femul.v
deleted file mode 100644
index 3d3ad0278..000000000
--- a/src/Specific/solinas32_2e266m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e266m3/femulDisplay.log b/src/Specific/solinas32_2e266m3/femulDisplay.log
deleted file mode 100644
index c8cb6dc94..000000000
--- a/src/Specific/solinas32_2e266m3/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((0x2 * ((uint64_t)x19 * x35)) + ((0x2 * ((uint64_t)x21 * x33)) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((0x2 * ((uint64_t)x19 * x33)) + ((0x2 * ((uint64_t)x21 * x31)) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x3 * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((0x2 * ((uint64_t)x19 * x31)) + ((0x2 * ((uint64_t)x21 * x29)) + ((uint64_t)x23 * x27)))))))))) + (0x3 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x3 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x3 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((0x2 * ((uint64_t)x9 * x35)) + ((0x2 * ((uint64_t)x11 * x33)) + ((0x2 * ((uint64_t)x13 * x31)) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x3 * ((0x2 * ((uint64_t)x19 * x46)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + (0x2 * ((uint64_t)x24 * x41))))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + ((0x2 * ((uint64_t)x7 * x35)) + ((0x2 * ((uint64_t)x9 * x33)) + ((0x2 * ((uint64_t)x11 * x31)) + ((0x2 * ((uint64_t)x13 * x29)) + ((uint64_t)x15 * x27)))))) + (0x3 * (((uint64_t)x17 * x46) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x24 * x39))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x3 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x3 * (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x3 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x3 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0x3 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + (((uint64_t)x17 * x39) + ((0x2 * ((uint64_t)x19 * x37)) + ((0x2 * ((uint64_t)x21 * x35)) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint32_t x60 = (uint32_t) (x59 >> 0x17);
- uint32_t x61 = ((uint32_t)x59 & 0x7fffff);
- uint64_t x62 = (x60 + x58);
- uint32_t x63 = (uint32_t) (x62 >> 0x16);
- uint32_t x64 = ((uint32_t)x62 & 0x3fffff);
- uint64_t x65 = (x63 + x57);
- uint32_t x66 = (uint32_t) (x65 >> 0x16);
- uint32_t x67 = ((uint32_t)x65 & 0x3fffff);
- uint64_t x68 = (x66 + x56);
- uint32_t x69 = (uint32_t) (x68 >> 0x16);
- uint32_t x70 = ((uint32_t)x68 & 0x3fffff);
- uint64_t x71 = (x69 + x55);
- uint32_t x72 = (uint32_t) (x71 >> 0x16);
- uint32_t x73 = ((uint32_t)x71 & 0x3fffff);
- uint64_t x74 = (x72 + x54);
- uint32_t x75 = (uint32_t) (x74 >> 0x16);
- uint32_t x76 = ((uint32_t)x74 & 0x3fffff);
- uint64_t x77 = (x75 + x53);
- uint32_t x78 = (uint32_t) (x77 >> 0x17);
- uint32_t x79 = ((uint32_t)x77 & 0x7fffff);
- uint64_t x80 = (x78 + x52);
- uint32_t x81 = (uint32_t) (x80 >> 0x16);
- uint32_t x82 = ((uint32_t)x80 & 0x3fffff);
- uint64_t x83 = (x81 + x51);
- uint32_t x84 = (uint32_t) (x83 >> 0x16);
- uint32_t x85 = ((uint32_t)x83 & 0x3fffff);
- uint64_t x86 = (x84 + x50);
- uint32_t x87 = (uint32_t) (x86 >> 0x16);
- uint32_t x88 = ((uint32_t)x86 & 0x3fffff);
- uint64_t x89 = (x87 + x49);
- uint32_t x90 = (uint32_t) (x89 >> 0x16);
- uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- uint64_t x92 = (x90 + x48);
- uint32_t x93 = (uint32_t) (x92 >> 0x16);
- uint32_t x94 = ((uint32_t)x92 & 0x3fffff);
- uint32_t x95 = (x61 + (0x3 * x93));
- uint32_t x96 = (x95 >> 0x17);
- uint32_t x97 = (x95 & 0x7fffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x16);
- uint32_t x100 = (x98 & 0x3fffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3/femulDisplay.v b/src/Specific/solinas32_2e266m3/femulDisplay.v
deleted file mode 100644
index 5ebf19087..000000000
--- a/src/Specific/solinas32_2e266m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e266m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e266m3/fesquare.c b/src/Specific/solinas32_2e266m3/fesquare.c
deleted file mode 100644
index b162c3b09..000000000
--- a/src/Specific/solinas32_2e266m3/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint32_t x35 = (uint32_t) (x34 >> 0x17);
- { uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
- { uint64_t x37 = (x35 + x33);
- { uint32_t x38 = (uint32_t) (x37 >> 0x16);
- { uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- { uint64_t x40 = (x38 + x32);
- { uint32_t x41 = (uint32_t) (x40 >> 0x16);
- { uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- { uint64_t x43 = (x41 + x31);
- { uint32_t x44 = (uint32_t) (x43 >> 0x16);
- { uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- { uint64_t x46 = (x44 + x30);
- { uint32_t x47 = (uint32_t) (x46 >> 0x16);
- { uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- { uint64_t x49 = (x47 + x29);
- { uint32_t x50 = (uint32_t) (x49 >> 0x16);
- { uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- { uint64_t x52 = (x50 + x28);
- { uint32_t x53 = (uint32_t) (x52 >> 0x17);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- { uint64_t x55 = (x53 + x27);
- { uint32_t x56 = (uint32_t) (x55 >> 0x16);
- { uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- { uint64_t x58 = (x56 + x26);
- { uint32_t x59 = (uint32_t) (x58 >> 0x16);
- { uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- { uint64_t x61 = (x59 + x25);
- { uint32_t x62 = (uint32_t) (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x24);
- { uint32_t x65 = (uint32_t) (x64 >> 0x16);
- { uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- { uint64_t x67 = (x65 + x23);
- { uint32_t x68 = (uint32_t) (x67 >> 0x16);
- { uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- { uint32_t x70 = (x36 + (0x3 * x68));
- { uint32_t x71 = (x70 >> 0x17);
- { uint32_t x72 = (x70 & 0x7fffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x16);
- { uint32_t x75 = (x73 & 0x3fffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e266m3/fesquare.v b/src/Specific/solinas32_2e266m3/fesquare.v
deleted file mode 100644
index 5857ba16f..000000000
--- a/src/Specific/solinas32_2e266m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e266m3/fesquareDisplay.log b/src/Specific/solinas32_2e266m3/fesquareDisplay.log
deleted file mode 100644
index 7caaf7389..000000000
--- a/src/Specific/solinas32_2e266m3/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x3 * ((0x2 * ((uint64_t)x16 * x21)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + (0x2 * ((uint64_t)x21 * x16))))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x3 * (((uint64_t)x14 * x21) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((uint64_t)x21 * x14))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x3 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0x3 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint32_t x35 = (uint32_t) (x34 >> 0x17);
- uint32_t x36 = ((uint32_t)x34 & 0x7fffff);
- uint64_t x37 = (x35 + x33);
- uint32_t x38 = (uint32_t) (x37 >> 0x16);
- uint32_t x39 = ((uint32_t)x37 & 0x3fffff);
- uint64_t x40 = (x38 + x32);
- uint32_t x41 = (uint32_t) (x40 >> 0x16);
- uint32_t x42 = ((uint32_t)x40 & 0x3fffff);
- uint64_t x43 = (x41 + x31);
- uint32_t x44 = (uint32_t) (x43 >> 0x16);
- uint32_t x45 = ((uint32_t)x43 & 0x3fffff);
- uint64_t x46 = (x44 + x30);
- uint32_t x47 = (uint32_t) (x46 >> 0x16);
- uint32_t x48 = ((uint32_t)x46 & 0x3fffff);
- uint64_t x49 = (x47 + x29);
- uint32_t x50 = (uint32_t) (x49 >> 0x16);
- uint32_t x51 = ((uint32_t)x49 & 0x3fffff);
- uint64_t x52 = (x50 + x28);
- uint32_t x53 = (uint32_t) (x52 >> 0x17);
- uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- uint64_t x55 = (x53 + x27);
- uint32_t x56 = (uint32_t) (x55 >> 0x16);
- uint32_t x57 = ((uint32_t)x55 & 0x3fffff);
- uint64_t x58 = (x56 + x26);
- uint32_t x59 = (uint32_t) (x58 >> 0x16);
- uint32_t x60 = ((uint32_t)x58 & 0x3fffff);
- uint64_t x61 = (x59 + x25);
- uint32_t x62 = (uint32_t) (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x24);
- uint32_t x65 = (uint32_t) (x64 >> 0x16);
- uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- uint64_t x67 = (x65 + x23);
- uint32_t x68 = (uint32_t) (x67 >> 0x16);
- uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- uint32_t x70 = (x36 + (0x3 * x68));
- uint32_t x71 = (x70 >> 0x17);
- uint32_t x72 = (x70 & 0x7fffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x16);
- uint32_t x75 = (x73 & 0x3fffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3/fesquareDisplay.v b/src/Specific/solinas32_2e266m3/fesquareDisplay.v
deleted file mode 100644
index 9126ad5d5..000000000
--- a/src/Specific/solinas32_2e266m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e266m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e266m3/fesub.c b/src/Specific/solinas32_2e266m3/fesub.c
deleted file mode 100644
index edd487e90..000000000
--- a/src/Specific/solinas32_2e266m3/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0xfffffa + x5) - x27);
- out[1] = ((0x7ffffe + x7) - x29);
- out[2] = ((0x7ffffe + x9) - x31);
- out[3] = ((0x7ffffe + x11) - x33);
- out[4] = ((0x7ffffe + x13) - x35);
- out[5] = ((0x7ffffe + x15) - x37);
- out[6] = ((0xfffffe + x17) - x39);
- out[7] = ((0x7ffffe + x19) - x41);
- out[8] = ((0x7ffffe + x21) - x43);
- out[9] = ((0x7ffffe + x23) - x45);
- out[10] = ((0x7ffffe + x25) - x47);
- out[11] = ((0x7ffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e266m3/fesub.v b/src/Specific/solinas32_2e266m3/fesub.v
deleted file mode 100644
index 80414860a..000000000
--- a/src/Specific/solinas32_2e266m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e266m3/fesubDisplay.log b/src/Specific/solinas32_2e266m3/fesubDisplay.log
deleted file mode 100644
index 97c231ce6..000000000
--- a/src/Specific/solinas32_2e266m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x7ffffe + x24) - x46), ((0x7ffffe + x25) - x47), ((0x7ffffe + x23) - x45), ((0x7ffffe + x21) - x43), ((0x7ffffe + x19) - x41), ((0xfffffe + x17) - x39), ((0x7ffffe + x15) - x37), ((0x7ffffe + x13) - x35), ((0x7ffffe + x11) - x33), ((0x7ffffe + x9) - x31), ((0x7ffffe + x7) - x29), ((0xfffffa + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3/fesubDisplay.v b/src/Specific/solinas32_2e266m3/fesubDisplay.v
deleted file mode 100644
index 9d8c29c50..000000000
--- a/src/Specific/solinas32_2e266m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e266m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e266m3/freeze.c b/src/Specific/solinas32_2e266m3/freeze.c
deleted file mode 100644
index 800e80e41..000000000
--- a/src/Specific/solinas32_2e266m3/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffd);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x3fffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x3fffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x3fffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x3fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x3fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x3fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x3fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3fffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x7ffffd);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0x3fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0x3fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0x3fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x3fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0x3fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0x7fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0x3fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x3fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0x3fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0x3fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0x3fffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e266m3/freeze.v b/src/Specific/solinas32_2e266m3/freeze.v
deleted file mode 100644
index a5de70919..000000000
--- a/src/Specific/solinas32_2e266m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e266m3/freezeDisplay.log b/src/Specific/solinas32_2e266m3/freezeDisplay.log
deleted file mode 100644
index 7c05e0c4e..000000000
--- a/src/Specific/solinas32_2e266m3/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffd);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0x3fffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0x3fffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0x3fffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x3fffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0x3fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0x7fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0x3fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x3fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0x3fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0x3fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0x3fffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x7ffffd);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0x3fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0x3fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0x3fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x3fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0x3fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0x7fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0x3fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x3fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0x3fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0x3fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0x3fffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e266m3/freezeDisplay.v b/src/Specific/solinas32_2e266m3/freezeDisplay.v
deleted file mode 100644
index 6c453cc83..000000000
--- a/src/Specific/solinas32_2e266m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e266m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e266m3/py_interpreter.sh b/src/Specific/solinas32_2e266m3/py_interpreter.sh
deleted file mode 100755
index 6a1780af0..000000000
--- a/src/Specific/solinas32_2e266m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**266 - 3' -Dmodulus_bytes='22 + 1/6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e266m3_10limbs/CurveParameters.v b/src/Specific/solinas32_2e266m3_10limbs/CurveParameters.v
new file mode 100644
index 000000000..cc7d2254b
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^266 - 3
+Base: 26.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 26 + 3/5;
+ bitwidth := 32;
+ s := 2^266;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/Synthesis.v b/src/Specific/solinas32_2e266m3_10limbs/Synthesis.v
new file mode 100644
index 000000000..fb1960f8a
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/compiler.sh b/src/Specific/solinas32_2e266m3_10limbs/compiler.sh
new file mode 100755
index 000000000..6b703447b
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3_10limbs/compilerxx.sh b/src/Specific/solinas32_2e266m3_10limbs/compilerxx.sh
new file mode 100755
index 000000000..8e695502a
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3_10limbs/feadd.v b/src/Specific/solinas32_2e266m3_10limbs/feadd.v
new file mode 100644
index 000000000..93b331c83
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.v b/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..c4caad7b5
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/femul.v b/src/Specific/solinas32_2e266m3_10limbs/femul.v
new file mode 100644
index 000000000..84dc145f0
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.v b/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.v
new file mode 100644
index 000000000..0f5069a17
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesquare.v b/src/Specific/solinas32_2e266m3_10limbs/fesquare.v
new file mode 100644
index 000000000..27d4c2fec
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.v b/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..007e208bf
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesub.v b/src/Specific/solinas32_2e266m3_10limbs/fesub.v
new file mode 100644
index 000000000..c234b6a84
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.v b/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..281306873
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/freeze.v b/src/Specific/solinas32_2e266m3_10limbs/freeze.v
new file mode 100644
index 000000000..92b3f1509
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.v b/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..25fa67f2a
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e266m3_10limbs/py_interpreter.sh b/src/Specific/solinas32_2e266m3_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..98afa0225
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**266 - 3' -Dmodulus_bytes='26.6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e266m3_11limbs/CurveParameters.v b/src/Specific/solinas32_2e266m3_11limbs/CurveParameters.v
new file mode 100644
index 000000000..923b6a1d9
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^266 - 3
+Base: 24 + 2/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 24 + 2/11;
+ bitwidth := 32;
+ s := 2^266;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/Synthesis.v b/src/Specific/solinas32_2e266m3_11limbs/Synthesis.v
new file mode 100644
index 000000000..85d89535c
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/compiler.sh b/src/Specific/solinas32_2e266m3_11limbs/compiler.sh
new file mode 100755
index 000000000..581b78d96
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,25,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3_11limbs/compilerxx.sh b/src/Specific/solinas32_2e266m3_11limbs/compilerxx.sh
new file mode 100755
index 000000000..3e0cd8229
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,25,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas32_2e266m3_11limbs/feadd.v b/src/Specific/solinas32_2e266m3_11limbs/feadd.v
new file mode 100644
index 000000000..7672c3bc7
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..5fe9c294b
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/femul.v b/src/Specific/solinas32_2e266m3_11limbs/femul.v
new file mode 100644
index 000000000..7b35de082
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.v b/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.v
new file mode 100644
index 000000000..a44f2b082
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesquare.v b/src/Specific/solinas32_2e266m3_11limbs/fesquare.v
new file mode 100644
index 000000000..76530a509
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3fe7558f8
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesub.v b/src/Specific/solinas32_2e266m3_11limbs/fesub.v
new file mode 100644
index 000000000..2b509090c
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..40c6419e0
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/freeze.v b/src/Specific/solinas32_2e266m3_11limbs/freeze.v
new file mode 100644
index 000000000..a48e08cb9
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..504e6a5ce
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e266m3_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e266m3_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e266m3_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..1e23dabd9
--- /dev/null
+++ b/src/Specific/solinas32_2e266m3_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**266 - 3' -Dmodulus_bytes='24 + 2/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e285m9/CurveParameters.v b/src/Specific/solinas32_2e285m9/CurveParameters.v
deleted file mode 100644
index e8fc65d20..000000000
--- a/src/Specific/solinas32_2e285m9/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^285 - 9
-Base: 19
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 15%nat;
- base := 19;
- bitwidth := 32;
- s := 2^285;
- c := [(1, 9)];
- carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e285m9/Synthesis.v b/src/Specific/solinas32_2e285m9/Synthesis.v
deleted file mode 100644
index 0ee065155..000000000
--- a/src/Specific/solinas32_2e285m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e285m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e285m9/compiler.sh b/src/Specific/solinas32_2e285m9/compiler.sh
deleted file mode 100755
index 7fffdc133..000000000
--- a/src/Specific/solinas32_2e285m9/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,19,19,19,19,19,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9/compilerxx.sh b/src/Specific/solinas32_2e285m9/compilerxx.sh
deleted file mode 100755
index 89d710099..000000000
--- a/src/Specific/solinas32_2e285m9/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,19,19,19,19,19,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9/feadd.c b/src/Specific/solinas32_2e285m9/feadd.c
deleted file mode 100644
index 72a59425b..000000000
--- a/src/Specific/solinas32_2e285m9/feadd.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = (x5 + x33);
- out[1] = (x7 + x35);
- out[2] = (x9 + x37);
- out[3] = (x11 + x39);
- out[4] = (x13 + x41);
- out[5] = (x15 + x43);
- out[6] = (x17 + x45);
- out[7] = (x19 + x47);
- out[8] = (x21 + x49);
- out[9] = (x23 + x51);
- out[10] = (x25 + x53);
- out[11] = (x27 + x55);
- out[12] = (x29 + x57);
- out[13] = (x31 + x59);
- out[14] = (x30 + x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e285m9/feadd.v b/src/Specific/solinas32_2e285m9/feadd.v
deleted file mode 100644
index 3e5cd3759..000000000
--- a/src/Specific/solinas32_2e285m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e285m9/feaddDisplay.log b/src/Specific/solinas32_2e285m9/feaddDisplay.log
deleted file mode 100644
index 08d611628..000000000
--- a/src/Specific/solinas32_2e285m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- ((x30 + x58), (x31 + x59), (x29 + x57), (x27 + x55), (x25 + x53), (x23 + x51), (x21 + x49), (x19 + x47), (x17 + x45), (x15 + x43), (x13 + x41), (x11 + x39), (x9 + x37), (x7 + x35), (x5 + x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9/feaddDisplay.v b/src/Specific/solinas32_2e285m9/feaddDisplay.v
deleted file mode 100644
index 1e5d0471c..000000000
--- a/src/Specific/solinas32_2e285m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e285m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e285m9/femul.c b/src/Specific/solinas32_2e285m9/femul.c
deleted file mode 100644
index 1dda6f3aa..000000000
--- a/src/Specific/solinas32_2e285m9/femul.c
+++ /dev/null
@@ -1,113 +0,0 @@
-static void femul(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- { uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + (((uint64_t)x31 * x35) + ((uint64_t)x30 * x33)))))))))))))));
- { uint64_t x61 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (((uint64_t)x29 * x35) + ((uint64_t)x31 * x33)))))))))))))) + (0x9 * ((uint64_t)x30 * x58)));
- { uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x29 * x33))))))))))))) + (0x9 * (((uint64_t)x31 * x58) + ((uint64_t)x30 * x59))));
- { uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x9 * (((uint64_t)x29 * x58) + (((uint64_t)x31 * x59) + ((uint64_t)x30 * x57)))));
- { uint64_t x64 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((uint64_t)x25 * x33))))))))))) + (0x9 * (((uint64_t)x27 * x58) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + ((uint64_t)x30 * x55))))));
- { uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x23 * x33)))))))))) + (0x9 * (((uint64_t)x25 * x58) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + ((uint64_t)x30 * x53)))))));
- { uint64_t x66 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((uint64_t)x21 * x33))))))))) + (0x9 * (((uint64_t)x23 * x58) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x30 * x51))))))));
- { uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))))))) + (0x9 * (((uint64_t)x21 * x58) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((uint64_t)x30 * x49)))))))));
- { uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x9 * (((uint64_t)x19 * x58) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + ((uint64_t)x30 * x47))))))))));
- { uint64_t x69 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + ((uint64_t)x15 * x33)))))) + (0x9 * (((uint64_t)x17 * x58) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + ((uint64_t)x30 * x45)))))))))));
- { uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + ((uint64_t)x13 * x33))))) + (0x9 * (((uint64_t)x15 * x58) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + ((uint64_t)x30 * x43))))))))))));
- { uint64_t x71 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((uint64_t)x11 * x33)))) + (0x9 * (((uint64_t)x13 * x58) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + ((uint64_t)x30 * x41)))))))))))));
- { uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((uint64_t)x9 * x33))) + (0x9 * (((uint64_t)x11 * x58) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x30 * x39))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x9 * (((uint64_t)x9 * x58) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + (((uint64_t)x31 * x39) + ((uint64_t)x30 * x37)))))))))))))));
- { uint64_t x74 = (((uint64_t)x5 * x33) + (0x9 * (((uint64_t)x7 * x58) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + (((uint64_t)x31 * x37) + ((uint64_t)x30 * x35))))))))))))))));
- { uint32_t x75 = (uint32_t) (x74 >> 0x13);
- { uint32_t x76 = ((uint32_t)x74 & 0x7ffff);
- { uint64_t x77 = (x75 + x73);
- { uint32_t x78 = (uint32_t) (x77 >> 0x13);
- { uint32_t x79 = ((uint32_t)x77 & 0x7ffff);
- { uint64_t x80 = (x78 + x72);
- { uint32_t x81 = (uint32_t) (x80 >> 0x13);
- { uint32_t x82 = ((uint32_t)x80 & 0x7ffff);
- { uint64_t x83 = (x81 + x71);
- { uint32_t x84 = (uint32_t) (x83 >> 0x13);
- { uint32_t x85 = ((uint32_t)x83 & 0x7ffff);
- { uint64_t x86 = (x84 + x70);
- { uint32_t x87 = (uint32_t) (x86 >> 0x13);
- { uint32_t x88 = ((uint32_t)x86 & 0x7ffff);
- { uint64_t x89 = (x87 + x69);
- { uint32_t x90 = (uint32_t) (x89 >> 0x13);
- { uint32_t x91 = ((uint32_t)x89 & 0x7ffff);
- { uint64_t x92 = (x90 + x68);
- { uint32_t x93 = (uint32_t) (x92 >> 0x13);
- { uint32_t x94 = ((uint32_t)x92 & 0x7ffff);
- { uint64_t x95 = (x93 + x67);
- { uint32_t x96 = (uint32_t) (x95 >> 0x13);
- { uint32_t x97 = ((uint32_t)x95 & 0x7ffff);
- { uint64_t x98 = (x96 + x66);
- { uint32_t x99 = (uint32_t) (x98 >> 0x13);
- { uint32_t x100 = ((uint32_t)x98 & 0x7ffff);
- { uint64_t x101 = (x99 + x65);
- { uint32_t x102 = (uint32_t) (x101 >> 0x13);
- { uint32_t x103 = ((uint32_t)x101 & 0x7ffff);
- { uint64_t x104 = (x102 + x64);
- { uint32_t x105 = (uint32_t) (x104 >> 0x13);
- { uint32_t x106 = ((uint32_t)x104 & 0x7ffff);
- { uint64_t x107 = (x105 + x63);
- { uint32_t x108 = (uint32_t) (x107 >> 0x13);
- { uint32_t x109 = ((uint32_t)x107 & 0x7ffff);
- { uint64_t x110 = (x108 + x62);
- { uint32_t x111 = (uint32_t) (x110 >> 0x13);
- { uint32_t x112 = ((uint32_t)x110 & 0x7ffff);
- { uint64_t x113 = (x111 + x61);
- { uint32_t x114 = (uint32_t) (x113 >> 0x13);
- { uint32_t x115 = ((uint32_t)x113 & 0x7ffff);
- { uint64_t x116 = (x114 + x60);
- { uint32_t x117 = (uint32_t) (x116 >> 0x13);
- { uint32_t x118 = ((uint32_t)x116 & 0x7ffff);
- { uint32_t x119 = (x76 + (0x9 * x117));
- { uint32_t x120 = (x119 >> 0x13);
- { uint32_t x121 = (x119 & 0x7ffff);
- { uint32_t x122 = (x120 + x79);
- { uint32_t x123 = (x122 >> 0x13);
- { uint32_t x124 = (x122 & 0x7ffff);
- out[0] = x121;
- out[1] = x124;
- out[2] = (x123 + x82);
- out[3] = x85;
- out[4] = x88;
- out[5] = x91;
- out[6] = x94;
- out[7] = x97;
- out[8] = x100;
- out[9] = x103;
- out[10] = x106;
- out[11] = x109;
- out[12] = x112;
- out[13] = x115;
- out[14] = x118;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e285m9/femul.v b/src/Specific/solinas32_2e285m9/femul.v
deleted file mode 100644
index 430988559..000000000
--- a/src/Specific/solinas32_2e285m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e285m9/femulDisplay.log b/src/Specific/solinas32_2e285m9/femulDisplay.log
deleted file mode 100644
index f2aa99561..000000000
--- a/src/Specific/solinas32_2e285m9/femulDisplay.log
+++ /dev/null
@@ -1,72 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- uint64_t x60 = (((uint64_t)x5 * x58) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + (((uint64_t)x31 * x35) + ((uint64_t)x30 * x33)))))))))))))));
- uint64_t x61 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (((uint64_t)x29 * x35) + ((uint64_t)x31 * x33)))))))))))))) + (0x9 * ((uint64_t)x30 * x58)));
- uint64_t x62 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x29 * x33))))))))))))) + (0x9 * (((uint64_t)x31 * x58) + ((uint64_t)x30 * x59))));
- uint64_t x63 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x27 * x33)))))))))))) + (0x9 * (((uint64_t)x29 * x58) + (((uint64_t)x31 * x59) + ((uint64_t)x30 * x57)))));
- uint64_t x64 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + ((uint64_t)x25 * x33))))))))))) + (0x9 * (((uint64_t)x27 * x58) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + ((uint64_t)x30 * x55))))));
- uint64_t x65 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + ((uint64_t)x23 * x33)))))))))) + (0x9 * (((uint64_t)x25 * x58) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + ((uint64_t)x30 * x53)))))));
- uint64_t x66 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + ((uint64_t)x21 * x33))))))))) + (0x9 * (((uint64_t)x23 * x58) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x30 * x51))))))));
- uint64_t x67 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + ((uint64_t)x19 * x33)))))))) + (0x9 * (((uint64_t)x21 * x58) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((uint64_t)x30 * x49)))))))));
- uint64_t x68 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33))))))) + (0x9 * (((uint64_t)x19 * x58) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + ((uint64_t)x30 * x47))))))))));
- uint64_t x69 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + ((uint64_t)x15 * x33)))))) + (0x9 * (((uint64_t)x17 * x58) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + ((uint64_t)x30 * x45)))))))))));
- uint64_t x70 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + ((uint64_t)x13 * x33))))) + (0x9 * (((uint64_t)x15 * x58) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + ((uint64_t)x30 * x43))))))))))));
- uint64_t x71 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + ((uint64_t)x11 * x33)))) + (0x9 * (((uint64_t)x13 * x58) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + ((uint64_t)x30 * x41)))))))))))));
- uint64_t x72 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + ((uint64_t)x9 * x33))) + (0x9 * (((uint64_t)x11 * x58) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x30 * x39))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x35) + ((uint64_t)x7 * x33)) + (0x9 * (((uint64_t)x9 * x58) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + (((uint64_t)x31 * x39) + ((uint64_t)x30 * x37)))))))))))))));
- uint64_t x74 = (((uint64_t)x5 * x33) + (0x9 * (((uint64_t)x7 * x58) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + (((uint64_t)x31 * x37) + ((uint64_t)x30 * x35))))))))))))))));
- uint32_t x75 = (uint32_t) (x74 >> 0x13);
- uint32_t x76 = ((uint32_t)x74 & 0x7ffff);
- uint64_t x77 = (x75 + x73);
- uint32_t x78 = (uint32_t) (x77 >> 0x13);
- uint32_t x79 = ((uint32_t)x77 & 0x7ffff);
- uint64_t x80 = (x78 + x72);
- uint32_t x81 = (uint32_t) (x80 >> 0x13);
- uint32_t x82 = ((uint32_t)x80 & 0x7ffff);
- uint64_t x83 = (x81 + x71);
- uint32_t x84 = (uint32_t) (x83 >> 0x13);
- uint32_t x85 = ((uint32_t)x83 & 0x7ffff);
- uint64_t x86 = (x84 + x70);
- uint32_t x87 = (uint32_t) (x86 >> 0x13);
- uint32_t x88 = ((uint32_t)x86 & 0x7ffff);
- uint64_t x89 = (x87 + x69);
- uint32_t x90 = (uint32_t) (x89 >> 0x13);
- uint32_t x91 = ((uint32_t)x89 & 0x7ffff);
- uint64_t x92 = (x90 + x68);
- uint32_t x93 = (uint32_t) (x92 >> 0x13);
- uint32_t x94 = ((uint32_t)x92 & 0x7ffff);
- uint64_t x95 = (x93 + x67);
- uint32_t x96 = (uint32_t) (x95 >> 0x13);
- uint32_t x97 = ((uint32_t)x95 & 0x7ffff);
- uint64_t x98 = (x96 + x66);
- uint32_t x99 = (uint32_t) (x98 >> 0x13);
- uint32_t x100 = ((uint32_t)x98 & 0x7ffff);
- uint64_t x101 = (x99 + x65);
- uint32_t x102 = (uint32_t) (x101 >> 0x13);
- uint32_t x103 = ((uint32_t)x101 & 0x7ffff);
- uint64_t x104 = (x102 + x64);
- uint32_t x105 = (uint32_t) (x104 >> 0x13);
- uint32_t x106 = ((uint32_t)x104 & 0x7ffff);
- uint64_t x107 = (x105 + x63);
- uint32_t x108 = (uint32_t) (x107 >> 0x13);
- uint32_t x109 = ((uint32_t)x107 & 0x7ffff);
- uint64_t x110 = (x108 + x62);
- uint32_t x111 = (uint32_t) (x110 >> 0x13);
- uint32_t x112 = ((uint32_t)x110 & 0x7ffff);
- uint64_t x113 = (x111 + x61);
- uint32_t x114 = (uint32_t) (x113 >> 0x13);
- uint32_t x115 = ((uint32_t)x113 & 0x7ffff);
- uint64_t x116 = (x114 + x60);
- uint32_t x117 = (uint32_t) (x116 >> 0x13);
- uint32_t x118 = ((uint32_t)x116 & 0x7ffff);
- uint32_t x119 = (x76 + (0x9 * x117));
- uint32_t x120 = (x119 >> 0x13);
- uint32_t x121 = (x119 & 0x7ffff);
- uint32_t x122 = (x120 + x79);
- uint32_t x123 = (x122 >> 0x13);
- uint32_t x124 = (x122 & 0x7ffff);
- return (Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, Return x97, Return x94, Return x91, Return x88, Return x85, (x123 + x82), Return x124, Return x121))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9/femulDisplay.v b/src/Specific/solinas32_2e285m9/femulDisplay.v
deleted file mode 100644
index 7817c92aa..000000000
--- a/src/Specific/solinas32_2e285m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e285m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e285m9/fesquare.c b/src/Specific/solinas32_2e285m9/fesquare.c
deleted file mode 100644
index ecb5f11c8..000000000
--- a/src/Specific/solinas32_2e285m9/fesquare.c
+++ /dev/null
@@ -1,98 +0,0 @@
-static void fesquare(uint32_t out[15], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x27 * x2)))))))))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x9 * ((uint64_t)x27 * x27)));
- { uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x9 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
- { uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (((uint64_t)x26 * x27) + (((uint64_t)x28 * x28) + ((uint64_t)x27 * x26)))));
- { uint64_t x33 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (((uint64_t)x24 * x27) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + ((uint64_t)x27 * x24))))));
- { uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
- { uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * (((uint64_t)x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((uint64_t)x27 * x20))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x27) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x27 * x18)))))))));
- { uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x27) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + ((uint64_t)x27 * x16))))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x27) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + ((uint64_t)x27 * x14)))))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x27) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + ((uint64_t)x27 * x10)))))))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x27) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + ((uint64_t)x27 * x8))))))))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x27) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + ((uint64_t)x27 * x6)))))))))))))));
- { uint64_t x43 = (((uint64_t)x2 * x2) + (0x9 * (((uint64_t)x4 * x27) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + ((uint64_t)x27 * x4))))))))))))))));
- { uint32_t x44 = (uint32_t) (x43 >> 0x13);
- { uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- { uint64_t x46 = (x44 + x42);
- { uint32_t x47 = (uint32_t) (x46 >> 0x13);
- { uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- { uint64_t x49 = (x47 + x41);
- { uint32_t x50 = (uint32_t) (x49 >> 0x13);
- { uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- { uint64_t x52 = (x50 + x40);
- { uint32_t x53 = (uint32_t) (x52 >> 0x13);
- { uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- { uint64_t x55 = (x53 + x39);
- { uint32_t x56 = (uint32_t) (x55 >> 0x13);
- { uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- { uint64_t x58 = (x56 + x38);
- { uint32_t x59 = (uint32_t) (x58 >> 0x13);
- { uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
- { uint64_t x61 = (x59 + x37);
- { uint32_t x62 = (uint32_t) (x61 >> 0x13);
- { uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- { uint64_t x64 = (x62 + x36);
- { uint32_t x65 = (uint32_t) (x64 >> 0x13);
- { uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- { uint64_t x67 = (x65 + x35);
- { uint32_t x68 = (uint32_t) (x67 >> 0x13);
- { uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- { uint64_t x70 = (x68 + x34);
- { uint32_t x71 = (uint32_t) (x70 >> 0x13);
- { uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- { uint64_t x73 = (x71 + x33);
- { uint32_t x74 = (uint32_t) (x73 >> 0x13);
- { uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- { uint64_t x76 = (x74 + x32);
- { uint32_t x77 = (uint32_t) (x76 >> 0x13);
- { uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- { uint64_t x79 = (x77 + x31);
- { uint32_t x80 = (uint32_t) (x79 >> 0x13);
- { uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
- { uint64_t x82 = (x80 + x30);
- { uint32_t x83 = (uint32_t) (x82 >> 0x13);
- { uint32_t x84 = ((uint32_t)x82 & 0x7ffff);
- { uint64_t x85 = (x83 + x29);
- { uint32_t x86 = (uint32_t) (x85 >> 0x13);
- { uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
- { uint32_t x88 = (x45 + (0x9 * x86));
- { uint32_t x89 = (x88 >> 0x13);
- { uint32_t x90 = (x88 & 0x7ffff);
- { uint32_t x91 = (x89 + x48);
- { uint32_t x92 = (x91 >> 0x13);
- { uint32_t x93 = (x91 & 0x7ffff);
- out[0] = x90;
- out[1] = x93;
- out[2] = (x92 + x51);
- out[3] = x54;
- out[4] = x57;
- out[5] = x60;
- out[6] = x63;
- out[7] = x66;
- out[8] = x69;
- out[9] = x72;
- out[10] = x75;
- out[11] = x78;
- out[12] = x81;
- out[13] = x84;
- out[14] = x87;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e285m9/fesquare.v b/src/Specific/solinas32_2e285m9/fesquare.v
deleted file mode 100644
index f651263fb..000000000
--- a/src/Specific/solinas32_2e285m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e285m9/fesquareDisplay.log b/src/Specific/solinas32_2e285m9/fesquareDisplay.log
deleted file mode 100644
index 59eb5e2b1..000000000
--- a/src/Specific/solinas32_2e285m9/fesquareDisplay.log
+++ /dev/null
@@ -1,72 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x29 = (((uint64_t)x2 * x27) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x27 * x2)))))))))))))));
- uint64_t x30 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x9 * ((uint64_t)x27 * x27)));
- uint64_t x31 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x9 * (((uint64_t)x28 * x27) + ((uint64_t)x27 * x28))));
- uint64_t x32 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (((uint64_t)x26 * x27) + (((uint64_t)x28 * x28) + ((uint64_t)x27 * x26)))));
- uint64_t x33 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (((uint64_t)x24 * x27) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + ((uint64_t)x27 * x24))))));
- uint64_t x34 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x27) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + ((uint64_t)x27 * x22)))))));
- uint64_t x35 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x9 * (((uint64_t)x20 * x27) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((uint64_t)x27 * x20))))))));
- uint64_t x36 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x27) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x27 * x18)))))))));
- uint64_t x37 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x27) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + ((uint64_t)x27 * x16))))))))));
- uint64_t x38 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x27) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + ((uint64_t)x27 * x14)))))))))));
- uint64_t x39 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x27) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((uint64_t)x27 * x12))))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x27) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + ((uint64_t)x27 * x10)))))))))))));
- uint64_t x41 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x27) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + ((uint64_t)x27 * x8))))))))))))));
- uint64_t x42 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x27) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + ((uint64_t)x27 * x6)))))))))))))));
- uint64_t x43 = (((uint64_t)x2 * x2) + (0x9 * (((uint64_t)x4 * x27) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + ((uint64_t)x27 * x4))))))))))))))));
- uint32_t x44 = (uint32_t) (x43 >> 0x13);
- uint32_t x45 = ((uint32_t)x43 & 0x7ffff);
- uint64_t x46 = (x44 + x42);
- uint32_t x47 = (uint32_t) (x46 >> 0x13);
- uint32_t x48 = ((uint32_t)x46 & 0x7ffff);
- uint64_t x49 = (x47 + x41);
- uint32_t x50 = (uint32_t) (x49 >> 0x13);
- uint32_t x51 = ((uint32_t)x49 & 0x7ffff);
- uint64_t x52 = (x50 + x40);
- uint32_t x53 = (uint32_t) (x52 >> 0x13);
- uint32_t x54 = ((uint32_t)x52 & 0x7ffff);
- uint64_t x55 = (x53 + x39);
- uint32_t x56 = (uint32_t) (x55 >> 0x13);
- uint32_t x57 = ((uint32_t)x55 & 0x7ffff);
- uint64_t x58 = (x56 + x38);
- uint32_t x59 = (uint32_t) (x58 >> 0x13);
- uint32_t x60 = ((uint32_t)x58 & 0x7ffff);
- uint64_t x61 = (x59 + x37);
- uint32_t x62 = (uint32_t) (x61 >> 0x13);
- uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- uint64_t x64 = (x62 + x36);
- uint32_t x65 = (uint32_t) (x64 >> 0x13);
- uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- uint64_t x67 = (x65 + x35);
- uint32_t x68 = (uint32_t) (x67 >> 0x13);
- uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- uint64_t x70 = (x68 + x34);
- uint32_t x71 = (uint32_t) (x70 >> 0x13);
- uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- uint64_t x73 = (x71 + x33);
- uint32_t x74 = (uint32_t) (x73 >> 0x13);
- uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- uint64_t x76 = (x74 + x32);
- uint32_t x77 = (uint32_t) (x76 >> 0x13);
- uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- uint64_t x79 = (x77 + x31);
- uint32_t x80 = (uint32_t) (x79 >> 0x13);
- uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
- uint64_t x82 = (x80 + x30);
- uint32_t x83 = (uint32_t) (x82 >> 0x13);
- uint32_t x84 = ((uint32_t)x82 & 0x7ffff);
- uint64_t x85 = (x83 + x29);
- uint32_t x86 = (uint32_t) (x85 >> 0x13);
- uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
- uint32_t x88 = (x45 + (0x9 * x86));
- uint32_t x89 = (x88 >> 0x13);
- uint32_t x90 = (x88 & 0x7ffff);
- uint32_t x91 = (x89 + x48);
- uint32_t x92 = (x91 >> 0x13);
- uint32_t x93 = (x91 & 0x7ffff);
- return (Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, (x92 + x51), Return x93, Return x90))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9/fesquareDisplay.v b/src/Specific/solinas32_2e285m9/fesquareDisplay.v
deleted file mode 100644
index 6b59aedb3..000000000
--- a/src/Specific/solinas32_2e285m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e285m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e285m9/fesub.c b/src/Specific/solinas32_2e285m9/fesub.c
deleted file mode 100644
index abd7d1b77..000000000
--- a/src/Specific/solinas32_2e285m9/fesub.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void fesub(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = ((0xfffee + x5) - x33);
- out[1] = ((0xffffe + x7) - x35);
- out[2] = ((0xffffe + x9) - x37);
- out[3] = ((0xffffe + x11) - x39);
- out[4] = ((0xffffe + x13) - x41);
- out[5] = ((0xffffe + x15) - x43);
- out[6] = ((0xffffe + x17) - x45);
- out[7] = ((0xffffe + x19) - x47);
- out[8] = ((0xffffe + x21) - x49);
- out[9] = ((0xffffe + x23) - x51);
- out[10] = ((0xffffe + x25) - x53);
- out[11] = ((0xffffe + x27) - x55);
- out[12] = ((0xffffe + x29) - x57);
- out[13] = ((0xffffe + x31) - x59);
- out[14] = ((0xffffe + x30) - x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e285m9/fesub.v b/src/Specific/solinas32_2e285m9/fesub.v
deleted file mode 100644
index f40725725..000000000
--- a/src/Specific/solinas32_2e285m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e285m9/fesubDisplay.log b/src/Specific/solinas32_2e285m9/fesubDisplay.log
deleted file mode 100644
index 30bf1c627..000000000
--- a/src/Specific/solinas32_2e285m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- (((0xffffe + x30) - x58), ((0xffffe + x31) - x59), ((0xffffe + x29) - x57), ((0xffffe + x27) - x55), ((0xffffe + x25) - x53), ((0xffffe + x23) - x51), ((0xffffe + x21) - x49), ((0xffffe + x19) - x47), ((0xffffe + x17) - x45), ((0xffffe + x15) - x43), ((0xffffe + x13) - x41), ((0xffffe + x11) - x39), ((0xffffe + x9) - x37), ((0xffffe + x7) - x35), ((0xfffee + x5) - x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9/fesubDisplay.v b/src/Specific/solinas32_2e285m9/fesubDisplay.v
deleted file mode 100644
index 3e445940e..000000000
--- a/src/Specific/solinas32_2e285m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e285m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e285m9/freeze.c b/src/Specific/solinas32_2e285m9/freeze.c
deleted file mode 100644
index d709653ac..000000000
--- a/src/Specific/solinas32_2e285m9/freeze.c
+++ /dev/null
@@ -1,79 +0,0 @@
-static void freeze(uint32_t out[15], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff7);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x7ffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x7ffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x7ffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x7ffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x7ffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x7ffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x7ffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x7ffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x7ffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x7ffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x7ffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x7ffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x7ffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x7ffff);
- { uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- { uint32_t x75 = (x74 & 0x7fff7);
- { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- { uint32_t x79 = (x74 & 0x7ffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- { uint32_t x83 = (x74 & 0x7ffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- { uint32_t x87 = (x74 & 0x7ffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- { uint32_t x91 = (x74 & 0x7ffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- { uint32_t x95 = (x74 & 0x7ffff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- { uint32_t x99 = (x74 & 0x7ffff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- { uint32_t x103 = (x74 & 0x7ffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- { uint32_t x107 = (x74 & 0x7ffff);
- { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- { uint32_t x111 = (x74 & 0x7ffff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- { uint32_t x115 = (x74 & 0x7ffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- { uint32_t x119 = (x74 & 0x7ffff);
- { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- { uint32_t x123 = (x74 & 0x7ffff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- { uint32_t x127 = (x74 & 0x7ffff);
- { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- { uint32_t x131 = (x74 & 0x7ffff);
- { uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- out[0] = x77;
- out[1] = x81;
- out[2] = x85;
- out[3] = x89;
- out[4] = x93;
- out[5] = x97;
- out[6] = x101;
- out[7] = x105;
- out[8] = x109;
- out[9] = x113;
- out[10] = x117;
- out[11] = x121;
- out[12] = x125;
- out[13] = x129;
- out[14] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e285m9/freeze.v b/src/Specific/solinas32_2e285m9/freeze.v
deleted file mode 100644
index 311896718..000000000
--- a/src/Specific/solinas32_2e285m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e285m9/freezeDisplay.log b/src/Specific/solinas32_2e285m9/freezeDisplay.log
deleted file mode 100644
index 3fe017cfd..000000000
--- a/src/Specific/solinas32_2e285m9/freezeDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fff7);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x7ffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x7ffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x7ffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x7ffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x7ffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x7ffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x7ffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x7ffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x7ffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x7ffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x7ffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x7ffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x7ffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x7ffff);
- uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- uint32_t x75 = (x74 & 0x7fff7);
- uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- uint32_t x79 = (x74 & 0x7ffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- uint32_t x83 = (x74 & 0x7ffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- uint32_t x87 = (x74 & 0x7ffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- uint32_t x91 = (x74 & 0x7ffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- uint32_t x95 = (x74 & 0x7ffff);
- uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- uint32_t x99 = (x74 & 0x7ffff);
- uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- uint32_t x103 = (x74 & 0x7ffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- uint32_t x107 = (x74 & 0x7ffff);
- uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- uint32_t x111 = (x74 & 0x7ffff);
- uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- uint32_t x115 = (x74 & 0x7ffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- uint32_t x119 = (x74 & 0x7ffff);
- uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- uint32_t x123 = (x74 & 0x7ffff);
- uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- uint32_t x127 = (x74 & 0x7ffff);
- uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- uint32_t x131 = (x74 & 0x7ffff);
- uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- (Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97, Return x93, Return x89, Return x85, Return x81, Return x77))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e285m9/freezeDisplay.v b/src/Specific/solinas32_2e285m9/freezeDisplay.v
deleted file mode 100644
index 8cfe46085..000000000
--- a/src/Specific/solinas32_2e285m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e285m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e285m9/py_interpreter.sh b/src/Specific/solinas32_2e285m9/py_interpreter.sh
deleted file mode 100755
index 5c0c85424..000000000
--- a/src/Specific/solinas32_2e285m9/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**285 - 9' -Dmodulus_bytes='19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e285m9_11limbs/CurveParameters.v b/src/Specific/solinas32_2e285m9_11limbs/CurveParameters.v
new file mode 100644
index 000000000..294357ffb
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^285 - 9
+Base: 25 + 10/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 25 + 10/11;
+ bitwidth := 32;
+ s := 2^285;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/Synthesis.v b/src/Specific/solinas32_2e285m9_11limbs/Synthesis.v
new file mode 100644
index 000000000..41b7b0bdd
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/compiler.sh b/src/Specific/solinas32_2e285m9_11limbs/compiler.sh
new file mode 100755
index 000000000..cbf8cde5c
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9_11limbs/compilerxx.sh b/src/Specific/solinas32_2e285m9_11limbs/compilerxx.sh
new file mode 100755
index 000000000..e61270973
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9_11limbs/feadd.v b/src/Specific/solinas32_2e285m9_11limbs/feadd.v
new file mode 100644
index 000000000..2f74f39a7
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..35220de3a
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/femul.v b/src/Specific/solinas32_2e285m9_11limbs/femul.v
new file mode 100644
index 000000000..48dd51577
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.v b/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.v
new file mode 100644
index 000000000..5c98c924a
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesquare.v b/src/Specific/solinas32_2e285m9_11limbs/fesquare.v
new file mode 100644
index 000000000..3fcd3a25e
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c5a3add1e
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesub.v b/src/Specific/solinas32_2e285m9_11limbs/fesub.v
new file mode 100644
index 000000000..f9a29a140
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..0a00ab15f
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/freeze.v b/src/Specific/solinas32_2e285m9_11limbs/freeze.v
new file mode 100644
index 000000000..6d017f73b
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..2b580d82c
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e285m9_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e285m9_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..a68a0ab06
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**285 - 9' -Dmodulus_bytes='25 + 10/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e285m9_12limbs/CurveParameters.v b/src/Specific/solinas32_2e285m9_12limbs/CurveParameters.v
new file mode 100644
index 000000000..9aeb0455a
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^285 - 9
+Base: 23.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 12%nat;
+ base := 23 + 3/4;
+ bitwidth := 32;
+ s := 2^285;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/Synthesis.v b/src/Specific/solinas32_2e285m9_12limbs/Synthesis.v
new file mode 100644
index 000000000..1d229e3eb
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/compiler.sh b/src/Specific/solinas32_2e285m9_12limbs/compiler.sh
new file mode 100755
index 000000000..1262b1565
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9_12limbs/compilerxx.sh b/src/Specific/solinas32_2e285m9_12limbs/compilerxx.sh
new file mode 100755
index 000000000..c3b3c413c
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,24,23,24,24,24,23}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas32_2e285m9_12limbs/feadd.v b/src/Specific/solinas32_2e285m9_12limbs/feadd.v
new file mode 100644
index 000000000..7a87d3912
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..7cbc58010
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/femul.v b/src/Specific/solinas32_2e285m9_12limbs/femul.v
new file mode 100644
index 000000000..a9ca6eb2f
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.v b/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.v
new file mode 100644
index 000000000..2c37f2d47
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesquare.v b/src/Specific/solinas32_2e285m9_12limbs/fesquare.v
new file mode 100644
index 000000000..66063434e
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e644c277f
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesub.v b/src/Specific/solinas32_2e285m9_12limbs/fesub.v
new file mode 100644
index 000000000..a64cfe7e8
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..401256bcd
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/freeze.v b/src/Specific/solinas32_2e285m9_12limbs/freeze.v
new file mode 100644
index 000000000..01807fff9
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..322214e56
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e285m9_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e285m9_12limbs/py_interpreter.sh b/src/Specific/solinas32_2e285m9_12limbs/py_interpreter.sh
new file mode 100755
index 000000000..dffa82b7f
--- /dev/null
+++ b/src/Specific/solinas32_2e285m9_12limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**285 - 9' -Dmodulus_bytes='23.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e291m19/Synthesis.v b/src/Specific/solinas32_2e291m19/Synthesis.v
deleted file mode 100644
index 019c5097c..000000000
--- a/src/Specific/solinas32_2e291m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e291m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e291m19/feadd.c b/src/Specific/solinas32_2e291m19/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e291m19/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e291m19/feadd.v b/src/Specific/solinas32_2e291m19/feadd.v
deleted file mode 100644
index 4aba762a0..000000000
--- a/src/Specific/solinas32_2e291m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e291m19/feaddDisplay.log b/src/Specific/solinas32_2e291m19/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e291m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19/feaddDisplay.v b/src/Specific/solinas32_2e291m19/feaddDisplay.v
deleted file mode 100644
index 50d14df7b..000000000
--- a/src/Specific/solinas32_2e291m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e291m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e291m19/femul.c b/src/Specific/solinas32_2e291m19/femul.c
deleted file mode 100644
index 9fdc08fa1..000000000
--- a/src/Specific/solinas32_2e291m19/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x13 * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x13 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x13 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x19 * x27)))))))) + (0x13 * (((uint64_t)x21 * x46) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x13 * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- { uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x13 * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- { uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
- { uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x13 * (((uint64_t)x13 * x46) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x24 * x35))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x13 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- { uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x13 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { uint64_t x59 = (((uint64_t)x5 * x27) + (0x13 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- { uint64_t x60 = (x59 >> 0x19);
- { uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
- { uint64_t x62 = (x60 + x58);
- { uint64_t x63 = (x62 >> 0x18);
- { uint32_t x64 = ((uint32_t)x62 & 0xffffff);
- { uint64_t x65 = (x63 + x57);
- { uint64_t x66 = (x65 >> 0x18);
- { uint32_t x67 = ((uint32_t)x65 & 0xffffff);
- { uint64_t x68 = (x66 + x56);
- { uint64_t x69 = (x68 >> 0x18);
- { uint32_t x70 = ((uint32_t)x68 & 0xffffff);
- { uint64_t x71 = (x69 + x55);
- { uint64_t x72 = (x71 >> 0x19);
- { uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
- { uint64_t x74 = (x72 + x54);
- { uint64_t x75 = (x74 >> 0x18);
- { uint32_t x76 = ((uint32_t)x74 & 0xffffff);
- { uint64_t x77 = (x75 + x53);
- { uint64_t x78 = (x77 >> 0x18);
- { uint32_t x79 = ((uint32_t)x77 & 0xffffff);
- { uint64_t x80 = (x78 + x52);
- { uint64_t x81 = (x80 >> 0x18);
- { uint32_t x82 = ((uint32_t)x80 & 0xffffff);
- { uint64_t x83 = (x81 + x51);
- { uint64_t x84 = (x83 >> 0x19);
- { uint32_t x85 = ((uint32_t)x83 & 0x1ffffff);
- { uint64_t x86 = (x84 + x50);
- { uint64_t x87 = (x86 >> 0x18);
- { uint32_t x88 = ((uint32_t)x86 & 0xffffff);
- { uint64_t x89 = (x87 + x49);
- { uint64_t x90 = (x89 >> 0x18);
- { uint32_t x91 = ((uint32_t)x89 & 0xffffff);
- { uint64_t x92 = (x90 + x48);
- { uint64_t x93 = (x92 >> 0x18);
- { uint32_t x94 = ((uint32_t)x92 & 0xffffff);
- { uint64_t x95 = (x61 + (0x13 * x93));
- { uint32_t x96 = (uint32_t) (x95 >> 0x19);
- { uint32_t x97 = ((uint32_t)x95 & 0x1ffffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x18);
- { uint32_t x100 = (x98 & 0xffffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e291m19/femul.v b/src/Specific/solinas32_2e291m19/femul.v
deleted file mode 100644
index 64135aa2a..000000000
--- a/src/Specific/solinas32_2e291m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e291m19/femulDisplay.log b/src/Specific/solinas32_2e291m19/femulDisplay.log
deleted file mode 100644
index 1d9c944d5..000000000
--- a/src/Specific/solinas32_2e291m19/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((0x2 * ((uint64_t)x23 * x31)) + ((0x2 * ((uint64_t)x25 * x29)) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((0x2 * ((uint64_t)x23 * x29)) + ((uint64_t)x25 * x27))))))))))) + (0x13 * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x13 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + (((uint64_t)x13 * x35) + ((0x2 * ((uint64_t)x15 * x33)) + ((0x2 * ((uint64_t)x17 * x31)) + ((0x2 * ((uint64_t)x19 * x29)) + ((uint64_t)x21 * x27))))))))) + (0x13 * ((0x2 * ((uint64_t)x23 * x46)) + ((0x2 * ((uint64_t)x25 * x47)) + (0x2 * ((uint64_t)x24 * x45))))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((0x2 * ((uint64_t)x15 * x31)) + ((0x2 * ((uint64_t)x17 * x29)) + ((uint64_t)x19 * x27)))))))) + (0x13 * (((uint64_t)x21 * x46) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((0x2 * ((uint64_t)x15 * x29)) + ((uint64_t)x17 * x27))))))) + (0x13 * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- uint64_t x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) + (0x13 * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- uint64_t x55 = ((((uint64_t)x5 * x35) + ((0x2 * ((uint64_t)x7 * x33)) + ((0x2 * ((uint64_t)x9 * x31)) + ((0x2 * ((uint64_t)x11 * x29)) + ((uint64_t)x13 * x27))))) + (0x13 * ((0x2 * ((uint64_t)x15 * x46)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + (0x2 * ((uint64_t)x24 * x37))))))))));
- uint64_t x56 = ((((uint64_t)x5 * x33) + ((0x2 * ((uint64_t)x7 * x31)) + ((0x2 * ((uint64_t)x9 * x29)) + ((uint64_t)x11 * x27)))) + (0x13 * (((uint64_t)x13 * x46) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x24 * x35))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x31) + ((0x2 * ((uint64_t)x7 * x29)) + ((uint64_t)x9 * x27))) + (0x13 * (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- uint64_t x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) + (0x13 * (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- uint64_t x59 = (((uint64_t)x5 * x27) + (0x13 * ((0x2 * ((uint64_t)x7 * x46)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + (((uint64_t)x21 * x35) + ((0x2 * ((uint64_t)x23 * x33)) + ((0x2 * ((uint64_t)x25 * x31)) + (0x2 * ((uint64_t)x24 * x29))))))))))))));
- uint64_t x60 = (x59 >> 0x19);
- uint32_t x61 = ((uint32_t)x59 & 0x1ffffff);
- uint64_t x62 = (x60 + x58);
- uint64_t x63 = (x62 >> 0x18);
- uint32_t x64 = ((uint32_t)x62 & 0xffffff);
- uint64_t x65 = (x63 + x57);
- uint64_t x66 = (x65 >> 0x18);
- uint32_t x67 = ((uint32_t)x65 & 0xffffff);
- uint64_t x68 = (x66 + x56);
- uint64_t x69 = (x68 >> 0x18);
- uint32_t x70 = ((uint32_t)x68 & 0xffffff);
- uint64_t x71 = (x69 + x55);
- uint64_t x72 = (x71 >> 0x19);
- uint32_t x73 = ((uint32_t)x71 & 0x1ffffff);
- uint64_t x74 = (x72 + x54);
- uint64_t x75 = (x74 >> 0x18);
- uint32_t x76 = ((uint32_t)x74 & 0xffffff);
- uint64_t x77 = (x75 + x53);
- uint64_t x78 = (x77 >> 0x18);
- uint32_t x79 = ((uint32_t)x77 & 0xffffff);
- uint64_t x80 = (x78 + x52);
- uint64_t x81 = (x80 >> 0x18);
- uint32_t x82 = ((uint32_t)x80 & 0xffffff);
- uint64_t x83 = (x81 + x51);
- uint64_t x84 = (x83 >> 0x19);
- uint32_t x85 = ((uint32_t)x83 & 0x1ffffff);
- uint64_t x86 = (x84 + x50);
- uint64_t x87 = (x86 >> 0x18);
- uint32_t x88 = ((uint32_t)x86 & 0xffffff);
- uint64_t x89 = (x87 + x49);
- uint64_t x90 = (x89 >> 0x18);
- uint32_t x91 = ((uint32_t)x89 & 0xffffff);
- uint64_t x92 = (x90 + x48);
- uint64_t x93 = (x92 >> 0x18);
- uint32_t x94 = ((uint32_t)x92 & 0xffffff);
- uint64_t x95 = (x61 + (0x13 * x93));
- uint32_t x96 = (uint32_t) (x95 >> 0x19);
- uint32_t x97 = ((uint32_t)x95 & 0x1ffffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x18);
- uint32_t x100 = (x98 & 0xffffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19/femulDisplay.v b/src/Specific/solinas32_2e291m19/femulDisplay.v
deleted file mode 100644
index 9468b629d..000000000
--- a/src/Specific/solinas32_2e291m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e291m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e291m19/fesquare.c b/src/Specific/solinas32_2e291m19/fesquare.c
deleted file mode 100644
index 5cfc15536..000000000
--- a/src/Specific/solinas32_2e291m19/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x21) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- { uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- { uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
- { uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x21) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((uint64_t)x21 * x10))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { uint64_t x34 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- { uint64_t x35 = (x34 >> 0x19);
- { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- { uint64_t x37 = (x35 + x33);
- { uint64_t x38 = (x37 >> 0x18);
- { uint32_t x39 = ((uint32_t)x37 & 0xffffff);
- { uint64_t x40 = (x38 + x32);
- { uint64_t x41 = (x40 >> 0x18);
- { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- { uint64_t x43 = (x41 + x31);
- { uint64_t x44 = (x43 >> 0x18);
- { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- { uint64_t x46 = (x44 + x30);
- { uint64_t x47 = (x46 >> 0x19);
- { uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- { uint64_t x49 = (x47 + x29);
- { uint64_t x50 = (x49 >> 0x18);
- { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x18);
- { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
- { uint64_t x55 = (x53 + x27);
- { uint64_t x56 = (x55 >> 0x18);
- { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
- { uint64_t x58 = (x56 + x26);
- { uint64_t x59 = (x58 >> 0x19);
- { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- { uint64_t x61 = (x59 + x25);
- { uint64_t x62 = (x61 >> 0x18);
- { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
- { uint64_t x64 = (x62 + x24);
- { uint64_t x65 = (x64 >> 0x18);
- { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
- { uint64_t x67 = (x65 + x23);
- { uint64_t x68 = (x67 >> 0x18);
- { uint32_t x69 = ((uint32_t)x67 & 0xffffff);
- { uint64_t x70 = (x36 + (0x13 * x68));
- { uint32_t x71 = (uint32_t) (x70 >> 0x19);
- { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x18);
- { uint32_t x75 = (x73 & 0xffffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e291m19/fesquare.v b/src/Specific/solinas32_2e291m19/fesquare.v
deleted file mode 100644
index 85bc19e90..000000000
--- a/src/Specific/solinas32_2e291m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e291m19/fesquareDisplay.log b/src/Specific/solinas32_2e291m19/fesquareDisplay.log
deleted file mode 100644
index 4f44c4241..000000000
--- a/src/Specific/solinas32_2e291m19/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * ((0x2 * ((uint64_t)x20 * x21)) + ((0x2 * ((uint64_t)x22 * x22)) + (0x2 * ((uint64_t)x21 * x20))))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x21) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- uint64_t x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- uint64_t x30 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * ((0x2 * ((uint64_t)x12 * x21)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + (0x2 * ((uint64_t)x21 * x12))))))))));
- uint64_t x31 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x21) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((uint64_t)x21 * x10))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- uint64_t x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- uint64_t x34 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x21)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + (0x2 * ((uint64_t)x21 * x4))))))))))))));
- uint64_t x35 = (x34 >> 0x19);
- uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
- uint64_t x37 = (x35 + x33);
- uint64_t x38 = (x37 >> 0x18);
- uint32_t x39 = ((uint32_t)x37 & 0xffffff);
- uint64_t x40 = (x38 + x32);
- uint64_t x41 = (x40 >> 0x18);
- uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- uint64_t x43 = (x41 + x31);
- uint64_t x44 = (x43 >> 0x18);
- uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- uint64_t x46 = (x44 + x30);
- uint64_t x47 = (x46 >> 0x19);
- uint32_t x48 = ((uint32_t)x46 & 0x1ffffff);
- uint64_t x49 = (x47 + x29);
- uint64_t x50 = (x49 >> 0x18);
- uint32_t x51 = ((uint32_t)x49 & 0xffffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x18);
- uint32_t x54 = ((uint32_t)x52 & 0xffffff);
- uint64_t x55 = (x53 + x27);
- uint64_t x56 = (x55 >> 0x18);
- uint32_t x57 = ((uint32_t)x55 & 0xffffff);
- uint64_t x58 = (x56 + x26);
- uint64_t x59 = (x58 >> 0x19);
- uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- uint64_t x61 = (x59 + x25);
- uint64_t x62 = (x61 >> 0x18);
- uint32_t x63 = ((uint32_t)x61 & 0xffffff);
- uint64_t x64 = (x62 + x24);
- uint64_t x65 = (x64 >> 0x18);
- uint32_t x66 = ((uint32_t)x64 & 0xffffff);
- uint64_t x67 = (x65 + x23);
- uint64_t x68 = (x67 >> 0x18);
- uint32_t x69 = ((uint32_t)x67 & 0xffffff);
- uint64_t x70 = (x36 + (0x13 * x68));
- uint32_t x71 = (uint32_t) (x70 >> 0x19);
- uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x18);
- uint32_t x75 = (x73 & 0xffffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19/fesquareDisplay.v b/src/Specific/solinas32_2e291m19/fesquareDisplay.v
deleted file mode 100644
index ee3bb1393..000000000
--- a/src/Specific/solinas32_2e291m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e291m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e291m19/fesub.c b/src/Specific/solinas32_2e291m19/fesub.c
deleted file mode 100644
index 63ebc937d..000000000
--- a/src/Specific/solinas32_2e291m19/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x3ffffda + x5) - x27);
- out[1] = ((0x1fffffe + x7) - x29);
- out[2] = ((0x1fffffe + x9) - x31);
- out[3] = ((0x1fffffe + x11) - x33);
- out[4] = ((0x3fffffe + x13) - x35);
- out[5] = ((0x1fffffe + x15) - x37);
- out[6] = ((0x1fffffe + x17) - x39);
- out[7] = ((0x1fffffe + x19) - x41);
- out[8] = ((0x3fffffe + x21) - x43);
- out[9] = ((0x1fffffe + x23) - x45);
- out[10] = ((0x1fffffe + x25) - x47);
- out[11] = ((0x1fffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e291m19/fesub.v b/src/Specific/solinas32_2e291m19/fesub.v
deleted file mode 100644
index a80c3fdfe..000000000
--- a/src/Specific/solinas32_2e291m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e291m19/fesubDisplay.log b/src/Specific/solinas32_2e291m19/fesubDisplay.log
deleted file mode 100644
index 0c37b869f..000000000
--- a/src/Specific/solinas32_2e291m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x1fffffe + x24) - x46), ((0x1fffffe + x25) - x47), ((0x1fffffe + x23) - x45), ((0x3fffffe + x21) - x43), ((0x1fffffe + x19) - x41), ((0x1fffffe + x17) - x39), ((0x1fffffe + x15) - x37), ((0x3fffffe + x13) - x35), ((0x1fffffe + x11) - x33), ((0x1fffffe + x9) - x31), ((0x1fffffe + x7) - x29), ((0x3ffffda + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19/fesubDisplay.v b/src/Specific/solinas32_2e291m19/fesubDisplay.v
deleted file mode 100644
index f26279ccb..000000000
--- a/src/Specific/solinas32_2e291m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e291m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e291m19/freeze.c b/src/Specific/solinas32_2e291m19/freeze.c
deleted file mode 100644
index 37a19b100..000000000
--- a/src/Specific/solinas32_2e291m19/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffed);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xffffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0xffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1ffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0xffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1ffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0xffffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0x1ffffed);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0xffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0xffffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0xffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0x1ffffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0xffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0xffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0xffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0x1ffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0xffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0xffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0xffffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e291m19/freeze.v b/src/Specific/solinas32_2e291m19/freeze.v
deleted file mode 100644
index ddf321b67..000000000
--- a/src/Specific/solinas32_2e291m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e291m19/freezeDisplay.log b/src/Specific/solinas32_2e291m19/freezeDisplay.log
deleted file mode 100644
index ed2fe4cb7..000000000
--- a/src/Specific/solinas32_2e291m19/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffed);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xffffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0xffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0x1ffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0xffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0x1ffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0xffffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0x1ffffed);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0xffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0xffffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0xffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0x1ffffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0xffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0xffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0xffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0x1ffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0xffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0xffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0xffffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e291m19/freezeDisplay.v b/src/Specific/solinas32_2e291m19/freezeDisplay.v
deleted file mode 100644
index d895e187d..000000000
--- a/src/Specific/solinas32_2e291m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e291m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/CurveParameters.v b/src/Specific/solinas32_2e291m19_11limbs/CurveParameters.v
new file mode 100644
index 000000000..953575a57
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^291 - 19
+Base: 26 + 5/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 26 + 5/11;
+ bitwidth := 32;
+ s := 2^291;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/Synthesis.v b/src/Specific/solinas32_2e291m19_11limbs/Synthesis.v
new file mode 100644
index 000000000..05f4d8fee
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/compiler.sh b/src/Specific/solinas32_2e291m19_11limbs/compiler.sh
new file mode 100755
index 000000000..a2b686f11
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26,27,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<291) - 19' "$@"
diff --git a/src/Specific/solinas32_2e291m19_11limbs/compilerxx.sh b/src/Specific/solinas32_2e291m19_11limbs/compilerxx.sh
new file mode 100755
index 000000000..e40517237
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,27,26,27,26,27,26,27,26,26}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<291) - 19' "$@"
diff --git a/src/Specific/solinas32_2e291m19_11limbs/feadd.v b/src/Specific/solinas32_2e291m19_11limbs/feadd.v
new file mode 100644
index 000000000..a4b9c68d9
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.v b/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..93d3019b9
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/femul.v b/src/Specific/solinas32_2e291m19_11limbs/femul.v
new file mode 100644
index 000000000..1c748107c
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.v b/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.v
new file mode 100644
index 000000000..d58029bca
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesquare.v b/src/Specific/solinas32_2e291m19_11limbs/fesquare.v
new file mode 100644
index 000000000..85e38fecf
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.v b/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5c968d45b
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesub.v b/src/Specific/solinas32_2e291m19_11limbs/fesub.v
new file mode 100644
index 000000000..a957b1374
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.v b/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..9b0594f00
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/freeze.v b/src/Specific/solinas32_2e291m19_11limbs/freeze.v
new file mode 100644
index 000000000..b994819fb
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.v b/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..79522dfc6
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e291m19_11limbs/py_interpreter.sh b/src/Specific/solinas32_2e291m19_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..1a6fa516f
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**291 - 19' -Dmodulus_bytes='26 + 5/11' -Da24='121665'
diff --git a/src/Specific/solinas32_2e291m19/CurveParameters.v b/src/Specific/solinas32_2e291m19_12limbs/CurveParameters.v
index e05bfb74e..e05bfb74e 100644
--- a/src/Specific/solinas32_2e291m19/CurveParameters.v
+++ b/src/Specific/solinas32_2e291m19_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e291m19_12limbs/Synthesis.v b/src/Specific/solinas32_2e291m19_12limbs/Synthesis.v
new file mode 100644
index 000000000..61e64bdf2
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e291m19/compiler.sh b/src/Specific/solinas32_2e291m19_12limbs/compiler.sh
index c144ed3e2..c144ed3e2 100755
--- a/src/Specific/solinas32_2e291m19/compiler.sh
+++ b/src/Specific/solinas32_2e291m19_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e291m19/compilerxx.sh b/src/Specific/solinas32_2e291m19_12limbs/compilerxx.sh
index f69159ac4..f69159ac4 100755
--- a/src/Specific/solinas32_2e291m19/compilerxx.sh
+++ b/src/Specific/solinas32_2e291m19_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e291m19_12limbs/feadd.v b/src/Specific/solinas32_2e291m19_12limbs/feadd.v
new file mode 100644
index 000000000..9571fd6f3
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e291m19_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..c1ebb1ab8
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/femul.v b/src/Specific/solinas32_2e291m19_12limbs/femul.v
new file mode 100644
index 000000000..58bdf4b33
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/femulDisplay.v b/src/Specific/solinas32_2e291m19_12limbs/femulDisplay.v
new file mode 100644
index 000000000..a26f81bf8
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/fesquare.v b/src/Specific/solinas32_2e291m19_12limbs/fesquare.v
new file mode 100644
index 000000000..10065e845
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e291m19_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..51f8a8221
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/fesub.v b/src/Specific/solinas32_2e291m19_12limbs/fesub.v
new file mode 100644
index 000000000..1edb92f95
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e291m19_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..667a843b2
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/freeze.v b/src/Specific/solinas32_2e291m19_12limbs/freeze.v
new file mode 100644
index 000000000..4c6da10d1
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e291m19_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e291m19_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..ae6828696
--- /dev/null
+++ b/src/Specific/solinas32_2e291m19_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e291m19_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e291m19/py_interpreter.sh b/src/Specific/solinas32_2e291m19_12limbs/py_interpreter.sh
index 0d2f972b4..0d2f972b4 100755
--- a/src/Specific/solinas32_2e291m19/py_interpreter.sh
+++ b/src/Specific/solinas32_2e291m19_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e321m9/CurveParameters.v b/src/Specific/solinas32_2e321m9/CurveParameters.v
deleted file mode 100644
index 4aab4b64c..000000000
--- a/src/Specific/solinas32_2e321m9/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^321 - 9
-Base: 20 + 1/16
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 20 + 1/16;
- bitwidth := 32;
- s := 2^321;
- c := [(1, 9)];
- carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e321m9/Synthesis.v b/src/Specific/solinas32_2e321m9/Synthesis.v
deleted file mode 100644
index fd5f067d9..000000000
--- a/src/Specific/solinas32_2e321m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e321m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e321m9/compiler.sh b/src/Specific/solinas32_2e321m9/compiler.sh
deleted file mode 100755
index a87dbb0bd..000000000
--- a/src/Specific/solinas32_2e321m9/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9/compilerxx.sh b/src/Specific/solinas32_2e321m9/compilerxx.sh
deleted file mode 100755
index fad6dd609..000000000
--- a/src/Specific/solinas32_2e321m9/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9/feadd.c b/src/Specific/solinas32_2e321m9/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e321m9/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e321m9/feadd.v b/src/Specific/solinas32_2e321m9/feadd.v
deleted file mode 100644
index 4b2746113..000000000
--- a/src/Specific/solinas32_2e321m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e321m9/feaddDisplay.log b/src/Specific/solinas32_2e321m9/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e321m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9/feaddDisplay.v b/src/Specific/solinas32_2e321m9/feaddDisplay.v
deleted file mode 100644
index d0d59aa46..000000000
--- a/src/Specific/solinas32_2e321m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e321m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e321m9/femul.c b/src/Specific/solinas32_2e321m9/femul.c
deleted file mode 100644
index a73325071..000000000
--- a/src/Specific/solinas32_2e321m9/femul.c
+++ /dev/null
@@ -1,120 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- { uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x9 * ((uint64_t)x32 * x62)));
- { uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x9 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- { uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x9 * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- { uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x9 * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- { uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x9 * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- { uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x9 * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- { uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x9 * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- { uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x9 * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x9 * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- { uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x9 * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- { uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x9 * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- { uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x9 * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- { uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x9 * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- { uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x9 * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- { uint64_t x79 = (((uint64_t)x5 * x35) + (0x9 * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- { uint32_t x80 = (uint32_t) (x79 >> 0x15);
- { uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- { uint64_t x82 = (x80 + x78);
- { uint32_t x83 = (uint32_t) (x82 >> 0x14);
- { uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- { uint64_t x85 = (x83 + x77);
- { uint32_t x86 = (uint32_t) (x85 >> 0x14);
- { uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- { uint64_t x88 = (x86 + x76);
- { uint32_t x89 = (uint32_t) (x88 >> 0x14);
- { uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- { uint64_t x91 = (x89 + x75);
- { uint32_t x92 = (uint32_t) (x91 >> 0x14);
- { uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- { uint64_t x94 = (x92 + x74);
- { uint32_t x95 = (uint32_t) (x94 >> 0x14);
- { uint32_t x96 = ((uint32_t)x94 & 0xfffff);
- { uint64_t x97 = (x95 + x73);
- { uint32_t x98 = (uint32_t) (x97 >> 0x14);
- { uint32_t x99 = ((uint32_t)x97 & 0xfffff);
- { uint64_t x100 = (x98 + x72);
- { uint32_t x101 = (uint32_t) (x100 >> 0x14);
- { uint32_t x102 = ((uint32_t)x100 & 0xfffff);
- { uint64_t x103 = (x101 + x71);
- { uint32_t x104 = (uint32_t) (x103 >> 0x14);
- { uint32_t x105 = ((uint32_t)x103 & 0xfffff);
- { uint64_t x106 = (x104 + x70);
- { uint32_t x107 = (uint32_t) (x106 >> 0x14);
- { uint32_t x108 = ((uint32_t)x106 & 0xfffff);
- { uint64_t x109 = (x107 + x69);
- { uint32_t x110 = (uint32_t) (x109 >> 0x14);
- { uint32_t x111 = ((uint32_t)x109 & 0xfffff);
- { uint64_t x112 = (x110 + x68);
- { uint32_t x113 = (uint32_t) (x112 >> 0x14);
- { uint32_t x114 = ((uint32_t)x112 & 0xfffff);
- { uint64_t x115 = (x113 + x67);
- { uint32_t x116 = (uint32_t) (x115 >> 0x14);
- { uint32_t x117 = ((uint32_t)x115 & 0xfffff);
- { uint64_t x118 = (x116 + x66);
- { uint32_t x119 = (uint32_t) (x118 >> 0x14);
- { uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- { uint64_t x121 = (x119 + x65);
- { uint32_t x122 = (uint32_t) (x121 >> 0x14);
- { uint32_t x123 = ((uint32_t)x121 & 0xfffff);
- { uint64_t x124 = (x122 + x64);
- { uint32_t x125 = (uint32_t) (x124 >> 0x14);
- { uint32_t x126 = ((uint32_t)x124 & 0xfffff);
- { uint32_t x127 = (x81 + (0x9 * x125));
- { uint32_t x128 = (x127 >> 0x15);
- { uint32_t x129 = (x127 & 0x1fffff);
- { uint32_t x130 = (x128 + x84);
- { uint32_t x131 = (x130 >> 0x14);
- { uint32_t x132 = (x130 & 0xfffff);
- out[0] = x129;
- out[1] = x132;
- out[2] = (x131 + x87);
- out[3] = x90;
- out[4] = x93;
- out[5] = x96;
- out[6] = x99;
- out[7] = x102;
- out[8] = x105;
- out[9] = x108;
- out[10] = x111;
- out[11] = x114;
- out[12] = x117;
- out[13] = x120;
- out[14] = x123;
- out[15] = x126;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e321m9/femul.v b/src/Specific/solinas32_2e321m9/femul.v
deleted file mode 100644
index 434c4125e..000000000
--- a/src/Specific/solinas32_2e321m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e321m9/femulDisplay.log b/src/Specific/solinas32_2e321m9/femulDisplay.log
deleted file mode 100644
index e698eb990..000000000
--- a/src/Specific/solinas32_2e321m9/femulDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x9 * ((uint64_t)x32 * x62)));
- uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x9 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x9 * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x9 * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x9 * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x9 * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x9 * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x9 * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x9 * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x9 * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x9 * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x9 * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x9 * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x9 * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- uint64_t x79 = (((uint64_t)x5 * x35) + (0x9 * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- uint32_t x80 = (uint32_t) (x79 >> 0x15);
- uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- uint64_t x82 = (x80 + x78);
- uint32_t x83 = (uint32_t) (x82 >> 0x14);
- uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- uint64_t x85 = (x83 + x77);
- uint32_t x86 = (uint32_t) (x85 >> 0x14);
- uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- uint64_t x88 = (x86 + x76);
- uint32_t x89 = (uint32_t) (x88 >> 0x14);
- uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- uint64_t x91 = (x89 + x75);
- uint32_t x92 = (uint32_t) (x91 >> 0x14);
- uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- uint64_t x94 = (x92 + x74);
- uint32_t x95 = (uint32_t) (x94 >> 0x14);
- uint32_t x96 = ((uint32_t)x94 & 0xfffff);
- uint64_t x97 = (x95 + x73);
- uint32_t x98 = (uint32_t) (x97 >> 0x14);
- uint32_t x99 = ((uint32_t)x97 & 0xfffff);
- uint64_t x100 = (x98 + x72);
- uint32_t x101 = (uint32_t) (x100 >> 0x14);
- uint32_t x102 = ((uint32_t)x100 & 0xfffff);
- uint64_t x103 = (x101 + x71);
- uint32_t x104 = (uint32_t) (x103 >> 0x14);
- uint32_t x105 = ((uint32_t)x103 & 0xfffff);
- uint64_t x106 = (x104 + x70);
- uint32_t x107 = (uint32_t) (x106 >> 0x14);
- uint32_t x108 = ((uint32_t)x106 & 0xfffff);
- uint64_t x109 = (x107 + x69);
- uint32_t x110 = (uint32_t) (x109 >> 0x14);
- uint32_t x111 = ((uint32_t)x109 & 0xfffff);
- uint64_t x112 = (x110 + x68);
- uint32_t x113 = (uint32_t) (x112 >> 0x14);
- uint32_t x114 = ((uint32_t)x112 & 0xfffff);
- uint64_t x115 = (x113 + x67);
- uint32_t x116 = (uint32_t) (x115 >> 0x14);
- uint32_t x117 = ((uint32_t)x115 & 0xfffff);
- uint64_t x118 = (x116 + x66);
- uint32_t x119 = (uint32_t) (x118 >> 0x14);
- uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- uint64_t x121 = (x119 + x65);
- uint32_t x122 = (uint32_t) (x121 >> 0x14);
- uint32_t x123 = ((uint32_t)x121 & 0xfffff);
- uint64_t x124 = (x122 + x64);
- uint32_t x125 = (uint32_t) (x124 >> 0x14);
- uint32_t x126 = ((uint32_t)x124 & 0xfffff);
- uint32_t x127 = (x81 + (0x9 * x125));
- uint32_t x128 = (x127 >> 0x15);
- uint32_t x129 = (x127 & 0x1fffff);
- uint32_t x130 = (x128 + x84);
- uint32_t x131 = (x130 >> 0x14);
- uint32_t x132 = (x130 & 0xfffff);
- return (Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, (x131 + x87), Return x132, Return x129))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9/femulDisplay.v b/src/Specific/solinas32_2e321m9/femulDisplay.v
deleted file mode 100644
index 390800c0c..000000000
--- a/src/Specific/solinas32_2e321m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e321m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e321m9/fesquare.c b/src/Specific/solinas32_2e321m9/fesquare.c
deleted file mode 100644
index fbca43143..000000000
--- a/src/Specific/solinas32_2e321m9/fesquare.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x9 * ((uint64_t)x29 * x29)));
- { uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x9 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- { uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x9 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- { uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- { uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- { uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- { uint64_t x46 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- { uint32_t x47 = (uint32_t) (x46 >> 0x15);
- { uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
- { uint64_t x49 = (x47 + x45);
- { uint32_t x50 = (uint32_t) (x49 >> 0x14);
- { uint32_t x51 = ((uint32_t)x49 & 0xfffff);
- { uint64_t x52 = (x50 + x44);
- { uint32_t x53 = (uint32_t) (x52 >> 0x14);
- { uint32_t x54 = ((uint32_t)x52 & 0xfffff);
- { uint64_t x55 = (x53 + x43);
- { uint32_t x56 = (uint32_t) (x55 >> 0x14);
- { uint32_t x57 = ((uint32_t)x55 & 0xfffff);
- { uint64_t x58 = (x56 + x42);
- { uint32_t x59 = (uint32_t) (x58 >> 0x14);
- { uint32_t x60 = ((uint32_t)x58 & 0xfffff);
- { uint64_t x61 = (x59 + x41);
- { uint32_t x62 = (uint32_t) (x61 >> 0x14);
- { uint32_t x63 = ((uint32_t)x61 & 0xfffff);
- { uint64_t x64 = (x62 + x40);
- { uint32_t x65 = (uint32_t) (x64 >> 0x14);
- { uint32_t x66 = ((uint32_t)x64 & 0xfffff);
- { uint64_t x67 = (x65 + x39);
- { uint32_t x68 = (uint32_t) (x67 >> 0x14);
- { uint32_t x69 = ((uint32_t)x67 & 0xfffff);
- { uint64_t x70 = (x68 + x38);
- { uint32_t x71 = (uint32_t) (x70 >> 0x14);
- { uint32_t x72 = ((uint32_t)x70 & 0xfffff);
- { uint64_t x73 = (x71 + x37);
- { uint32_t x74 = (uint32_t) (x73 >> 0x14);
- { uint32_t x75 = ((uint32_t)x73 & 0xfffff);
- { uint64_t x76 = (x74 + x36);
- { uint32_t x77 = (uint32_t) (x76 >> 0x14);
- { uint32_t x78 = ((uint32_t)x76 & 0xfffff);
- { uint64_t x79 = (x77 + x35);
- { uint32_t x80 = (uint32_t) (x79 >> 0x14);
- { uint32_t x81 = ((uint32_t)x79 & 0xfffff);
- { uint64_t x82 = (x80 + x34);
- { uint32_t x83 = (uint32_t) (x82 >> 0x14);
- { uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- { uint64_t x85 = (x83 + x33);
- { uint32_t x86 = (uint32_t) (x85 >> 0x14);
- { uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- { uint64_t x88 = (x86 + x32);
- { uint32_t x89 = (uint32_t) (x88 >> 0x14);
- { uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- { uint64_t x91 = (x89 + x31);
- { uint32_t x92 = (uint32_t) (x91 >> 0x14);
- { uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- { uint32_t x94 = (x48 + (0x9 * x92));
- { uint32_t x95 = (x94 >> 0x15);
- { uint32_t x96 = (x94 & 0x1fffff);
- { uint32_t x97 = (x95 + x51);
- { uint32_t x98 = (x97 >> 0x14);
- { uint32_t x99 = (x97 & 0xfffff);
- out[0] = x96;
- out[1] = x99;
- out[2] = (x98 + x54);
- out[3] = x57;
- out[4] = x60;
- out[5] = x63;
- out[6] = x66;
- out[7] = x69;
- out[8] = x72;
- out[9] = x75;
- out[10] = x78;
- out[11] = x81;
- out[12] = x84;
- out[13] = x87;
- out[14] = x90;
- out[15] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e321m9/fesquare.v b/src/Specific/solinas32_2e321m9/fesquare.v
deleted file mode 100644
index d534145af..000000000
--- a/src/Specific/solinas32_2e321m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e321m9/fesquareDisplay.log b/src/Specific/solinas32_2e321m9/fesquareDisplay.log
deleted file mode 100644
index e598c253f..000000000
--- a/src/Specific/solinas32_2e321m9/fesquareDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x9 * ((uint64_t)x29 * x29)));
- uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x9 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x9 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x9 * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x9 * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x9 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x9 * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x9 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x9 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x9 * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- uint64_t x46 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- uint32_t x47 = (uint32_t) (x46 >> 0x15);
- uint32_t x48 = ((uint32_t)x46 & 0x1fffff);
- uint64_t x49 = (x47 + x45);
- uint32_t x50 = (uint32_t) (x49 >> 0x14);
- uint32_t x51 = ((uint32_t)x49 & 0xfffff);
- uint64_t x52 = (x50 + x44);
- uint32_t x53 = (uint32_t) (x52 >> 0x14);
- uint32_t x54 = ((uint32_t)x52 & 0xfffff);
- uint64_t x55 = (x53 + x43);
- uint32_t x56 = (uint32_t) (x55 >> 0x14);
- uint32_t x57 = ((uint32_t)x55 & 0xfffff);
- uint64_t x58 = (x56 + x42);
- uint32_t x59 = (uint32_t) (x58 >> 0x14);
- uint32_t x60 = ((uint32_t)x58 & 0xfffff);
- uint64_t x61 = (x59 + x41);
- uint32_t x62 = (uint32_t) (x61 >> 0x14);
- uint32_t x63 = ((uint32_t)x61 & 0xfffff);
- uint64_t x64 = (x62 + x40);
- uint32_t x65 = (uint32_t) (x64 >> 0x14);
- uint32_t x66 = ((uint32_t)x64 & 0xfffff);
- uint64_t x67 = (x65 + x39);
- uint32_t x68 = (uint32_t) (x67 >> 0x14);
- uint32_t x69 = ((uint32_t)x67 & 0xfffff);
- uint64_t x70 = (x68 + x38);
- uint32_t x71 = (uint32_t) (x70 >> 0x14);
- uint32_t x72 = ((uint32_t)x70 & 0xfffff);
- uint64_t x73 = (x71 + x37);
- uint32_t x74 = (uint32_t) (x73 >> 0x14);
- uint32_t x75 = ((uint32_t)x73 & 0xfffff);
- uint64_t x76 = (x74 + x36);
- uint32_t x77 = (uint32_t) (x76 >> 0x14);
- uint32_t x78 = ((uint32_t)x76 & 0xfffff);
- uint64_t x79 = (x77 + x35);
- uint32_t x80 = (uint32_t) (x79 >> 0x14);
- uint32_t x81 = ((uint32_t)x79 & 0xfffff);
- uint64_t x82 = (x80 + x34);
- uint32_t x83 = (uint32_t) (x82 >> 0x14);
- uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- uint64_t x85 = (x83 + x33);
- uint32_t x86 = (uint32_t) (x85 >> 0x14);
- uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- uint64_t x88 = (x86 + x32);
- uint32_t x89 = (uint32_t) (x88 >> 0x14);
- uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- uint64_t x91 = (x89 + x31);
- uint32_t x92 = (uint32_t) (x91 >> 0x14);
- uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- uint32_t x94 = (x48 + (0x9 * x92));
- uint32_t x95 = (x94 >> 0x15);
- uint32_t x96 = (x94 & 0x1fffff);
- uint32_t x97 = (x95 + x51);
- uint32_t x98 = (x97 >> 0x14);
- uint32_t x99 = (x97 & 0xfffff);
- return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9/fesquareDisplay.v b/src/Specific/solinas32_2e321m9/fesquareDisplay.v
deleted file mode 100644
index 41414cb1c..000000000
--- a/src/Specific/solinas32_2e321m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e321m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e321m9/fesub.c b/src/Specific/solinas32_2e321m9/fesub.c
deleted file mode 100644
index a0aa648f0..000000000
--- a/src/Specific/solinas32_2e321m9/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x3fffee + x5) - x35);
- out[1] = ((0x1ffffe + x7) - x37);
- out[2] = ((0x1ffffe + x9) - x39);
- out[3] = ((0x1ffffe + x11) - x41);
- out[4] = ((0x1ffffe + x13) - x43);
- out[5] = ((0x1ffffe + x15) - x45);
- out[6] = ((0x1ffffe + x17) - x47);
- out[7] = ((0x1ffffe + x19) - x49);
- out[8] = ((0x1ffffe + x21) - x51);
- out[9] = ((0x1ffffe + x23) - x53);
- out[10] = ((0x1ffffe + x25) - x55);
- out[11] = ((0x1ffffe + x27) - x57);
- out[12] = ((0x1ffffe + x29) - x59);
- out[13] = ((0x1ffffe + x31) - x61);
- out[14] = ((0x1ffffe + x33) - x63);
- out[15] = ((0x1ffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e321m9/fesub.v b/src/Specific/solinas32_2e321m9/fesub.v
deleted file mode 100644
index 65e7adeda..000000000
--- a/src/Specific/solinas32_2e321m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e321m9/fesubDisplay.log b/src/Specific/solinas32_2e321m9/fesubDisplay.log
deleted file mode 100644
index 8b160df53..000000000
--- a/src/Specific/solinas32_2e321m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x1ffffe + x32) - x62), ((0x1ffffe + x33) - x63), ((0x1ffffe + x31) - x61), ((0x1ffffe + x29) - x59), ((0x1ffffe + x27) - x57), ((0x1ffffe + x25) - x55), ((0x1ffffe + x23) - x53), ((0x1ffffe + x21) - x51), ((0x1ffffe + x19) - x49), ((0x1ffffe + x17) - x47), ((0x1ffffe + x15) - x45), ((0x1ffffe + x13) - x43), ((0x1ffffe + x11) - x41), ((0x1ffffe + x9) - x39), ((0x1ffffe + x7) - x37), ((0x3fffee + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9/fesubDisplay.v b/src/Specific/solinas32_2e321m9/fesubDisplay.v
deleted file mode 100644
index fd9a2297b..000000000
--- a/src/Specific/solinas32_2e321m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e321m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e321m9/freeze.c b/src/Specific/solinas32_2e321m9/freeze.c
deleted file mode 100644
index 7b657b4d4..000000000
--- a/src/Specific/solinas32_2e321m9/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffff7);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xfffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xfffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xfffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0x1ffff7);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0xfffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0xfffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0xfffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0xfffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0xfffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0xfffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0xfffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0xfffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0xfffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0xfffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0xfffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0xfffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0xfffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0xfffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0xfffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e321m9/freeze.v b/src/Specific/solinas32_2e321m9/freeze.v
deleted file mode 100644
index 8ab93ae0b..000000000
--- a/src/Specific/solinas32_2e321m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e321m9/freezeDisplay.log b/src/Specific/solinas32_2e321m9/freezeDisplay.log
deleted file mode 100644
index 3fcf89d1d..000000000
--- a/src/Specific/solinas32_2e321m9/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffff7);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xfffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xfffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xfffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0x1ffff7);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0xfffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0xfffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0xfffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0xfffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0xfffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0xfffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0xfffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0xfffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0xfffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0xfffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0xfffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0xfffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0xfffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0xfffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0xfffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e321m9/freezeDisplay.v b/src/Specific/solinas32_2e321m9/freezeDisplay.v
deleted file mode 100644
index 3441465ff..000000000
--- a/src/Specific/solinas32_2e321m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e321m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e321m9/py_interpreter.sh b/src/Specific/solinas32_2e321m9/py_interpreter.sh
deleted file mode 100755
index 99c599343..000000000
--- a/src/Specific/solinas32_2e321m9/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**321 - 9' -Dmodulus_bytes='20 + 1/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e321m9_12limbs/CurveParameters.v b/src/Specific/solinas32_2e321m9_12limbs/CurveParameters.v
new file mode 100644
index 000000000..9421273b4
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^321 - 9
+Base: 26.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 12%nat;
+ base := 26 + 3/4;
+ bitwidth := 32;
+ s := 2^321;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 12); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/Synthesis.v b/src/Specific/solinas32_2e321m9_12limbs/Synthesis.v
new file mode 100644
index 000000000..b8bb916cd
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/compiler.sh b/src/Specific/solinas32_2e321m9_12limbs/compiler.sh
new file mode 100755
index 000000000..c7784473f
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,26,27,27,27,26,27,27,27,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9_12limbs/compilerxx.sh b/src/Specific/solinas32_2e321m9_12limbs/compilerxx.sh
new file mode 100755
index 000000000..e57cc3d71
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,26,27,27,27,26,27,27,27,26}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9_12limbs/feadd.v b/src/Specific/solinas32_2e321m9_12limbs/feadd.v
new file mode 100644
index 000000000..e71676c35
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..24879c770
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/femul.v b/src/Specific/solinas32_2e321m9_12limbs/femul.v
new file mode 100644
index 000000000..5521bb1b6
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.v b/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.v
new file mode 100644
index 000000000..bb88b968c
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesquare.v b/src/Specific/solinas32_2e321m9_12limbs/fesquare.v
new file mode 100644
index 000000000..6cb94e185
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..787b0dd98
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesub.v b/src/Specific/solinas32_2e321m9_12limbs/fesub.v
new file mode 100644
index 000000000..423a26328
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..92ade7648
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/freeze.v b/src/Specific/solinas32_2e321m9_12limbs/freeze.v
new file mode 100644
index 000000000..e71514d4a
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..8ec62f0fe
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e321m9_12limbs/py_interpreter.sh b/src/Specific/solinas32_2e321m9_12limbs/py_interpreter.sh
new file mode 100755
index 000000000..d07634498
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_12limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**321 - 9' -Dmodulus_bytes='26.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e321m9_13limbs/CurveParameters.v b/src/Specific/solinas32_2e321m9_13limbs/CurveParameters.v
new file mode 100644
index 000000000..25d65653b
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^321 - 9
+Base: 24 + 9/13
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 13%nat;
+ base := 24 + 9/13;
+ bitwidth := 32;
+ s := 2^321;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 13); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/Synthesis.v b/src/Specific/solinas32_2e321m9_13limbs/Synthesis.v
new file mode 100644
index 000000000..44ef3a536
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/compiler.sh b/src/Specific/solinas32_2e321m9_13limbs/compiler.sh
new file mode 100755
index 000000000..91fbccfc8
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9_13limbs/compilerxx.sh b/src/Specific/solinas32_2e321m9_13limbs/compilerxx.sh
new file mode 100755
index 000000000..521ee21fe
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas32_2e321m9_13limbs/feadd.v b/src/Specific/solinas32_2e321m9_13limbs/feadd.v
new file mode 100644
index 000000000..be91c8f75
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..9977b1abb
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/femul.v b/src/Specific/solinas32_2e321m9_13limbs/femul.v
new file mode 100644
index 000000000..fdfac7339
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.v b/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.v
new file mode 100644
index 000000000..aae72b4c5
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesquare.v b/src/Specific/solinas32_2e321m9_13limbs/fesquare.v
new file mode 100644
index 000000000..7f96eb812
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b743f3df7
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesub.v b/src/Specific/solinas32_2e321m9_13limbs/fesub.v
new file mode 100644
index 000000000..203e2318f
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..913e67580
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/freeze.v b/src/Specific/solinas32_2e321m9_13limbs/freeze.v
new file mode 100644
index 000000000..e2eac2725
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..2f9b9e068
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e321m9_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e321m9_13limbs/py_interpreter.sh b/src/Specific/solinas32_2e321m9_13limbs/py_interpreter.sh
new file mode 100755
index 000000000..af5060232
--- /dev/null
+++ b/src/Specific/solinas32_2e321m9_13limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**321 - 9' -Dmodulus_bytes='24 + 9/13' -Da24='121665'
diff --git a/src/Specific/solinas32_2e322m2e161m1/Synthesis.v b/src/Specific/solinas32_2e322m2e161m1/Synthesis.v
deleted file mode 100644
index 18938a04b..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e322m2e161m1/feadd.c b/src/Specific/solinas32_2e322m2e161m1/feadd.c
deleted file mode 100644
index 6b2a8feaf..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/feadd.c
+++ /dev/null
@@ -1,45 +0,0 @@
-static void feadd(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- out[0] = (x5 + x31);
- out[1] = (x7 + x33);
- out[2] = (x9 + x35);
- out[3] = (x11 + x37);
- out[4] = (x13 + x39);
- out[5] = (x15 + x41);
- out[6] = (x17 + x43);
- out[7] = (x19 + x45);
- out[8] = (x21 + x47);
- out[9] = (x23 + x49);
- out[10] = (x25 + x51);
- out[11] = (x27 + x53);
- out[12] = (x29 + x55);
- out[13] = (x28 + x54);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e322m2e161m1/feadd.v b/src/Specific/solinas32_2e322m2e161m1/feadd.v
deleted file mode 100644
index 7e45ad463..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.log b/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.log
deleted file mode 100644
index ff11bcba0..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- ((x28 + x54), (x29 + x55), (x27 + x53), (x25 + x51), (x23 + x49), (x21 + x47), (x19 + x45), (x17 + x43), (x15 + x41), (x13 + x39), (x11 + x37), (x9 + x35), (x7 + x33), (x5 + x31)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.v b/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.v
deleted file mode 100644
index 902998c08..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e322m2e161m1/femul.c b/src/Specific/solinas32_2e322m2e161m1/femul.c
deleted file mode 100644
index 6111bb862..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/femul.c
+++ /dev/null
@@ -1,129 +0,0 @@
-static void femul(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- { uint64_t x56 = (((uint64_t)(x17 + x28) * (x43 + x54)) - ((uint64_t)x17 * x43));
- { uint64_t x57 = ((((uint64_t)(x15 + x29) * (x43 + x54)) + ((uint64_t)(x17 + x28) * (x41 + x55))) - (((uint64_t)x15 * x43) + ((uint64_t)x17 * x41)));
- { uint64_t x58 = ((((uint64_t)(x13 + x27) * (x43 + x54)) + (((uint64_t)(x15 + x29) * (x41 + x55)) + ((uint64_t)(x17 + x28) * (x39 + x53)))) - (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))));
- { uint64_t x59 = ((((uint64_t)(x11 + x25) * (x43 + x54)) + (((uint64_t)(x13 + x27) * (x41 + x55)) + (((uint64_t)(x15 + x29) * (x39 + x53)) + ((uint64_t)(x17 + x28) * (x37 + x51))))) - (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37)))));
- { uint64_t x60 = ((((uint64_t)(x9 + x23) * (x43 + x54)) + (((uint64_t)(x11 + x25) * (x41 + x55)) + (((uint64_t)(x13 + x27) * (x39 + x53)) + (((uint64_t)(x15 + x29) * (x37 + x51)) + ((uint64_t)(x17 + x28) * (x35 + x49)))))) - (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))));
- { uint64_t x61 = ((((uint64_t)(x7 + x21) * (x43 + x54)) + (((uint64_t)(x9 + x23) * (x41 + x55)) + (((uint64_t)(x11 + x25) * (x39 + x53)) + (((uint64_t)(x13 + x27) * (x37 + x51)) + (((uint64_t)(x15 + x29) * (x35 + x49)) + ((uint64_t)(x17 + x28) * (x33 + x47))))))) - (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33)))))));
- { uint64_t x62 = ((((uint64_t)(x5 + x19) * (x43 + x54)) + (((uint64_t)(x7 + x21) * (x41 + x55)) + (((uint64_t)(x9 + x23) * (x39 + x53)) + (((uint64_t)(x11 + x25) * (x37 + x51)) + (((uint64_t)(x13 + x27) * (x35 + x49)) + (((uint64_t)(x15 + x29) * (x33 + x47)) + ((uint64_t)(x17 + x28) * (x31 + x45)))))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))));
- { uint64_t x63 = ((((uint64_t)(x5 + x19) * (x41 + x55)) + (((uint64_t)(x7 + x21) * (x39 + x53)) + (((uint64_t)(x9 + x23) * (x37 + x51)) + (((uint64_t)(x11 + x25) * (x35 + x49)) + (((uint64_t)(x13 + x27) * (x33 + x47)) + ((uint64_t)(x15 + x29) * (x31 + x45))))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))));
- { uint64_t x64 = ((((uint64_t)(x5 + x19) * (x39 + x53)) + (((uint64_t)(x7 + x21) * (x37 + x51)) + (((uint64_t)(x9 + x23) * (x35 + x49)) + (((uint64_t)(x11 + x25) * (x33 + x47)) + ((uint64_t)(x13 + x27) * (x31 + x45)))))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))));
- { uint64_t x65 = ((((uint64_t)(x5 + x19) * (x37 + x51)) + (((uint64_t)(x7 + x21) * (x35 + x49)) + (((uint64_t)(x9 + x23) * (x33 + x47)) + ((uint64_t)(x11 + x25) * (x31 + x45))))) - (((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))));
- { uint64_t x66 = ((((uint64_t)(x5 + x19) * (x35 + x49)) + (((uint64_t)(x7 + x21) * (x33 + x47)) + ((uint64_t)(x9 + x23) * (x31 + x45)))) - (((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))));
- { uint64_t x67 = ((((uint64_t)(x5 + x19) * (x33 + x47)) + ((uint64_t)(x7 + x21) * (x31 + x45))) - (((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)));
- { uint64_t x68 = (((uint64_t)(x5 + x19) * (x31 + x45)) - ((uint64_t)x5 * x31));
- { uint64_t x69 = (((((uint64_t)x17 * x43) + ((uint64_t)x28 * x54)) + x63) + x56);
- { uint64_t x70 = ((((((uint64_t)x15 * x43) + ((uint64_t)x17 * x41)) + (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))) + x64) + x57);
- { uint64_t x71 = ((((((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))) + (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))) + x65) + x58);
- { uint64_t x72 = ((((((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37)))) + (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))) + x66) + x59);
- { uint64_t x73 = ((((((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))) + (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))) + x67) + x60);
- { uint64_t x74 = ((((((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33)))))) + (((uint64_t)x21 * x54) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((uint64_t)x28 * x47))))))) + x68) + x61);
- { uint64_t x75 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))) + (((uint64_t)x19 * x54) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((uint64_t)x28 * x45))))))));
- { uint64_t x76 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + ((uint64_t)x29 * x45))))))) + x56);
- { uint64_t x77 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((uint64_t)x27 * x45)))))) + x57);
- { uint64_t x78 = (((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + ((uint64_t)x25 * x45))))) + x58);
- { uint64_t x79 = (((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((uint64_t)x23 * x45)))) + x59);
- { uint64_t x80 = (((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (((uint64_t)x19 * x47) + ((uint64_t)x21 * x45))) + x60);
- { uint64_t x81 = ((((uint64_t)x5 * x31) + ((uint64_t)x19 * x45)) + x61);
- { uint32_t x82 = (uint32_t) (x75 >> 0x17);
- { uint32_t x83 = ((uint32_t)x75 & 0x7fffff);
- { uint32_t x84 = (uint32_t) (x62 >> 0x17);
- { uint32_t x85 = ((uint32_t)x62 & 0x7fffff);
- { uint64_t x86 = (((uint64_t)0x800000 * x84) + x85);
- { uint32_t x87 = (uint32_t) (x86 >> 0x17);
- { uint32_t x88 = ((uint32_t)x86 & 0x7fffff);
- { uint64_t x89 = ((x82 + x74) + x87);
- { uint32_t x90 = (uint32_t) (x89 >> 0x17);
- { uint32_t x91 = ((uint32_t)x89 & 0x7fffff);
- { uint64_t x92 = (x81 + x87);
- { uint32_t x93 = (uint32_t) (x92 >> 0x17);
- { uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
- { uint64_t x95 = (x90 + x73);
- { uint32_t x96 = (uint32_t) (x95 >> 0x17);
- { uint32_t x97 = ((uint32_t)x95 & 0x7fffff);
- { uint64_t x98 = (x93 + x80);
- { uint32_t x99 = (uint32_t) (x98 >> 0x17);
- { uint32_t x100 = ((uint32_t)x98 & 0x7fffff);
- { uint64_t x101 = (x96 + x72);
- { uint32_t x102 = (uint32_t) (x101 >> 0x17);
- { uint32_t x103 = ((uint32_t)x101 & 0x7fffff);
- { uint64_t x104 = (x99 + x79);
- { uint32_t x105 = (uint32_t) (x104 >> 0x17);
- { uint32_t x106 = ((uint32_t)x104 & 0x7fffff);
- { uint64_t x107 = (x102 + x71);
- { uint32_t x108 = (uint32_t) (x107 >> 0x17);
- { uint32_t x109 = ((uint32_t)x107 & 0x7fffff);
- { uint64_t x110 = (x105 + x78);
- { uint32_t x111 = (uint32_t) (x110 >> 0x17);
- { uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
- { uint64_t x113 = (x108 + x70);
- { uint32_t x114 = (uint32_t) (x113 >> 0x17);
- { uint32_t x115 = ((uint32_t)x113 & 0x7fffff);
- { uint64_t x116 = (x111 + x77);
- { uint32_t x117 = (uint32_t) (x116 >> 0x17);
- { uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
- { uint64_t x119 = (x114 + x69);
- { uint32_t x120 = (uint32_t) (x119 >> 0x17);
- { uint32_t x121 = ((uint32_t)x119 & 0x7fffff);
- { uint64_t x122 = (x117 + x76);
- { uint32_t x123 = (uint32_t) (x122 >> 0x17);
- { uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
- { uint32_t x125 = (x120 + x88);
- { uint32_t x126 = (x125 >> 0x17);
- { uint32_t x127 = (x125 & 0x7fffff);
- { uint32_t x128 = (x123 + x83);
- { uint32_t x129 = (x128 >> 0x17);
- { uint32_t x130 = (x128 & 0x7fffff);
- { uint32_t x131 = ((0x800000 * x126) + x127);
- { uint32_t x132 = (x131 >> 0x17);
- { uint32_t x133 = (x131 & 0x7fffff);
- { uint32_t x134 = ((x129 + x91) + x132);
- { uint32_t x135 = (x134 >> 0x17);
- { uint32_t x136 = (x134 & 0x7fffff);
- { uint32_t x137 = (x94 + x132);
- { uint32_t x138 = (x137 >> 0x17);
- { uint32_t x139 = (x137 & 0x7fffff);
- out[0] = x139;
- out[1] = (x138 + x100);
- out[2] = x106;
- out[3] = x112;
- out[4] = x118;
- out[5] = x124;
- out[6] = x130;
- out[7] = x136;
- out[8] = (x135 + x97);
- out[9] = x103;
- out[10] = x109;
- out[11] = x115;
- out[12] = x121;
- out[13] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e322m2e161m1/femul.v b/src/Specific/solinas32_2e322m2e161m1/femul.v
deleted file mode 100644
index 2786e9f19..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1/femulDisplay.log b/src/Specific/solinas32_2e322m2e161m1/femulDisplay.log
deleted file mode 100644
index 55386e3bb..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/femulDisplay.log
+++ /dev/null
@@ -1,91 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- uint64_t x56 = (((uint64_t)(x17 + x28) * (x43 + x54)) - ((uint64_t)x17 * x43));
- uint64_t x57 = ((((uint64_t)(x15 + x29) * (x43 + x54)) + ((uint64_t)(x17 + x28) * (x41 + x55))) - (((uint64_t)x15 * x43) + ((uint64_t)x17 * x41)));
- uint64_t x58 = ((((uint64_t)(x13 + x27) * (x43 + x54)) + (((uint64_t)(x15 + x29) * (x41 + x55)) + ((uint64_t)(x17 + x28) * (x39 + x53)))) - (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))));
- uint64_t x59 = ((((uint64_t)(x11 + x25) * (x43 + x54)) + (((uint64_t)(x13 + x27) * (x41 + x55)) + (((uint64_t)(x15 + x29) * (x39 + x53)) + ((uint64_t)(x17 + x28) * (x37 + x51))))) - (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37)))));
- uint64_t x60 = ((((uint64_t)(x9 + x23) * (x43 + x54)) + (((uint64_t)(x11 + x25) * (x41 + x55)) + (((uint64_t)(x13 + x27) * (x39 + x53)) + (((uint64_t)(x15 + x29) * (x37 + x51)) + ((uint64_t)(x17 + x28) * (x35 + x49)))))) - (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))));
- uint64_t x61 = ((((uint64_t)(x7 + x21) * (x43 + x54)) + (((uint64_t)(x9 + x23) * (x41 + x55)) + (((uint64_t)(x11 + x25) * (x39 + x53)) + (((uint64_t)(x13 + x27) * (x37 + x51)) + (((uint64_t)(x15 + x29) * (x35 + x49)) + ((uint64_t)(x17 + x28) * (x33 + x47))))))) - (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33)))))));
- uint64_t x62 = ((((uint64_t)(x5 + x19) * (x43 + x54)) + (((uint64_t)(x7 + x21) * (x41 + x55)) + (((uint64_t)(x9 + x23) * (x39 + x53)) + (((uint64_t)(x11 + x25) * (x37 + x51)) + (((uint64_t)(x13 + x27) * (x35 + x49)) + (((uint64_t)(x15 + x29) * (x33 + x47)) + ((uint64_t)(x17 + x28) * (x31 + x45)))))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))));
- uint64_t x63 = ((((uint64_t)(x5 + x19) * (x41 + x55)) + (((uint64_t)(x7 + x21) * (x39 + x53)) + (((uint64_t)(x9 + x23) * (x37 + x51)) + (((uint64_t)(x11 + x25) * (x35 + x49)) + (((uint64_t)(x13 + x27) * (x33 + x47)) + ((uint64_t)(x15 + x29) * (x31 + x45))))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))));
- uint64_t x64 = ((((uint64_t)(x5 + x19) * (x39 + x53)) + (((uint64_t)(x7 + x21) * (x37 + x51)) + (((uint64_t)(x9 + x23) * (x35 + x49)) + (((uint64_t)(x11 + x25) * (x33 + x47)) + ((uint64_t)(x13 + x27) * (x31 + x45)))))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))));
- uint64_t x65 = ((((uint64_t)(x5 + x19) * (x37 + x51)) + (((uint64_t)(x7 + x21) * (x35 + x49)) + (((uint64_t)(x9 + x23) * (x33 + x47)) + ((uint64_t)(x11 + x25) * (x31 + x45))))) - (((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))));
- uint64_t x66 = ((((uint64_t)(x5 + x19) * (x35 + x49)) + (((uint64_t)(x7 + x21) * (x33 + x47)) + ((uint64_t)(x9 + x23) * (x31 + x45)))) - (((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))));
- uint64_t x67 = ((((uint64_t)(x5 + x19) * (x33 + x47)) + ((uint64_t)(x7 + x21) * (x31 + x45))) - (((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)));
- uint64_t x68 = (((uint64_t)(x5 + x19) * (x31 + x45)) - ((uint64_t)x5 * x31));
- uint64_t x69 = (((((uint64_t)x17 * x43) + ((uint64_t)x28 * x54)) + x63) + x56);
- uint64_t x70 = ((((((uint64_t)x15 * x43) + ((uint64_t)x17 * x41)) + (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))) + x64) + x57);
- uint64_t x71 = ((((((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))) + (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))) + x65) + x58);
- uint64_t x72 = ((((((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + ((uint64_t)x17 * x37)))) + (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))) + x66) + x59);
- uint64_t x73 = ((((((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))) + (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))) + x67) + x60);
- uint64_t x74 = ((((((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + ((uint64_t)x17 * x33)))))) + (((uint64_t)x21 * x54) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((uint64_t)x28 * x47))))))) + x68) + x61);
- uint64_t x75 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))) + (((uint64_t)x19 * x54) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((uint64_t)x28 * x45))))))));
- uint64_t x76 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + ((uint64_t)x29 * x45))))))) + x56);
- uint64_t x77 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((uint64_t)x27 * x45)))))) + x57);
- uint64_t x78 = (((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + ((uint64_t)x25 * x45))))) + x58);
- uint64_t x79 = (((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((uint64_t)x23 * x45)))) + x59);
- uint64_t x80 = (((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (((uint64_t)x19 * x47) + ((uint64_t)x21 * x45))) + x60);
- uint64_t x81 = ((((uint64_t)x5 * x31) + ((uint64_t)x19 * x45)) + x61);
- uint32_t x82 = (uint32_t) (x75 >> 0x17);
- uint32_t x83 = ((uint32_t)x75 & 0x7fffff);
- uint32_t x84 = (uint32_t) (x62 >> 0x17);
- uint32_t x85 = ((uint32_t)x62 & 0x7fffff);
- uint64_t x86 = (((uint64_t)0x800000 * x84) + x85);
- uint32_t x87 = (uint32_t) (x86 >> 0x17);
- uint32_t x88 = ((uint32_t)x86 & 0x7fffff);
- uint64_t x89 = ((x82 + x74) + x87);
- uint32_t x90 = (uint32_t) (x89 >> 0x17);
- uint32_t x91 = ((uint32_t)x89 & 0x7fffff);
- uint64_t x92 = (x81 + x87);
- uint32_t x93 = (uint32_t) (x92 >> 0x17);
- uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
- uint64_t x95 = (x90 + x73);
- uint32_t x96 = (uint32_t) (x95 >> 0x17);
- uint32_t x97 = ((uint32_t)x95 & 0x7fffff);
- uint64_t x98 = (x93 + x80);
- uint32_t x99 = (uint32_t) (x98 >> 0x17);
- uint32_t x100 = ((uint32_t)x98 & 0x7fffff);
- uint64_t x101 = (x96 + x72);
- uint32_t x102 = (uint32_t) (x101 >> 0x17);
- uint32_t x103 = ((uint32_t)x101 & 0x7fffff);
- uint64_t x104 = (x99 + x79);
- uint32_t x105 = (uint32_t) (x104 >> 0x17);
- uint32_t x106 = ((uint32_t)x104 & 0x7fffff);
- uint64_t x107 = (x102 + x71);
- uint32_t x108 = (uint32_t) (x107 >> 0x17);
- uint32_t x109 = ((uint32_t)x107 & 0x7fffff);
- uint64_t x110 = (x105 + x78);
- uint32_t x111 = (uint32_t) (x110 >> 0x17);
- uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
- uint64_t x113 = (x108 + x70);
- uint32_t x114 = (uint32_t) (x113 >> 0x17);
- uint32_t x115 = ((uint32_t)x113 & 0x7fffff);
- uint64_t x116 = (x111 + x77);
- uint32_t x117 = (uint32_t) (x116 >> 0x17);
- uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
- uint64_t x119 = (x114 + x69);
- uint32_t x120 = (uint32_t) (x119 >> 0x17);
- uint32_t x121 = ((uint32_t)x119 & 0x7fffff);
- uint64_t x122 = (x117 + x76);
- uint32_t x123 = (uint32_t) (x122 >> 0x17);
- uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
- uint32_t x125 = (x120 + x88);
- uint32_t x126 = (x125 >> 0x17);
- uint32_t x127 = (x125 & 0x7fffff);
- uint32_t x128 = (x123 + x83);
- uint32_t x129 = (x128 >> 0x17);
- uint32_t x130 = (x128 & 0x7fffff);
- uint32_t x131 = ((0x800000 * x126) + x127);
- uint32_t x132 = (x131 >> 0x17);
- uint32_t x133 = (x131 & 0x7fffff);
- uint32_t x134 = ((x129 + x91) + x132);
- uint32_t x135 = (x134 >> 0x17);
- uint32_t x136 = (x134 & 0x7fffff);
- uint32_t x137 = (x94 + x132);
- uint32_t x138 = (x137 >> 0x17);
- uint32_t x139 = (x137 & 0x7fffff);
- return (Return x133, Return x121, Return x115, Return x109, Return x103, (x135 + x97), Return x136, Return x130, Return x124, Return x118, Return x112, Return x106, (x138 + x100), Return x139))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v b/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v
deleted file mode 100644
index d43cb5727..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquare.c b/src/Specific/solinas32_2e322m2e161m1/fesquare.c
deleted file mode 100644
index e1d4a6c5a..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesquare.c
+++ /dev/null
@@ -1,115 +0,0 @@
-static void fesquare(uint32_t out[14], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x27 = (((uint64_t)(x14 + x25) * (x14 + x25)) - ((uint64_t)x14 * x14));
- { uint64_t x28 = ((((uint64_t)(x12 + x26) * (x14 + x25)) + ((uint64_t)(x14 + x25) * (x12 + x26))) - (((uint64_t)x12 * x14) + ((uint64_t)x14 * x12)));
- { uint64_t x29 = ((((uint64_t)(x10 + x24) * (x14 + x25)) + (((uint64_t)(x12 + x26) * (x12 + x26)) + ((uint64_t)(x14 + x25) * (x10 + x24)))) - (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10))));
- { uint64_t x30 = ((((uint64_t)(x8 + x22) * (x14 + x25)) + (((uint64_t)(x10 + x24) * (x12 + x26)) + (((uint64_t)(x12 + x26) * (x10 + x24)) + ((uint64_t)(x14 + x25) * (x8 + x22))))) - (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x14 * x8)))));
- { uint64_t x31 = ((((uint64_t)(x6 + x20) * (x14 + x25)) + (((uint64_t)(x8 + x22) * (x12 + x26)) + (((uint64_t)(x10 + x24) * (x10 + x24)) + (((uint64_t)(x12 + x26) * (x8 + x22)) + ((uint64_t)(x14 + x25) * (x6 + x20)))))) - (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x14 * x6))))));
- { uint64_t x32 = ((((uint64_t)(x4 + x18) * (x14 + x25)) + (((uint64_t)(x6 + x20) * (x12 + x26)) + (((uint64_t)(x8 + x22) * (x10 + x24)) + (((uint64_t)(x10 + x24) * (x8 + x22)) + (((uint64_t)(x12 + x26) * (x6 + x20)) + ((uint64_t)(x14 + x25) * (x4 + x18))))))) - (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x14 * x4)))))));
- { uint64_t x33 = ((((uint64_t)(x2 + x16) * (x14 + x25)) + (((uint64_t)(x4 + x18) * (x12 + x26)) + (((uint64_t)(x6 + x20) * (x10 + x24)) + (((uint64_t)(x8 + x22) * (x8 + x22)) + (((uint64_t)(x10 + x24) * (x6 + x20)) + (((uint64_t)(x12 + x26) * (x4 + x18)) + ((uint64_t)(x14 + x25) * (x2 + x16)))))))) - (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))));
- { uint64_t x34 = ((((uint64_t)(x2 + x16) * (x12 + x26)) + (((uint64_t)(x4 + x18) * (x10 + x24)) + (((uint64_t)(x6 + x20) * (x8 + x22)) + (((uint64_t)(x8 + x22) * (x6 + x20)) + (((uint64_t)(x10 + x24) * (x4 + x18)) + ((uint64_t)(x12 + x26) * (x2 + x16))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
- { uint64_t x35 = ((((uint64_t)(x2 + x16) * (x10 + x24)) + (((uint64_t)(x4 + x18) * (x8 + x22)) + (((uint64_t)(x6 + x20) * (x6 + x20)) + (((uint64_t)(x8 + x22) * (x4 + x18)) + ((uint64_t)(x10 + x24) * (x2 + x16)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- { uint64_t x36 = ((((uint64_t)(x2 + x16) * (x8 + x22)) + (((uint64_t)(x4 + x18) * (x6 + x20)) + (((uint64_t)(x6 + x20) * (x4 + x18)) + ((uint64_t)(x8 + x22) * (x2 + x16))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- { uint64_t x37 = ((((uint64_t)(x2 + x16) * (x6 + x20)) + (((uint64_t)(x4 + x18) * (x4 + x18)) + ((uint64_t)(x6 + x20) * (x2 + x16)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- { uint64_t x38 = ((((uint64_t)(x2 + x16) * (x4 + x18)) + ((uint64_t)(x4 + x18) * (x2 + x16))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- { uint64_t x39 = (((uint64_t)(x2 + x16) * (x2 + x16)) - ((uint64_t)x2 * x2));
- { uint64_t x40 = (((((uint64_t)x14 * x14) + ((uint64_t)x25 * x25)) + x34) + x27);
- { uint64_t x41 = ((((((uint64_t)x12 * x14) + ((uint64_t)x14 * x12)) + (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))) + x35) + x28);
- { uint64_t x42 = ((((((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10))) + (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))) + x36) + x29);
- { uint64_t x43 = ((((((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x14 * x8)))) + (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))) + x37) + x30);
- { uint64_t x44 = ((((((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x14 * x6))))) + (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))) + x38) + x31);
- { uint64_t x45 = ((((((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x14 * x4)))))) + (((uint64_t)x18 * x25) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x25 * x18))))))) + x39) + x32);
- { uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x25) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((uint64_t)x25 * x16))))))));
- { uint64_t x47 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x26 * x16))))))) + x27);
- { uint64_t x48 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((uint64_t)x24 * x16)))))) + x28);
- { uint64_t x49 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x22 * x16))))) + x29);
- { uint64_t x50 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + ((uint64_t)x20 * x16)))) + x30);
- { uint64_t x51 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x16 * x18) + ((uint64_t)x18 * x16))) + x31);
- { uint64_t x52 = ((((uint64_t)x2 * x2) + ((uint64_t)x16 * x16)) + x32);
- { uint32_t x53 = (uint32_t) (x46 >> 0x17);
- { uint32_t x54 = ((uint32_t)x46 & 0x7fffff);
- { uint32_t x55 = (uint32_t) (x33 >> 0x17);
- { uint32_t x56 = ((uint32_t)x33 & 0x7fffff);
- { uint64_t x57 = (((uint64_t)0x800000 * x55) + x56);
- { uint32_t x58 = (uint32_t) (x57 >> 0x17);
- { uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
- { uint64_t x60 = ((x53 + x45) + x58);
- { uint32_t x61 = (uint32_t) (x60 >> 0x17);
- { uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
- { uint64_t x63 = (x52 + x58);
- { uint32_t x64 = (uint32_t) (x63 >> 0x17);
- { uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
- { uint64_t x66 = (x61 + x44);
- { uint32_t x67 = (uint32_t) (x66 >> 0x17);
- { uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
- { uint64_t x69 = (x64 + x51);
- { uint32_t x70 = (uint32_t) (x69 >> 0x17);
- { uint32_t x71 = ((uint32_t)x69 & 0x7fffff);
- { uint64_t x72 = (x67 + x43);
- { uint32_t x73 = (uint32_t) (x72 >> 0x17);
- { uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
- { uint64_t x75 = (x70 + x50);
- { uint32_t x76 = (uint32_t) (x75 >> 0x17);
- { uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
- { uint64_t x78 = (x73 + x42);
- { uint32_t x79 = (uint32_t) (x78 >> 0x17);
- { uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
- { uint64_t x81 = (x76 + x49);
- { uint32_t x82 = (uint32_t) (x81 >> 0x17);
- { uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
- { uint64_t x84 = (x79 + x41);
- { uint32_t x85 = (uint32_t) (x84 >> 0x17);
- { uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
- { uint64_t x87 = (x82 + x48);
- { uint32_t x88 = (uint32_t) (x87 >> 0x17);
- { uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
- { uint64_t x90 = (x85 + x40);
- { uint32_t x91 = (uint32_t) (x90 >> 0x17);
- { uint32_t x92 = ((uint32_t)x90 & 0x7fffff);
- { uint64_t x93 = (x88 + x47);
- { uint32_t x94 = (uint32_t) (x93 >> 0x17);
- { uint32_t x95 = ((uint32_t)x93 & 0x7fffff);
- { uint32_t x96 = (x91 + x59);
- { uint32_t x97 = (x96 >> 0x17);
- { uint32_t x98 = (x96 & 0x7fffff);
- { uint32_t x99 = (x94 + x54);
- { uint32_t x100 = (x99 >> 0x17);
- { uint32_t x101 = (x99 & 0x7fffff);
- { uint32_t x102 = ((0x800000 * x97) + x98);
- { uint32_t x103 = (x102 >> 0x17);
- { uint32_t x104 = (x102 & 0x7fffff);
- { uint32_t x105 = ((x100 + x62) + x103);
- { uint32_t x106 = (x105 >> 0x17);
- { uint32_t x107 = (x105 & 0x7fffff);
- { uint32_t x108 = (x65 + x103);
- { uint32_t x109 = (x108 >> 0x17);
- { uint32_t x110 = (x108 & 0x7fffff);
- out[0] = x110;
- out[1] = (x109 + x71);
- out[2] = x77;
- out[3] = x83;
- out[4] = x89;
- out[5] = x95;
- out[6] = x101;
- out[7] = x107;
- out[8] = (x106 + x68);
- out[9] = x74;
- out[10] = x80;
- out[11] = x86;
- out[12] = x92;
- out[13] = x104;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquare.v b/src/Specific/solinas32_2e322m2e161m1/fesquare.v
deleted file mode 100644
index b6ae22a88..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.log b/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.log
deleted file mode 100644
index 6b4e29e41..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.log
+++ /dev/null
@@ -1,91 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x27 = (((uint64_t)(x14 + x25) * (x14 + x25)) - ((uint64_t)x14 * x14));
- uint64_t x28 = ((((uint64_t)(x12 + x26) * (x14 + x25)) + ((uint64_t)(x14 + x25) * (x12 + x26))) - (((uint64_t)x12 * x14) + ((uint64_t)x14 * x12)));
- uint64_t x29 = ((((uint64_t)(x10 + x24) * (x14 + x25)) + (((uint64_t)(x12 + x26) * (x12 + x26)) + ((uint64_t)(x14 + x25) * (x10 + x24)))) - (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10))));
- uint64_t x30 = ((((uint64_t)(x8 + x22) * (x14 + x25)) + (((uint64_t)(x10 + x24) * (x12 + x26)) + (((uint64_t)(x12 + x26) * (x10 + x24)) + ((uint64_t)(x14 + x25) * (x8 + x22))))) - (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x14 * x8)))));
- uint64_t x31 = ((((uint64_t)(x6 + x20) * (x14 + x25)) + (((uint64_t)(x8 + x22) * (x12 + x26)) + (((uint64_t)(x10 + x24) * (x10 + x24)) + (((uint64_t)(x12 + x26) * (x8 + x22)) + ((uint64_t)(x14 + x25) * (x6 + x20)))))) - (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x14 * x6))))));
- uint64_t x32 = ((((uint64_t)(x4 + x18) * (x14 + x25)) + (((uint64_t)(x6 + x20) * (x12 + x26)) + (((uint64_t)(x8 + x22) * (x10 + x24)) + (((uint64_t)(x10 + x24) * (x8 + x22)) + (((uint64_t)(x12 + x26) * (x6 + x20)) + ((uint64_t)(x14 + x25) * (x4 + x18))))))) - (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x14 * x4)))))));
- uint64_t x33 = ((((uint64_t)(x2 + x16) * (x14 + x25)) + (((uint64_t)(x4 + x18) * (x12 + x26)) + (((uint64_t)(x6 + x20) * (x10 + x24)) + (((uint64_t)(x8 + x22) * (x8 + x22)) + (((uint64_t)(x10 + x24) * (x6 + x20)) + (((uint64_t)(x12 + x26) * (x4 + x18)) + ((uint64_t)(x14 + x25) * (x2 + x16)))))))) - (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))));
- uint64_t x34 = ((((uint64_t)(x2 + x16) * (x12 + x26)) + (((uint64_t)(x4 + x18) * (x10 + x24)) + (((uint64_t)(x6 + x20) * (x8 + x22)) + (((uint64_t)(x8 + x22) * (x6 + x20)) + (((uint64_t)(x10 + x24) * (x4 + x18)) + ((uint64_t)(x12 + x26) * (x2 + x16))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
- uint64_t x35 = ((((uint64_t)(x2 + x16) * (x10 + x24)) + (((uint64_t)(x4 + x18) * (x8 + x22)) + (((uint64_t)(x6 + x20) * (x6 + x20)) + (((uint64_t)(x8 + x22) * (x4 + x18)) + ((uint64_t)(x10 + x24) * (x2 + x16)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- uint64_t x36 = ((((uint64_t)(x2 + x16) * (x8 + x22)) + (((uint64_t)(x4 + x18) * (x6 + x20)) + (((uint64_t)(x6 + x20) * (x4 + x18)) + ((uint64_t)(x8 + x22) * (x2 + x16))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- uint64_t x37 = ((((uint64_t)(x2 + x16) * (x6 + x20)) + (((uint64_t)(x4 + x18) * (x4 + x18)) + ((uint64_t)(x6 + x20) * (x2 + x16)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- uint64_t x38 = ((((uint64_t)(x2 + x16) * (x4 + x18)) + ((uint64_t)(x4 + x18) * (x2 + x16))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- uint64_t x39 = (((uint64_t)(x2 + x16) * (x2 + x16)) - ((uint64_t)x2 * x2));
- uint64_t x40 = (((((uint64_t)x14 * x14) + ((uint64_t)x25 * x25)) + x34) + x27);
- uint64_t x41 = ((((((uint64_t)x12 * x14) + ((uint64_t)x14 * x12)) + (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))) + x35) + x28);
- uint64_t x42 = ((((((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + ((uint64_t)x14 * x10))) + (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))) + x36) + x29);
- uint64_t x43 = ((((((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x14 * x8)))) + (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))) + x37) + x30);
- uint64_t x44 = ((((((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x14 * x6))))) + (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))) + x38) + x31);
- uint64_t x45 = ((((((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x14 * x4)))))) + (((uint64_t)x18 * x25) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x25 * x18))))))) + x39) + x32);
- uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x25) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((uint64_t)x25 * x16))))))));
- uint64_t x47 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x26 * x16))))))) + x27);
- uint64_t x48 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((uint64_t)x24 * x16)))))) + x28);
- uint64_t x49 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((uint64_t)x22 * x16))))) + x29);
- uint64_t x50 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + ((uint64_t)x20 * x16)))) + x30);
- uint64_t x51 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x16 * x18) + ((uint64_t)x18 * x16))) + x31);
- uint64_t x52 = ((((uint64_t)x2 * x2) + ((uint64_t)x16 * x16)) + x32);
- uint32_t x53 = (uint32_t) (x46 >> 0x17);
- uint32_t x54 = ((uint32_t)x46 & 0x7fffff);
- uint32_t x55 = (uint32_t) (x33 >> 0x17);
- uint32_t x56 = ((uint32_t)x33 & 0x7fffff);
- uint64_t x57 = (((uint64_t)0x800000 * x55) + x56);
- uint32_t x58 = (uint32_t) (x57 >> 0x17);
- uint32_t x59 = ((uint32_t)x57 & 0x7fffff);
- uint64_t x60 = ((x53 + x45) + x58);
- uint32_t x61 = (uint32_t) (x60 >> 0x17);
- uint32_t x62 = ((uint32_t)x60 & 0x7fffff);
- uint64_t x63 = (x52 + x58);
- uint32_t x64 = (uint32_t) (x63 >> 0x17);
- uint32_t x65 = ((uint32_t)x63 & 0x7fffff);
- uint64_t x66 = (x61 + x44);
- uint32_t x67 = (uint32_t) (x66 >> 0x17);
- uint32_t x68 = ((uint32_t)x66 & 0x7fffff);
- uint64_t x69 = (x64 + x51);
- uint32_t x70 = (uint32_t) (x69 >> 0x17);
- uint32_t x71 = ((uint32_t)x69 & 0x7fffff);
- uint64_t x72 = (x67 + x43);
- uint32_t x73 = (uint32_t) (x72 >> 0x17);
- uint32_t x74 = ((uint32_t)x72 & 0x7fffff);
- uint64_t x75 = (x70 + x50);
- uint32_t x76 = (uint32_t) (x75 >> 0x17);
- uint32_t x77 = ((uint32_t)x75 & 0x7fffff);
- uint64_t x78 = (x73 + x42);
- uint32_t x79 = (uint32_t) (x78 >> 0x17);
- uint32_t x80 = ((uint32_t)x78 & 0x7fffff);
- uint64_t x81 = (x76 + x49);
- uint32_t x82 = (uint32_t) (x81 >> 0x17);
- uint32_t x83 = ((uint32_t)x81 & 0x7fffff);
- uint64_t x84 = (x79 + x41);
- uint32_t x85 = (uint32_t) (x84 >> 0x17);
- uint32_t x86 = ((uint32_t)x84 & 0x7fffff);
- uint64_t x87 = (x82 + x48);
- uint32_t x88 = (uint32_t) (x87 >> 0x17);
- uint32_t x89 = ((uint32_t)x87 & 0x7fffff);
- uint64_t x90 = (x85 + x40);
- uint32_t x91 = (uint32_t) (x90 >> 0x17);
- uint32_t x92 = ((uint32_t)x90 & 0x7fffff);
- uint64_t x93 = (x88 + x47);
- uint32_t x94 = (uint32_t) (x93 >> 0x17);
- uint32_t x95 = ((uint32_t)x93 & 0x7fffff);
- uint32_t x96 = (x91 + x59);
- uint32_t x97 = (x96 >> 0x17);
- uint32_t x98 = (x96 & 0x7fffff);
- uint32_t x99 = (x94 + x54);
- uint32_t x100 = (x99 >> 0x17);
- uint32_t x101 = (x99 & 0x7fffff);
- uint32_t x102 = ((0x800000 * x97) + x98);
- uint32_t x103 = (x102 >> 0x17);
- uint32_t x104 = (x102 & 0x7fffff);
- uint32_t x105 = ((x100 + x62) + x103);
- uint32_t x106 = (x105 >> 0x17);
- uint32_t x107 = (x105 & 0x7fffff);
- uint32_t x108 = (x65 + x103);
- uint32_t x109 = (x108 >> 0x17);
- uint32_t x110 = (x108 & 0x7fffff);
- return (Return x104, Return x92, Return x86, Return x80, Return x74, (x106 + x68), Return x107, Return x101, Return x95, Return x89, Return x83, Return x77, (x109 + x71), Return x110))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v b/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v
deleted file mode 100644
index 25a768c6c..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesub.c b/src/Specific/solinas32_2e322m2e161m1/fesub.c
deleted file mode 100644
index 4f2a40c68..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesub.c
+++ /dev/null
@@ -1,45 +0,0 @@
-static void fesub(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- out[0] = ((0xfffffe + x5) - x31);
- out[1] = ((0xfffffe + x7) - x33);
- out[2] = ((0xfffffe + x9) - x35);
- out[3] = ((0xfffffe + x11) - x37);
- out[4] = ((0xfffffe + x13) - x39);
- out[5] = ((0xfffffe + x15) - x41);
- out[6] = ((0xfffffe + x17) - x43);
- out[7] = ((0xfffffc + x19) - x45);
- out[8] = ((0xfffffe + x21) - x47);
- out[9] = ((0xfffffe + x23) - x49);
- out[10] = ((0xfffffe + x25) - x51);
- out[11] = ((0xfffffe + x27) - x53);
- out[12] = ((0xfffffe + x29) - x55);
- out[13] = ((0xfffffe + x28) - x54);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesub.v b/src/Specific/solinas32_2e322m2e161m1/fesub.v
deleted file mode 100644
index 4152a3c35..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.log b/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.log
deleted file mode 100644
index f2233a5a9..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- (((0xfffffe + x28) - x54), ((0xfffffe + x29) - x55), ((0xfffffe + x27) - x53), ((0xfffffe + x25) - x51), ((0xfffffe + x23) - x49), ((0xfffffe + x21) - x47), ((0xfffffc + x19) - x45), ((0xfffffe + x17) - x43), ((0xfffffe + x15) - x41), ((0xfffffe + x13) - x39), ((0xfffffe + x11) - x37), ((0xfffffe + x9) - x35), ((0xfffffe + x7) - x33), ((0xfffffe + x5) - x31)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.v b/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.v
deleted file mode 100644
index 48dea8907..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1/freeze.c b/src/Specific/solinas32_2e322m2e161m1/freeze.c
deleted file mode 100644
index 3e2f2b671..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/freeze.c
+++ /dev/null
@@ -1,74 +0,0 @@
-static void freeze(uint32_t out[14], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0x7fffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0x7fffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0x7fffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0x7fffff);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0x7fffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0x7fffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0x7ffffe);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0x7fffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0x7fffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0x7fffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0x7fffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0x7fffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0x7fffff);
- { uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
- { uint32_t x70 = (x69 & 0x7fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
- { uint32_t x74 = (x69 & 0x7fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
- { uint32_t x78 = (x69 & 0x7fffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
- { uint32_t x82 = (x69 & 0x7fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
- { uint32_t x86 = (x69 & 0x7fffff);
- { uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
- { uint32_t x90 = (x69 & 0x7fffff);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
- { uint32_t x94 = (x69 & 0x7fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
- { uint32_t x98 = (x69 & 0x7ffffe);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
- { uint32_t x102 = (x69 & 0x7fffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
- { uint32_t x106 = (x69 & 0x7fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
- { uint32_t x110 = (x69 & 0x7fffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
- { uint32_t x114 = (x69 & 0x7fffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
- { uint32_t x118 = (x69 & 0x7fffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
- { uint32_t x122 = (x69 & 0x7fffff);
- { uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
- out[0] = x72;
- out[1] = x76;
- out[2] = x80;
- out[3] = x84;
- out[4] = x88;
- out[5] = x92;
- out[6] = x96;
- out[7] = x100;
- out[8] = x104;
- out[9] = x108;
- out[10] = x112;
- out[11] = x116;
- out[12] = x120;
- out[13] = x124;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e322m2e161m1/freeze.v b/src/Specific/solinas32_2e322m2e161m1/freeze.v
deleted file mode 100644
index 3c9a0fe82..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.log b/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.log
deleted file mode 100644
index 5769da713..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.log
+++ /dev/null
@@ -1,50 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0x7fffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0x7fffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0x7fffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0x7fffff);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0x7fffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0x7fffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0x7ffffe);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0x7fffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0x7fffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0x7fffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0x7fffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0x7fffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0x7fffff);
- uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
- uint32_t x70 = (x69 & 0x7fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
- uint32_t x74 = (x69 & 0x7fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
- uint32_t x78 = (x69 & 0x7fffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
- uint32_t x82 = (x69 & 0x7fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
- uint32_t x86 = (x69 & 0x7fffff);
- uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
- uint32_t x90 = (x69 & 0x7fffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
- uint32_t x94 = (x69 & 0x7fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
- uint32_t x98 = (x69 & 0x7ffffe);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
- uint32_t x102 = (x69 & 0x7fffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
- uint32_t x106 = (x69 & 0x7fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
- uint32_t x110 = (x69 & 0x7fffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
- uint32_t x114 = (x69 & 0x7fffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
- uint32_t x118 = (x69 & 0x7fffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
- uint32_t x122 = (x69 & 0x7fffff);
- uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
- (Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92, Return x88, Return x84, Return x80, Return x76, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v b/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v
deleted file mode 100644
index 8ab2fe2a4..000000000
--- a/src/Specific/solinas32_2e322m2e161m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e322m2e161m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/CurveParameters.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/CurveParameters.v
new file mode 100644
index 000000000..3e63b7416
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^322 - 2^161 - 1
+Base: 26 + 5/6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 12%nat;
+ base := 26 + 5/6;
+ bitwidth := 32;
+ s := 2^322;
+ c := [(1, 1); (2^161, 1)];
+ carry_chains := Some [[5; 11]; [6; 0; 7; 1; 8; 2; 9; 3; 10; 4; 11; 5]; [6; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/Synthesis.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/Synthesis.v
new file mode 100644
index 000000000..c4113abe7
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/compiler.sh b/src/Specific/solinas32_2e322m2e161m1_12limbs/compiler.sh
new file mode 100755
index 000000000..18e6b0ca8
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,26,27,27,27,27,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1' "$@"
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/compilerxx.sh b/src/Specific/solinas32_2e322m2e161m1_12limbs/compilerxx.sh
new file mode 100755
index 000000000..60b2abe1c
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,27,27,27,26,27,27,27,27,27,26}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='12' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1' "$@"
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.v
new file mode 100644
index 000000000..38da53e96
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..96e8095d6
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/femul.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/femul.v
new file mode 100644
index 000000000..727d23158
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/femulDisplay.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/femulDisplay.v
new file mode 100644
index 000000000..2072b2fd1
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.v
new file mode 100644
index 000000000..cc5758279
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..65f89f463
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.v
new file mode 100644
index 000000000..b364837f1
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..832850c1c
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.v
new file mode 100644
index 000000000..1e640ae0a
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..f1f929149
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1_12limbs/py_interpreter.sh b/src/Specific/solinas32_2e322m2e161m1_12limbs/py_interpreter.sh
new file mode 100755
index 000000000..4652867d2
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_12limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**322 - 2**161 - 1' -Dmodulus_bytes='26 + 5/6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e322m2e161m1/CurveParameters.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/CurveParameters.v
index d6740403e..d6740403e 100644
--- a/src/Specific/solinas32_2e322m2e161m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/Synthesis.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/Synthesis.v
new file mode 100644
index 000000000..fa0554410
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e322m2e161m1/compiler.sh b/src/Specific/solinas32_2e322m2e161m1_14limbs/compiler.sh
index 532b1e14f..532b1e14f 100755
--- a/src/Specific/solinas32_2e322m2e161m1/compiler.sh
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e322m2e161m1/compilerxx.sh b/src/Specific/solinas32_2e322m2e161m1_14limbs/compilerxx.sh
index 25299a73f..25299a73f 100755
--- a/src/Specific/solinas32_2e322m2e161m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/feadd.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/feadd.v
new file mode 100644
index 000000000..2d5207a49
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/feaddDisplay.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/feaddDisplay.v
new file mode 100644
index 000000000..058288807
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/femul.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/femul.v
new file mode 100644
index 000000000..645fbf494
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/femulDisplay.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/femulDisplay.v
new file mode 100644
index 000000000..5526cba07
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquare.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquare.v
new file mode 100644
index 000000000..445a76998
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquareDisplay.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquareDisplay.v
new file mode 100644
index 000000000..452075f5b
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/fesub.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesub.v
new file mode 100644
index 000000000..6e10b5360
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/fesubDisplay.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesubDisplay.v
new file mode 100644
index 000000000..30d1d831c
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/freeze.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/freeze.v
new file mode 100644
index 000000000..1e89dc14b
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1_14limbs/freezeDisplay.v b/src/Specific/solinas32_2e322m2e161m1_14limbs/freezeDisplay.v
new file mode 100644
index 000000000..7606e76c2
--- /dev/null
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e322m2e161m1_14limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e322m2e161m1/py_interpreter.sh b/src/Specific/solinas32_2e322m2e161m1_14limbs/py_interpreter.sh
index 936986933..936986933 100755
--- a/src/Specific/solinas32_2e322m2e161m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e322m2e161m1_14limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e336m17/Synthesis.v b/src/Specific/solinas32_2e336m17/Synthesis.v
deleted file mode 100644
index 083d1f5c0..000000000
--- a/src/Specific/solinas32_2e336m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e336m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m17/feadd.c b/src/Specific/solinas32_2e336m17/feadd.c
deleted file mode 100644
index 6b2a8feaf..000000000
--- a/src/Specific/solinas32_2e336m17/feadd.c
+++ /dev/null
@@ -1,45 +0,0 @@
-static void feadd(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- out[0] = (x5 + x31);
- out[1] = (x7 + x33);
- out[2] = (x9 + x35);
- out[3] = (x11 + x37);
- out[4] = (x13 + x39);
- out[5] = (x15 + x41);
- out[6] = (x17 + x43);
- out[7] = (x19 + x45);
- out[8] = (x21 + x47);
- out[9] = (x23 + x49);
- out[10] = (x25 + x51);
- out[11] = (x27 + x53);
- out[12] = (x29 + x55);
- out[13] = (x28 + x54);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m17/feadd.v b/src/Specific/solinas32_2e336m17/feadd.v
deleted file mode 100644
index 8c24caea9..000000000
--- a/src/Specific/solinas32_2e336m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m17/feaddDisplay.log b/src/Specific/solinas32_2e336m17/feaddDisplay.log
deleted file mode 100644
index ff11bcba0..000000000
--- a/src/Specific/solinas32_2e336m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- ((x28 + x54), (x29 + x55), (x27 + x53), (x25 + x51), (x23 + x49), (x21 + x47), (x19 + x45), (x17 + x43), (x15 + x41), (x13 + x39), (x11 + x37), (x9 + x35), (x7 + x33), (x5 + x31)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17/feaddDisplay.v b/src/Specific/solinas32_2e336m17/feaddDisplay.v
deleted file mode 100644
index a8b2df8aa..000000000
--- a/src/Specific/solinas32_2e336m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e336m17/femul.c b/src/Specific/solinas32_2e336m17/femul.c
deleted file mode 100644
index eb775fe27..000000000
--- a/src/Specific/solinas32_2e336m17/femul.c
+++ /dev/null
@@ -1,106 +0,0 @@
-static void femul(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- { uint64_t x56 = (((uint64_t)x5 * x54) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + (((uint64_t)x29 * x33) + ((uint64_t)x28 * x31))))))))))))));
- { uint64_t x57 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (((uint64_t)x27 * x33) + ((uint64_t)x29 * x31))))))))))))) + (0x11 * ((uint64_t)x28 * x54)));
- { uint64_t x58 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x27 * x31)))))))))))) + (0x11 * (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))));
- { uint64_t x59 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x25 * x31))))))))))) + (0x11 * (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))));
- { uint64_t x60 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x23 * x31)))))))))) + (0x11 * (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))));
- { uint64_t x61 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x21 * x31))))))))) + (0x11 * (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))));
- { uint64_t x62 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((uint64_t)x19 * x31)))))))) + (0x11 * (((uint64_t)x21 * x54) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((uint64_t)x28 * x47))))))));
- { uint64_t x63 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))) + (0x11 * (((uint64_t)x19 * x54) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((uint64_t)x28 * x45)))))))));
- { uint64_t x64 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))) + (0x11 * (((uint64_t)x17 * x54) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + ((uint64_t)x28 * x43))))))))));
- { uint64_t x65 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))) + (0x11 * (((uint64_t)x15 * x54) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((uint64_t)x28 * x41)))))))))));
- { uint64_t x66 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))) + (0x11 * (((uint64_t)x13 * x54) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x28 * x39))))))))))));
- { uint64_t x67 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))) + (0x11 * (((uint64_t)x11 * x54) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((uint64_t)x28 * x37)))))))))))));
- { uint64_t x68 = ((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (0x11 * (((uint64_t)x9 * x54) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x28 * x35))))))))))))));
- { uint64_t x69 = (((uint64_t)x5 * x31) + (0x11 * (((uint64_t)x7 * x54) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (((uint64_t)x29 * x35) + ((uint64_t)x28 * x33)))))))))))))));
- { uint64_t x70 = (x69 >> 0x18);
- { uint32_t x71 = ((uint32_t)x69 & 0xffffff);
- { uint64_t x72 = (x70 + x68);
- { uint64_t x73 = (x72 >> 0x18);
- { uint32_t x74 = ((uint32_t)x72 & 0xffffff);
- { uint64_t x75 = (x73 + x67);
- { uint64_t x76 = (x75 >> 0x18);
- { uint32_t x77 = ((uint32_t)x75 & 0xffffff);
- { uint64_t x78 = (x76 + x66);
- { uint64_t x79 = (x78 >> 0x18);
- { uint32_t x80 = ((uint32_t)x78 & 0xffffff);
- { uint64_t x81 = (x79 + x65);
- { uint64_t x82 = (x81 >> 0x18);
- { uint32_t x83 = ((uint32_t)x81 & 0xffffff);
- { uint64_t x84 = (x82 + x64);
- { uint64_t x85 = (x84 >> 0x18);
- { uint32_t x86 = ((uint32_t)x84 & 0xffffff);
- { uint64_t x87 = (x85 + x63);
- { uint64_t x88 = (x87 >> 0x18);
- { uint32_t x89 = ((uint32_t)x87 & 0xffffff);
- { uint64_t x90 = (x88 + x62);
- { uint64_t x91 = (x90 >> 0x18);
- { uint32_t x92 = ((uint32_t)x90 & 0xffffff);
- { uint64_t x93 = (x91 + x61);
- { uint64_t x94 = (x93 >> 0x18);
- { uint32_t x95 = ((uint32_t)x93 & 0xffffff);
- { uint64_t x96 = (x94 + x60);
- { uint64_t x97 = (x96 >> 0x18);
- { uint32_t x98 = ((uint32_t)x96 & 0xffffff);
- { uint64_t x99 = (x97 + x59);
- { uint64_t x100 = (x99 >> 0x18);
- { uint32_t x101 = ((uint32_t)x99 & 0xffffff);
- { uint64_t x102 = (x100 + x58);
- { uint64_t x103 = (x102 >> 0x18);
- { uint32_t x104 = ((uint32_t)x102 & 0xffffff);
- { uint64_t x105 = (x103 + x57);
- { uint64_t x106 = (x105 >> 0x18);
- { uint32_t x107 = ((uint32_t)x105 & 0xffffff);
- { uint64_t x108 = (x106 + x56);
- { uint32_t x109 = (uint32_t) (x108 >> 0x18);
- { uint32_t x110 = ((uint32_t)x108 & 0xffffff);
- { uint64_t x111 = (x71 + ((uint64_t)0x11 * x109));
- { uint32_t x112 = (uint32_t) (x111 >> 0x18);
- { uint32_t x113 = ((uint32_t)x111 & 0xffffff);
- { uint32_t x114 = (x112 + x74);
- { uint32_t x115 = (x114 >> 0x18);
- { uint32_t x116 = (x114 & 0xffffff);
- out[0] = x113;
- out[1] = x116;
- out[2] = (x115 + x77);
- out[3] = x80;
- out[4] = x83;
- out[5] = x86;
- out[6] = x89;
- out[7] = x92;
- out[8] = x95;
- out[9] = x98;
- out[10] = x101;
- out[11] = x104;
- out[12] = x107;
- out[13] = x110;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m17/femul.v b/src/Specific/solinas32_2e336m17/femul.v
deleted file mode 100644
index fe9aac600..000000000
--- a/src/Specific/solinas32_2e336m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m17/femulDisplay.log b/src/Specific/solinas32_2e336m17/femulDisplay.log
deleted file mode 100644
index d47b7bb6b..000000000
--- a/src/Specific/solinas32_2e336m17/femulDisplay.log
+++ /dev/null
@@ -1,68 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- uint64_t x56 = (((uint64_t)x5 * x54) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + (((uint64_t)x29 * x33) + ((uint64_t)x28 * x31))))))))))))));
- uint64_t x57 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (((uint64_t)x27 * x33) + ((uint64_t)x29 * x31))))))))))))) + (0x11 * ((uint64_t)x28 * x54)));
- uint64_t x58 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x27 * x31)))))))))))) + (0x11 * (((uint64_t)x29 * x54) + ((uint64_t)x28 * x55))));
- uint64_t x59 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + ((uint64_t)x25 * x31))))))))))) + (0x11 * (((uint64_t)x27 * x54) + (((uint64_t)x29 * x55) + ((uint64_t)x28 * x53)))));
- uint64_t x60 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + ((uint64_t)x23 * x31)))))))))) + (0x11 * (((uint64_t)x25 * x54) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x28 * x51))))));
- uint64_t x61 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + ((uint64_t)x21 * x31))))))))) + (0x11 * (((uint64_t)x23 * x54) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + ((uint64_t)x28 * x49)))))));
- uint64_t x62 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + ((uint64_t)x19 * x31)))))))) + (0x11 * (((uint64_t)x21 * x54) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((uint64_t)x28 * x47))))))));
- uint64_t x63 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + ((uint64_t)x17 * x31))))))) + (0x11 * (((uint64_t)x19 * x54) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((uint64_t)x28 * x45)))))))));
- uint64_t x64 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + ((uint64_t)x15 * x31)))))) + (0x11 * (((uint64_t)x17 * x54) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + ((uint64_t)x28 * x43))))))))));
- uint64_t x65 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + ((uint64_t)x13 * x31))))) + (0x11 * (((uint64_t)x15 * x54) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((uint64_t)x28 * x41)))))))))));
- uint64_t x66 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + ((uint64_t)x11 * x31)))) + (0x11 * (((uint64_t)x13 * x54) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x28 * x39))))))))))));
- uint64_t x67 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + ((uint64_t)x9 * x31))) + (0x11 * (((uint64_t)x11 * x54) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((uint64_t)x28 * x37)))))))))))));
- uint64_t x68 = ((((uint64_t)x5 * x33) + ((uint64_t)x7 * x31)) + (0x11 * (((uint64_t)x9 * x54) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x28 * x35))))))))))))));
- uint64_t x69 = (((uint64_t)x5 * x31) + (0x11 * (((uint64_t)x7 * x54) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + (((uint64_t)x29 * x35) + ((uint64_t)x28 * x33)))))))))))))));
- uint64_t x70 = (x69 >> 0x18);
- uint32_t x71 = ((uint32_t)x69 & 0xffffff);
- uint64_t x72 = (x70 + x68);
- uint64_t x73 = (x72 >> 0x18);
- uint32_t x74 = ((uint32_t)x72 & 0xffffff);
- uint64_t x75 = (x73 + x67);
- uint64_t x76 = (x75 >> 0x18);
- uint32_t x77 = ((uint32_t)x75 & 0xffffff);
- uint64_t x78 = (x76 + x66);
- uint64_t x79 = (x78 >> 0x18);
- uint32_t x80 = ((uint32_t)x78 & 0xffffff);
- uint64_t x81 = (x79 + x65);
- uint64_t x82 = (x81 >> 0x18);
- uint32_t x83 = ((uint32_t)x81 & 0xffffff);
- uint64_t x84 = (x82 + x64);
- uint64_t x85 = (x84 >> 0x18);
- uint32_t x86 = ((uint32_t)x84 & 0xffffff);
- uint64_t x87 = (x85 + x63);
- uint64_t x88 = (x87 >> 0x18);
- uint32_t x89 = ((uint32_t)x87 & 0xffffff);
- uint64_t x90 = (x88 + x62);
- uint64_t x91 = (x90 >> 0x18);
- uint32_t x92 = ((uint32_t)x90 & 0xffffff);
- uint64_t x93 = (x91 + x61);
- uint64_t x94 = (x93 >> 0x18);
- uint32_t x95 = ((uint32_t)x93 & 0xffffff);
- uint64_t x96 = (x94 + x60);
- uint64_t x97 = (x96 >> 0x18);
- uint32_t x98 = ((uint32_t)x96 & 0xffffff);
- uint64_t x99 = (x97 + x59);
- uint64_t x100 = (x99 >> 0x18);
- uint32_t x101 = ((uint32_t)x99 & 0xffffff);
- uint64_t x102 = (x100 + x58);
- uint64_t x103 = (x102 >> 0x18);
- uint32_t x104 = ((uint32_t)x102 & 0xffffff);
- uint64_t x105 = (x103 + x57);
- uint64_t x106 = (x105 >> 0x18);
- uint32_t x107 = ((uint32_t)x105 & 0xffffff);
- uint64_t x108 = (x106 + x56);
- uint32_t x109 = (uint32_t) (x108 >> 0x18);
- uint32_t x110 = ((uint32_t)x108 & 0xffffff);
- uint64_t x111 = (x71 + ((uint64_t)0x11 * x109));
- uint32_t x112 = (uint32_t) (x111 >> 0x18);
- uint32_t x113 = ((uint32_t)x111 & 0xffffff);
- uint32_t x114 = (x112 + x74);
- uint32_t x115 = (x114 >> 0x18);
- uint32_t x116 = (x114 & 0xffffff);
- return (Return x110, Return x107, Return x104, Return x101, Return x98, Return x95, Return x92, Return x89, Return x86, Return x83, Return x80, (x115 + x77), Return x116, Return x113))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17/femulDisplay.v b/src/Specific/solinas32_2e336m17/femulDisplay.v
deleted file mode 100644
index 915d6b319..000000000
--- a/src/Specific/solinas32_2e336m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e336m17/fesquare.c b/src/Specific/solinas32_2e336m17/fesquare.c
deleted file mode 100644
index 5b42995f1..000000000
--- a/src/Specific/solinas32_2e336m17/fesquare.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void fesquare(uint32_t out[14], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x27 = (((uint64_t)x2 * x25) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x25 * x2))))))))))))));
- { uint64_t x28 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * ((uint64_t)x25 * x25)));
- { uint64_t x29 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))));
- { uint64_t x30 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))));
- { uint64_t x31 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))));
- { uint64_t x32 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))));
- { uint64_t x33 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x25) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x25 * x18))))))));
- { uint64_t x34 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x25) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((uint64_t)x25 * x16)))))))));
- { uint64_t x35 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x25) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + ((uint64_t)x25 * x14))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x25) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((uint64_t)x25 * x12)))))))))));
- { uint64_t x37 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x25) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((uint64_t)x25 * x10))))))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x25) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + ((uint64_t)x25 * x8)))))))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x25) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((uint64_t)x25 * x6))))))))))))));
- { uint64_t x40 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x25) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((uint64_t)x25 * x4)))))))))))))));
- { uint64_t x41 = (x40 >> 0x18);
- { uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- { uint64_t x43 = (x41 + x39);
- { uint64_t x44 = (x43 >> 0x18);
- { uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- { uint64_t x46 = (x44 + x38);
- { uint64_t x47 = (x46 >> 0x18);
- { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
- { uint64_t x49 = (x47 + x37);
- { uint64_t x50 = (x49 >> 0x18);
- { uint32_t x51 = ((uint32_t)x49 & 0xffffff);
- { uint64_t x52 = (x50 + x36);
- { uint64_t x53 = (x52 >> 0x18);
- { uint32_t x54 = ((uint32_t)x52 & 0xffffff);
- { uint64_t x55 = (x53 + x35);
- { uint64_t x56 = (x55 >> 0x18);
- { uint32_t x57 = ((uint32_t)x55 & 0xffffff);
- { uint64_t x58 = (x56 + x34);
- { uint64_t x59 = (x58 >> 0x18);
- { uint32_t x60 = ((uint32_t)x58 & 0xffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x18);
- { uint32_t x63 = ((uint32_t)x61 & 0xffffff);
- { uint64_t x64 = (x62 + x32);
- { uint64_t x65 = (x64 >> 0x18);
- { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
- { uint64_t x67 = (x65 + x31);
- { uint64_t x68 = (x67 >> 0x18);
- { uint32_t x69 = ((uint32_t)x67 & 0xffffff);
- { uint64_t x70 = (x68 + x30);
- { uint64_t x71 = (x70 >> 0x18);
- { uint32_t x72 = ((uint32_t)x70 & 0xffffff);
- { uint64_t x73 = (x71 + x29);
- { uint64_t x74 = (x73 >> 0x18);
- { uint32_t x75 = ((uint32_t)x73 & 0xffffff);
- { uint64_t x76 = (x74 + x28);
- { uint64_t x77 = (x76 >> 0x18);
- { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
- { uint64_t x79 = (x77 + x27);
- { uint32_t x80 = (uint32_t) (x79 >> 0x18);
- { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
- { uint64_t x82 = (x42 + ((uint64_t)0x11 * x80));
- { uint32_t x83 = (uint32_t) (x82 >> 0x18);
- { uint32_t x84 = ((uint32_t)x82 & 0xffffff);
- { uint32_t x85 = (x83 + x45);
- { uint32_t x86 = (x85 >> 0x18);
- { uint32_t x87 = (x85 & 0xffffff);
- out[0] = x84;
- out[1] = x87;
- out[2] = (x86 + x48);
- out[3] = x51;
- out[4] = x54;
- out[5] = x57;
- out[6] = x60;
- out[7] = x63;
- out[8] = x66;
- out[9] = x69;
- out[10] = x72;
- out[11] = x75;
- out[12] = x78;
- out[13] = x81;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m17/fesquare.v b/src/Specific/solinas32_2e336m17/fesquare.v
deleted file mode 100644
index 9d9b5ac3f..000000000
--- a/src/Specific/solinas32_2e336m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m17/fesquareDisplay.log b/src/Specific/solinas32_2e336m17/fesquareDisplay.log
deleted file mode 100644
index 392aa9c3a..000000000
--- a/src/Specific/solinas32_2e336m17/fesquareDisplay.log
+++ /dev/null
@@ -1,68 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x27 = (((uint64_t)x2 * x25) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x25 * x2))))))))))))));
- uint64_t x28 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * ((uint64_t)x25 * x25)));
- uint64_t x29 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x25) + ((uint64_t)x25 * x26))));
- uint64_t x30 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x25) + (((uint64_t)x26 * x26) + ((uint64_t)x25 * x24)))));
- uint64_t x31 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x25) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((uint64_t)x25 * x22))))));
- uint64_t x32 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x25) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((uint64_t)x25 * x20)))))));
- uint64_t x33 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x25) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x25 * x18))))))));
- uint64_t x34 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x25) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((uint64_t)x25 * x16)))))))));
- uint64_t x35 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x25) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + ((uint64_t)x25 * x14))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x25) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((uint64_t)x25 * x12)))))))))));
- uint64_t x37 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x25) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((uint64_t)x25 * x10))))))))))));
- uint64_t x38 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x25) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + ((uint64_t)x25 * x8)))))))))))));
- uint64_t x39 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x25) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((uint64_t)x25 * x6))))))))))))));
- uint64_t x40 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x25) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((uint64_t)x25 * x4)))))))))))))));
- uint64_t x41 = (x40 >> 0x18);
- uint32_t x42 = ((uint32_t)x40 & 0xffffff);
- uint64_t x43 = (x41 + x39);
- uint64_t x44 = (x43 >> 0x18);
- uint32_t x45 = ((uint32_t)x43 & 0xffffff);
- uint64_t x46 = (x44 + x38);
- uint64_t x47 = (x46 >> 0x18);
- uint32_t x48 = ((uint32_t)x46 & 0xffffff);
- uint64_t x49 = (x47 + x37);
- uint64_t x50 = (x49 >> 0x18);
- uint32_t x51 = ((uint32_t)x49 & 0xffffff);
- uint64_t x52 = (x50 + x36);
- uint64_t x53 = (x52 >> 0x18);
- uint32_t x54 = ((uint32_t)x52 & 0xffffff);
- uint64_t x55 = (x53 + x35);
- uint64_t x56 = (x55 >> 0x18);
- uint32_t x57 = ((uint32_t)x55 & 0xffffff);
- uint64_t x58 = (x56 + x34);
- uint64_t x59 = (x58 >> 0x18);
- uint32_t x60 = ((uint32_t)x58 & 0xffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x18);
- uint32_t x63 = ((uint32_t)x61 & 0xffffff);
- uint64_t x64 = (x62 + x32);
- uint64_t x65 = (x64 >> 0x18);
- uint32_t x66 = ((uint32_t)x64 & 0xffffff);
- uint64_t x67 = (x65 + x31);
- uint64_t x68 = (x67 >> 0x18);
- uint32_t x69 = ((uint32_t)x67 & 0xffffff);
- uint64_t x70 = (x68 + x30);
- uint64_t x71 = (x70 >> 0x18);
- uint32_t x72 = ((uint32_t)x70 & 0xffffff);
- uint64_t x73 = (x71 + x29);
- uint64_t x74 = (x73 >> 0x18);
- uint32_t x75 = ((uint32_t)x73 & 0xffffff);
- uint64_t x76 = (x74 + x28);
- uint64_t x77 = (x76 >> 0x18);
- uint32_t x78 = ((uint32_t)x76 & 0xffffff);
- uint64_t x79 = (x77 + x27);
- uint32_t x80 = (uint32_t) (x79 >> 0x18);
- uint32_t x81 = ((uint32_t)x79 & 0xffffff);
- uint64_t x82 = (x42 + ((uint64_t)0x11 * x80));
- uint32_t x83 = (uint32_t) (x82 >> 0x18);
- uint32_t x84 = ((uint32_t)x82 & 0xffffff);
- uint32_t x85 = (x83 + x45);
- uint32_t x86 = (x85 >> 0x18);
- uint32_t x87 = (x85 & 0xffffff);
- return (Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, (x86 + x48), Return x87, Return x84))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17/fesquareDisplay.v b/src/Specific/solinas32_2e336m17/fesquareDisplay.v
deleted file mode 100644
index 35cf4baf9..000000000
--- a/src/Specific/solinas32_2e336m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e336m17/fesub.c b/src/Specific/solinas32_2e336m17/fesub.c
deleted file mode 100644
index c3cc34933..000000000
--- a/src/Specific/solinas32_2e336m17/fesub.c
+++ /dev/null
@@ -1,45 +0,0 @@
-static void fesub(uint32_t out[14], const uint32_t in1[14], const uint32_t in2[14]) {
- { const uint32_t x28 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x54 = in2[13];
- { const uint32_t x55 = in2[12];
- { const uint32_t x53 = in2[11];
- { const uint32_t x51 = in2[10];
- { const uint32_t x49 = in2[9];
- { const uint32_t x47 = in2[8];
- { const uint32_t x45 = in2[7];
- { const uint32_t x43 = in2[6];
- { const uint32_t x41 = in2[5];
- { const uint32_t x39 = in2[4];
- { const uint32_t x37 = in2[3];
- { const uint32_t x35 = in2[2];
- { const uint32_t x33 = in2[1];
- { const uint32_t x31 = in2[0];
- out[0] = ((0x1ffffde + x5) - x31);
- out[1] = ((0x1fffffe + x7) - x33);
- out[2] = ((0x1fffffe + x9) - x35);
- out[3] = ((0x1fffffe + x11) - x37);
- out[4] = ((0x1fffffe + x13) - x39);
- out[5] = ((0x1fffffe + x15) - x41);
- out[6] = ((0x1fffffe + x17) - x43);
- out[7] = ((0x1fffffe + x19) - x45);
- out[8] = ((0x1fffffe + x21) - x47);
- out[9] = ((0x1fffffe + x23) - x49);
- out[10] = ((0x1fffffe + x25) - x51);
- out[11] = ((0x1fffffe + x27) - x53);
- out[12] = ((0x1fffffe + x29) - x55);
- out[13] = ((0x1fffffe + x28) - x54);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m17/fesub.v b/src/Specific/solinas32_2e336m17/fesub.v
deleted file mode 100644
index 6b76eb1f9..000000000
--- a/src/Specific/solinas32_2e336m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m17/fesubDisplay.log b/src/Specific/solinas32_2e336m17/fesubDisplay.log
deleted file mode 100644
index 7abd23722..000000000
--- a/src/Specific/solinas32_2e336m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x28, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31))%core,
- (((0x1fffffe + x28) - x54), ((0x1fffffe + x29) - x55), ((0x1fffffe + x27) - x53), ((0x1fffffe + x25) - x51), ((0x1fffffe + x23) - x49), ((0x1fffffe + x21) - x47), ((0x1fffffe + x19) - x45), ((0x1fffffe + x17) - x43), ((0x1fffffe + x15) - x41), ((0x1fffffe + x13) - x39), ((0x1fffffe + x11) - x37), ((0x1fffffe + x9) - x35), ((0x1fffffe + x7) - x33), ((0x1ffffde + x5) - x31)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17/fesubDisplay.v b/src/Specific/solinas32_2e336m17/fesubDisplay.v
deleted file mode 100644
index fb8d5561f..000000000
--- a/src/Specific/solinas32_2e336m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e336m17/freeze.c b/src/Specific/solinas32_2e336m17/freeze.c
deleted file mode 100644
index 2d7a3f5f0..000000000
--- a/src/Specific/solinas32_2e336m17/freeze.c
+++ /dev/null
@@ -1,74 +0,0 @@
-static void freeze(uint32_t out[14], const uint32_t in1[14]) {
- { const uint32_t x25 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffef);
- { uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0xffffff);
- { uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0xffffff);
- { uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0xffffff);
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0xffffff);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0xffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0xffffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0xffffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0xffffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0xffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0xffffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0xffffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0xffffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0xffffff);
- { uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
- { uint32_t x70 = (x69 & 0xffffef);
- { uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
- { uint32_t x74 = (x69 & 0xffffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
- { uint32_t x78 = (x69 & 0xffffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
- { uint32_t x82 = (x69 & 0xffffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
- { uint32_t x86 = (x69 & 0xffffff);
- { uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
- { uint32_t x90 = (x69 & 0xffffff);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
- { uint32_t x94 = (x69 & 0xffffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
- { uint32_t x98 = (x69 & 0xffffff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
- { uint32_t x102 = (x69 & 0xffffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
- { uint32_t x106 = (x69 & 0xffffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
- { uint32_t x110 = (x69 & 0xffffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
- { uint32_t x114 = (x69 & 0xffffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
- { uint32_t x118 = (x69 & 0xffffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
- { uint32_t x122 = (x69 & 0xffffff);
- { uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
- out[0] = x72;
- out[1] = x76;
- out[2] = x80;
- out[3] = x84;
- out[4] = x88;
- out[5] = x92;
- out[6] = x96;
- out[7] = x100;
- out[8] = x104;
- out[9] = x108;
- out[10] = x112;
- out[11] = x116;
- out[12] = x120;
- out[13] = x124;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m17/freeze.v b/src/Specific/solinas32_2e336m17/freeze.v
deleted file mode 100644
index bc39af381..000000000
--- a/src/Specific/solinas32_2e336m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m17/freezeDisplay.log b/src/Specific/solinas32_2e336m17/freezeDisplay.log
deleted file mode 100644
index 17b8867bb..000000000
--- a/src/Specific/solinas32_2e336m17/freezeDisplay.log
+++ /dev/null
@@ -1,50 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x25, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffef);
- uint32_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x29, Return x4, 0xffffff);
- uint32_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x32, Return x6, 0xffffff);
- uint32_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x35, Return x8, 0xffffff);
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x10, 0xffffff);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x12, 0xffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x14, 0xffffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x16, 0xffffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x18, 0xffffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x20, 0xffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x22, 0xffffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x24, 0xffffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x26, 0xffffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x25, 0xffffff);
- uint32_t x69 = cmovznz32(x68, 0x0, 0xffffffff);
- uint32_t x70 = (x69 & 0xffffef);
- uint32_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x28, Return x70);
- uint32_t x74 = (x69 & 0xffffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x31, Return x74);
- uint32_t x78 = (x69 & 0xffffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x34, Return x78);
- uint32_t x82 = (x69 & 0xffffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x37, Return x82);
- uint32_t x86 = (x69 & 0xffffff);
- uint32_t x88, uint8_t x89 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x40, Return x86);
- uint32_t x90 = (x69 & 0xffffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x43, Return x90);
- uint32_t x94 = (x69 & 0xffffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x46, Return x94);
- uint32_t x98 = (x69 & 0xffffff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x49, Return x98);
- uint32_t x102 = (x69 & 0xffffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x52, Return x102);
- uint32_t x106 = (x69 & 0xffffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x55, Return x106);
- uint32_t x110 = (x69 & 0xffffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x58, Return x110);
- uint32_t x114 = (x69 & 0xffffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x61, Return x114);
- uint32_t x118 = (x69 & 0xffffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x64, Return x118);
- uint32_t x122 = (x69 & 0xffffff);
- uint32_t x124, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x67, Return x122);
- (Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92, Return x88, Return x84, Return x80, Return x76, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m17/freezeDisplay.v b/src/Specific/solinas32_2e336m17/freezeDisplay.v
deleted file mode 100644
index f35af8dec..000000000
--- a/src/Specific/solinas32_2e336m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/CurveParameters.v b/src/Specific/solinas32_2e336m17_13limbs/CurveParameters.v
new file mode 100644
index 000000000..267848b6c
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^336 - 17
+Base: 25 + 11/13
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 13%nat;
+ base := 25 + 11/13;
+ bitwidth := 32;
+ s := 2^336;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 13); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/Synthesis.v b/src/Specific/solinas32_2e336m17_13limbs/Synthesis.v
new file mode 100644
index 000000000..ec6a4e6f5
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/compiler.sh b/src/Specific/solinas32_2e336m17_13limbs/compiler.sh
new file mode 100755
index 000000000..4ff335bc0
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 17' "$@"
diff --git a/src/Specific/solinas32_2e336m17_13limbs/compilerxx.sh b/src/Specific/solinas32_2e336m17_13limbs/compilerxx.sh
new file mode 100755
index 000000000..ee8dbba28
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 17' "$@"
diff --git a/src/Specific/solinas32_2e336m17_13limbs/feadd.v b/src/Specific/solinas32_2e336m17_13limbs/feadd.v
new file mode 100644
index 000000000..87627e474
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..360718417
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/femul.v b/src/Specific/solinas32_2e336m17_13limbs/femul.v
new file mode 100644
index 000000000..7b93fabe0
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.v b/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.v
new file mode 100644
index 000000000..e8b27afb6
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesquare.v b/src/Specific/solinas32_2e336m17_13limbs/fesquare.v
new file mode 100644
index 000000000..f371426b4
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3a6eada0b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesub.v b/src/Specific/solinas32_2e336m17_13limbs/fesub.v
new file mode 100644
index 000000000..721620d20
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..014c00b64
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/freeze.v b/src/Specific/solinas32_2e336m17_13limbs/freeze.v
new file mode 100644
index 000000000..5752c3578
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..e68560c75
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e336m17_13limbs/py_interpreter.sh b/src/Specific/solinas32_2e336m17_13limbs/py_interpreter.sh
new file mode 100755
index 000000000..07030b62b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_13limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**336 - 17' -Dmodulus_bytes='25 + 11/13' -Da24='121665'
diff --git a/src/Specific/solinas32_2e336m17/CurveParameters.v b/src/Specific/solinas32_2e336m17_14limbs/CurveParameters.v
index 15113ce93..15113ce93 100644
--- a/src/Specific/solinas32_2e336m17/CurveParameters.v
+++ b/src/Specific/solinas32_2e336m17_14limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e336m17_14limbs/Synthesis.v b/src/Specific/solinas32_2e336m17_14limbs/Synthesis.v
new file mode 100644
index 000000000..753a0f2a6
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m17/compiler.sh b/src/Specific/solinas32_2e336m17_14limbs/compiler.sh
index 6126fdbdc..6126fdbdc 100755
--- a/src/Specific/solinas32_2e336m17/compiler.sh
+++ b/src/Specific/solinas32_2e336m17_14limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e336m17/compilerxx.sh b/src/Specific/solinas32_2e336m17_14limbs/compilerxx.sh
index f0e7ddfa1..f0e7ddfa1 100755
--- a/src/Specific/solinas32_2e336m17/compilerxx.sh
+++ b/src/Specific/solinas32_2e336m17_14limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e336m17_14limbs/feadd.v b/src/Specific/solinas32_2e336m17_14limbs/feadd.v
new file mode 100644
index 000000000..884edcecf
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/feaddDisplay.v b/src/Specific/solinas32_2e336m17_14limbs/feaddDisplay.v
new file mode 100644
index 000000000..3b63bcdfc
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/femul.v b/src/Specific/solinas32_2e336m17_14limbs/femul.v
new file mode 100644
index 000000000..3ecc61b71
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/femulDisplay.v b/src/Specific/solinas32_2e336m17_14limbs/femulDisplay.v
new file mode 100644
index 000000000..8222fa51f
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/fesquare.v b/src/Specific/solinas32_2e336m17_14limbs/fesquare.v
new file mode 100644
index 000000000..9dbeb805b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/fesquareDisplay.v b/src/Specific/solinas32_2e336m17_14limbs/fesquareDisplay.v
new file mode 100644
index 000000000..45ddc4d75
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/fesub.v b/src/Specific/solinas32_2e336m17_14limbs/fesub.v
new file mode 100644
index 000000000..bec589f96
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/fesubDisplay.v b/src/Specific/solinas32_2e336m17_14limbs/fesubDisplay.v
new file mode 100644
index 000000000..907de86ea
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/freeze.v b/src/Specific/solinas32_2e336m17_14limbs/freeze.v
new file mode 100644
index 000000000..607da7a00
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m17_14limbs/freezeDisplay.v b/src/Specific/solinas32_2e336m17_14limbs/freezeDisplay.v
new file mode 100644
index 000000000..4ff3f3e97
--- /dev/null
+++ b/src/Specific/solinas32_2e336m17_14limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m17_14limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e336m17/py_interpreter.sh b/src/Specific/solinas32_2e336m17_14limbs/py_interpreter.sh
index ed8665123..ed8665123 100755
--- a/src/Specific/solinas32_2e336m17/py_interpreter.sh
+++ b/src/Specific/solinas32_2e336m17_14limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e336m3/Synthesis.v b/src/Specific/solinas32_2e336m3/Synthesis.v
deleted file mode 100644
index 5d8c80a21..000000000
--- a/src/Specific/solinas32_2e336m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e336m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m3/feadd.c b/src/Specific/solinas32_2e336m3/feadd.c
deleted file mode 100644
index 68eccd2bc..000000000
--- a/src/Specific/solinas32_2e336m3/feadd.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void feadd(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = (x5 + x27);
- out[1] = (x7 + x29);
- out[2] = (x9 + x31);
- out[3] = (x11 + x33);
- out[4] = (x13 + x35);
- out[5] = (x15 + x37);
- out[6] = (x17 + x39);
- out[7] = (x19 + x41);
- out[8] = (x21 + x43);
- out[9] = (x23 + x45);
- out[10] = (x25 + x47);
- out[11] = (x24 + x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m3/feadd.v b/src/Specific/solinas32_2e336m3/feadd.v
deleted file mode 100644
index 86919e841..000000000
--- a/src/Specific/solinas32_2e336m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m3/feaddDisplay.log b/src/Specific/solinas32_2e336m3/feaddDisplay.log
deleted file mode 100644
index 4109af59c..000000000
--- a/src/Specific/solinas32_2e336m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- ((x24 + x46), (x25 + x47), (x23 + x45), (x21 + x43), (x19 + x41), (x17 + x39), (x15 + x37), (x13 + x35), (x11 + x33), (x9 + x31), (x7 + x29), (x5 + x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3/feaddDisplay.v b/src/Specific/solinas32_2e336m3/feaddDisplay.v
deleted file mode 100644
index 9e27e1a33..000000000
--- a/src/Specific/solinas32_2e336m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e336m3/femul.c b/src/Specific/solinas32_2e336m3/femul.c
deleted file mode 100644
index 4d7bf5a52..000000000
--- a/src/Specific/solinas32_2e336m3/femul.c
+++ /dev/null
@@ -1,92 +0,0 @@
-static void femul(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- { uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
- { uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x3 * ((uint64_t)x24 * x46)));
- { uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x3 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- { uint64_t x51 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x21 * x27))))))))) + (0x3 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- { uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x3 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- { uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x3 * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- { ℤ x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) +ℤ (0x3 * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- { ℤ x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) +ℤ (0x3 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- { ℤ x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- { ℤ x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- { ℤ x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- { ℤ x59 = (((uint64_t)x5 * x27) +ℤ (0x3 *ℤ (((uint64_t)x7 * x46) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x24 * x29)))))))))))));
- { uint64_t x60 = (x59 >> 0x1c);
- { uint32_t x61 = (x59 & 0xfffffff);
- { ℤ x62 = (x60 +ℤ x58);
- { uint64_t x63 = (x62 >> 0x1c);
- { uint32_t x64 = (x62 & 0xfffffff);
- { ℤ x65 = (x63 +ℤ x57);
- { uint64_t x66 = (x65 >> 0x1c);
- { uint32_t x67 = (x65 & 0xfffffff);
- { ℤ x68 = (x66 +ℤ x56);
- { uint64_t x69 = (x68 >> 0x1c);
- { uint32_t x70 = (x68 & 0xfffffff);
- { ℤ x71 = (x69 +ℤ x55);
- { uint64_t x72 = (x71 >> 0x1c);
- { uint32_t x73 = (x71 & 0xfffffff);
- { ℤ x74 = (x72 +ℤ x54);
- { uint64_t x75 = (x74 >> 0x1c);
- { uint32_t x76 = (x74 & 0xfffffff);
- { uint64_t x77 = (x75 + x53);
- { uint64_t x78 = (x77 >> 0x1c);
- { uint32_t x79 = ((uint32_t)x77 & 0xfffffff);
- { uint64_t x80 = (x78 + x52);
- { uint64_t x81 = (x80 >> 0x1c);
- { uint32_t x82 = ((uint32_t)x80 & 0xfffffff);
- { uint64_t x83 = (x81 + x51);
- { uint64_t x84 = (x83 >> 0x1c);
- { uint32_t x85 = ((uint32_t)x83 & 0xfffffff);
- { uint64_t x86 = (x84 + x50);
- { uint64_t x87 = (x86 >> 0x1c);
- { uint32_t x88 = ((uint32_t)x86 & 0xfffffff);
- { uint64_t x89 = (x87 + x49);
- { uint64_t x90 = (x89 >> 0x1c);
- { uint32_t x91 = ((uint32_t)x89 & 0xfffffff);
- { uint64_t x92 = (x90 + x48);
- { uint64_t x93 = (x92 >> 0x1c);
- { uint32_t x94 = ((uint32_t)x92 & 0xfffffff);
- { uint64_t x95 = (x61 + (0x3 * x93));
- { uint32_t x96 = (uint32_t) (x95 >> 0x1c);
- { uint32_t x97 = ((uint32_t)x95 & 0xfffffff);
- { uint32_t x98 = (x96 + x64);
- { uint32_t x99 = (x98 >> 0x1c);
- { uint32_t x100 = (x98 & 0xfffffff);
- out[0] = x97;
- out[1] = x100;
- out[2] = (x99 + x67);
- out[3] = x70;
- out[4] = x73;
- out[5] = x76;
- out[6] = x79;
- out[7] = x82;
- out[8] = x85;
- out[9] = x88;
- out[10] = x91;
- out[11] = x94;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m3/femul.v b/src/Specific/solinas32_2e336m3/femul.v
deleted file mode 100644
index d779203f0..000000000
--- a/src/Specific/solinas32_2e336m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m3/femulDisplay.log b/src/Specific/solinas32_2e336m3/femulDisplay.log
deleted file mode 100644
index 7b17e6bed..000000000
--- a/src/Specific/solinas32_2e336m3/femulDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- uint64_t x48 = (((uint64_t)x5 * x46) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + (((uint64_t)x25 * x29) + ((uint64_t)x24 * x27))))))))))));
- uint64_t x49 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + (((uint64_t)x23 * x29) + ((uint64_t)x25 * x27))))))))))) + (0x3 * ((uint64_t)x24 * x46)));
- uint64_t x50 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + (((uint64_t)x21 * x29) + ((uint64_t)x23 * x27)))))))))) + (0x3 * (((uint64_t)x25 * x46) + ((uint64_t)x24 * x47))));
- uint64_t x51 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + (((uint64_t)x19 * x29) + ((uint64_t)x21 * x27))))))))) + (0x3 * (((uint64_t)x23 * x46) + (((uint64_t)x25 * x47) + ((uint64_t)x24 * x45)))));
- uint64_t x52 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + (((uint64_t)x17 * x29) + ((uint64_t)x19 * x27)))))))) + (0x3 * (((uint64_t)x21 * x46) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x24 * x43))))));
- uint64_t x53 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + (((uint64_t)x15 * x29) + ((uint64_t)x17 * x27))))))) + (0x3 * (((uint64_t)x19 * x46) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + ((uint64_t)x24 * x41)))))));
- ℤ x54 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + (((uint64_t)x13 * x29) + ((uint64_t)x15 * x27)))))) +ℤ (0x3 * (((uint64_t)x17 * x46) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x24 * x39))))))));
- ℤ x55 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + (((uint64_t)x11 * x29) + ((uint64_t)x13 * x27))))) +ℤ (0x3 * (((uint64_t)x15 * x46) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + ((uint64_t)x24 * x37)))))))));
- ℤ x56 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + (((uint64_t)x9 * x29) + ((uint64_t)x11 * x27)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x46) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + ((uint64_t)x24 * x35))))))))));
- ℤ x57 = ((((uint64_t)x5 * x31) + (((uint64_t)x7 * x29) + ((uint64_t)x9 * x27))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x46) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + ((uint64_t)x24 * x33)))))))))));
- ℤ x58 = ((((uint64_t)x5 * x29) + ((uint64_t)x7 * x27)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x46) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + ((uint64_t)x24 * x31))))))))))));
- ℤ x59 = (((uint64_t)x5 * x27) +ℤ (0x3 *ℤ (((uint64_t)x7 * x46) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x24 * x29)))))))))))));
- uint64_t x60 = (x59 >> 0x1c);
- uint32_t x61 = (x59 & 0xfffffff);
- ℤ x62 = (x60 +ℤ x58);
- uint64_t x63 = (x62 >> 0x1c);
- uint32_t x64 = (x62 & 0xfffffff);
- ℤ x65 = (x63 +ℤ x57);
- uint64_t x66 = (x65 >> 0x1c);
- uint32_t x67 = (x65 & 0xfffffff);
- ℤ x68 = (x66 +ℤ x56);
- uint64_t x69 = (x68 >> 0x1c);
- uint32_t x70 = (x68 & 0xfffffff);
- ℤ x71 = (x69 +ℤ x55);
- uint64_t x72 = (x71 >> 0x1c);
- uint32_t x73 = (x71 & 0xfffffff);
- ℤ x74 = (x72 +ℤ x54);
- uint64_t x75 = (x74 >> 0x1c);
- uint32_t x76 = (x74 & 0xfffffff);
- uint64_t x77 = (x75 + x53);
- uint64_t x78 = (x77 >> 0x1c);
- uint32_t x79 = ((uint32_t)x77 & 0xfffffff);
- uint64_t x80 = (x78 + x52);
- uint64_t x81 = (x80 >> 0x1c);
- uint32_t x82 = ((uint32_t)x80 & 0xfffffff);
- uint64_t x83 = (x81 + x51);
- uint64_t x84 = (x83 >> 0x1c);
- uint32_t x85 = ((uint32_t)x83 & 0xfffffff);
- uint64_t x86 = (x84 + x50);
- uint64_t x87 = (x86 >> 0x1c);
- uint32_t x88 = ((uint32_t)x86 & 0xfffffff);
- uint64_t x89 = (x87 + x49);
- uint64_t x90 = (x89 >> 0x1c);
- uint32_t x91 = ((uint32_t)x89 & 0xfffffff);
- uint64_t x92 = (x90 + x48);
- uint64_t x93 = (x92 >> 0x1c);
- uint32_t x94 = ((uint32_t)x92 & 0xfffffff);
- uint64_t x95 = (x61 + (0x3 * x93));
- uint32_t x96 = (uint32_t) (x95 >> 0x1c);
- uint32_t x97 = ((uint32_t)x95 & 0xfffffff);
- uint32_t x98 = (x96 + x64);
- uint32_t x99 = (x98 >> 0x1c);
- uint32_t x100 = (x98 & 0xfffffff);
- return (Return x94, Return x91, Return x88, Return x85, Return x82, Return x79, Return x76, Return x73, Return x70, (x99 + x67), Return x100, Return x97))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3/femulDisplay.v b/src/Specific/solinas32_2e336m3/femulDisplay.v
deleted file mode 100644
index 38c069f1d..000000000
--- a/src/Specific/solinas32_2e336m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e336m3/fesquare.c b/src/Specific/solinas32_2e336m3/fesquare.c
deleted file mode 100644
index 70f7fecb8..000000000
--- a/src/Specific/solinas32_2e336m3/fesquare.c
+++ /dev/null
@@ -1,80 +0,0 @@
-static void fesquare(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
- { uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((uint64_t)x21 * x21)));
- { uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- { uint64_t x26 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- { uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- { uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- { ℤ x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ (0x3 * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- { ℤ x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0x3 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- { ℤ x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- { ℤ x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- { ℤ x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- { ℤ x34 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x21) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((uint64_t)x21 * x4)))))))))))));
- { uint64_t x35 = (x34 >> 0x1c);
- { uint32_t x36 = (x34 & 0xfffffff);
- { ℤ x37 = (x35 +ℤ x33);
- { uint64_t x38 = (x37 >> 0x1c);
- { uint32_t x39 = (x37 & 0xfffffff);
- { ℤ x40 = (x38 +ℤ x32);
- { uint64_t x41 = (x40 >> 0x1c);
- { uint32_t x42 = (x40 & 0xfffffff);
- { ℤ x43 = (x41 +ℤ x31);
- { uint64_t x44 = (x43 >> 0x1c);
- { uint32_t x45 = (x43 & 0xfffffff);
- { ℤ x46 = (x44 +ℤ x30);
- { uint64_t x47 = (x46 >> 0x1c);
- { uint32_t x48 = (x46 & 0xfffffff);
- { ℤ x49 = (x47 +ℤ x29);
- { uint64_t x50 = (x49 >> 0x1c);
- { uint32_t x51 = (x49 & 0xfffffff);
- { uint64_t x52 = (x50 + x28);
- { uint64_t x53 = (x52 >> 0x1c);
- { uint32_t x54 = ((uint32_t)x52 & 0xfffffff);
- { uint64_t x55 = (x53 + x27);
- { uint64_t x56 = (x55 >> 0x1c);
- { uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- { uint64_t x58 = (x56 + x26);
- { uint64_t x59 = (x58 >> 0x1c);
- { uint32_t x60 = ((uint32_t)x58 & 0xfffffff);
- { uint64_t x61 = (x59 + x25);
- { uint64_t x62 = (x61 >> 0x1c);
- { uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
- { uint64_t x64 = (x62 + x24);
- { uint64_t x65 = (x64 >> 0x1c);
- { uint32_t x66 = ((uint32_t)x64 & 0xfffffff);
- { uint64_t x67 = (x65 + x23);
- { uint64_t x68 = (x67 >> 0x1c);
- { uint32_t x69 = ((uint32_t)x67 & 0xfffffff);
- { uint64_t x70 = (x36 + (0x3 * x68));
- { uint32_t x71 = (uint32_t) (x70 >> 0x1c);
- { uint32_t x72 = ((uint32_t)x70 & 0xfffffff);
- { uint32_t x73 = (x71 + x39);
- { uint32_t x74 = (x73 >> 0x1c);
- { uint32_t x75 = (x73 & 0xfffffff);
- out[0] = x72;
- out[1] = x75;
- out[2] = (x74 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- out[7] = x57;
- out[8] = x60;
- out[9] = x63;
- out[10] = x66;
- out[11] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m3/fesquare.v b/src/Specific/solinas32_2e336m3/fesquare.v
deleted file mode 100644
index c0b5ef465..000000000
--- a/src/Specific/solinas32_2e336m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m3/fesquareDisplay.log b/src/Specific/solinas32_2e336m3/fesquareDisplay.log
deleted file mode 100644
index 656b75a45..000000000
--- a/src/Specific/solinas32_2e336m3/fesquareDisplay.log
+++ /dev/null
@@ -1,60 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x23 = (((uint64_t)x2 * x21) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x21 * x2))))))))))));
- uint64_t x24 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x3 * ((uint64_t)x21 * x21)));
- uint64_t x25 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x3 * (((uint64_t)x22 * x21) + ((uint64_t)x21 * x22))));
- uint64_t x26 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x3 * (((uint64_t)x20 * x21) + (((uint64_t)x22 * x22) + ((uint64_t)x21 * x20)))));
- uint64_t x27 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x3 * (((uint64_t)x18 * x21) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x21 * x18))))));
- uint64_t x28 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x3 * (((uint64_t)x16 * x21) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((uint64_t)x21 * x16)))))));
- ℤ x29 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ (0x3 * (((uint64_t)x14 * x21) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((uint64_t)x21 * x14))))))));
- ℤ x30 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) +ℤ (0x3 * (((uint64_t)x12 * x21) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((uint64_t)x21 * x12)))))))));
- ℤ x31 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x21) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((uint64_t)x21 * x10))))))))));
- ℤ x32 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x21) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((uint64_t)x21 * x8)))))))))));
- ℤ x33 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x21) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((uint64_t)x21 * x6))))))))))));
- ℤ x34 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ (((uint64_t)x4 * x21) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((uint64_t)x21 * x4)))))))))))));
- uint64_t x35 = (x34 >> 0x1c);
- uint32_t x36 = (x34 & 0xfffffff);
- ℤ x37 = (x35 +ℤ x33);
- uint64_t x38 = (x37 >> 0x1c);
- uint32_t x39 = (x37 & 0xfffffff);
- ℤ x40 = (x38 +ℤ x32);
- uint64_t x41 = (x40 >> 0x1c);
- uint32_t x42 = (x40 & 0xfffffff);
- ℤ x43 = (x41 +ℤ x31);
- uint64_t x44 = (x43 >> 0x1c);
- uint32_t x45 = (x43 & 0xfffffff);
- ℤ x46 = (x44 +ℤ x30);
- uint64_t x47 = (x46 >> 0x1c);
- uint32_t x48 = (x46 & 0xfffffff);
- ℤ x49 = (x47 +ℤ x29);
- uint64_t x50 = (x49 >> 0x1c);
- uint32_t x51 = (x49 & 0xfffffff);
- uint64_t x52 = (x50 + x28);
- uint64_t x53 = (x52 >> 0x1c);
- uint32_t x54 = ((uint32_t)x52 & 0xfffffff);
- uint64_t x55 = (x53 + x27);
- uint64_t x56 = (x55 >> 0x1c);
- uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
- uint64_t x58 = (x56 + x26);
- uint64_t x59 = (x58 >> 0x1c);
- uint32_t x60 = ((uint32_t)x58 & 0xfffffff);
- uint64_t x61 = (x59 + x25);
- uint64_t x62 = (x61 >> 0x1c);
- uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
- uint64_t x64 = (x62 + x24);
- uint64_t x65 = (x64 >> 0x1c);
- uint32_t x66 = ((uint32_t)x64 & 0xfffffff);
- uint64_t x67 = (x65 + x23);
- uint64_t x68 = (x67 >> 0x1c);
- uint32_t x69 = ((uint32_t)x67 & 0xfffffff);
- uint64_t x70 = (x36 + (0x3 * x68));
- uint32_t x71 = (uint32_t) (x70 >> 0x1c);
- uint32_t x72 = ((uint32_t)x70 & 0xfffffff);
- uint32_t x73 = (x71 + x39);
- uint32_t x74 = (x73 >> 0x1c);
- uint32_t x75 = (x73 & 0xfffffff);
- return (Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, Return x45, (x74 + x42), Return x75, Return x72))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3/fesquareDisplay.v b/src/Specific/solinas32_2e336m3/fesquareDisplay.v
deleted file mode 100644
index c2ac164d4..000000000
--- a/src/Specific/solinas32_2e336m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e336m3/fesub.c b/src/Specific/solinas32_2e336m3/fesub.c
deleted file mode 100644
index 1fbdaab1a..000000000
--- a/src/Specific/solinas32_2e336m3/fesub.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void fesub(uint32_t out[12], const uint32_t in1[12], const uint32_t in2[12]) {
- { const uint32_t x24 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x46 = in2[11];
- { const uint32_t x47 = in2[10];
- { const uint32_t x45 = in2[9];
- { const uint32_t x43 = in2[8];
- { const uint32_t x41 = in2[7];
- { const uint32_t x39 = in2[6];
- { const uint32_t x37 = in2[5];
- { const uint32_t x35 = in2[4];
- { const uint32_t x33 = in2[3];
- { const uint32_t x31 = in2[2];
- { const uint32_t x29 = in2[1];
- { const uint32_t x27 = in2[0];
- out[0] = ((0x1ffffffa + x5) - x27);
- out[1] = ((0x1ffffffe + x7) - x29);
- out[2] = ((0x1ffffffe + x9) - x31);
- out[3] = ((0x1ffffffe + x11) - x33);
- out[4] = ((0x1ffffffe + x13) - x35);
- out[5] = ((0x1ffffffe + x15) - x37);
- out[6] = ((0x1ffffffe + x17) - x39);
- out[7] = ((0x1ffffffe + x19) - x41);
- out[8] = ((0x1ffffffe + x21) - x43);
- out[9] = ((0x1ffffffe + x23) - x45);
- out[10] = ((0x1ffffffe + x25) - x47);
- out[11] = ((0x1ffffffe + x24) - x46);
- }}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m3/fesub.v b/src/Specific/solinas32_2e336m3/fesub.v
deleted file mode 100644
index a4e928b8b..000000000
--- a/src/Specific/solinas32_2e336m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m3/fesubDisplay.log b/src/Specific/solinas32_2e336m3/fesubDisplay.log
deleted file mode 100644
index b5fc20900..000000000
--- a/src/Specific/solinas32_2e336m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x24, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x46, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27))%core,
- (((0x1ffffffe + x24) - x46), ((0x1ffffffe + x25) - x47), ((0x1ffffffe + x23) - x45), ((0x1ffffffe + x21) - x43), ((0x1ffffffe + x19) - x41), ((0x1ffffffe + x17) - x39), ((0x1ffffffe + x15) - x37), ((0x1ffffffe + x13) - x35), ((0x1ffffffe + x11) - x33), ((0x1ffffffe + x9) - x31), ((0x1ffffffe + x7) - x29), ((0x1ffffffa + x5) - x27)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3/fesubDisplay.v b/src/Specific/solinas32_2e336m3/fesubDisplay.v
deleted file mode 100644
index eb482a923..000000000
--- a/src/Specific/solinas32_2e336m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e336m3/freeze.c b/src/Specific/solinas32_2e336m3/freeze.c
deleted file mode 100644
index 321731d94..000000000
--- a/src/Specific/solinas32_2e336m3/freeze.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void freeze(uint32_t out[12], const uint32_t in1[12]) {
- { const uint32_t x21 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffd);
- { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xfffffff);
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xfffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0xfffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0xfffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xfffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xfffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0xfffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0xfffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xfffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xfffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0xfffffff);
- { uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- { uint32_t x60 = (x59 & 0xffffffd);
- { uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- { uint32_t x64 = (x59 & 0xfffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- { uint32_t x68 = (x59 & 0xfffffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- { uint32_t x72 = (x59 & 0xfffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- { uint32_t x76 = (x59 & 0xfffffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- { uint32_t x80 = (x59 & 0xfffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- { uint32_t x84 = (x59 & 0xfffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- { uint32_t x88 = (x59 & 0xfffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- { uint32_t x92 = (x59 & 0xfffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- { uint32_t x96 = (x59 & 0xfffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- { uint32_t x100 = (x59 & 0xfffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- { uint32_t x104 = (x59 & 0xfffffff);
- { uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- out[0] = x62;
- out[1] = x66;
- out[2] = x70;
- out[3] = x74;
- out[4] = x78;
- out[5] = x82;
- out[6] = x86;
- out[7] = x90;
- out[8] = x94;
- out[9] = x98;
- out[10] = x102;
- out[11] = x106;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e336m3/freeze.v b/src/Specific/solinas32_2e336m3/freeze.v
deleted file mode 100644
index a1c667598..000000000
--- a/src/Specific/solinas32_2e336m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m3/freezeDisplay.log b/src/Specific/solinas32_2e336m3/freezeDisplay.log
deleted file mode 100644
index 8b4f4961f..000000000
--- a/src/Specific/solinas32_2e336m3/freezeDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x21, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffd);
- uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x4, 0xfffffff);
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x6, 0xfffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x8, 0xfffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x10, 0xfffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x12, 0xfffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x14, 0xfffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x16, 0xfffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x18, 0xfffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x20, 0xfffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x22, 0xfffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x21, 0xfffffff);
- uint32_t x59 = cmovznz32(x58, 0x0, 0xffffffff);
- uint32_t x60 = (x59 & 0xffffffd);
- uint32_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x24, Return x60);
- uint32_t x64 = (x59 & 0xfffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x27, Return x64);
- uint32_t x68 = (x59 & 0xfffffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x30, Return x68);
- uint32_t x72 = (x59 & 0xfffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x33, Return x72);
- uint32_t x76 = (x59 & 0xfffffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x36, Return x76);
- uint32_t x80 = (x59 & 0xfffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x39, Return x80);
- uint32_t x84 = (x59 & 0xfffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x42, Return x84);
- uint32_t x88 = (x59 & 0xfffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x45, Return x88);
- uint32_t x92 = (x59 & 0xfffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x48, Return x92);
- uint32_t x96 = (x59 & 0xfffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x51, Return x96);
- uint32_t x100 = (x59 & 0xfffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x54, Return x100);
- uint32_t x104 = (x59 & 0xfffffff);
- uint32_t x106, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x57, Return x104);
- (Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82, Return x78, Return x74, Return x70, Return x66, Return x62))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e336m3/freezeDisplay.v b/src/Specific/solinas32_2e336m3/freezeDisplay.v
deleted file mode 100644
index 946804223..000000000
--- a/src/Specific/solinas32_2e336m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e336m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e336m3/CurveParameters.v b/src/Specific/solinas32_2e336m3_12limbs/CurveParameters.v
index 8bcb0ddbc..8bcb0ddbc 100644
--- a/src/Specific/solinas32_2e336m3/CurveParameters.v
+++ b/src/Specific/solinas32_2e336m3_12limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e336m3_12limbs/Synthesis.v b/src/Specific/solinas32_2e336m3_12limbs/Synthesis.v
new file mode 100644
index 000000000..7e79a29d2
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m3/compiler.sh b/src/Specific/solinas32_2e336m3_12limbs/compiler.sh
index 0d799cc2e..0d799cc2e 100755
--- a/src/Specific/solinas32_2e336m3/compiler.sh
+++ b/src/Specific/solinas32_2e336m3_12limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e336m3/compilerxx.sh b/src/Specific/solinas32_2e336m3_12limbs/compilerxx.sh
index 19088ddf8..19088ddf8 100755
--- a/src/Specific/solinas32_2e336m3/compilerxx.sh
+++ b/src/Specific/solinas32_2e336m3_12limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e336m3_12limbs/feadd.v b/src/Specific/solinas32_2e336m3_12limbs/feadd.v
new file mode 100644
index 000000000..a8684812a
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/feaddDisplay.v b/src/Specific/solinas32_2e336m3_12limbs/feaddDisplay.v
new file mode 100644
index 000000000..4af3543fd
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/femul.v b/src/Specific/solinas32_2e336m3_12limbs/femul.v
new file mode 100644
index 000000000..74f5a357b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/femulDisplay.v b/src/Specific/solinas32_2e336m3_12limbs/femulDisplay.v
new file mode 100644
index 000000000..a3b8eeab9
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/fesquare.v b/src/Specific/solinas32_2e336m3_12limbs/fesquare.v
new file mode 100644
index 000000000..06c77680b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/fesquareDisplay.v b/src/Specific/solinas32_2e336m3_12limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9fba56cda
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/fesub.v b/src/Specific/solinas32_2e336m3_12limbs/fesub.v
new file mode 100644
index 000000000..bd7920e70
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/fesubDisplay.v b/src/Specific/solinas32_2e336m3_12limbs/fesubDisplay.v
new file mode 100644
index 000000000..63721b2c8
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/freeze.v b/src/Specific/solinas32_2e336m3_12limbs/freeze.v
new file mode 100644
index 000000000..bda5a779b
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m3_12limbs/freezeDisplay.v b/src/Specific/solinas32_2e336m3_12limbs/freezeDisplay.v
new file mode 100644
index 000000000..7ced6bff2
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_12limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_12limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e336m3/py_interpreter.sh b/src/Specific/solinas32_2e336m3_12limbs/py_interpreter.sh
index 36fca1cac..36fca1cac 100755
--- a/src/Specific/solinas32_2e336m3/py_interpreter.sh
+++ b/src/Specific/solinas32_2e336m3_12limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e336m3_13limbs/CurveParameters.v b/src/Specific/solinas32_2e336m3_13limbs/CurveParameters.v
new file mode 100644
index 000000000..101524c5a
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^336 - 3
+Base: 25 + 11/13
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 13%nat;
+ base := 25 + 11/13;
+ bitwidth := 32;
+ s := 2^336;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 13); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/Synthesis.v b/src/Specific/solinas32_2e336m3_13limbs/Synthesis.v
new file mode 100644
index 000000000..bbecc1814
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/compiler.sh b/src/Specific/solinas32_2e336m3_13limbs/compiler.sh
new file mode 100755
index 000000000..9c2f9ff86
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 3' "$@"
diff --git a/src/Specific/solinas32_2e336m3_13limbs/compilerxx.sh b/src/Specific/solinas32_2e336m3_13limbs/compilerxx.sh
new file mode 100755
index 000000000..fe70ff56c
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,25,26,26,26,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='13' -Dq_mpz='(1_mpz<<336) - 3' "$@"
diff --git a/src/Specific/solinas32_2e336m3_13limbs/feadd.v b/src/Specific/solinas32_2e336m3_13limbs/feadd.v
new file mode 100644
index 000000000..c9d7f10d4
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..6e021d222
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/femul.v b/src/Specific/solinas32_2e336m3_13limbs/femul.v
new file mode 100644
index 000000000..88e13cd2a
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.v b/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.v
new file mode 100644
index 000000000..abb9b6677
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesquare.v b/src/Specific/solinas32_2e336m3_13limbs/fesquare.v
new file mode 100644
index 000000000..1bfb48b1c
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ca633dab1
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesub.v b/src/Specific/solinas32_2e336m3_13limbs/fesub.v
new file mode 100644
index 000000000..da693a030
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..16ada5736
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/freeze.v b/src/Specific/solinas32_2e336m3_13limbs/freeze.v
new file mode 100644
index 000000000..e024a0703
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..5ceb1a0be
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e336m3_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e336m3_13limbs/py_interpreter.sh b/src/Specific/solinas32_2e336m3_13limbs/py_interpreter.sh
new file mode 100755
index 000000000..2750a6d19
--- /dev/null
+++ b/src/Specific/solinas32_2e336m3_13limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**336 - 3' -Dmodulus_bytes='25 + 11/13' -Da24='121665'
diff --git a/src/Specific/solinas32_2e338m15/Synthesis.v b/src/Specific/solinas32_2e338m15/Synthesis.v
deleted file mode 100644
index 439b5a185..000000000
--- a/src/Specific/solinas32_2e338m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e338m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e338m15/feadd.c b/src/Specific/solinas32_2e338m15/feadd.c
deleted file mode 100644
index dbbe1da57..000000000
--- a/src/Specific/solinas32_2e338m15/feadd.c
+++ /dev/null
@@ -1,42 +0,0 @@
-static void feadd(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- out[0] = (x5 + x29);
- out[1] = (x7 + x31);
- out[2] = (x9 + x33);
- out[3] = (x11 + x35);
- out[4] = (x13 + x37);
- out[5] = (x15 + x39);
- out[6] = (x17 + x41);
- out[7] = (x19 + x43);
- out[8] = (x21 + x45);
- out[9] = (x23 + x47);
- out[10] = (x25 + x49);
- out[11] = (x27 + x51);
- out[12] = (x26 + x50);
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e338m15/feadd.v b/src/Specific/solinas32_2e338m15/feadd.v
deleted file mode 100644
index 095179b6b..000000000
--- a/src/Specific/solinas32_2e338m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e338m15/feaddDisplay.log b/src/Specific/solinas32_2e338m15/feaddDisplay.log
deleted file mode 100644
index e64abeaba..000000000
--- a/src/Specific/solinas32_2e338m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- ((x26 + x50), (x27 + x51), (x25 + x49), (x23 + x47), (x21 + x45), (x19 + x43), (x17 + x41), (x15 + x39), (x13 + x37), (x11 + x35), (x9 + x33), (x7 + x31), (x5 + x29)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15/feaddDisplay.v b/src/Specific/solinas32_2e338m15/feaddDisplay.v
deleted file mode 100644
index 1623491db..000000000
--- a/src/Specific/solinas32_2e338m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e338m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e338m15/femul.c b/src/Specific/solinas32_2e338m15/femul.c
deleted file mode 100644
index 18e92ef65..000000000
--- a/src/Specific/solinas32_2e338m15/femul.c
+++ /dev/null
@@ -1,99 +0,0 @@
-static void femul(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- { uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
- { uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0xf * ((uint64_t)x26 * x50)));
- { uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0xf * (((uint64_t)x27 * x50) + ((uint64_t)x26 * x51))));
- { uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0xf * (((uint64_t)x25 * x50) + (((uint64_t)x27 * x51) + ((uint64_t)x26 * x49)))));
- { uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0xf * (((uint64_t)x23 * x50) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + ((uint64_t)x26 * x47))))));
- { uint64_t x57 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((uint64_t)x19 * x29)))))))) + (0xf * (((uint64_t)x21 * x50) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + ((uint64_t)x26 * x45)))))));
- { uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0xf * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
- { uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0xf * (((uint64_t)x17 * x50) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x26 * x41)))))))));
- { uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0xf * (((uint64_t)x15 * x50) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x26 * x39))))))))));
- { uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0xf * (((uint64_t)x13 * x50) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((uint64_t)x26 * x37)))))))))));
- { uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0xf * (((uint64_t)x11 * x50) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + ((uint64_t)x26 * x35))))))))))));
- { uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0xf * (((uint64_t)x9 * x50) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x26 * x33)))))))))))));
- { uint64_t x64 = (((uint64_t)x5 * x29) + (0xf * (((uint64_t)x7 * x50) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (((uint64_t)x27 * x33) + ((uint64_t)x26 * x31))))))))))))));
- { uint64_t x65 = (x64 >> 0x1a);
- { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- { uint64_t x67 = (x65 + x63);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- { uint64_t x70 = (x68 + x62);
- { uint64_t x71 = (x70 >> 0x1a);
- { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- { uint64_t x73 = (x71 + x61);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- { uint64_t x76 = (x74 + x60);
- { uint64_t x77 = (x76 >> 0x1a);
- { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- { uint64_t x79 = (x77 + x59);
- { uint64_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint64_t x82 = (x80 + x58);
- { uint64_t x83 = (x82 >> 0x1a);
- { uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- { uint64_t x85 = (x83 + x57);
- { uint64_t x86 = (x85 >> 0x1a);
- { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- { uint64_t x88 = (x86 + x56);
- { uint64_t x89 = (x88 >> 0x1a);
- { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- { uint64_t x91 = (x89 + x55);
- { uint64_t x92 = (x91 >> 0x1a);
- { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- { uint64_t x94 = (x92 + x54);
- { uint64_t x95 = (x94 >> 0x1a);
- { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- { uint64_t x97 = (x95 + x53);
- { uint64_t x98 = (x97 >> 0x1a);
- { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- { uint64_t x100 = (x98 + x52);
- { uint64_t x101 = (x100 >> 0x1a);
- { uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- { uint64_t x103 = (x66 + (0xf * x101));
- { uint32_t x104 = (uint32_t) (x103 >> 0x1a);
- { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- { uint32_t x106 = (x104 + x69);
- { uint32_t x107 = (x106 >> 0x1a);
- { uint32_t x108 = (x106 & 0x3ffffff);
- out[0] = x105;
- out[1] = x108;
- out[2] = (x107 + x72);
- out[3] = x75;
- out[4] = x78;
- out[5] = x81;
- out[6] = x84;
- out[7] = x87;
- out[8] = x90;
- out[9] = x93;
- out[10] = x96;
- out[11] = x99;
- out[12] = x102;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e338m15/femul.v b/src/Specific/solinas32_2e338m15/femul.v
deleted file mode 100644
index 3d335dfd8..000000000
--- a/src/Specific/solinas32_2e338m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e338m15/femulDisplay.log b/src/Specific/solinas32_2e338m15/femulDisplay.log
deleted file mode 100644
index 8de8577af..000000000
--- a/src/Specific/solinas32_2e338m15/femulDisplay.log
+++ /dev/null
@@ -1,64 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- uint64_t x52 = (((uint64_t)x5 * x50) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + (((uint64_t)x23 * x35) + (((uint64_t)x25 * x33) + (((uint64_t)x27 * x31) + ((uint64_t)x26 * x29)))))))))))));
- uint64_t x53 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + (((uint64_t)x19 * x37) + (((uint64_t)x21 * x35) + (((uint64_t)x23 * x33) + (((uint64_t)x25 * x31) + ((uint64_t)x27 * x29)))))))))))) + (0xf * ((uint64_t)x26 * x50)));
- uint64_t x54 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + (((uint64_t)x19 * x35) + (((uint64_t)x21 * x33) + (((uint64_t)x23 * x31) + ((uint64_t)x25 * x29))))))))))) + (0xf * (((uint64_t)x27 * x50) + ((uint64_t)x26 * x51))));
- uint64_t x55 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + (((uint64_t)x17 * x35) + (((uint64_t)x19 * x33) + (((uint64_t)x21 * x31) + ((uint64_t)x23 * x29)))))))))) + (0xf * (((uint64_t)x25 * x50) + (((uint64_t)x27 * x51) + ((uint64_t)x26 * x49)))));
- uint64_t x56 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + (((uint64_t)x15 * x35) + (((uint64_t)x17 * x33) + (((uint64_t)x19 * x31) + ((uint64_t)x21 * x29))))))))) + (0xf * (((uint64_t)x23 * x50) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + ((uint64_t)x26 * x47))))));
- uint64_t x57 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + (((uint64_t)x13 * x35) + (((uint64_t)x15 * x33) + (((uint64_t)x17 * x31) + ((uint64_t)x19 * x29)))))))) + (0xf * (((uint64_t)x21 * x50) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + ((uint64_t)x26 * x45)))))));
- uint64_t x58 = ((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + (((uint64_t)x11 * x35) + (((uint64_t)x13 * x33) + (((uint64_t)x15 * x31) + ((uint64_t)x17 * x29))))))) + (0xf * (((uint64_t)x19 * x50) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + ((uint64_t)x26 * x43))))))));
- uint64_t x59 = ((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + (((uint64_t)x9 * x35) + (((uint64_t)x11 * x33) + (((uint64_t)x13 * x31) + ((uint64_t)x15 * x29)))))) + (0xf * (((uint64_t)x17 * x50) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x26 * x41)))))))));
- uint64_t x60 = ((((uint64_t)x5 * x37) + (((uint64_t)x7 * x35) + (((uint64_t)x9 * x33) + (((uint64_t)x11 * x31) + ((uint64_t)x13 * x29))))) + (0xf * (((uint64_t)x15 * x50) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x26 * x39))))))))));
- uint64_t x61 = ((((uint64_t)x5 * x35) + (((uint64_t)x7 * x33) + (((uint64_t)x9 * x31) + ((uint64_t)x11 * x29)))) + (0xf * (((uint64_t)x13 * x50) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + ((uint64_t)x26 * x37)))))))))));
- uint64_t x62 = ((((uint64_t)x5 * x33) + (((uint64_t)x7 * x31) + ((uint64_t)x9 * x29))) + (0xf * (((uint64_t)x11 * x50) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + (((uint64_t)x25 * x39) + (((uint64_t)x27 * x37) + ((uint64_t)x26 * x35))))))))))));
- uint64_t x63 = ((((uint64_t)x5 * x31) + ((uint64_t)x7 * x29)) + (0xf * (((uint64_t)x9 * x50) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + (((uint64_t)x23 * x39) + (((uint64_t)x25 * x37) + (((uint64_t)x27 * x35) + ((uint64_t)x26 * x33)))))))))))));
- uint64_t x64 = (((uint64_t)x5 * x29) + (0xf * (((uint64_t)x7 * x50) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + (((uint64_t)x23 * x37) + (((uint64_t)x25 * x35) + (((uint64_t)x27 * x33) + ((uint64_t)x26 * x31))))))))))))));
- uint64_t x65 = (x64 >> 0x1a);
- uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- uint64_t x67 = (x65 + x63);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- uint64_t x70 = (x68 + x62);
- uint64_t x71 = (x70 >> 0x1a);
- uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- uint64_t x73 = (x71 + x61);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- uint64_t x76 = (x74 + x60);
- uint64_t x77 = (x76 >> 0x1a);
- uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- uint64_t x79 = (x77 + x59);
- uint64_t x80 = (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint64_t x82 = (x80 + x58);
- uint64_t x83 = (x82 >> 0x1a);
- uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- uint64_t x85 = (x83 + x57);
- uint64_t x86 = (x85 >> 0x1a);
- uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- uint64_t x88 = (x86 + x56);
- uint64_t x89 = (x88 >> 0x1a);
- uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- uint64_t x91 = (x89 + x55);
- uint64_t x92 = (x91 >> 0x1a);
- uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- uint64_t x94 = (x92 + x54);
- uint64_t x95 = (x94 >> 0x1a);
- uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- uint64_t x97 = (x95 + x53);
- uint64_t x98 = (x97 >> 0x1a);
- uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- uint64_t x100 = (x98 + x52);
- uint64_t x101 = (x100 >> 0x1a);
- uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- uint64_t x103 = (x66 + (0xf * x101));
- uint32_t x104 = (uint32_t) (x103 >> 0x1a);
- uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- uint32_t x106 = (x104 + x69);
- uint32_t x107 = (x106 >> 0x1a);
- uint32_t x108 = (x106 & 0x3ffffff);
- return (Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x107 + x72), Return x108, Return x105))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15/femulDisplay.v b/src/Specific/solinas32_2e338m15/femulDisplay.v
deleted file mode 100644
index cf7999317..000000000
--- a/src/Specific/solinas32_2e338m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e338m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e338m15/fesquare.c b/src/Specific/solinas32_2e338m15/fesquare.c
deleted file mode 100644
index 667230a95..000000000
--- a/src/Specific/solinas32_2e338m15/fesquare.c
+++ /dev/null
@@ -1,86 +0,0 @@
-static void fesquare(uint32_t out[13], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
- { uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0xf * ((uint64_t)x23 * x23)));
- { uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xf * (((uint64_t)x24 * x23) + ((uint64_t)x23 * x24))));
- { uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0xf * (((uint64_t)x22 * x23) + (((uint64_t)x24 * x24) + ((uint64_t)x23 * x22)))));
- { uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xf * (((uint64_t)x20 * x23) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((uint64_t)x23 * x20))))));
- { uint64_t x30 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (((uint64_t)x18 * x23) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x23 * x18)))))));
- { uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x23) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((uint64_t)x23 * x14)))))))));
- { uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x23) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((uint64_t)x23 * x12))))))))));
- { uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x23) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((uint64_t)x23 * x10)))))))))));
- { uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x23) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + ((uint64_t)x23 * x8))))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x23) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + ((uint64_t)x23 * x6)))))))))))));
- { uint64_t x37 = (((uint64_t)x2 * x2) + (0xf * (((uint64_t)x4 * x23) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + ((uint64_t)x23 * x4))))))))))))));
- { uint64_t x38 = (x37 >> 0x1a);
- { uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- { uint64_t x40 = (x38 + x36);
- { uint64_t x41 = (x40 >> 0x1a);
- { uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- { uint64_t x43 = (x41 + x35);
- { uint64_t x44 = (x43 >> 0x1a);
- { uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- { uint64_t x46 = (x44 + x34);
- { uint64_t x47 = (x46 >> 0x1a);
- { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- { uint64_t x49 = (x47 + x33);
- { uint64_t x50 = (x49 >> 0x1a);
- { uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- { uint64_t x52 = (x50 + x32);
- { uint64_t x53 = (x52 >> 0x1a);
- { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- { uint64_t x55 = (x53 + x31);
- { uint64_t x56 = (x55 >> 0x1a);
- { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- { uint64_t x58 = (x56 + x30);
- { uint64_t x59 = (x58 >> 0x1a);
- { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- { uint64_t x61 = (x59 + x29);
- { uint64_t x62 = (x61 >> 0x1a);
- { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- { uint64_t x64 = (x62 + x28);
- { uint64_t x65 = (x64 >> 0x1a);
- { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- { uint64_t x67 = (x65 + x27);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- { uint64_t x70 = (x68 + x26);
- { uint64_t x71 = (x70 >> 0x1a);
- { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- { uint64_t x73 = (x71 + x25);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- { uint64_t x76 = (x39 + (0xf * x74));
- { uint32_t x77 = (uint32_t) (x76 >> 0x1a);
- { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- { uint32_t x79 = (x77 + x42);
- { uint32_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = (x79 & 0x3ffffff);
- out[0] = x78;
- out[1] = x81;
- out[2] = (x80 + x45);
- out[3] = x48;
- out[4] = x51;
- out[5] = x54;
- out[6] = x57;
- out[7] = x60;
- out[8] = x63;
- out[9] = x66;
- out[10] = x69;
- out[11] = x72;
- out[12] = x75;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e338m15/fesquare.v b/src/Specific/solinas32_2e338m15/fesquare.v
deleted file mode 100644
index f0f584db6..000000000
--- a/src/Specific/solinas32_2e338m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e338m15/fesquareDisplay.log b/src/Specific/solinas32_2e338m15/fesquareDisplay.log
deleted file mode 100644
index f7b5ca625..000000000
--- a/src/Specific/solinas32_2e338m15/fesquareDisplay.log
+++ /dev/null
@@ -1,64 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x25 = (((uint64_t)x2 * x23) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x23 * x2)))))))))))));
- uint64_t x26 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0xf * ((uint64_t)x23 * x23)));
- uint64_t x27 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0xf * (((uint64_t)x24 * x23) + ((uint64_t)x23 * x24))));
- uint64_t x28 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0xf * (((uint64_t)x22 * x23) + (((uint64_t)x24 * x24) + ((uint64_t)x23 * x22)))));
- uint64_t x29 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0xf * (((uint64_t)x20 * x23) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + ((uint64_t)x23 * x20))))));
- uint64_t x30 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0xf * (((uint64_t)x18 * x23) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x23 * x18)))))));
- uint64_t x31 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0xf * (((uint64_t)x16 * x23) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + ((uint64_t)x23 * x16))))))));
- uint64_t x32 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xf * (((uint64_t)x14 * x23) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + ((uint64_t)x23 * x14)))))))));
- uint64_t x33 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * (((uint64_t)x12 * x23) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((uint64_t)x23 * x12))))))))));
- uint64_t x34 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0xf * (((uint64_t)x10 * x23) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + ((uint64_t)x23 * x10)))))))))));
- uint64_t x35 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x23) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + ((uint64_t)x23 * x8))))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x23) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + ((uint64_t)x23 * x6)))))))))))));
- uint64_t x37 = (((uint64_t)x2 * x2) + (0xf * (((uint64_t)x4 * x23) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + ((uint64_t)x23 * x4))))))))))))));
- uint64_t x38 = (x37 >> 0x1a);
- uint32_t x39 = ((uint32_t)x37 & 0x3ffffff);
- uint64_t x40 = (x38 + x36);
- uint64_t x41 = (x40 >> 0x1a);
- uint32_t x42 = ((uint32_t)x40 & 0x3ffffff);
- uint64_t x43 = (x41 + x35);
- uint64_t x44 = (x43 >> 0x1a);
- uint32_t x45 = ((uint32_t)x43 & 0x3ffffff);
- uint64_t x46 = (x44 + x34);
- uint64_t x47 = (x46 >> 0x1a);
- uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- uint64_t x49 = (x47 + x33);
- uint64_t x50 = (x49 >> 0x1a);
- uint32_t x51 = ((uint32_t)x49 & 0x3ffffff);
- uint64_t x52 = (x50 + x32);
- uint64_t x53 = (x52 >> 0x1a);
- uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- uint64_t x55 = (x53 + x31);
- uint64_t x56 = (x55 >> 0x1a);
- uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- uint64_t x58 = (x56 + x30);
- uint64_t x59 = (x58 >> 0x1a);
- uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- uint64_t x61 = (x59 + x29);
- uint64_t x62 = (x61 >> 0x1a);
- uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- uint64_t x64 = (x62 + x28);
- uint64_t x65 = (x64 >> 0x1a);
- uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- uint64_t x67 = (x65 + x27);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- uint64_t x70 = (x68 + x26);
- uint64_t x71 = (x70 >> 0x1a);
- uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- uint64_t x73 = (x71 + x25);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- uint64_t x76 = (x39 + (0xf * x74));
- uint32_t x77 = (uint32_t) (x76 >> 0x1a);
- uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- uint32_t x79 = (x77 + x42);
- uint32_t x80 = (x79 >> 0x1a);
- uint32_t x81 = (x79 & 0x3ffffff);
- return (Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, Return x54, Return x51, Return x48, (x80 + x45), Return x81, Return x78))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15/fesquareDisplay.v b/src/Specific/solinas32_2e338m15/fesquareDisplay.v
deleted file mode 100644
index aab235aab..000000000
--- a/src/Specific/solinas32_2e338m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e338m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e338m15/fesub.c b/src/Specific/solinas32_2e338m15/fesub.c
deleted file mode 100644
index 5278414ba..000000000
--- a/src/Specific/solinas32_2e338m15/fesub.c
+++ /dev/null
@@ -1,42 +0,0 @@
-static void fesub(uint32_t out[13], const uint32_t in1[13], const uint32_t in2[13]) {
- { const uint32_t x26 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x50 = in2[12];
- { const uint32_t x51 = in2[11];
- { const uint32_t x49 = in2[10];
- { const uint32_t x47 = in2[9];
- { const uint32_t x45 = in2[8];
- { const uint32_t x43 = in2[7];
- { const uint32_t x41 = in2[6];
- { const uint32_t x39 = in2[5];
- { const uint32_t x37 = in2[4];
- { const uint32_t x35 = in2[3];
- { const uint32_t x33 = in2[2];
- { const uint32_t x31 = in2[1];
- { const uint32_t x29 = in2[0];
- out[0] = ((0x7ffffe2 + x5) - x29);
- out[1] = ((0x7fffffe + x7) - x31);
- out[2] = ((0x7fffffe + x9) - x33);
- out[3] = ((0x7fffffe + x11) - x35);
- out[4] = ((0x7fffffe + x13) - x37);
- out[5] = ((0x7fffffe + x15) - x39);
- out[6] = ((0x7fffffe + x17) - x41);
- out[7] = ((0x7fffffe + x19) - x43);
- out[8] = ((0x7fffffe + x21) - x45);
- out[9] = ((0x7fffffe + x23) - x47);
- out[10] = ((0x7fffffe + x25) - x49);
- out[11] = ((0x7fffffe + x27) - x51);
- out[12] = ((0x7fffffe + x26) - x50);
- }}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e338m15/fesub.v b/src/Specific/solinas32_2e338m15/fesub.v
deleted file mode 100644
index a85d5e7c5..000000000
--- a/src/Specific/solinas32_2e338m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e338m15/fesubDisplay.log b/src/Specific/solinas32_2e338m15/fesubDisplay.log
deleted file mode 100644
index fce0d0a23..000000000
--- a/src/Specific/solinas32_2e338m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x26, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x50, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29))%core,
- (((0x7fffffe + x26) - x50), ((0x7fffffe + x27) - x51), ((0x7fffffe + x25) - x49), ((0x7fffffe + x23) - x47), ((0x7fffffe + x21) - x45), ((0x7fffffe + x19) - x43), ((0x7fffffe + x17) - x41), ((0x7fffffe + x15) - x39), ((0x7fffffe + x13) - x37), ((0x7fffffe + x11) - x35), ((0x7fffffe + x9) - x33), ((0x7fffffe + x7) - x31), ((0x7ffffe2 + x5) - x29)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15/fesubDisplay.v b/src/Specific/solinas32_2e338m15/fesubDisplay.v
deleted file mode 100644
index 2b1acc24c..000000000
--- a/src/Specific/solinas32_2e338m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e338m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e338m15/freeze.c b/src/Specific/solinas32_2e338m15/freeze.c
deleted file mode 100644
index a37f312b1..000000000
--- a/src/Specific/solinas32_2e338m15/freeze.c
+++ /dev/null
@@ -1,69 +0,0 @@
-static void freeze(uint32_t out[13], const uint32_t in1[13]) {
- { const uint32_t x23 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff1);
- { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x3ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x3ffffff);
- { uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
- { uint32_t x65 = (x64 & 0x3fffff1);
- { uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
- { uint32_t x69 = (x64 & 0x3ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
- { uint32_t x73 = (x64 & 0x3ffffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
- { uint32_t x77 = (x64 & 0x3ffffff);
- { uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
- { uint32_t x81 = (x64 & 0x3ffffff);
- { uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
- { uint32_t x85 = (x64 & 0x3ffffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
- { uint32_t x89 = (x64 & 0x3ffffff);
- { uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
- { uint32_t x93 = (x64 & 0x3ffffff);
- { uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
- { uint32_t x97 = (x64 & 0x3ffffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
- { uint32_t x101 = (x64 & 0x3ffffff);
- { uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
- { uint32_t x105 = (x64 & 0x3ffffff);
- { uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
- { uint32_t x109 = (x64 & 0x3ffffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
- { uint32_t x113 = (x64 & 0x3ffffff);
- { uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
- out[0] = x67;
- out[1] = x71;
- out[2] = x75;
- out[3] = x79;
- out[4] = x83;
- out[5] = x87;
- out[6] = x91;
- out[7] = x95;
- out[8] = x99;
- out[9] = x103;
- out[10] = x107;
- out[11] = x111;
- out[12] = x115;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e338m15/freeze.v b/src/Specific/solinas32_2e338m15/freeze.v
deleted file mode 100644
index 2d8c40ab3..000000000
--- a/src/Specific/solinas32_2e338m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e338m15/freezeDisplay.log b/src/Specific/solinas32_2e338m15/freezeDisplay.log
deleted file mode 100644
index 8f8255a0d..000000000
--- a/src/Specific/solinas32_2e338m15/freezeDisplay.log
+++ /dev/null
@@ -1,47 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x23, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff1);
- uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x4, 0x3ffffff);
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x6, 0x3ffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x8, 0x3ffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x10, 0x3ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x12, 0x3ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x14, 0x3ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x16, 0x3ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x18, 0x3ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x20, 0x3ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x22, 0x3ffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x24, 0x3ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x23, 0x3ffffff);
- uint32_t x64 = cmovznz32(x63, 0x0, 0xffffffff);
- uint32_t x65 = (x64 & 0x3fffff1);
- uint32_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x26, Return x65);
- uint32_t x69 = (x64 & 0x3ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x29, Return x69);
- uint32_t x73 = (x64 & 0x3ffffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x32, Return x73);
- uint32_t x77 = (x64 & 0x3ffffff);
- uint32_t x79, uint8_t x80 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x35, Return x77);
- uint32_t x81 = (x64 & 0x3ffffff);
- uint32_t x83, uint8_t x84 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x38, Return x81);
- uint32_t x85 = (x64 & 0x3ffffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x41, Return x85);
- uint32_t x89 = (x64 & 0x3ffffff);
- uint32_t x91, uint8_t x92 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x44, Return x89);
- uint32_t x93 = (x64 & 0x3ffffff);
- uint32_t x95, uint8_t x96 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x47, Return x93);
- uint32_t x97 = (x64 & 0x3ffffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x50, Return x97);
- uint32_t x101 = (x64 & 0x3ffffff);
- uint32_t x103, uint8_t x104 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x53, Return x101);
- uint32_t x105 = (x64 & 0x3ffffff);
- uint32_t x107, uint8_t x108 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x104, Return x56, Return x105);
- uint32_t x109 = (x64 & 0x3ffffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x59, Return x109);
- uint32_t x113 = (x64 & 0x3ffffff);
- uint32_t x115, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x62, Return x113);
- (Return x115, Return x111, Return x107, Return x103, Return x99, Return x95, Return x91, Return x87, Return x83, Return x79, Return x75, Return x71, Return x67))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e338m15/freezeDisplay.v b/src/Specific/solinas32_2e338m15/freezeDisplay.v
deleted file mode 100644
index e4f5d9bf2..000000000
--- a/src/Specific/solinas32_2e338m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e338m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e338m15/CurveParameters.v b/src/Specific/solinas32_2e338m15_13limbs/CurveParameters.v
index a76083880..a76083880 100644
--- a/src/Specific/solinas32_2e338m15/CurveParameters.v
+++ b/src/Specific/solinas32_2e338m15_13limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e338m15_13limbs/Synthesis.v b/src/Specific/solinas32_2e338m15_13limbs/Synthesis.v
new file mode 100644
index 000000000..900488fa0
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e338m15/compiler.sh b/src/Specific/solinas32_2e338m15_13limbs/compiler.sh
index 14f69d38d..14f69d38d 100755
--- a/src/Specific/solinas32_2e338m15/compiler.sh
+++ b/src/Specific/solinas32_2e338m15_13limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e338m15/compilerxx.sh b/src/Specific/solinas32_2e338m15_13limbs/compilerxx.sh
index ef6b13892..ef6b13892 100755
--- a/src/Specific/solinas32_2e338m15/compilerxx.sh
+++ b/src/Specific/solinas32_2e338m15_13limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e338m15_13limbs/feadd.v b/src/Specific/solinas32_2e338m15_13limbs/feadd.v
new file mode 100644
index 000000000..96ee18173
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/feaddDisplay.v b/src/Specific/solinas32_2e338m15_13limbs/feaddDisplay.v
new file mode 100644
index 000000000..5e028d088
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/femul.v b/src/Specific/solinas32_2e338m15_13limbs/femul.v
new file mode 100644
index 000000000..36b25e510
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/femulDisplay.v b/src/Specific/solinas32_2e338m15_13limbs/femulDisplay.v
new file mode 100644
index 000000000..16e1ac5aa
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/fesquare.v b/src/Specific/solinas32_2e338m15_13limbs/fesquare.v
new file mode 100644
index 000000000..33dc4dd98
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/fesquareDisplay.v b/src/Specific/solinas32_2e338m15_13limbs/fesquareDisplay.v
new file mode 100644
index 000000000..04abafbe0
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/fesub.v b/src/Specific/solinas32_2e338m15_13limbs/fesub.v
new file mode 100644
index 000000000..e000364a7
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/fesubDisplay.v b/src/Specific/solinas32_2e338m15_13limbs/fesubDisplay.v
new file mode 100644
index 000000000..4a3676ddf
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/freeze.v b/src/Specific/solinas32_2e338m15_13limbs/freeze.v
new file mode 100644
index 000000000..cab653cac
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e338m15_13limbs/freezeDisplay.v b/src/Specific/solinas32_2e338m15_13limbs/freezeDisplay.v
new file mode 100644
index 000000000..734bec166
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_13limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_13limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e338m15/py_interpreter.sh b/src/Specific/solinas32_2e338m15_13limbs/py_interpreter.sh
index 3a4b1a469..3a4b1a469 100755
--- a/src/Specific/solinas32_2e338m15/py_interpreter.sh
+++ b/src/Specific/solinas32_2e338m15_13limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e338m15_14limbs/CurveParameters.v b/src/Specific/solinas32_2e338m15_14limbs/CurveParameters.v
new file mode 100644
index 000000000..db65d9ad9
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^338 - 15
+Base: 24 + 1/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 14%nat;
+ base := 24 + 1/7;
+ bitwidth := 32;
+ s := 2^338;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 14); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/Synthesis.v b/src/Specific/solinas32_2e338m15_14limbs/Synthesis.v
new file mode 100644
index 000000000..b9581e135
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/compiler.sh b/src/Specific/solinas32_2e338m15_14limbs/compiler.sh
new file mode 100755
index 000000000..cd5cbf085
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,24,24,25,24,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<338) - 15' "$@"
diff --git a/src/Specific/solinas32_2e338m15_14limbs/compilerxx.sh b/src/Specific/solinas32_2e338m15_14limbs/compilerxx.sh
new file mode 100755
index 000000000..645f64df8
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,24,24,24,24,25,24,24,24,24,24,24}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='14' -Dq_mpz='(1_mpz<<338) - 15' "$@"
diff --git a/src/Specific/solinas32_2e338m15_14limbs/feadd.v b/src/Specific/solinas32_2e338m15_14limbs/feadd.v
new file mode 100644
index 000000000..c158dfd4f
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.v b/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.v
new file mode 100644
index 000000000..d4fab9552
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/femul.v b/src/Specific/solinas32_2e338m15_14limbs/femul.v
new file mode 100644
index 000000000..84c00e4ff
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.v b/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.v
new file mode 100644
index 000000000..e6943af34
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesquare.v b/src/Specific/solinas32_2e338m15_14limbs/fesquare.v
new file mode 100644
index 000000000..36eca3b61
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.v b/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4611f1d3f
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesub.v b/src/Specific/solinas32_2e338m15_14limbs/fesub.v
new file mode 100644
index 000000000..c815697a0
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.v b/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.v
new file mode 100644
index 000000000..b1107f434
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/freeze.v b/src/Specific/solinas32_2e338m15_14limbs/freeze.v
new file mode 100644
index 000000000..858a769ec
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.v b/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.v
new file mode 100644
index 000000000..187a2a775
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e338m15_14limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e338m15_14limbs/py_interpreter.sh b/src/Specific/solinas32_2e338m15_14limbs/py_interpreter.sh
new file mode 100755
index 000000000..cf51489ce
--- /dev/null
+++ b/src/Specific/solinas32_2e338m15_14limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**338 - 15' -Dmodulus_bytes='24 + 1/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e369m25/Synthesis.v b/src/Specific/solinas32_2e369m25/Synthesis.v
deleted file mode 100644
index ac0812b3e..000000000
--- a/src/Specific/solinas32_2e369m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e369m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e369m25/feadd.c b/src/Specific/solinas32_2e369m25/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e369m25/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e369m25/feadd.v b/src/Specific/solinas32_2e369m25/feadd.v
deleted file mode 100644
index f2a8e3c9c..000000000
--- a/src/Specific/solinas32_2e369m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e369m25/feaddDisplay.log b/src/Specific/solinas32_2e369m25/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e369m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25/feaddDisplay.v b/src/Specific/solinas32_2e369m25/feaddDisplay.v
deleted file mode 100644
index 0799fd5d4..000000000
--- a/src/Specific/solinas32_2e369m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e369m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e369m25/femul.c b/src/Specific/solinas32_2e369m25/femul.c
deleted file mode 100644
index cc1c2a4b5..000000000
--- a/src/Specific/solinas32_2e369m25/femul.c
+++ /dev/null
@@ -1,120 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- { uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x19 * ((uint64_t)x32 * x62)));
- { uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x19 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- { uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x19 * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- { uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x19 * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- { uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x19 * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- { uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x19 * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- { uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x19 * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- { uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x19 * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x19 * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- { uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x19 * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- { uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x19 * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- { uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x19 * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- { uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x19 * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- { uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x19 * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- { uint64_t x79 = (((uint64_t)x5 * x35) + (0x19 * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- { uint64_t x80 = (x79 >> 0x18);
- { uint32_t x81 = ((uint32_t)x79 & 0xffffff);
- { uint64_t x82 = (x80 + x78);
- { uint64_t x83 = (x82 >> 0x17);
- { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- { uint64_t x85 = (x83 + x77);
- { uint64_t x86 = (x85 >> 0x17);
- { uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- { uint64_t x88 = (x86 + x76);
- { uint64_t x89 = (x88 >> 0x17);
- { uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- { uint64_t x91 = (x89 + x75);
- { uint64_t x92 = (x91 >> 0x17);
- { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- { uint64_t x94 = (x92 + x74);
- { uint64_t x95 = (x94 >> 0x17);
- { uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
- { uint64_t x97 = (x95 + x73);
- { uint64_t x98 = (x97 >> 0x17);
- { uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
- { uint64_t x100 = (x98 + x72);
- { uint64_t x101 = (x100 >> 0x17);
- { uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
- { uint64_t x103 = (x101 + x71);
- { uint64_t x104 = (x103 >> 0x17);
- { uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- { uint64_t x106 = (x104 + x70);
- { uint64_t x107 = (x106 >> 0x17);
- { uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
- { uint64_t x109 = (x107 + x69);
- { uint64_t x110 = (x109 >> 0x17);
- { uint32_t x111 = ((uint32_t)x109 & 0x7fffff);
- { uint64_t x112 = (x110 + x68);
- { uint64_t x113 = (x112 >> 0x17);
- { uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
- { uint64_t x115 = (x113 + x67);
- { uint64_t x116 = (x115 >> 0x17);
- { uint32_t x117 = ((uint32_t)x115 & 0x7fffff);
- { uint64_t x118 = (x116 + x66);
- { uint64_t x119 = (x118 >> 0x17);
- { uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
- { uint64_t x121 = (x119 + x65);
- { uint64_t x122 = (x121 >> 0x17);
- { uint32_t x123 = ((uint32_t)x121 & 0x7fffff);
- { uint64_t x124 = (x122 + x64);
- { uint32_t x125 = (uint32_t) (x124 >> 0x17);
- { uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
- { uint64_t x127 = (x81 + ((uint64_t)0x19 * x125));
- { uint32_t x128 = (uint32_t) (x127 >> 0x18);
- { uint32_t x129 = ((uint32_t)x127 & 0xffffff);
- { uint32_t x130 = (x128 + x84);
- { uint32_t x131 = (x130 >> 0x17);
- { uint32_t x132 = (x130 & 0x7fffff);
- out[0] = x129;
- out[1] = x132;
- out[2] = (x131 + x87);
- out[3] = x90;
- out[4] = x93;
- out[5] = x96;
- out[6] = x99;
- out[7] = x102;
- out[8] = x105;
- out[9] = x108;
- out[10] = x111;
- out[11] = x114;
- out[12] = x117;
- out[13] = x120;
- out[14] = x123;
- out[15] = x126;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e369m25/femul.v b/src/Specific/solinas32_2e369m25/femul.v
deleted file mode 100644
index 17bfca7bf..000000000
--- a/src/Specific/solinas32_2e369m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e369m25/femulDisplay.log b/src/Specific/solinas32_2e369m25/femulDisplay.log
deleted file mode 100644
index de38629da..000000000
--- a/src/Specific/solinas32_2e369m25/femulDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x19 * ((uint64_t)x32 * x62)));
- uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x19 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x19 * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x19 * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x19 * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x19 * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x19 * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x19 * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x19 * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x19 * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x19 * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x19 * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x19 * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x19 * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- uint64_t x79 = (((uint64_t)x5 * x35) + (0x19 * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- uint64_t x80 = (x79 >> 0x18);
- uint32_t x81 = ((uint32_t)x79 & 0xffffff);
- uint64_t x82 = (x80 + x78);
- uint64_t x83 = (x82 >> 0x17);
- uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- uint64_t x85 = (x83 + x77);
- uint64_t x86 = (x85 >> 0x17);
- uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- uint64_t x88 = (x86 + x76);
- uint64_t x89 = (x88 >> 0x17);
- uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- uint64_t x91 = (x89 + x75);
- uint64_t x92 = (x91 >> 0x17);
- uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- uint64_t x94 = (x92 + x74);
- uint64_t x95 = (x94 >> 0x17);
- uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
- uint64_t x97 = (x95 + x73);
- uint64_t x98 = (x97 >> 0x17);
- uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
- uint64_t x100 = (x98 + x72);
- uint64_t x101 = (x100 >> 0x17);
- uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
- uint64_t x103 = (x101 + x71);
- uint64_t x104 = (x103 >> 0x17);
- uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- uint64_t x106 = (x104 + x70);
- uint64_t x107 = (x106 >> 0x17);
- uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
- uint64_t x109 = (x107 + x69);
- uint64_t x110 = (x109 >> 0x17);
- uint32_t x111 = ((uint32_t)x109 & 0x7fffff);
- uint64_t x112 = (x110 + x68);
- uint64_t x113 = (x112 >> 0x17);
- uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
- uint64_t x115 = (x113 + x67);
- uint64_t x116 = (x115 >> 0x17);
- uint32_t x117 = ((uint32_t)x115 & 0x7fffff);
- uint64_t x118 = (x116 + x66);
- uint64_t x119 = (x118 >> 0x17);
- uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
- uint64_t x121 = (x119 + x65);
- uint64_t x122 = (x121 >> 0x17);
- uint32_t x123 = ((uint32_t)x121 & 0x7fffff);
- uint64_t x124 = (x122 + x64);
- uint32_t x125 = (uint32_t) (x124 >> 0x17);
- uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
- uint64_t x127 = (x81 + ((uint64_t)0x19 * x125));
- uint32_t x128 = (uint32_t) (x127 >> 0x18);
- uint32_t x129 = ((uint32_t)x127 & 0xffffff);
- uint32_t x130 = (x128 + x84);
- uint32_t x131 = (x130 >> 0x17);
- uint32_t x132 = (x130 & 0x7fffff);
- return (Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, (x131 + x87), Return x132, Return x129))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25/femulDisplay.v b/src/Specific/solinas32_2e369m25/femulDisplay.v
deleted file mode 100644
index 4793722f5..000000000
--- a/src/Specific/solinas32_2e369m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e369m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e369m25/fesquare.c b/src/Specific/solinas32_2e369m25/fesquare.c
deleted file mode 100644
index dc12ffc32..000000000
--- a/src/Specific/solinas32_2e369m25/fesquare.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x19 * ((uint64_t)x29 * x29)));
- { uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x19 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- { uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x19 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- { uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x19 * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- { uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x19 * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- { uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x19 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x19 * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x19 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- { uint64_t x46 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- { uint64_t x47 = (x46 >> 0x18);
- { uint32_t x48 = ((uint32_t)x46 & 0xffffff);
- { uint64_t x49 = (x47 + x45);
- { uint64_t x50 = (x49 >> 0x17);
- { uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- { uint64_t x52 = (x50 + x44);
- { uint64_t x53 = (x52 >> 0x17);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- { uint64_t x55 = (x53 + x43);
- { uint64_t x56 = (x55 >> 0x17);
- { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- { uint64_t x58 = (x56 + x42);
- { uint64_t x59 = (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint64_t x61 = (x59 + x41);
- { uint64_t x62 = (x61 >> 0x17);
- { uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- { uint64_t x64 = (x62 + x40);
- { uint64_t x65 = (x64 >> 0x17);
- { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- { uint64_t x67 = (x65 + x39);
- { uint64_t x68 = (x67 >> 0x17);
- { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- { uint64_t x70 = (x68 + x38);
- { uint64_t x71 = (x70 >> 0x17);
- { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- { uint64_t x73 = (x71 + x37);
- { uint64_t x74 = (x73 >> 0x17);
- { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- { uint64_t x76 = (x74 + x36);
- { uint64_t x77 = (x76 >> 0x17);
- { uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- { uint64_t x79 = (x77 + x35);
- { uint64_t x80 = (x79 >> 0x17);
- { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- { uint64_t x82 = (x80 + x34);
- { uint64_t x83 = (x82 >> 0x17);
- { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- { uint64_t x85 = (x83 + x33);
- { uint64_t x86 = (x85 >> 0x17);
- { uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- { uint64_t x88 = (x86 + x32);
- { uint64_t x89 = (x88 >> 0x17);
- { uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- { uint64_t x91 = (x89 + x31);
- { uint32_t x92 = (uint32_t) (x91 >> 0x17);
- { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- { uint64_t x94 = (x48 + ((uint64_t)0x19 * x92));
- { uint32_t x95 = (uint32_t) (x94 >> 0x18);
- { uint32_t x96 = ((uint32_t)x94 & 0xffffff);
- { uint32_t x97 = (x95 + x51);
- { uint32_t x98 = (x97 >> 0x17);
- { uint32_t x99 = (x97 & 0x7fffff);
- out[0] = x96;
- out[1] = x99;
- out[2] = (x98 + x54);
- out[3] = x57;
- out[4] = x60;
- out[5] = x63;
- out[6] = x66;
- out[7] = x69;
- out[8] = x72;
- out[9] = x75;
- out[10] = x78;
- out[11] = x81;
- out[12] = x84;
- out[13] = x87;
- out[14] = x90;
- out[15] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e369m25/fesquare.v b/src/Specific/solinas32_2e369m25/fesquare.v
deleted file mode 100644
index f031c852a..000000000
--- a/src/Specific/solinas32_2e369m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e369m25/fesquareDisplay.log b/src/Specific/solinas32_2e369m25/fesquareDisplay.log
deleted file mode 100644
index 9c6b94bc1..000000000
--- a/src/Specific/solinas32_2e369m25/fesquareDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x19 * ((uint64_t)x29 * x29)));
- uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x19 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x19 * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x19 * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x19 * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x19 * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x19 * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x19 * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x19 * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x19 * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x19 * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x19 * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- uint64_t x46 = (((uint64_t)x2 * x2) + (0x19 * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- uint64_t x47 = (x46 >> 0x18);
- uint32_t x48 = ((uint32_t)x46 & 0xffffff);
- uint64_t x49 = (x47 + x45);
- uint64_t x50 = (x49 >> 0x17);
- uint32_t x51 = ((uint32_t)x49 & 0x7fffff);
- uint64_t x52 = (x50 + x44);
- uint64_t x53 = (x52 >> 0x17);
- uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- uint64_t x55 = (x53 + x43);
- uint64_t x56 = (x55 >> 0x17);
- uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- uint64_t x58 = (x56 + x42);
- uint64_t x59 = (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint64_t x61 = (x59 + x41);
- uint64_t x62 = (x61 >> 0x17);
- uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- uint64_t x64 = (x62 + x40);
- uint64_t x65 = (x64 >> 0x17);
- uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- uint64_t x67 = (x65 + x39);
- uint64_t x68 = (x67 >> 0x17);
- uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- uint64_t x70 = (x68 + x38);
- uint64_t x71 = (x70 >> 0x17);
- uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- uint64_t x73 = (x71 + x37);
- uint64_t x74 = (x73 >> 0x17);
- uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- uint64_t x76 = (x74 + x36);
- uint64_t x77 = (x76 >> 0x17);
- uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- uint64_t x79 = (x77 + x35);
- uint64_t x80 = (x79 >> 0x17);
- uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- uint64_t x82 = (x80 + x34);
- uint64_t x83 = (x82 >> 0x17);
- uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- uint64_t x85 = (x83 + x33);
- uint64_t x86 = (x85 >> 0x17);
- uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- uint64_t x88 = (x86 + x32);
- uint64_t x89 = (x88 >> 0x17);
- uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- uint64_t x91 = (x89 + x31);
- uint32_t x92 = (uint32_t) (x91 >> 0x17);
- uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- uint64_t x94 = (x48 + ((uint64_t)0x19 * x92));
- uint32_t x95 = (uint32_t) (x94 >> 0x18);
- uint32_t x96 = ((uint32_t)x94 & 0xffffff);
- uint32_t x97 = (x95 + x51);
- uint32_t x98 = (x97 >> 0x17);
- uint32_t x99 = (x97 & 0x7fffff);
- return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25/fesquareDisplay.v b/src/Specific/solinas32_2e369m25/fesquareDisplay.v
deleted file mode 100644
index 6ac4b0ba7..000000000
--- a/src/Specific/solinas32_2e369m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e369m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e369m25/fesub.c b/src/Specific/solinas32_2e369m25/fesub.c
deleted file mode 100644
index 62ea61d39..000000000
--- a/src/Specific/solinas32_2e369m25/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x1ffffce + x5) - x35);
- out[1] = ((0xfffffe + x7) - x37);
- out[2] = ((0xfffffe + x9) - x39);
- out[3] = ((0xfffffe + x11) - x41);
- out[4] = ((0xfffffe + x13) - x43);
- out[5] = ((0xfffffe + x15) - x45);
- out[6] = ((0xfffffe + x17) - x47);
- out[7] = ((0xfffffe + x19) - x49);
- out[8] = ((0xfffffe + x21) - x51);
- out[9] = ((0xfffffe + x23) - x53);
- out[10] = ((0xfffffe + x25) - x55);
- out[11] = ((0xfffffe + x27) - x57);
- out[12] = ((0xfffffe + x29) - x59);
- out[13] = ((0xfffffe + x31) - x61);
- out[14] = ((0xfffffe + x33) - x63);
- out[15] = ((0xfffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e369m25/fesub.v b/src/Specific/solinas32_2e369m25/fesub.v
deleted file mode 100644
index ee29c90d9..000000000
--- a/src/Specific/solinas32_2e369m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e369m25/fesubDisplay.log b/src/Specific/solinas32_2e369m25/fesubDisplay.log
deleted file mode 100644
index 861f7676b..000000000
--- a/src/Specific/solinas32_2e369m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0xfffffe + x32) - x62), ((0xfffffe + x33) - x63), ((0xfffffe + x31) - x61), ((0xfffffe + x29) - x59), ((0xfffffe + x27) - x57), ((0xfffffe + x25) - x55), ((0xfffffe + x23) - x53), ((0xfffffe + x21) - x51), ((0xfffffe + x19) - x49), ((0xfffffe + x17) - x47), ((0xfffffe + x15) - x45), ((0xfffffe + x13) - x43), ((0xfffffe + x11) - x41), ((0xfffffe + x9) - x39), ((0xfffffe + x7) - x37), ((0x1ffffce + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25/fesubDisplay.v b/src/Specific/solinas32_2e369m25/fesubDisplay.v
deleted file mode 100644
index ea85b8625..000000000
--- a/src/Specific/solinas32_2e369m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e369m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e369m25/freeze.c b/src/Specific/solinas32_2e369m25/freeze.c
deleted file mode 100644
index 9e69a5b92..000000000
--- a/src/Specific/solinas32_2e369m25/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x7fffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x7fffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x7fffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x7fffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x7fffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x7fffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x7fffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x7fffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x7fffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x7fffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x7fffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x7fffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0xffffe7);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0x7fffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0x7fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0x7fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0x7fffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0x7fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0x7fffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0x7fffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0x7fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0x7fffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0x7fffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0x7fffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0x7fffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0x7fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0x7fffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0x7fffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e369m25/freeze.v b/src/Specific/solinas32_2e369m25/freeze.v
deleted file mode 100644
index d8dee1ea9..000000000
--- a/src/Specific/solinas32_2e369m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e369m25/freezeDisplay.log b/src/Specific/solinas32_2e369m25/freezeDisplay.log
deleted file mode 100644
index 8bf6ce780..000000000
--- a/src/Specific/solinas32_2e369m25/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffe7);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x7fffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x7fffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x7fffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x7fffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x7fffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x7fffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x7fffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x7fffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x7fffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x7fffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x7fffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x7fffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x7fffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0xffffe7);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0x7fffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0x7fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0x7fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0x7fffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0x7fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0x7fffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0x7fffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0x7fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0x7fffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0x7fffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0x7fffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0x7fffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0x7fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0x7fffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0x7fffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e369m25/freezeDisplay.v b/src/Specific/solinas32_2e369m25/freezeDisplay.v
deleted file mode 100644
index b441a44fc..000000000
--- a/src/Specific/solinas32_2e369m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e369m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/CurveParameters.v b/src/Specific/solinas32_2e369m25_15limbs/CurveParameters.v
new file mode 100644
index 000000000..23d96973b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^369 - 25
+Base: 24.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 15%nat;
+ base := 24 + 3/5;
+ bitwidth := 32;
+ s := 2^369;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/Synthesis.v b/src/Specific/solinas32_2e369m25_15limbs/Synthesis.v
new file mode 100644
index 000000000..25da195f3
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/compiler.sh b/src/Specific/solinas32_2e369m25_15limbs/compiler.sh
new file mode 100755
index 000000000..a8fb18b64
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,25,24,25,24,25,25,24,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<369) - 25' "$@"
diff --git a/src/Specific/solinas32_2e369m25_15limbs/compilerxx.sh b/src/Specific/solinas32_2e369m25_15limbs/compilerxx.sh
new file mode 100755
index 000000000..edff4d188
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,24,25,25,24,25,24,25,25,24,25,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<369) - 25' "$@"
diff --git a/src/Specific/solinas32_2e369m25_15limbs/feadd.v b/src/Specific/solinas32_2e369m25_15limbs/feadd.v
new file mode 100644
index 000000000..48efdb3f2
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.v b/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..7752e301b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/femul.v b/src/Specific/solinas32_2e369m25_15limbs/femul.v
new file mode 100644
index 000000000..0451ed7bb
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.v b/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.v
new file mode 100644
index 000000000..524b5f11e
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesquare.v b/src/Specific/solinas32_2e369m25_15limbs/fesquare.v
new file mode 100644
index 000000000..0cff24c64
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.v b/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1c693bb46
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesub.v b/src/Specific/solinas32_2e369m25_15limbs/fesub.v
new file mode 100644
index 000000000..f2c8d1798
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.v b/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..5f8a2af7a
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/freeze.v b/src/Specific/solinas32_2e369m25_15limbs/freeze.v
new file mode 100644
index 000000000..aeb5d58f4
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.v b/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.v
new file mode 100644
index 000000000..5c201c0ad
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_15limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e369m25_15limbs/py_interpreter.sh b/src/Specific/solinas32_2e369m25_15limbs/py_interpreter.sh
new file mode 100755
index 000000000..730c995fb
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_15limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**369 - 25' -Dmodulus_bytes='24.6' -Da24='121665'
diff --git a/src/Specific/solinas32_2e369m25/CurveParameters.v b/src/Specific/solinas32_2e369m25_16limbs/CurveParameters.v
index bcbf236a9..bcbf236a9 100644
--- a/src/Specific/solinas32_2e369m25/CurveParameters.v
+++ b/src/Specific/solinas32_2e369m25_16limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e369m25_16limbs/Synthesis.v b/src/Specific/solinas32_2e369m25_16limbs/Synthesis.v
new file mode 100644
index 000000000..09ecef29b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e369m25/compiler.sh b/src/Specific/solinas32_2e369m25_16limbs/compiler.sh
index 7f753bcab..7f753bcab 100755
--- a/src/Specific/solinas32_2e369m25/compiler.sh
+++ b/src/Specific/solinas32_2e369m25_16limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e369m25/compilerxx.sh b/src/Specific/solinas32_2e369m25_16limbs/compilerxx.sh
index 95561b993..95561b993 100755
--- a/src/Specific/solinas32_2e369m25/compilerxx.sh
+++ b/src/Specific/solinas32_2e369m25_16limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e369m25_16limbs/feadd.v b/src/Specific/solinas32_2e369m25_16limbs/feadd.v
new file mode 100644
index 000000000..74a390c1f
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e369m25_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..a595eeb87
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/femul.v b/src/Specific/solinas32_2e369m25_16limbs/femul.v
new file mode 100644
index 000000000..da0b77870
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/femulDisplay.v b/src/Specific/solinas32_2e369m25_16limbs/femulDisplay.v
new file mode 100644
index 000000000..119fc316f
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/fesquare.v b/src/Specific/solinas32_2e369m25_16limbs/fesquare.v
new file mode 100644
index 000000000..c274f3c21
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e369m25_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f911c937b
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/fesub.v b/src/Specific/solinas32_2e369m25_16limbs/fesub.v
new file mode 100644
index 000000000..1dc7d9d19
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e369m25_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..4c5bc0749
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/freeze.v b/src/Specific/solinas32_2e369m25_16limbs/freeze.v
new file mode 100644
index 000000000..a572cf74d
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e369m25_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e369m25_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..2e860427f
--- /dev/null
+++ b/src/Specific/solinas32_2e369m25_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e369m25_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e369m25/py_interpreter.sh b/src/Specific/solinas32_2e369m25_16limbs/py_interpreter.sh
index df5837055..df5837055 100755
--- a/src/Specific/solinas32_2e369m25/py_interpreter.sh
+++ b/src/Specific/solinas32_2e369m25_16limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e379m19/CurveParameters.v b/src/Specific/solinas32_2e379m19/CurveParameters.v
deleted file mode 100644
index f58ddcf9b..000000000
--- a/src/Specific/solinas32_2e379m19/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^379 - 19
-Base: 21 + 1/18
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 18%nat;
- base := 21 + 1/18;
- bitwidth := 32;
- s := 2^379;
- c := [(1, 19)];
- carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e379m19/Synthesis.v b/src/Specific/solinas32_2e379m19/Synthesis.v
deleted file mode 100644
index 240d9abf3..000000000
--- a/src/Specific/solinas32_2e379m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e379m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e379m19/compiler.sh b/src/Specific/solinas32_2e379m19/compiler.sh
deleted file mode 100755
index 36e4fcd4e..000000000
--- a/src/Specific/solinas32_2e379m19/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19/compilerxx.sh b/src/Specific/solinas32_2e379m19/compilerxx.sh
deleted file mode 100755
index f12d07f46..000000000
--- a/src/Specific/solinas32_2e379m19/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19/feadd.c b/src/Specific/solinas32_2e379m19/feadd.c
deleted file mode 100644
index 7b8380410..000000000
--- a/src/Specific/solinas32_2e379m19/feadd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void feadd(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = (x5 + x39);
- out[1] = (x7 + x41);
- out[2] = (x9 + x43);
- out[3] = (x11 + x45);
- out[4] = (x13 + x47);
- out[5] = (x15 + x49);
- out[6] = (x17 + x51);
- out[7] = (x19 + x53);
- out[8] = (x21 + x55);
- out[9] = (x23 + x57);
- out[10] = (x25 + x59);
- out[11] = (x27 + x61);
- out[12] = (x29 + x63);
- out[13] = (x31 + x65);
- out[14] = (x33 + x67);
- out[15] = (x35 + x69);
- out[16] = (x37 + x71);
- out[17] = (x36 + x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e379m19/feadd.v b/src/Specific/solinas32_2e379m19/feadd.v
deleted file mode 100644
index 12f05cdf1..000000000
--- a/src/Specific/solinas32_2e379m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e379m19/feaddDisplay.log b/src/Specific/solinas32_2e379m19/feaddDisplay.log
deleted file mode 100644
index 5e9c243f4..000000000
--- a/src/Specific/solinas32_2e379m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- ((x36 + x70), (x37 + x71), (x35 + x69), (x33 + x67), (x31 + x65), (x29 + x63), (x27 + x61), (x25 + x59), (x23 + x57), (x21 + x55), (x19 + x53), (x17 + x51), (x15 + x49), (x13 + x47), (x11 + x45), (x9 + x43), (x7 + x41), (x5 + x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19/feaddDisplay.v b/src/Specific/solinas32_2e379m19/feaddDisplay.v
deleted file mode 100644
index 305470967..000000000
--- a/src/Specific/solinas32_2e379m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e379m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e379m19/femul.c b/src/Specific/solinas32_2e379m19/femul.c
deleted file mode 100644
index 16598c4d6..000000000
--- a/src/Specific/solinas32_2e379m19/femul.c
+++ /dev/null
@@ -1,134 +0,0 @@
-static void femul(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- { uint64_t x72 = (((uint64_t)x5 * x70) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((0x2 * ((uint64_t)x35 * x43)) + ((0x2 * ((uint64_t)x37 * x41)) + ((uint64_t)x36 * x39))))))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((0x2 * ((uint64_t)x35 * x41)) + ((uint64_t)x37 * x39))))))))))))))))) + (0x13 * ((uint64_t)x36 * x70)));
- { uint64_t x74 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((0x2 * ((uint64_t)x33 * x41)) + ((uint64_t)x35 * x39)))))))))))))))) + (0x13 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- { uint64_t x75 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((uint64_t)x33 * x39))))))))))))))) + (0x13 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- { uint64_t x76 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((uint64_t)x31 * x39)))))))))))))) + (0x13 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- { uint64_t x77 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((uint64_t)x29 * x39))))))))))))) + (0x13 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- { uint64_t x78 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x27 * x39)))))))))))) + (0x13 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- { uint64_t x79 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((uint64_t)x25 * x39))))))))))) + (0x13 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- { uint64_t x80 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((uint64_t)x23 * x39)))))))))) + (0x13 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((uint64_t)x21 * x39))))))))) + (0x13 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- { uint64_t x82 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((uint64_t)x19 * x39)))))))) + (0x13 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- { uint64_t x83 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((uint64_t)x17 * x39))))))) + (0x13 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- { uint64_t x84 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((uint64_t)x15 * x39)))))) + (0x13 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- { uint64_t x85 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((uint64_t)x13 * x39))))) + (0x13 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- { uint64_t x86 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((uint64_t)x11 * x39)))) + (0x13 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((uint64_t)x9 * x39))) + (0x13 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x13 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- { uint64_t x89 = (((uint64_t)x5 * x39) + (0x13 * ((0x2 * ((uint64_t)x7 * x70)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((0x2 * ((uint64_t)x37 * x43)) + (0x2 * ((uint64_t)x36 * x41))))))))))))))))))));
- { uint64_t x90 = (x89 >> 0x16);
- { uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- { uint64_t x92 = (x90 + x88);
- { uint64_t x93 = (x92 >> 0x15);
- { uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- { uint64_t x95 = (x93 + x87);
- { uint64_t x96 = (x95 >> 0x15);
- { uint32_t x97 = ((uint32_t)x95 & 0x1fffff);
- { uint64_t x98 = (x96 + x86);
- { uint64_t x99 = (x98 >> 0x15);
- { uint32_t x100 = ((uint32_t)x98 & 0x1fffff);
- { uint64_t x101 = (x99 + x85);
- { uint64_t x102 = (x101 >> 0x15);
- { uint32_t x103 = ((uint32_t)x101 & 0x1fffff);
- { uint64_t x104 = (x102 + x84);
- { uint64_t x105 = (x104 >> 0x15);
- { uint32_t x106 = ((uint32_t)x104 & 0x1fffff);
- { uint64_t x107 = (x105 + x83);
- { uint64_t x108 = (x107 >> 0x15);
- { uint32_t x109 = ((uint32_t)x107 & 0x1fffff);
- { uint64_t x110 = (x108 + x82);
- { uint64_t x111 = (x110 >> 0x15);
- { uint32_t x112 = ((uint32_t)x110 & 0x1fffff);
- { uint64_t x113 = (x111 + x81);
- { uint64_t x114 = (x113 >> 0x15);
- { uint32_t x115 = ((uint32_t)x113 & 0x1fffff);
- { uint64_t x116 = (x114 + x80);
- { uint32_t x117 = (uint32_t) (x116 >> 0x15);
- { uint32_t x118 = ((uint32_t)x116 & 0x1fffff);
- { uint64_t x119 = (x117 + x79);
- { uint32_t x120 = (uint32_t) (x119 >> 0x15);
- { uint32_t x121 = ((uint32_t)x119 & 0x1fffff);
- { uint64_t x122 = (x120 + x78);
- { uint32_t x123 = (uint32_t) (x122 >> 0x15);
- { uint32_t x124 = ((uint32_t)x122 & 0x1fffff);
- { uint64_t x125 = (x123 + x77);
- { uint32_t x126 = (uint32_t) (x125 >> 0x15);
- { uint32_t x127 = ((uint32_t)x125 & 0x1fffff);
- { uint64_t x128 = (x126 + x76);
- { uint32_t x129 = (uint32_t) (x128 >> 0x15);
- { uint32_t x130 = ((uint32_t)x128 & 0x1fffff);
- { uint64_t x131 = (x129 + x75);
- { uint32_t x132 = (uint32_t) (x131 >> 0x15);
- { uint32_t x133 = ((uint32_t)x131 & 0x1fffff);
- { uint64_t x134 = (x132 + x74);
- { uint32_t x135 = (uint32_t) (x134 >> 0x15);
- { uint32_t x136 = ((uint32_t)x134 & 0x1fffff);
- { uint64_t x137 = (x135 + x73);
- { uint32_t x138 = (uint32_t) (x137 >> 0x15);
- { uint32_t x139 = ((uint32_t)x137 & 0x1fffff);
- { uint64_t x140 = (x138 + x72);
- { uint32_t x141 = (uint32_t) (x140 >> 0x15);
- { uint32_t x142 = ((uint32_t)x140 & 0x1fffff);
- { uint64_t x143 = (x91 + ((uint64_t)0x13 * x141));
- { uint32_t x144 = (uint32_t) (x143 >> 0x16);
- { uint32_t x145 = ((uint32_t)x143 & 0x3fffff);
- { uint32_t x146 = (x144 + x94);
- { uint32_t x147 = (x146 >> 0x15);
- { uint32_t x148 = (x146 & 0x1fffff);
- out[0] = x145;
- out[1] = x148;
- out[2] = (x147 + x97);
- out[3] = x100;
- out[4] = x103;
- out[5] = x106;
- out[6] = x109;
- out[7] = x112;
- out[8] = x115;
- out[9] = x118;
- out[10] = x121;
- out[11] = x124;
- out[12] = x127;
- out[13] = x130;
- out[14] = x133;
- out[15] = x136;
- out[16] = x139;
- out[17] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e379m19/femul.v b/src/Specific/solinas32_2e379m19/femul.v
deleted file mode 100644
index 7d3037190..000000000
--- a/src/Specific/solinas32_2e379m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e379m19/femulDisplay.log b/src/Specific/solinas32_2e379m19/femulDisplay.log
deleted file mode 100644
index 782fd2d25..000000000
--- a/src/Specific/solinas32_2e379m19/femulDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- uint64_t x72 = (((uint64_t)x5 * x70) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((0x2 * ((uint64_t)x35 * x43)) + ((0x2 * ((uint64_t)x37 * x41)) + ((uint64_t)x36 * x39))))))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((0x2 * ((uint64_t)x35 * x41)) + ((uint64_t)x37 * x39))))))))))))))))) + (0x13 * ((uint64_t)x36 * x70)));
- uint64_t x74 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((0x2 * ((uint64_t)x33 * x41)) + ((uint64_t)x35 * x39)))))))))))))))) + (0x13 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- uint64_t x75 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((uint64_t)x33 * x39))))))))))))))) + (0x13 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- uint64_t x76 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((uint64_t)x31 * x39)))))))))))))) + (0x13 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- uint64_t x77 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((uint64_t)x29 * x39))))))))))))) + (0x13 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- uint64_t x78 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x27 * x39)))))))))))) + (0x13 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- uint64_t x79 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((uint64_t)x25 * x39))))))))))) + (0x13 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- uint64_t x80 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((uint64_t)x23 * x39)))))))))) + (0x13 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((uint64_t)x21 * x39))))))))) + (0x13 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- uint64_t x82 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((uint64_t)x19 * x39)))))))) + (0x13 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- uint64_t x83 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((uint64_t)x17 * x39))))))) + (0x13 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- uint64_t x84 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((uint64_t)x15 * x39)))))) + (0x13 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- uint64_t x85 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((uint64_t)x13 * x39))))) + (0x13 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- uint64_t x86 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((uint64_t)x11 * x39)))) + (0x13 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- uint64_t x87 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((uint64_t)x9 * x39))) + (0x13 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x13 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- uint64_t x89 = (((uint64_t)x5 * x39) + (0x13 * ((0x2 * ((uint64_t)x7 * x70)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((0x2 * ((uint64_t)x37 * x43)) + (0x2 * ((uint64_t)x36 * x41))))))))))))))))))));
- uint64_t x90 = (x89 >> 0x16);
- uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- uint64_t x92 = (x90 + x88);
- uint64_t x93 = (x92 >> 0x15);
- uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- uint64_t x95 = (x93 + x87);
- uint64_t x96 = (x95 >> 0x15);
- uint32_t x97 = ((uint32_t)x95 & 0x1fffff);
- uint64_t x98 = (x96 + x86);
- uint64_t x99 = (x98 >> 0x15);
- uint32_t x100 = ((uint32_t)x98 & 0x1fffff);
- uint64_t x101 = (x99 + x85);
- uint64_t x102 = (x101 >> 0x15);
- uint32_t x103 = ((uint32_t)x101 & 0x1fffff);
- uint64_t x104 = (x102 + x84);
- uint64_t x105 = (x104 >> 0x15);
- uint32_t x106 = ((uint32_t)x104 & 0x1fffff);
- uint64_t x107 = (x105 + x83);
- uint64_t x108 = (x107 >> 0x15);
- uint32_t x109 = ((uint32_t)x107 & 0x1fffff);
- uint64_t x110 = (x108 + x82);
- uint64_t x111 = (x110 >> 0x15);
- uint32_t x112 = ((uint32_t)x110 & 0x1fffff);
- uint64_t x113 = (x111 + x81);
- uint64_t x114 = (x113 >> 0x15);
- uint32_t x115 = ((uint32_t)x113 & 0x1fffff);
- uint64_t x116 = (x114 + x80);
- uint32_t x117 = (uint32_t) (x116 >> 0x15);
- uint32_t x118 = ((uint32_t)x116 & 0x1fffff);
- uint64_t x119 = (x117 + x79);
- uint32_t x120 = (uint32_t) (x119 >> 0x15);
- uint32_t x121 = ((uint32_t)x119 & 0x1fffff);
- uint64_t x122 = (x120 + x78);
- uint32_t x123 = (uint32_t) (x122 >> 0x15);
- uint32_t x124 = ((uint32_t)x122 & 0x1fffff);
- uint64_t x125 = (x123 + x77);
- uint32_t x126 = (uint32_t) (x125 >> 0x15);
- uint32_t x127 = ((uint32_t)x125 & 0x1fffff);
- uint64_t x128 = (x126 + x76);
- uint32_t x129 = (uint32_t) (x128 >> 0x15);
- uint32_t x130 = ((uint32_t)x128 & 0x1fffff);
- uint64_t x131 = (x129 + x75);
- uint32_t x132 = (uint32_t) (x131 >> 0x15);
- uint32_t x133 = ((uint32_t)x131 & 0x1fffff);
- uint64_t x134 = (x132 + x74);
- uint32_t x135 = (uint32_t) (x134 >> 0x15);
- uint32_t x136 = ((uint32_t)x134 & 0x1fffff);
- uint64_t x137 = (x135 + x73);
- uint32_t x138 = (uint32_t) (x137 >> 0x15);
- uint32_t x139 = ((uint32_t)x137 & 0x1fffff);
- uint64_t x140 = (x138 + x72);
- uint32_t x141 = (uint32_t) (x140 >> 0x15);
- uint32_t x142 = ((uint32_t)x140 & 0x1fffff);
- uint64_t x143 = (x91 + ((uint64_t)0x13 * x141));
- uint32_t x144 = (uint32_t) (x143 >> 0x16);
- uint32_t x145 = ((uint32_t)x143 & 0x3fffff);
- uint32_t x146 = (x144 + x94);
- uint32_t x147 = (x146 >> 0x15);
- uint32_t x148 = (x146 & 0x1fffff);
- return (Return x142, Return x139, Return x136, Return x133, Return x130, Return x127, Return x124, Return x121, Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, (x147 + x97), Return x148, Return x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19/femulDisplay.v b/src/Specific/solinas32_2e379m19/femulDisplay.v
deleted file mode 100644
index ddfdb0996..000000000
--- a/src/Specific/solinas32_2e379m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e379m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e379m19/fesquare.c b/src/Specific/solinas32_2e379m19/fesquare.c
deleted file mode 100644
index 68c2dd65d..000000000
--- a/src/Specific/solinas32_2e379m19/fesquare.c
+++ /dev/null
@@ -1,116 +0,0 @@
-static void fesquare(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x35 = (((uint64_t)x2 * x33) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x33 * x2))))))))))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x13 * ((uint64_t)x33 * x33)));
- { uint64_t x37 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x13 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- { uint64_t x38 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x13 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- { uint64_t x39 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- { uint64_t x40 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- { uint64_t x41 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- { uint64_t x52 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x33)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + (0x2 * ((uint64_t)x33 * x4))))))))))))))))))));
- { uint64_t x53 = (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x51);
- { uint64_t x56 = (x55 >> 0x15);
- { uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- { uint64_t x58 = (x56 + x50);
- { uint64_t x59 = (x58 >> 0x15);
- { uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- { uint64_t x61 = (x59 + x49);
- { uint64_t x62 = (x61 >> 0x15);
- { uint32_t x63 = ((uint32_t)x61 & 0x1fffff);
- { uint64_t x64 = (x62 + x48);
- { uint64_t x65 = (x64 >> 0x15);
- { uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- { uint64_t x67 = (x65 + x47);
- { uint64_t x68 = (x67 >> 0x15);
- { uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- { uint64_t x70 = (x68 + x46);
- { uint64_t x71 = (x70 >> 0x15);
- { uint32_t x72 = ((uint32_t)x70 & 0x1fffff);
- { uint64_t x73 = (x71 + x45);
- { uint64_t x74 = (x73 >> 0x15);
- { uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- { uint64_t x76 = (x74 + x44);
- { uint64_t x77 = (x76 >> 0x15);
- { uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- { uint64_t x79 = (x77 + x43);
- { uint32_t x80 = (uint32_t) (x79 >> 0x15);
- { uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- { uint64_t x82 = (x80 + x42);
- { uint32_t x83 = (uint32_t) (x82 >> 0x15);
- { uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- { uint64_t x85 = (x83 + x41);
- { uint32_t x86 = (uint32_t) (x85 >> 0x15);
- { uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- { uint64_t x88 = (x86 + x40);
- { uint32_t x89 = (uint32_t) (x88 >> 0x15);
- { uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- { uint64_t x91 = (x89 + x39);
- { uint32_t x92 = (uint32_t) (x91 >> 0x15);
- { uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- { uint64_t x94 = (x92 + x38);
- { uint32_t x95 = (uint32_t) (x94 >> 0x15);
- { uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- { uint64_t x97 = (x95 + x37);
- { uint32_t x98 = (uint32_t) (x97 >> 0x15);
- { uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- { uint64_t x100 = (x98 + x36);
- { uint32_t x101 = (uint32_t) (x100 >> 0x15);
- { uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- { uint64_t x103 = (x101 + x35);
- { uint32_t x104 = (uint32_t) (x103 >> 0x15);
- { uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- { uint64_t x106 = (x54 + ((uint64_t)0x13 * x104));
- { uint32_t x107 = (uint32_t) (x106 >> 0x16);
- { uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- { uint32_t x109 = (x107 + x57);
- { uint32_t x110 = (x109 >> 0x15);
- { uint32_t x111 = (x109 & 0x1fffff);
- out[0] = x108;
- out[1] = x111;
- out[2] = (x110 + x60);
- out[3] = x63;
- out[4] = x66;
- out[5] = x69;
- out[6] = x72;
- out[7] = x75;
- out[8] = x78;
- out[9] = x81;
- out[10] = x84;
- out[11] = x87;
- out[12] = x90;
- out[13] = x93;
- out[14] = x96;
- out[15] = x99;
- out[16] = x102;
- out[17] = x105;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e379m19/fesquare.v b/src/Specific/solinas32_2e379m19/fesquare.v
deleted file mode 100644
index fd56ba84a..000000000
--- a/src/Specific/solinas32_2e379m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e379m19/fesquareDisplay.log b/src/Specific/solinas32_2e379m19/fesquareDisplay.log
deleted file mode 100644
index ef98c2853..000000000
--- a/src/Specific/solinas32_2e379m19/fesquareDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x35 = (((uint64_t)x2 * x33) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x33 * x2))))))))))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x13 * ((uint64_t)x33 * x33)));
- uint64_t x37 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x13 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- uint64_t x38 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x13 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- uint64_t x39 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x13 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- uint64_t x40 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x13 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- uint64_t x41 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- uint64_t x42 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x13 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- uint64_t x43 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x13 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- uint64_t x46 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- uint64_t x47 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x13 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- uint64_t x52 = (((uint64_t)x2 * x2) + (0x13 * ((0x2 * ((uint64_t)x4 * x33)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + (0x2 * ((uint64_t)x33 * x4))))))))))))))))))));
- uint64_t x53 = (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x51);
- uint64_t x56 = (x55 >> 0x15);
- uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- uint64_t x58 = (x56 + x50);
- uint64_t x59 = (x58 >> 0x15);
- uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- uint64_t x61 = (x59 + x49);
- uint64_t x62 = (x61 >> 0x15);
- uint32_t x63 = ((uint32_t)x61 & 0x1fffff);
- uint64_t x64 = (x62 + x48);
- uint64_t x65 = (x64 >> 0x15);
- uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- uint64_t x67 = (x65 + x47);
- uint64_t x68 = (x67 >> 0x15);
- uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- uint64_t x70 = (x68 + x46);
- uint64_t x71 = (x70 >> 0x15);
- uint32_t x72 = ((uint32_t)x70 & 0x1fffff);
- uint64_t x73 = (x71 + x45);
- uint64_t x74 = (x73 >> 0x15);
- uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- uint64_t x76 = (x74 + x44);
- uint64_t x77 = (x76 >> 0x15);
- uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- uint64_t x79 = (x77 + x43);
- uint32_t x80 = (uint32_t) (x79 >> 0x15);
- uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- uint64_t x82 = (x80 + x42);
- uint32_t x83 = (uint32_t) (x82 >> 0x15);
- uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- uint64_t x85 = (x83 + x41);
- uint32_t x86 = (uint32_t) (x85 >> 0x15);
- uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- uint64_t x88 = (x86 + x40);
- uint32_t x89 = (uint32_t) (x88 >> 0x15);
- uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- uint64_t x91 = (x89 + x39);
- uint32_t x92 = (uint32_t) (x91 >> 0x15);
- uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- uint64_t x94 = (x92 + x38);
- uint32_t x95 = (uint32_t) (x94 >> 0x15);
- uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- uint64_t x97 = (x95 + x37);
- uint32_t x98 = (uint32_t) (x97 >> 0x15);
- uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- uint64_t x100 = (x98 + x36);
- uint32_t x101 = (uint32_t) (x100 >> 0x15);
- uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- uint64_t x103 = (x101 + x35);
- uint32_t x104 = (uint32_t) (x103 >> 0x15);
- uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- uint64_t x106 = (x54 + ((uint64_t)0x13 * x104));
- uint32_t x107 = (uint32_t) (x106 >> 0x16);
- uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- uint32_t x109 = (x107 + x57);
- uint32_t x110 = (x109 >> 0x15);
- uint32_t x111 = (x109 & 0x1fffff);
- return (Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, (x110 + x60), Return x111, Return x108))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19/fesquareDisplay.v b/src/Specific/solinas32_2e379m19/fesquareDisplay.v
deleted file mode 100644
index cf6e27f56..000000000
--- a/src/Specific/solinas32_2e379m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e379m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e379m19/fesub.c b/src/Specific/solinas32_2e379m19/fesub.c
deleted file mode 100644
index 43782295a..000000000
--- a/src/Specific/solinas32_2e379m19/fesub.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void fesub(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = ((0x7fffda + x5) - x39);
- out[1] = ((0x3ffffe + x7) - x41);
- out[2] = ((0x3ffffe + x9) - x43);
- out[3] = ((0x3ffffe + x11) - x45);
- out[4] = ((0x3ffffe + x13) - x47);
- out[5] = ((0x3ffffe + x15) - x49);
- out[6] = ((0x3ffffe + x17) - x51);
- out[7] = ((0x3ffffe + x19) - x53);
- out[8] = ((0x3ffffe + x21) - x55);
- out[9] = ((0x3ffffe + x23) - x57);
- out[10] = ((0x3ffffe + x25) - x59);
- out[11] = ((0x3ffffe + x27) - x61);
- out[12] = ((0x3ffffe + x29) - x63);
- out[13] = ((0x3ffffe + x31) - x65);
- out[14] = ((0x3ffffe + x33) - x67);
- out[15] = ((0x3ffffe + x35) - x69);
- out[16] = ((0x3ffffe + x37) - x71);
- out[17] = ((0x3ffffe + x36) - x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e379m19/fesub.v b/src/Specific/solinas32_2e379m19/fesub.v
deleted file mode 100644
index 374f5e708..000000000
--- a/src/Specific/solinas32_2e379m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e379m19/fesubDisplay.log b/src/Specific/solinas32_2e379m19/fesubDisplay.log
deleted file mode 100644
index 5edfecf4e..000000000
--- a/src/Specific/solinas32_2e379m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- (((0x3ffffe + x36) - x70), ((0x3ffffe + x37) - x71), ((0x3ffffe + x35) - x69), ((0x3ffffe + x33) - x67), ((0x3ffffe + x31) - x65), ((0x3ffffe + x29) - x63), ((0x3ffffe + x27) - x61), ((0x3ffffe + x25) - x59), ((0x3ffffe + x23) - x57), ((0x3ffffe + x21) - x55), ((0x3ffffe + x19) - x53), ((0x3ffffe + x17) - x51), ((0x3ffffe + x15) - x49), ((0x3ffffe + x13) - x47), ((0x3ffffe + x11) - x45), ((0x3ffffe + x9) - x43), ((0x3ffffe + x7) - x41), ((0x7fffda + x5) - x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19/fesubDisplay.v b/src/Specific/solinas32_2e379m19/fesubDisplay.v
deleted file mode 100644
index 89742238a..000000000
--- a/src/Specific/solinas32_2e379m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e379m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e379m19/freeze.c b/src/Specific/solinas32_2e379m19/freeze.c
deleted file mode 100644
index e4e38d504..000000000
--- a/src/Specific/solinas32_2e379m19/freeze.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void freeze(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x1fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x1fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x1fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x1fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x1fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x1fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x1fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x1fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x1fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x1fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x1fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x1fffff);
- { uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- { uint32_t x90 = (x89 & 0x3fffed);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- { uint32_t x94 = (x89 & 0x1fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- { uint32_t x98 = (x89 & 0x1fffff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- { uint32_t x102 = (x89 & 0x1fffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- { uint32_t x106 = (x89 & 0x1fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- { uint32_t x110 = (x89 & 0x1fffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- { uint32_t x114 = (x89 & 0x1fffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- { uint32_t x118 = (x89 & 0x1fffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- { uint32_t x122 = (x89 & 0x1fffff);
- { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- { uint32_t x126 = (x89 & 0x1fffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- { uint32_t x130 = (x89 & 0x1fffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- { uint32_t x134 = (x89 & 0x1fffff);
- { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- { uint32_t x138 = (x89 & 0x1fffff);
- { uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- { uint32_t x142 = (x89 & 0x1fffff);
- { uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- { uint32_t x146 = (x89 & 0x1fffff);
- { uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- { uint32_t x150 = (x89 & 0x1fffff);
- { uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- { uint32_t x154 = (x89 & 0x1fffff);
- { uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- { uint32_t x158 = (x89 & 0x1fffff);
- { uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- out[0] = x92;
- out[1] = x96;
- out[2] = x100;
- out[3] = x104;
- out[4] = x108;
- out[5] = x112;
- out[6] = x116;
- out[7] = x120;
- out[8] = x124;
- out[9] = x128;
- out[10] = x132;
- out[11] = x136;
- out[12] = x140;
- out[13] = x144;
- out[14] = x148;
- out[15] = x152;
- out[16] = x156;
- out[17] = x160;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e379m19/freeze.v b/src/Specific/solinas32_2e379m19/freeze.v
deleted file mode 100644
index 09307726f..000000000
--- a/src/Specific/solinas32_2e379m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e379m19/freezeDisplay.log b/src/Specific/solinas32_2e379m19/freezeDisplay.log
deleted file mode 100644
index f0163aa1d..000000000
--- a/src/Specific/solinas32_2e379m19/freezeDisplay.log
+++ /dev/null
@@ -1,62 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffed);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x1fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x1fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x1fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x1fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x1fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x1fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x1fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x1fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x1fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x1fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x1fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x1fffff);
- uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- uint32_t x90 = (x89 & 0x3fffed);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- uint32_t x94 = (x89 & 0x1fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- uint32_t x98 = (x89 & 0x1fffff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- uint32_t x102 = (x89 & 0x1fffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- uint32_t x106 = (x89 & 0x1fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- uint32_t x110 = (x89 & 0x1fffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- uint32_t x114 = (x89 & 0x1fffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- uint32_t x118 = (x89 & 0x1fffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- uint32_t x122 = (x89 & 0x1fffff);
- uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- uint32_t x126 = (x89 & 0x1fffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- uint32_t x130 = (x89 & 0x1fffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- uint32_t x134 = (x89 & 0x1fffff);
- uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- uint32_t x138 = (x89 & 0x1fffff);
- uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- uint32_t x142 = (x89 & 0x1fffff);
- uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- uint32_t x146 = (x89 & 0x1fffff);
- uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- uint32_t x150 = (x89 & 0x1fffff);
- uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- uint32_t x154 = (x89 & 0x1fffff);
- uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- uint32_t x158 = (x89 & 0x1fffff);
- uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- (Return x160, Return x156, Return x152, Return x148, Return x144, Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e379m19/freezeDisplay.v b/src/Specific/solinas32_2e379m19/freezeDisplay.v
deleted file mode 100644
index 13c741195..000000000
--- a/src/Specific/solinas32_2e379m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e379m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e379m19/py_interpreter.sh b/src/Specific/solinas32_2e379m19/py_interpreter.sh
deleted file mode 100755
index 09faa8c0f..000000000
--- a/src/Specific/solinas32_2e379m19/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**379 - 19' -Dmodulus_bytes='21 + 1/18' -Da24='121665'
diff --git a/src/Specific/solinas32_2e379m19_15limbs/CurveParameters.v b/src/Specific/solinas32_2e379m19_15limbs/CurveParameters.v
new file mode 100644
index 000000000..32bb0f429
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^379 - 19
+Base: 25 + 4/15
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 15%nat;
+ base := 25 + 4/15;
+ bitwidth := 32;
+ s := 2^379;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/Synthesis.v b/src/Specific/solinas32_2e379m19_15limbs/Synthesis.v
new file mode 100644
index 000000000..1e832c116
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/compiler.sh b/src/Specific/solinas32_2e379m19_15limbs/compiler.sh
new file mode 100755
index 000000000..6d10f5cea
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25,25,26,25,25,25,26,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19_15limbs/compilerxx.sh b/src/Specific/solinas32_2e379m19_15limbs/compilerxx.sh
new file mode 100755
index 000000000..fe8c08638
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,26,25,25,25,26,25,25,25,26,25,25,25}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19_15limbs/feadd.v b/src/Specific/solinas32_2e379m19_15limbs/feadd.v
new file mode 100644
index 000000000..c0f72ae72
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.v b/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..a13dc39b4
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/femul.v b/src/Specific/solinas32_2e379m19_15limbs/femul.v
new file mode 100644
index 000000000..c00e662c7
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/femulDisplay.v b/src/Specific/solinas32_2e379m19_15limbs/femulDisplay.v
new file mode 100644
index 000000000..a91deabe5
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesquare.v b/src/Specific/solinas32_2e379m19_15limbs/fesquare.v
new file mode 100644
index 000000000..ff94c0640
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.v b/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6e6a27897
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesub.v b/src/Specific/solinas32_2e379m19_15limbs/fesub.v
new file mode 100644
index 000000000..4691be4a2
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.v b/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..46476c03d
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/freeze.v b/src/Specific/solinas32_2e379m19_15limbs/freeze.v
new file mode 100644
index 000000000..58cd3e180
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.v b/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.v
new file mode 100644
index 000000000..cd756506c
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_15limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e379m19_15limbs/py_interpreter.sh b/src/Specific/solinas32_2e379m19_15limbs/py_interpreter.sh
new file mode 100755
index 000000000..8831ea450
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_15limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**379 - 19' -Dmodulus_bytes='25 + 4/15' -Da24='121665'
diff --git a/src/Specific/solinas32_2e379m19_16limbs/CurveParameters.v b/src/Specific/solinas32_2e379m19_16limbs/CurveParameters.v
new file mode 100644
index 000000000..622d740be
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^379 - 19
+Base: 23 + 11/16
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 23 + 11/16;
+ bitwidth := 32;
+ s := 2^379;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/Synthesis.v b/src/Specific/solinas32_2e379m19_16limbs/Synthesis.v
new file mode 100644
index 000000000..5db5fd152
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/compiler.sh b/src/Specific/solinas32_2e379m19_16limbs/compiler.sh
new file mode 100755
index 000000000..f5ccc777e
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23,24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19_16limbs/compilerxx.sh b/src/Specific/solinas32_2e379m19_16limbs/compilerxx.sh
new file mode 100755
index 000000000..b296ff8e0
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,23,24,24,23,24,24,23,24,24,23,24,24,23}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas32_2e379m19_16limbs/feadd.v b/src/Specific/solinas32_2e379m19_16limbs/feadd.v
new file mode 100644
index 000000000..3a3e69dd0
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..47563d267
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/femul.v b/src/Specific/solinas32_2e379m19_16limbs/femul.v
new file mode 100644
index 000000000..ed37b8453
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/femulDisplay.v b/src/Specific/solinas32_2e379m19_16limbs/femulDisplay.v
new file mode 100644
index 000000000..326aea737
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesquare.v b/src/Specific/solinas32_2e379m19_16limbs/fesquare.v
new file mode 100644
index 000000000..0c770a953
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bbf292406
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesub.v b/src/Specific/solinas32_2e379m19_16limbs/fesub.v
new file mode 100644
index 000000000..439ab71e8
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..cba3aa401
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/freeze.v b/src/Specific/solinas32_2e379m19_16limbs/freeze.v
new file mode 100644
index 000000000..a1f1fa2fb
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..10f352ee8
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e379m19_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e379m19_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e379m19_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..2df0492b9
--- /dev/null
+++ b/src/Specific/solinas32_2e379m19_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**379 - 19' -Dmodulus_bytes='23 + 11/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e382m105/CurveParameters.v b/src/Specific/solinas32_2e382m105/CurveParameters.v
deleted file mode 100644
index c7a1df85a..000000000
--- a/src/Specific/solinas32_2e382m105/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^382 - 105
-Base: 19.1
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 20%nat;
- base := 19 + 1/10;
- bitwidth := 32;
- s := 2^382;
- c := [(1, 105)];
- carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e382m105/Synthesis.v b/src/Specific/solinas32_2e382m105/Synthesis.v
deleted file mode 100644
index 398b23df2..000000000
--- a/src/Specific/solinas32_2e382m105/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e382m105.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e382m105/compiler.sh b/src/Specific/solinas32_2e382m105/compiler.sh
deleted file mode 100755
index b80928c4d..000000000
--- a/src/Specific/solinas32_2e382m105/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,19,19,19,19,19,20,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105/compilerxx.sh b/src/Specific/solinas32_2e382m105/compilerxx.sh
deleted file mode 100755
index 130687c21..000000000
--- a/src/Specific/solinas32_2e382m105/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{20,19,19,19,19,19,19,19,19,19,20,19,19,19,19,19,19,19,19,19}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105/feadd.c b/src/Specific/solinas32_2e382m105/feadd.c
deleted file mode 100644
index 28ee6f665..000000000
--- a/src/Specific/solinas32_2e382m105/feadd.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void feadd(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = (x5 + x43);
- out[1] = (x7 + x45);
- out[2] = (x9 + x47);
- out[3] = (x11 + x49);
- out[4] = (x13 + x51);
- out[5] = (x15 + x53);
- out[6] = (x17 + x55);
- out[7] = (x19 + x57);
- out[8] = (x21 + x59);
- out[9] = (x23 + x61);
- out[10] = (x25 + x63);
- out[11] = (x27 + x65);
- out[12] = (x29 + x67);
- out[13] = (x31 + x69);
- out[14] = (x33 + x71);
- out[15] = (x35 + x73);
- out[16] = (x37 + x75);
- out[17] = (x39 + x77);
- out[18] = (x41 + x79);
- out[19] = (x40 + x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e382m105/feadd.v b/src/Specific/solinas32_2e382m105/feadd.v
deleted file mode 100644
index 18bd250eb..000000000
--- a/src/Specific/solinas32_2e382m105/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e382m105/feaddDisplay.log b/src/Specific/solinas32_2e382m105/feaddDisplay.log
deleted file mode 100644
index eebe17777..000000000
--- a/src/Specific/solinas32_2e382m105/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- ((x40 + x78), (x41 + x79), (x39 + x77), (x37 + x75), (x35 + x73), (x33 + x71), (x31 + x69), (x29 + x67), (x27 + x65), (x25 + x63), (x23 + x61), (x21 + x59), (x19 + x57), (x17 + x55), (x15 + x53), (x13 + x51), (x11 + x49), (x9 + x47), (x7 + x45), (x5 + x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105/feaddDisplay.v b/src/Specific/solinas32_2e382m105/feaddDisplay.v
deleted file mode 100644
index 78019b817..000000000
--- a/src/Specific/solinas32_2e382m105/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e382m105.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e382m105/femul.c b/src/Specific/solinas32_2e382m105/femul.c
deleted file mode 100644
index 6b3e91414..000000000
--- a/src/Specific/solinas32_2e382m105/femul.c
+++ /dev/null
@@ -1,148 +0,0 @@
-static void femul(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- { uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + ((0x2 * ((uint64_t)x13 * x73)) + ((0x2 * ((uint64_t)x15 * x71)) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + (0x69 * ((uint64_t)x40 * x78)));
- { uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (0x69 * (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79))));
- { uint64_t x83 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((uint64_t)x37 * x43))))))))))))))))) + (0x69 * (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77)))));
- { uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (0x69 * (((uint64_t)x37 * x78) + (((uint64_t)x39 * x79) + (((uint64_t)x41 * x77) + ((uint64_t)x40 * x75))))));
- { uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (0x69 * (((uint64_t)x35 * x78) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + (((uint64_t)x41 * x75) + ((uint64_t)x40 * x73)))))));
- { uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (0x69 * (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (0x69 * (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69)))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x27 * x43)))))))))))) + (0x69 * (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67))))))))));
- { uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (0x69 * ((0x2 * ((uint64_t)x27 * x78)) + ((0x2 * ((uint64_t)x29 * x79)) + ((0x2 * ((uint64_t)x31 * x77)) + ((0x2 * ((uint64_t)x33 * x75)) + ((0x2 * ((uint64_t)x35 * x73)) + ((0x2 * ((uint64_t)x37 * x71)) + ((0x2 * ((uint64_t)x39 * x69)) + ((0x2 * ((uint64_t)x41 * x67)) + (0x2 * ((uint64_t)x40 * x65))))))))))));
- { uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (0x69 * (((uint64_t)x25 * x78) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + ((0x2 * ((uint64_t)x33 * x73)) + ((0x2 * ((uint64_t)x35 * x71)) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((uint64_t)x40 * x63))))))))))));
- { uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (0x69 * (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + ((0x2 * ((uint64_t)x31 * x73)) + ((0x2 * ((uint64_t)x33 * x71)) + ((0x2 * ((uint64_t)x35 * x69)) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61)))))))))))));
- { uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (0x69 * (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + ((0x2 * ((uint64_t)x27 * x75)) + ((0x2 * ((uint64_t)x29 * x73)) + ((0x2 * ((uint64_t)x31 * x71)) + ((0x2 * ((uint64_t)x33 * x69)) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59))))))))))))));
- { uint64_t x93 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((uint64_t)x17 * x43))))))) + (0x69 * (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + ((0x2 * ((uint64_t)x27 * x73)) + ((0x2 * ((uint64_t)x29 * x71)) + ((0x2 * ((uint64_t)x31 * x69)) + ((0x2 * ((uint64_t)x33 * x67)) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57)))))))))))))));
- { uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (0x69 * (((uint64_t)x17 * x78) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + (((uint64_t)x41 * x57) + ((uint64_t)x40 * x55))))))))))))))));
- { uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (0x69 * (((uint64_t)x15 * x78) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + ((uint64_t)x40 * x53)))))))))))))))));
- { uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (0x69 * (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + (((uint64_t)x17 * x77) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51))))))))))))))))));
- { uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (0x69 * (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49)))))))))))))))))));
- { uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (0x69 * (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47))))))))))))))))))));
- { uint64_t x99 = (((uint64_t)x5 * x43) + (0x69 * ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45))))))))))))))))))))));
- { uint64_t x100 = (x99 >> 0x14);
- { uint32_t x101 = ((uint32_t)x99 & 0xfffff);
- { uint64_t x102 = (x100 + x98);
- { uint64_t x103 = (x102 >> 0x13);
- { uint32_t x104 = ((uint32_t)x102 & 0x7ffff);
- { uint64_t x105 = (x103 + x97);
- { uint64_t x106 = (x105 >> 0x13);
- { uint32_t x107 = ((uint32_t)x105 & 0x7ffff);
- { uint64_t x108 = (x106 + x96);
- { uint64_t x109 = (x108 >> 0x13);
- { uint32_t x110 = ((uint32_t)x108 & 0x7ffff);
- { uint64_t x111 = (x109 + x95);
- { uint64_t x112 = (x111 >> 0x13);
- { uint32_t x113 = ((uint32_t)x111 & 0x7ffff);
- { uint64_t x114 = (x112 + x94);
- { uint64_t x115 = (x114 >> 0x13);
- { uint32_t x116 = ((uint32_t)x114 & 0x7ffff);
- { uint64_t x117 = (x115 + x93);
- { uint64_t x118 = (x117 >> 0x13);
- { uint32_t x119 = ((uint32_t)x117 & 0x7ffff);
- { uint64_t x120 = (x118 + x92);
- { uint64_t x121 = (x120 >> 0x13);
- { uint32_t x122 = ((uint32_t)x120 & 0x7ffff);
- { uint64_t x123 = (x121 + x91);
- { uint64_t x124 = (x123 >> 0x13);
- { uint32_t x125 = ((uint32_t)x123 & 0x7ffff);
- { uint64_t x126 = (x124 + x90);
- { uint64_t x127 = (x126 >> 0x13);
- { uint32_t x128 = ((uint32_t)x126 & 0x7ffff);
- { uint64_t x129 = (x127 + x89);
- { uint64_t x130 = (x129 >> 0x14);
- { uint32_t x131 = ((uint32_t)x129 & 0xfffff);
- { uint64_t x132 = (x130 + x88);
- { uint64_t x133 = (x132 >> 0x13);
- { uint32_t x134 = ((uint32_t)x132 & 0x7ffff);
- { uint64_t x135 = (x133 + x87);
- { uint64_t x136 = (x135 >> 0x13);
- { uint32_t x137 = ((uint32_t)x135 & 0x7ffff);
- { uint64_t x138 = (x136 + x86);
- { uint32_t x139 = (uint32_t) (x138 >> 0x13);
- { uint32_t x140 = ((uint32_t)x138 & 0x7ffff);
- { uint64_t x141 = (x139 + x85);
- { uint32_t x142 = (uint32_t) (x141 >> 0x13);
- { uint32_t x143 = ((uint32_t)x141 & 0x7ffff);
- { uint64_t x144 = (x142 + x84);
- { uint32_t x145 = (uint32_t) (x144 >> 0x13);
- { uint32_t x146 = ((uint32_t)x144 & 0x7ffff);
- { uint64_t x147 = (x145 + x83);
- { uint32_t x148 = (uint32_t) (x147 >> 0x13);
- { uint32_t x149 = ((uint32_t)x147 & 0x7ffff);
- { uint64_t x150 = (x148 + x82);
- { uint32_t x151 = (uint32_t) (x150 >> 0x13);
- { uint32_t x152 = ((uint32_t)x150 & 0x7ffff);
- { uint64_t x153 = (x151 + x81);
- { uint32_t x154 = (uint32_t) (x153 >> 0x13);
- { uint32_t x155 = ((uint32_t)x153 & 0x7ffff);
- { uint64_t x156 = (x154 + x80);
- { uint32_t x157 = (uint32_t) (x156 >> 0x13);
- { uint32_t x158 = ((uint32_t)x156 & 0x7ffff);
- { uint64_t x159 = (x101 + ((uint64_t)0x69 * x157));
- { uint32_t x160 = (uint32_t) (x159 >> 0x14);
- { uint32_t x161 = ((uint32_t)x159 & 0xfffff);
- { uint32_t x162 = (x160 + x104);
- { uint32_t x163 = (x162 >> 0x13);
- { uint32_t x164 = (x162 & 0x7ffff);
- out[0] = x161;
- out[1] = x164;
- out[2] = (x163 + x107);
- out[3] = x110;
- out[4] = x113;
- out[5] = x116;
- out[6] = x119;
- out[7] = x122;
- out[8] = x125;
- out[9] = x128;
- out[10] = x131;
- out[11] = x134;
- out[12] = x137;
- out[13] = x140;
- out[14] = x143;
- out[15] = x146;
- out[16] = x149;
- out[17] = x152;
- out[18] = x155;
- out[19] = x158;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e382m105/femul.v b/src/Specific/solinas32_2e382m105/femul.v
deleted file mode 100644
index 0dccac9f6..000000000
--- a/src/Specific/solinas32_2e382m105/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e382m105/femulDisplay.log b/src/Specific/solinas32_2e382m105/femulDisplay.log
deleted file mode 100644
index cedcba450..000000000
--- a/src/Specific/solinas32_2e382m105/femulDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + ((0x2 * ((uint64_t)x13 * x73)) + ((0x2 * ((uint64_t)x15 * x71)) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + (0x69 * ((uint64_t)x40 * x78)));
- uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (0x69 * (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79))));
- uint64_t x83 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((uint64_t)x37 * x43))))))))))))))))) + (0x69 * (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77)))));
- uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (0x69 * (((uint64_t)x37 * x78) + (((uint64_t)x39 * x79) + (((uint64_t)x41 * x77) + ((uint64_t)x40 * x75))))));
- uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (0x69 * (((uint64_t)x35 * x78) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + (((uint64_t)x41 * x75) + ((uint64_t)x40 * x73)))))));
- uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (0x69 * (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71))))))));
- uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (0x69 * (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69)))))))));
- uint64_t x88 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x27 * x43)))))))))))) + (0x69 * (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67))))))))));
- uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (0x69 * ((0x2 * ((uint64_t)x27 * x78)) + ((0x2 * ((uint64_t)x29 * x79)) + ((0x2 * ((uint64_t)x31 * x77)) + ((0x2 * ((uint64_t)x33 * x75)) + ((0x2 * ((uint64_t)x35 * x73)) + ((0x2 * ((uint64_t)x37 * x71)) + ((0x2 * ((uint64_t)x39 * x69)) + ((0x2 * ((uint64_t)x41 * x67)) + (0x2 * ((uint64_t)x40 * x65))))))))))));
- uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (0x69 * (((uint64_t)x25 * x78) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + ((0x2 * ((uint64_t)x33 * x73)) + ((0x2 * ((uint64_t)x35 * x71)) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((uint64_t)x40 * x63))))))))))));
- uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (0x69 * (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + ((0x2 * ((uint64_t)x31 * x73)) + ((0x2 * ((uint64_t)x33 * x71)) + ((0x2 * ((uint64_t)x35 * x69)) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61)))))))))))));
- uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (0x69 * (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + ((0x2 * ((uint64_t)x27 * x75)) + ((0x2 * ((uint64_t)x29 * x73)) + ((0x2 * ((uint64_t)x31 * x71)) + ((0x2 * ((uint64_t)x33 * x69)) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59))))))))))))));
- uint64_t x93 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((uint64_t)x17 * x43))))))) + (0x69 * (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + ((0x2 * ((uint64_t)x27 * x73)) + ((0x2 * ((uint64_t)x29 * x71)) + ((0x2 * ((uint64_t)x31 * x69)) + ((0x2 * ((uint64_t)x33 * x67)) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57)))))))))))))));
- uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (0x69 * (((uint64_t)x17 * x78) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + (((uint64_t)x41 * x57) + ((uint64_t)x40 * x55))))))))))))))));
- uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (0x69 * (((uint64_t)x15 * x78) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + ((uint64_t)x40 * x53)))))))))))))))));
- uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (0x69 * (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + (((uint64_t)x17 * x77) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51))))))))))))))))));
- uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (0x69 * (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49)))))))))))))))))));
- uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (0x69 * (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47))))))))))))))))))));
- uint64_t x99 = (((uint64_t)x5 * x43) + (0x69 * ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45))))))))))))))))))))));
- uint64_t x100 = (x99 >> 0x14);
- uint32_t x101 = ((uint32_t)x99 & 0xfffff);
- uint64_t x102 = (x100 + x98);
- uint64_t x103 = (x102 >> 0x13);
- uint32_t x104 = ((uint32_t)x102 & 0x7ffff);
- uint64_t x105 = (x103 + x97);
- uint64_t x106 = (x105 >> 0x13);
- uint32_t x107 = ((uint32_t)x105 & 0x7ffff);
- uint64_t x108 = (x106 + x96);
- uint64_t x109 = (x108 >> 0x13);
- uint32_t x110 = ((uint32_t)x108 & 0x7ffff);
- uint64_t x111 = (x109 + x95);
- uint64_t x112 = (x111 >> 0x13);
- uint32_t x113 = ((uint32_t)x111 & 0x7ffff);
- uint64_t x114 = (x112 + x94);
- uint64_t x115 = (x114 >> 0x13);
- uint32_t x116 = ((uint32_t)x114 & 0x7ffff);
- uint64_t x117 = (x115 + x93);
- uint64_t x118 = (x117 >> 0x13);
- uint32_t x119 = ((uint32_t)x117 & 0x7ffff);
- uint64_t x120 = (x118 + x92);
- uint64_t x121 = (x120 >> 0x13);
- uint32_t x122 = ((uint32_t)x120 & 0x7ffff);
- uint64_t x123 = (x121 + x91);
- uint64_t x124 = (x123 >> 0x13);
- uint32_t x125 = ((uint32_t)x123 & 0x7ffff);
- uint64_t x126 = (x124 + x90);
- uint64_t x127 = (x126 >> 0x13);
- uint32_t x128 = ((uint32_t)x126 & 0x7ffff);
- uint64_t x129 = (x127 + x89);
- uint64_t x130 = (x129 >> 0x14);
- uint32_t x131 = ((uint32_t)x129 & 0xfffff);
- uint64_t x132 = (x130 + x88);
- uint64_t x133 = (x132 >> 0x13);
- uint32_t x134 = ((uint32_t)x132 & 0x7ffff);
- uint64_t x135 = (x133 + x87);
- uint64_t x136 = (x135 >> 0x13);
- uint32_t x137 = ((uint32_t)x135 & 0x7ffff);
- uint64_t x138 = (x136 + x86);
- uint32_t x139 = (uint32_t) (x138 >> 0x13);
- uint32_t x140 = ((uint32_t)x138 & 0x7ffff);
- uint64_t x141 = (x139 + x85);
- uint32_t x142 = (uint32_t) (x141 >> 0x13);
- uint32_t x143 = ((uint32_t)x141 & 0x7ffff);
- uint64_t x144 = (x142 + x84);
- uint32_t x145 = (uint32_t) (x144 >> 0x13);
- uint32_t x146 = ((uint32_t)x144 & 0x7ffff);
- uint64_t x147 = (x145 + x83);
- uint32_t x148 = (uint32_t) (x147 >> 0x13);
- uint32_t x149 = ((uint32_t)x147 & 0x7ffff);
- uint64_t x150 = (x148 + x82);
- uint32_t x151 = (uint32_t) (x150 >> 0x13);
- uint32_t x152 = ((uint32_t)x150 & 0x7ffff);
- uint64_t x153 = (x151 + x81);
- uint32_t x154 = (uint32_t) (x153 >> 0x13);
- uint32_t x155 = ((uint32_t)x153 & 0x7ffff);
- uint64_t x156 = (x154 + x80);
- uint32_t x157 = (uint32_t) (x156 >> 0x13);
- uint32_t x158 = ((uint32_t)x156 & 0x7ffff);
- uint64_t x159 = (x101 + ((uint64_t)0x69 * x157));
- uint32_t x160 = (uint32_t) (x159 >> 0x14);
- uint32_t x161 = ((uint32_t)x159 & 0xfffff);
- uint32_t x162 = (x160 + x104);
- uint32_t x163 = (x162 >> 0x13);
- uint32_t x164 = (x162 & 0x7ffff);
- return (Return x158, Return x155, Return x152, Return x149, Return x146, Return x143, Return x140, Return x137, Return x134, Return x131, Return x128, Return x125, Return x122, Return x119, Return x116, Return x113, Return x110, (x163 + x107), Return x164, Return x161))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105/femulDisplay.v b/src/Specific/solinas32_2e382m105/femulDisplay.v
deleted file mode 100644
index 7ba40a213..000000000
--- a/src/Specific/solinas32_2e382m105/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e382m105.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e382m105/fesquare.c b/src/Specific/solinas32_2e382m105/fesquare.c
deleted file mode 100644
index 070360c3e..000000000
--- a/src/Specific/solinas32_2e382m105/fesquare.c
+++ /dev/null
@@ -1,128 +0,0 @@
-static void fesquare(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x69 * ((uint64_t)x37 * x37)));
- { uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x69 * (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38))));
- { uint64_t x42 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x69 * (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36)))));
- { uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x69 * (((uint64_t)x34 * x37) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((uint64_t)x37 * x34))))));
- { uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x69 * (((uint64_t)x32 * x37) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + ((uint64_t)x37 * x32)))))));
- { uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x69 * (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x69 * (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28)))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x69 * (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x69 * ((0x2 * ((uint64_t)x24 * x37)) + ((0x2 * ((uint64_t)x26 * x38)) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + ((0x2 * ((uint64_t)x32 * x32)) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + ((0x2 * ((uint64_t)x38 * x26)) + (0x2 * ((uint64_t)x37 * x24))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x69 * (((uint64_t)x22 * x37) + ((0x2 * ((uint64_t)x24 * x38)) + ((0x2 * ((uint64_t)x26 * x36)) + ((0x2 * ((uint64_t)x28 * x34)) + ((0x2 * ((uint64_t)x30 * x32)) + ((0x2 * ((uint64_t)x32 * x30)) + ((0x2 * ((uint64_t)x34 * x28)) + ((0x2 * ((uint64_t)x36 * x26)) + ((0x2 * ((uint64_t)x38 * x24)) + ((uint64_t)x37 * x22))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x69 * (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + ((0x2 * ((uint64_t)x28 * x32)) + ((0x2 * ((uint64_t)x30 * x30)) + ((0x2 * ((uint64_t)x32 * x28)) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20)))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x69 * (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + ((0x2 * ((uint64_t)x24 * x34)) + ((0x2 * ((uint64_t)x26 * x32)) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + ((0x2 * ((uint64_t)x32 * x26)) + ((0x2 * ((uint64_t)x34 * x24)) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18))))))))))))));
- { uint64_t x52 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x69 * (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16)))))))))))))));
- { uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x69 * (((uint64_t)x14 * x37) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + ((uint64_t)x37 * x14))))))))))))))));
- { uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x69 * (((uint64_t)x12 * x37) + (((uint64_t)x14 * x38) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + (((uint64_t)x38 * x14) + ((uint64_t)x37 * x12)))))))))))))))));
- { uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x69 * (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10))))))))))))))))));
- { uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x69 * (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + ((0x2 * ((uint64_t)x24 * x24)) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8)))))))))))))))))));
- { uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x69 * (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6))))))))))))))))))));
- { uint64_t x58 = (((uint64_t)x2 * x2) + (0x69 * ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4))))))))))))))))))))));
- { uint64_t x59 = (x58 >> 0x14);
- { uint32_t x60 = ((uint32_t)x58 & 0xfffff);
- { uint64_t x61 = (x59 + x57);
- { uint64_t x62 = (x61 >> 0x13);
- { uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- { uint64_t x64 = (x62 + x56);
- { uint64_t x65 = (x64 >> 0x13);
- { uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- { uint64_t x67 = (x65 + x55);
- { uint64_t x68 = (x67 >> 0x13);
- { uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- { uint64_t x70 = (x68 + x54);
- { uint64_t x71 = (x70 >> 0x13);
- { uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- { uint64_t x73 = (x71 + x53);
- { uint64_t x74 = (x73 >> 0x13);
- { uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- { uint64_t x76 = (x74 + x52);
- { uint64_t x77 = (x76 >> 0x13);
- { uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- { uint64_t x79 = (x77 + x51);
- { uint64_t x80 = (x79 >> 0x13);
- { uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
- { uint64_t x82 = (x80 + x50);
- { uint64_t x83 = (x82 >> 0x13);
- { uint32_t x84 = ((uint32_t)x82 & 0x7ffff);
- { uint64_t x85 = (x83 + x49);
- { uint64_t x86 = (x85 >> 0x13);
- { uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
- { uint64_t x88 = (x86 + x48);
- { uint64_t x89 = (x88 >> 0x14);
- { uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- { uint64_t x91 = (x89 + x47);
- { uint64_t x92 = (x91 >> 0x13);
- { uint32_t x93 = ((uint32_t)x91 & 0x7ffff);
- { uint64_t x94 = (x92 + x46);
- { uint64_t x95 = (x94 >> 0x13);
- { uint32_t x96 = ((uint32_t)x94 & 0x7ffff);
- { uint64_t x97 = (x95 + x45);
- { uint32_t x98 = (uint32_t) (x97 >> 0x13);
- { uint32_t x99 = ((uint32_t)x97 & 0x7ffff);
- { uint64_t x100 = (x98 + x44);
- { uint32_t x101 = (uint32_t) (x100 >> 0x13);
- { uint32_t x102 = ((uint32_t)x100 & 0x7ffff);
- { uint64_t x103 = (x101 + x43);
- { uint32_t x104 = (uint32_t) (x103 >> 0x13);
- { uint32_t x105 = ((uint32_t)x103 & 0x7ffff);
- { uint64_t x106 = (x104 + x42);
- { uint32_t x107 = (uint32_t) (x106 >> 0x13);
- { uint32_t x108 = ((uint32_t)x106 & 0x7ffff);
- { uint64_t x109 = (x107 + x41);
- { uint32_t x110 = (uint32_t) (x109 >> 0x13);
- { uint32_t x111 = ((uint32_t)x109 & 0x7ffff);
- { uint64_t x112 = (x110 + x40);
- { uint32_t x113 = (uint32_t) (x112 >> 0x13);
- { uint32_t x114 = ((uint32_t)x112 & 0x7ffff);
- { uint64_t x115 = (x113 + x39);
- { uint32_t x116 = (uint32_t) (x115 >> 0x13);
- { uint32_t x117 = ((uint32_t)x115 & 0x7ffff);
- { uint64_t x118 = (x60 + ((uint64_t)0x69 * x116));
- { uint32_t x119 = (uint32_t) (x118 >> 0x14);
- { uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- { uint32_t x121 = (x119 + x63);
- { uint32_t x122 = (x121 >> 0x13);
- { uint32_t x123 = (x121 & 0x7ffff);
- out[0] = x120;
- out[1] = x123;
- out[2] = (x122 + x66);
- out[3] = x69;
- out[4] = x72;
- out[5] = x75;
- out[6] = x78;
- out[7] = x81;
- out[8] = x84;
- out[9] = x87;
- out[10] = x90;
- out[11] = x93;
- out[12] = x96;
- out[13] = x99;
- out[14] = x102;
- out[15] = x105;
- out[16] = x108;
- out[17] = x111;
- out[18] = x114;
- out[19] = x117;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e382m105/fesquare.v b/src/Specific/solinas32_2e382m105/fesquare.v
deleted file mode 100644
index b73db71e2..000000000
--- a/src/Specific/solinas32_2e382m105/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e382m105/fesquareDisplay.log b/src/Specific/solinas32_2e382m105/fesquareDisplay.log
deleted file mode 100644
index f625a4e58..000000000
--- a/src/Specific/solinas32_2e382m105/fesquareDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x69 * ((uint64_t)x37 * x37)));
- uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x69 * (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38))));
- uint64_t x42 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x69 * (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36)))));
- uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x69 * (((uint64_t)x34 * x37) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((uint64_t)x37 * x34))))));
- uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x69 * (((uint64_t)x32 * x37) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + ((uint64_t)x37 * x32)))))));
- uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x69 * (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30))))))));
- uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x69 * (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28)))))))));
- uint64_t x47 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x69 * (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x69 * ((0x2 * ((uint64_t)x24 * x37)) + ((0x2 * ((uint64_t)x26 * x38)) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + ((0x2 * ((uint64_t)x32 * x32)) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + ((0x2 * ((uint64_t)x38 * x26)) + (0x2 * ((uint64_t)x37 * x24))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x69 * (((uint64_t)x22 * x37) + ((0x2 * ((uint64_t)x24 * x38)) + ((0x2 * ((uint64_t)x26 * x36)) + ((0x2 * ((uint64_t)x28 * x34)) + ((0x2 * ((uint64_t)x30 * x32)) + ((0x2 * ((uint64_t)x32 * x30)) + ((0x2 * ((uint64_t)x34 * x28)) + ((0x2 * ((uint64_t)x36 * x26)) + ((0x2 * ((uint64_t)x38 * x24)) + ((uint64_t)x37 * x22))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x69 * (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + ((0x2 * ((uint64_t)x28 * x32)) + ((0x2 * ((uint64_t)x30 * x30)) + ((0x2 * ((uint64_t)x32 * x28)) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20)))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x69 * (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + ((0x2 * ((uint64_t)x24 * x34)) + ((0x2 * ((uint64_t)x26 * x32)) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + ((0x2 * ((uint64_t)x32 * x26)) + ((0x2 * ((uint64_t)x34 * x24)) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18))))))))))))));
- uint64_t x52 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x69 * (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16)))))))))))))));
- uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x69 * (((uint64_t)x14 * x37) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + ((uint64_t)x37 * x14))))))))))))))));
- uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x69 * (((uint64_t)x12 * x37) + (((uint64_t)x14 * x38) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + (((uint64_t)x38 * x14) + ((uint64_t)x37 * x12)))))))))))))))));
- uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x69 * (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10))))))))))))))))));
- uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x69 * (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + ((0x2 * ((uint64_t)x24 * x24)) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8)))))))))))))))))));
- uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x69 * (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6))))))))))))))))))));
- uint64_t x58 = (((uint64_t)x2 * x2) + (0x69 * ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4))))))))))))))))))))));
- uint64_t x59 = (x58 >> 0x14);
- uint32_t x60 = ((uint32_t)x58 & 0xfffff);
- uint64_t x61 = (x59 + x57);
- uint64_t x62 = (x61 >> 0x13);
- uint32_t x63 = ((uint32_t)x61 & 0x7ffff);
- uint64_t x64 = (x62 + x56);
- uint64_t x65 = (x64 >> 0x13);
- uint32_t x66 = ((uint32_t)x64 & 0x7ffff);
- uint64_t x67 = (x65 + x55);
- uint64_t x68 = (x67 >> 0x13);
- uint32_t x69 = ((uint32_t)x67 & 0x7ffff);
- uint64_t x70 = (x68 + x54);
- uint64_t x71 = (x70 >> 0x13);
- uint32_t x72 = ((uint32_t)x70 & 0x7ffff);
- uint64_t x73 = (x71 + x53);
- uint64_t x74 = (x73 >> 0x13);
- uint32_t x75 = ((uint32_t)x73 & 0x7ffff);
- uint64_t x76 = (x74 + x52);
- uint64_t x77 = (x76 >> 0x13);
- uint32_t x78 = ((uint32_t)x76 & 0x7ffff);
- uint64_t x79 = (x77 + x51);
- uint64_t x80 = (x79 >> 0x13);
- uint32_t x81 = ((uint32_t)x79 & 0x7ffff);
- uint64_t x82 = (x80 + x50);
- uint64_t x83 = (x82 >> 0x13);
- uint32_t x84 = ((uint32_t)x82 & 0x7ffff);
- uint64_t x85 = (x83 + x49);
- uint64_t x86 = (x85 >> 0x13);
- uint32_t x87 = ((uint32_t)x85 & 0x7ffff);
- uint64_t x88 = (x86 + x48);
- uint64_t x89 = (x88 >> 0x14);
- uint32_t x90 = ((uint32_t)x88 & 0xfffff);
- uint64_t x91 = (x89 + x47);
- uint64_t x92 = (x91 >> 0x13);
- uint32_t x93 = ((uint32_t)x91 & 0x7ffff);
- uint64_t x94 = (x92 + x46);
- uint64_t x95 = (x94 >> 0x13);
- uint32_t x96 = ((uint32_t)x94 & 0x7ffff);
- uint64_t x97 = (x95 + x45);
- uint32_t x98 = (uint32_t) (x97 >> 0x13);
- uint32_t x99 = ((uint32_t)x97 & 0x7ffff);
- uint64_t x100 = (x98 + x44);
- uint32_t x101 = (uint32_t) (x100 >> 0x13);
- uint32_t x102 = ((uint32_t)x100 & 0x7ffff);
- uint64_t x103 = (x101 + x43);
- uint32_t x104 = (uint32_t) (x103 >> 0x13);
- uint32_t x105 = ((uint32_t)x103 & 0x7ffff);
- uint64_t x106 = (x104 + x42);
- uint32_t x107 = (uint32_t) (x106 >> 0x13);
- uint32_t x108 = ((uint32_t)x106 & 0x7ffff);
- uint64_t x109 = (x107 + x41);
- uint32_t x110 = (uint32_t) (x109 >> 0x13);
- uint32_t x111 = ((uint32_t)x109 & 0x7ffff);
- uint64_t x112 = (x110 + x40);
- uint32_t x113 = (uint32_t) (x112 >> 0x13);
- uint32_t x114 = ((uint32_t)x112 & 0x7ffff);
- uint64_t x115 = (x113 + x39);
- uint32_t x116 = (uint32_t) (x115 >> 0x13);
- uint32_t x117 = ((uint32_t)x115 & 0x7ffff);
- uint64_t x118 = (x60 + ((uint64_t)0x69 * x116));
- uint32_t x119 = (uint32_t) (x118 >> 0x14);
- uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- uint32_t x121 = (x119 + x63);
- uint32_t x122 = (x121 >> 0x13);
- uint32_t x123 = (x121 & 0x7ffff);
- return (Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, (x122 + x66), Return x123, Return x120))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105/fesquareDisplay.v b/src/Specific/solinas32_2e382m105/fesquareDisplay.v
deleted file mode 100644
index 4264682bd..000000000
--- a/src/Specific/solinas32_2e382m105/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e382m105.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e382m105/fesub.c b/src/Specific/solinas32_2e382m105/fesub.c
deleted file mode 100644
index 67c83341a..000000000
--- a/src/Specific/solinas32_2e382m105/fesub.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void fesub(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = ((0x1fff2e + x5) - x43);
- out[1] = ((0xffffe + x7) - x45);
- out[2] = ((0xffffe + x9) - x47);
- out[3] = ((0xffffe + x11) - x49);
- out[4] = ((0xffffe + x13) - x51);
- out[5] = ((0xffffe + x15) - x53);
- out[6] = ((0xffffe + x17) - x55);
- out[7] = ((0xffffe + x19) - x57);
- out[8] = ((0xffffe + x21) - x59);
- out[9] = ((0xffffe + x23) - x61);
- out[10] = ((0x1ffffe + x25) - x63);
- out[11] = ((0xffffe + x27) - x65);
- out[12] = ((0xffffe + x29) - x67);
- out[13] = ((0xffffe + x31) - x69);
- out[14] = ((0xffffe + x33) - x71);
- out[15] = ((0xffffe + x35) - x73);
- out[16] = ((0xffffe + x37) - x75);
- out[17] = ((0xffffe + x39) - x77);
- out[18] = ((0xffffe + x41) - x79);
- out[19] = ((0xffffe + x40) - x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e382m105/fesub.v b/src/Specific/solinas32_2e382m105/fesub.v
deleted file mode 100644
index 60a180935..000000000
--- a/src/Specific/solinas32_2e382m105/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e382m105/fesubDisplay.log b/src/Specific/solinas32_2e382m105/fesubDisplay.log
deleted file mode 100644
index 42b86c825..000000000
--- a/src/Specific/solinas32_2e382m105/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- (((0xffffe + x40) - x78), ((0xffffe + x41) - x79), ((0xffffe + x39) - x77), ((0xffffe + x37) - x75), ((0xffffe + x35) - x73), ((0xffffe + x33) - x71), ((0xffffe + x31) - x69), ((0xffffe + x29) - x67), ((0xffffe + x27) - x65), ((0x1ffffe + x25) - x63), ((0xffffe + x23) - x61), ((0xffffe + x21) - x59), ((0xffffe + x19) - x57), ((0xffffe + x17) - x55), ((0xffffe + x15) - x53), ((0xffffe + x13) - x51), ((0xffffe + x11) - x49), ((0xffffe + x9) - x47), ((0xffffe + x7) - x45), ((0x1fff2e + x5) - x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105/fesubDisplay.v b/src/Specific/solinas32_2e382m105/fesubDisplay.v
deleted file mode 100644
index b5ed09ed8..000000000
--- a/src/Specific/solinas32_2e382m105/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e382m105.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e382m105/freeze.c b/src/Specific/solinas32_2e382m105/freeze.c
deleted file mode 100644
index 2303c7d53..000000000
--- a/src/Specific/solinas32_2e382m105/freeze.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void freeze(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfff97);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x7ffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x7ffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x7ffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x7ffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x7ffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x7ffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x7ffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x7ffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x7ffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0xfffff);
- { uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x7ffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x7ffff);
- { uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x7ffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x7ffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x7ffff);
- { uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x7ffff);
- { uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x7ffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x7ffff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x7ffff);
- { uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- { uint32_t x100 = (x99 & 0xfff97);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- { uint32_t x104 = (x99 & 0x7ffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- { uint32_t x108 = (x99 & 0x7ffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- { uint32_t x112 = (x99 & 0x7ffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- { uint32_t x116 = (x99 & 0x7ffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- { uint32_t x120 = (x99 & 0x7ffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- { uint32_t x124 = (x99 & 0x7ffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- { uint32_t x128 = (x99 & 0x7ffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- { uint32_t x132 = (x99 & 0x7ffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- { uint32_t x136 = (x99 & 0x7ffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- { uint32_t x140 = (x99 & 0xfffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- { uint32_t x144 = (x99 & 0x7ffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- { uint32_t x148 = (x99 & 0x7ffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- { uint32_t x152 = (x99 & 0x7ffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- { uint32_t x156 = (x99 & 0x7ffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- { uint32_t x160 = (x99 & 0x7ffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- { uint32_t x164 = (x99 & 0x7ffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- { uint32_t x168 = (x99 & 0x7ffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- { uint32_t x172 = (x99 & 0x7ffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- { uint32_t x176 = (x99 & 0x7ffff);
- { uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- out[0] = x102;
- out[1] = x106;
- out[2] = x110;
- out[3] = x114;
- out[4] = x118;
- out[5] = x122;
- out[6] = x126;
- out[7] = x130;
- out[8] = x134;
- out[9] = x138;
- out[10] = x142;
- out[11] = x146;
- out[12] = x150;
- out[13] = x154;
- out[14] = x158;
- out[15] = x162;
- out[16] = x166;
- out[17] = x170;
- out[18] = x174;
- out[19] = x178;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e382m105/freeze.v b/src/Specific/solinas32_2e382m105/freeze.v
deleted file mode 100644
index 295cc068f..000000000
--- a/src/Specific/solinas32_2e382m105/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e382m105/freezeDisplay.log b/src/Specific/solinas32_2e382m105/freezeDisplay.log
deleted file mode 100644
index f850575b6..000000000
--- a/src/Specific/solinas32_2e382m105/freezeDisplay.log
+++ /dev/null
@@ -1,68 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfff97);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x7ffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x7ffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x7ffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x7ffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x7ffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x7ffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x7ffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x7ffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x7ffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0xfffff);
- uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x7ffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x7ffff);
- uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x7ffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x7ffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x7ffff);
- uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x7ffff);
- uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x7ffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x7ffff);
- uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x7ffff);
- uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- uint32_t x100 = (x99 & 0xfff97);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- uint32_t x104 = (x99 & 0x7ffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- uint32_t x108 = (x99 & 0x7ffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- uint32_t x112 = (x99 & 0x7ffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- uint32_t x116 = (x99 & 0x7ffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- uint32_t x120 = (x99 & 0x7ffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- uint32_t x124 = (x99 & 0x7ffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- uint32_t x128 = (x99 & 0x7ffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- uint32_t x132 = (x99 & 0x7ffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- uint32_t x136 = (x99 & 0x7ffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- uint32_t x140 = (x99 & 0xfffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- uint32_t x144 = (x99 & 0x7ffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- uint32_t x148 = (x99 & 0x7ffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- uint32_t x152 = (x99 & 0x7ffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- uint32_t x156 = (x99 & 0x7ffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- uint32_t x160 = (x99 & 0x7ffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- uint32_t x164 = (x99 & 0x7ffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- uint32_t x168 = (x99 & 0x7ffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- uint32_t x172 = (x99 & 0x7ffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- uint32_t x176 = (x99 & 0x7ffff);
- uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- (Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e382m105/freezeDisplay.v b/src/Specific/solinas32_2e382m105/freezeDisplay.v
deleted file mode 100644
index 905a21c36..000000000
--- a/src/Specific/solinas32_2e382m105/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e382m105.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e382m105/py_interpreter.sh b/src/Specific/solinas32_2e382m105/py_interpreter.sh
deleted file mode 100755
index 1b7a7699c..000000000
--- a/src/Specific/solinas32_2e382m105/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='19.1' -Da24='121665'
diff --git a/src/Specific/solinas32_2e382m105_16limbs/CurveParameters.v b/src/Specific/solinas32_2e382m105_16limbs/CurveParameters.v
new file mode 100644
index 000000000..b961d157a
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^382 - 105
+Base: 23.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 23 + 7/8;
+ bitwidth := 32;
+ s := 2^382;
+ c := [(1, 105)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/Synthesis.v b/src/Specific/solinas32_2e382m105_16limbs/Synthesis.v
new file mode 100644
index 000000000..35a6503a7
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/compiler.sh b/src/Specific/solinas32_2e382m105_16limbs/compiler.sh
new file mode 100755
index 000000000..d00ce8d5a
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105_16limbs/compilerxx.sh b/src/Specific/solinas32_2e382m105_16limbs/compilerxx.sh
new file mode 100755
index 000000000..6fa410f8c
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105_16limbs/feadd.v b/src/Specific/solinas32_2e382m105_16limbs/feadd.v
new file mode 100644
index 000000000..98983200f
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..cf872e81e
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/femul.v b/src/Specific/solinas32_2e382m105_16limbs/femul.v
new file mode 100644
index 000000000..5323b118f
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/femulDisplay.v b/src/Specific/solinas32_2e382m105_16limbs/femulDisplay.v
new file mode 100644
index 000000000..d98e37014
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesquare.v b/src/Specific/solinas32_2e382m105_16limbs/fesquare.v
new file mode 100644
index 000000000..926319ae7
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b183c2f9f
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesub.v b/src/Specific/solinas32_2e382m105_16limbs/fesub.v
new file mode 100644
index 000000000..7d03994ec
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..ada0d0212
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/freeze.v b/src/Specific/solinas32_2e382m105_16limbs/freeze.v
new file mode 100644
index 000000000..8e1196c92
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..57aa5485d
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e382m105_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e382m105_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..d685325c0
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='23.875' -Da24='121665'
diff --git a/src/Specific/solinas32_2e382m105_17limbs/CurveParameters.v b/src/Specific/solinas32_2e382m105_17limbs/CurveParameters.v
new file mode 100644
index 000000000..8038f4c83
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^382 - 105
+Base: 22 + 8/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 22 + 8/17;
+ bitwidth := 32;
+ s := 2^382;
+ c := [(1, 105)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/Synthesis.v b/src/Specific/solinas32_2e382m105_17limbs/Synthesis.v
new file mode 100644
index 000000000..9a88f7767
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/compiler.sh b/src/Specific/solinas32_2e382m105_17limbs/compiler.sh
new file mode 100755
index 000000000..f8b03a571
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105_17limbs/compilerxx.sh b/src/Specific/solinas32_2e382m105_17limbs/compilerxx.sh
new file mode 100755
index 000000000..052cd46a9
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,22}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas32_2e382m105_17limbs/feadd.v b/src/Specific/solinas32_2e382m105_17limbs/feadd.v
new file mode 100644
index 000000000..fbf77a99e
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..7a4bb6abd
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/femul.v b/src/Specific/solinas32_2e382m105_17limbs/femul.v
new file mode 100644
index 000000000..fb03286ca
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/femulDisplay.v b/src/Specific/solinas32_2e382m105_17limbs/femulDisplay.v
new file mode 100644
index 000000000..faf75ff09
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesquare.v b/src/Specific/solinas32_2e382m105_17limbs/fesquare.v
new file mode 100644
index 000000000..c1fd0e8b8
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e382m105_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f0f9fdc8d
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesub.v b/src/Specific/solinas32_2e382m105_17limbs/fesub.v
new file mode 100644
index 000000000..5d52cc6dd
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..111cd0ea5
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/freeze.v b/src/Specific/solinas32_2e382m105_17limbs/freeze.v
new file mode 100644
index 000000000..8be77186b
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..9fa1444b0
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e382m105_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e382m105_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e382m105_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..a6c8995c0
--- /dev/null
+++ b/src/Specific/solinas32_2e382m105_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='22 + 8/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m187_16limbs/CurveParameters.v b/src/Specific/solinas32_2e383m187_16limbs/CurveParameters.v
new file mode 100644
index 000000000..07e2faebd
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 187
+Base: 23 + 15/16
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 23 + 15/16;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/Synthesis.v b/src/Specific/solinas32_2e383m187_16limbs/Synthesis.v
new file mode 100644
index 000000000..3322f466b
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/compiler.sh b/src/Specific/solinas32_2e383m187_16limbs/compiler.sh
new file mode 100755
index 000000000..3c793b242
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas32_2e383m187_16limbs/compilerxx.sh b/src/Specific/solinas32_2e383m187_16limbs/compilerxx.sh
new file mode 100755
index 000000000..ce63ed1c3
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas32_2e383m187_16limbs/feadd.v b/src/Specific/solinas32_2e383m187_16limbs/feadd.v
new file mode 100644
index 000000000..4bd7089e0
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m187_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..10142b267
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/femul.v b/src/Specific/solinas32_2e383m187_16limbs/femul.v
new file mode 100644
index 000000000..ea32bd8d5
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/femulDisplay.v b/src/Specific/solinas32_2e383m187_16limbs/femulDisplay.v
new file mode 100644
index 000000000..5116ab677
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/fesquare.v b/src/Specific/solinas32_2e383m187_16limbs/fesquare.v
new file mode 100644
index 000000000..88a0069a6
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m187_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3ab5ddfac
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/fesub.v b/src/Specific/solinas32_2e383m187_16limbs/fesub.v
new file mode 100644
index 000000000..77f912b64
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m187_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..73f1e58d1
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/freeze.v b/src/Specific/solinas32_2e383m187_16limbs/freeze.v
new file mode 100644
index 000000000..259f23821
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..666081512
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m187_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m187_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..f30aca3f8
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 187' -Dmodulus_bytes='23 + 15/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m187_17limbs/CurveParameters.v b/src/Specific/solinas32_2e383m187_17limbs/CurveParameters.v
new file mode 100644
index 000000000..292bde427
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 187
+Base: 22 + 9/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 22 + 9/17;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/Synthesis.v b/src/Specific/solinas32_2e383m187_17limbs/Synthesis.v
new file mode 100644
index 000000000..c35ef7e09
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/compiler.sh b/src/Specific/solinas32_2e383m187_17limbs/compiler.sh
new file mode 100755
index 000000000..23e47b101
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas32_2e383m187_17limbs/compilerxx.sh b/src/Specific/solinas32_2e383m187_17limbs/compilerxx.sh
new file mode 100755
index 000000000..964377f38
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas32_2e383m187_17limbs/feadd.v b/src/Specific/solinas32_2e383m187_17limbs/feadd.v
new file mode 100644
index 000000000..e2e0cc872
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m187_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..89e101866
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/femul.v b/src/Specific/solinas32_2e383m187_17limbs/femul.v
new file mode 100644
index 000000000..046ae38e3
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.v b/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.v
new file mode 100644
index 000000000..c20d51a59
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesquare.v b/src/Specific/solinas32_2e383m187_17limbs/fesquare.v
new file mode 100644
index 000000000..57298dac9
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3fbccec5c
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesub.v b/src/Specific/solinas32_2e383m187_17limbs/fesub.v
new file mode 100644
index 000000000..902fe6a62
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..9401a4725
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/freeze.v b/src/Specific/solinas32_2e383m187_17limbs/freeze.v
new file mode 100644
index 000000000..208b23b34
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..dc20af24d
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m187_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m187_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m187_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..f1a7ab21a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m187_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 187' -Dmodulus_bytes='22 + 9/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m31_15limbs/CurveParameters.v b/src/Specific/solinas32_2e383m31_15limbs/CurveParameters.v
new file mode 100644
index 000000000..ab96240c7
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 31
+Base: 25 + 8/15
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 15%nat;
+ base := 25 + 8/15;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/Synthesis.v b/src/Specific/solinas32_2e383m31_15limbs/Synthesis.v
new file mode 100644
index 000000000..7f4c9e380
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/compiler.sh b/src/Specific/solinas32_2e383m31_15limbs/compiler.sh
new file mode 100755
index 000000000..bb283f390
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas32_2e383m31_15limbs/compilerxx.sh b/src/Specific/solinas32_2e383m31_15limbs/compilerxx.sh
new file mode 100755
index 000000000..28a0132d3
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,25,26,25,26,25,26,25,26,25}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas32_2e383m31_15limbs/feadd.v b/src/Specific/solinas32_2e383m31_15limbs/feadd.v
new file mode 100644
index 000000000..3d968e49f
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m31_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..841e867fb
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/femul.v b/src/Specific/solinas32_2e383m31_15limbs/femul.v
new file mode 100644
index 000000000..25f9c73a1
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/femulDisplay.v b/src/Specific/solinas32_2e383m31_15limbs/femulDisplay.v
new file mode 100644
index 000000000..9d082c9cd
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/fesquare.v b/src/Specific/solinas32_2e383m31_15limbs/fesquare.v
new file mode 100644
index 000000000..abdfd0df3
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m31_15limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4a580497f
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/fesub.v b/src/Specific/solinas32_2e383m31_15limbs/fesub.v
new file mode 100644
index 000000000..f778f8049
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m31_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..ac84ec8a9
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/freeze.v b/src/Specific/solinas32_2e383m31_15limbs/freeze.v
new file mode 100644
index 000000000..55ae6d1a3
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m31_15limbs/freezeDisplay.v
new file mode 100644
index 000000000..bcf2235b8
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_15limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m31_15limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m31_15limbs/py_interpreter.sh
new file mode 100755
index 000000000..c83f152ae
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_15limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 31' -Dmodulus_bytes='25 + 8/15' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m31_16limbs/CurveParameters.v b/src/Specific/solinas32_2e383m31_16limbs/CurveParameters.v
new file mode 100644
index 000000000..1a2049795
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 31
+Base: 23 + 15/16
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 23 + 15/16;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/Synthesis.v b/src/Specific/solinas32_2e383m31_16limbs/Synthesis.v
new file mode 100644
index 000000000..b298b5237
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/compiler.sh b/src/Specific/solinas32_2e383m31_16limbs/compiler.sh
new file mode 100755
index 000000000..712eb5cc1
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas32_2e383m31_16limbs/compilerxx.sh b/src/Specific/solinas32_2e383m31_16limbs/compilerxx.sh
new file mode 100755
index 000000000..ef9e7489d
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas32_2e383m31_16limbs/feadd.v b/src/Specific/solinas32_2e383m31_16limbs/feadd.v
new file mode 100644
index 000000000..63ff93288
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m31_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..1243d945a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/femul.v b/src/Specific/solinas32_2e383m31_16limbs/femul.v
new file mode 100644
index 000000000..8a6db108d
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/femulDisplay.v b/src/Specific/solinas32_2e383m31_16limbs/femulDisplay.v
new file mode 100644
index 000000000..3f0d52106
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/fesquare.v b/src/Specific/solinas32_2e383m31_16limbs/fesquare.v
new file mode 100644
index 000000000..c4af9f66c
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m31_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3ba8cf9ee
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/fesub.v b/src/Specific/solinas32_2e383m31_16limbs/fesub.v
new file mode 100644
index 000000000..d630c38f6
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m31_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..660587f64
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/freeze.v b/src/Specific/solinas32_2e383m31_16limbs/freeze.v
new file mode 100644
index 000000000..c41154b55
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m31_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..eb2882e6a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m31_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m31_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m31_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..9108d7675
--- /dev/null
+++ b/src/Specific/solinas32_2e383m31_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 31' -Dmodulus_bytes='23 + 15/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m421_17limbs/CurveParameters.v b/src/Specific/solinas32_2e383m421_17limbs/CurveParameters.v
new file mode 100644
index 000000000..ec80a720a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 421
+Base: 22 + 9/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 22 + 9/17;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 421)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/Synthesis.v b/src/Specific/solinas32_2e383m421_17limbs/Synthesis.v
new file mode 100644
index 000000000..9bcc52d9e
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/compiler.sh b/src/Specific/solinas32_2e383m421_17limbs/compiler.sh
new file mode 100755
index 000000000..31c3da0c2
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas32_2e383m421_17limbs/compilerxx.sh b/src/Specific/solinas32_2e383m421_17limbs/compilerxx.sh
new file mode 100755
index 000000000..2a1124b2f
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas32_2e383m421_17limbs/feadd.v b/src/Specific/solinas32_2e383m421_17limbs/feadd.v
new file mode 100644
index 000000000..0c5f3689e
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m421_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..514cc1aae
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/femul.v b/src/Specific/solinas32_2e383m421_17limbs/femul.v
new file mode 100644
index 000000000..3cd04ebd8
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/femulDisplay.v b/src/Specific/solinas32_2e383m421_17limbs/femulDisplay.v
new file mode 100644
index 000000000..120d2eb90
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/fesquare.v b/src/Specific/solinas32_2e383m421_17limbs/fesquare.v
new file mode 100644
index 000000000..fdbf9c93f
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m421_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..49e1e6cee
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/fesub.v b/src/Specific/solinas32_2e383m421_17limbs/fesub.v
new file mode 100644
index 000000000..c0fda0cb1
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m421_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..6f34b3d00
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/freeze.v b/src/Specific/solinas32_2e383m421_17limbs/freeze.v
new file mode 100644
index 000000000..07a8de009
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m421_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..2cbce4a6c
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m421_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m421_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..18e6c6dc4
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 421' -Dmodulus_bytes='22 + 9/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e383m421_18limbs/CurveParameters.v b/src/Specific/solinas32_2e383m421_18limbs/CurveParameters.v
new file mode 100644
index 000000000..2a65aad5b
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 421
+Base: 21 + 5/18
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 21 + 5/18;
+ bitwidth := 32;
+ s := 2^383;
+ c := [(1, 421)];
+ carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/Synthesis.v b/src/Specific/solinas32_2e383m421_18limbs/Synthesis.v
new file mode 100644
index 000000000..5eb3ec3b1
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/compiler.sh b/src/Specific/solinas32_2e383m421_18limbs/compiler.sh
new file mode 100755
index 000000000..ae03b52c2
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas32_2e383m421_18limbs/compilerxx.sh b/src/Specific/solinas32_2e383m421_18limbs/compilerxx.sh
new file mode 100755
index 000000000..ba0648318
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas32_2e383m421_18limbs/feadd.v b/src/Specific/solinas32_2e383m421_18limbs/feadd.v
new file mode 100644
index 000000000..6a6b357dd
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e383m421_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..dbd2b5dc6
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/femul.v b/src/Specific/solinas32_2e383m421_18limbs/femul.v
new file mode 100644
index 000000000..a94c96372
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/femulDisplay.v b/src/Specific/solinas32_2e383m421_18limbs/femulDisplay.v
new file mode 100644
index 000000000..9ffff6929
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/fesquare.v b/src/Specific/solinas32_2e383m421_18limbs/fesquare.v
new file mode 100644
index 000000000..99303411b
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e383m421_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a2b758752
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/fesub.v b/src/Specific/solinas32_2e383m421_18limbs/fesub.v
new file mode 100644
index 000000000..f5253b09a
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e383m421_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..509fbacf7
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/freeze.v b/src/Specific/solinas32_2e383m421_18limbs/freeze.v
new file mode 100644
index 000000000..769684a2f
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e383m421_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..474501554
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e383m421_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e383m421_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e383m421_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..52fd98954
--- /dev/null
+++ b/src/Specific/solinas32_2e383m421_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 421' -Dmodulus_bytes='21 + 5/18' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v
deleted file mode 100644
index 9b8dba361..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
-Base: 24
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 24;
- bitwidth := 32;
- s := 2^384;
- c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
- carry_chains := Some [[4; 3; 0; 15]; [5; 4; 1; 0; 6; 2; 7; 3; 8; 9; 10; 11; 12; 13; 14; 15]; [5; 4; 1; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v
deleted file mode 100644
index 058a72bc2..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh
deleted file mode 100755
index f7d52f35a..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compilerxx.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compilerxx.sh
deleted file mode 100755
index ad53845bb..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.c b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.v
deleted file mode 100644
index 763af6de3..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.log b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.v
deleted file mode 100644
index 6c03cda98..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v
deleted file mode 100644
index 7e1b9ac9e..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v
deleted file mode 100644
index 9bf81755c..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v
deleted file mode 100644
index b8837cb69..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v
deleted file mode 100644
index 25f53c37d..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesub.v
deleted file mode 100644
index 46e3e4d50..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesubDisplay.v
deleted file mode 100644
index d7a867919..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.c b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.c
deleted file mode 100644
index 306c3193f..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.c
+++ /dev/null
@@ -1,82 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- { uint32_t x35, ℤ x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x33, Return x4, 0xff);
- { uint32_t x38, ℤ x39 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x36, Return x6, 0x0);
- { uint32_t x41, ℤ x42 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x39, Return x8, 0x0);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffeff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0xffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint8_t x84 = ((uint8_t)x79 & 0xff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, 0x0);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x41, 0x0);
- { uint32_t x94 = (x79 & 0xffffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x44, Return x94);
- { uint32_t x98 = (x79 & 0xfffeff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x47, Return x98);
- { uint32_t x102 = (x79 & 0xffffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x50, Return x102);
- { uint32_t x106 = (x79 & 0xffffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x53, Return x106);
- { uint32_t x110 = (x79 & 0xffffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x56, Return x110);
- { uint32_t x114 = (x79 & 0xffffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x59, Return x114);
- { uint32_t x118 = (x79 & 0xffffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x62, Return x118);
- { uint32_t x122 = (x79 & 0xffffff);
- { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x65, Return x122);
- { uint32_t x126 = (x79 & 0xffffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x68, Return x126);
- { uint32_t x130 = (x79 & 0xffffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x71, Return x130);
- { uint32_t x134 = (x79 & 0xffffff);
- { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x74, Return x134);
- { uint32_t x138 = (x79 & 0xffffff);
- { uint32_t x140, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x77, Return x138);
- out[0] = x82;
- out[1] = x86;
- out[2] = x89;
- out[3] = x92;
- out[4] = x96;
- out[5] = x100;
- out[6] = x104;
- out[7] = x108;
- out[8] = x112;
- out[9] = x116;
- out[10] = x120;
- out[11] = x124;
- out[12] = x128;
- out[13] = x132;
- out[14] = x136;
- out[15] = x140;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v
deleted file mode 100644
index 36c3302ca..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.log b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.log
deleted file mode 100644
index 266b592f9..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.log
+++ /dev/null
@@ -1,54 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- uint32_t x35, ℤ x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x33, Return x4, 0xff);
- uint32_t x38, ℤ x39 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x36, Return x6, 0x0);
- uint32_t x41, ℤ x42 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) Syntax.TZ) (Return x39, Return x8, 0x0);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 Syntax.TZ (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffeff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0xffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint8_t x84 = ((uint8_t)x79 & 0xff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, 0x0);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x41, 0x0);
- uint32_t x94 = (x79 & 0xffffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x44, Return x94);
- uint32_t x98 = (x79 & 0xfffeff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x47, Return x98);
- uint32_t x102 = (x79 & 0xffffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x50, Return x102);
- uint32_t x106 = (x79 & 0xffffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x53, Return x106);
- uint32_t x110 = (x79 & 0xffffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x56, Return x110);
- uint32_t x114 = (x79 & 0xffffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x59, Return x114);
- uint32_t x118 = (x79 & 0xffffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x62, Return x118);
- uint32_t x122 = (x79 & 0xffffff);
- uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x65, Return x122);
- uint32_t x126 = (x79 & 0xffffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x68, Return x126);
- uint32_t x130 = (x79 & 0xffffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x71, Return x130);
- uint32_t x134 = (x79 & 0xffffff);
- uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x74, Return x134);
- uint32_t x138 = (x79 & 0xffffff);
- uint32_t x140, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x77, Return x138);
- (Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92, Return x89, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v
deleted file mode 100644
index 958596f4b..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/py_interpreter.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/py_interpreter.sh
deleted file mode 100755
index 2fe3c4224..000000000
--- a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/CurveParameters.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/CurveParameters.v
new file mode 100644
index 000000000..a5920a711
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
+Base: 21 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 21 + 1/3;
+ bitwidth := 32;
+ s := 2^384;
+ c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
+ carry_chains := Some [[5; 3; 0; 17]; [6; 4; 1; 0; 7; 5; 2; 8; 3; 9; 10; 11; 12; 13; 14; 15; 16; 17]; [6; 4; 1; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/Synthesis.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/Synthesis.v
new file mode 100644
index 000000000..c5d401336
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compiler.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compiler.sh
new file mode 100755
index 000000000..840c2d622
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compilerxx.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compilerxx.sh
new file mode 100755
index 000000000..9dfe0fb1a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feadd.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feadd.v
new file mode 100644
index 000000000..211b35ec9
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..e19b19bab
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femul.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femul.v
new file mode 100644
index 000000000..f4777f821
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femulDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femulDisplay.v
new file mode 100644
index 000000000..e52f4f588
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquare.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquare.v
new file mode 100644
index 000000000..9367c97ce
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bc686257a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesub.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesub.v
new file mode 100644
index 000000000..c2a25ec8c
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..0419894dc
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freeze.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freeze.v
new file mode 100644
index 000000000..e6078afab
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..77f7a5e4a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..6b43ad63a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='21 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/CurveParameters.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/CurveParameters.v
new file mode 100644
index 000000000..a276b0327
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
+Base: 20 + 4/19
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 19%nat;
+ base := 20 + 4/19;
+ bitwidth := 32;
+ s := 2^384;
+ c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
+ carry_chains := Some [[5; 3; 0; 18]; [6; 4; 1; 0; 7; 5; 2; 8; 3; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18]; [6; 4; 1; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/Synthesis.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/Synthesis.v
new file mode 100644
index 000000000..363ee5d11
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compiler.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compiler.sh
new file mode 100755
index 000000000..b3b6a51c2
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,21,20,20,20,20,21,20,20,20,20,21,20,20,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compilerxx.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compilerxx.sh
new file mode 100755
index 000000000..5b5930cce
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,20,21,20,20,20,20,21,20,20,20,20,21,20,20,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feadd.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feadd.v
new file mode 100644
index 000000000..1236f2714
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feaddDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feaddDisplay.v
new file mode 100644
index 000000000..f67a02b84
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femul.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femul.v
new file mode 100644
index 000000000..af62e15b1
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femulDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femulDisplay.v
new file mode 100644
index 000000000..1341e8381
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquare.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquare.v
new file mode 100644
index 000000000..6c7ca80a1
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquareDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquareDisplay.v
new file mode 100644
index 000000000..be1c183ec
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesub.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesub.v
new file mode 100644
index 000000000..b2ee140c6
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesubDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesubDisplay.v
new file mode 100644
index 000000000..d67ae4880
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freeze.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freeze.v
new file mode 100644
index 000000000..70a8f4fcc
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freezeDisplay.v b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freezeDisplay.v
new file mode 100644
index 000000000..31d59dc57
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m2e128m2e96p2e32m1_19limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/py_interpreter.sh b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/py_interpreter.sh
new file mode 100755
index 000000000..e98eb1b23
--- /dev/null
+++ b/src/Specific/solinas32_2e384m2e128m2e96p2e32m1_19limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='20 + 4/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m317/Synthesis.v b/src/Specific/solinas32_2e384m317/Synthesis.v
deleted file mode 100644
index 9e01fbb25..000000000
--- a/src/Specific/solinas32_2e384m317/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e384m317.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m317/feadd.c b/src/Specific/solinas32_2e384m317/feadd.c
deleted file mode 100644
index 7b8380410..000000000
--- a/src/Specific/solinas32_2e384m317/feadd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void feadd(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = (x5 + x39);
- out[1] = (x7 + x41);
- out[2] = (x9 + x43);
- out[3] = (x11 + x45);
- out[4] = (x13 + x47);
- out[5] = (x15 + x49);
- out[6] = (x17 + x51);
- out[7] = (x19 + x53);
- out[8] = (x21 + x55);
- out[9] = (x23 + x57);
- out[10] = (x25 + x59);
- out[11] = (x27 + x61);
- out[12] = (x29 + x63);
- out[13] = (x31 + x65);
- out[14] = (x33 + x67);
- out[15] = (x35 + x69);
- out[16] = (x37 + x71);
- out[17] = (x36 + x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m317/feadd.v b/src/Specific/solinas32_2e384m317/feadd.v
deleted file mode 100644
index a3d3fabf3..000000000
--- a/src/Specific/solinas32_2e384m317/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m317/feaddDisplay.log b/src/Specific/solinas32_2e384m317/feaddDisplay.log
deleted file mode 100644
index 5e9c243f4..000000000
--- a/src/Specific/solinas32_2e384m317/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- ((x36 + x70), (x37 + x71), (x35 + x69), (x33 + x67), (x31 + x65), (x29 + x63), (x27 + x61), (x25 + x59), (x23 + x57), (x21 + x55), (x19 + x53), (x17 + x51), (x15 + x49), (x13 + x47), (x11 + x45), (x9 + x43), (x7 + x41), (x5 + x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m317/feaddDisplay.v b/src/Specific/solinas32_2e384m317/feaddDisplay.v
deleted file mode 100644
index 55ef76f2e..000000000
--- a/src/Specific/solinas32_2e384m317/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m317.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e384m317/femul.c b/src/Specific/solinas32_2e384m317/femul.c
deleted file mode 100644
index 29a29e7f6..000000000
--- a/src/Specific/solinas32_2e384m317/femul.c
+++ /dev/null
@@ -1,134 +0,0 @@
-static void femul(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- { uint64_t x72 = (((uint64_t)x5 * x70) + ((0x2 * ((uint64_t)x7 * x71)) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + ((0x2 * ((uint64_t)x19 * x59)) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((0x2 * ((uint64_t)x31 * x47)) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + ((0x2 * ((uint64_t)x37 * x41)) + ((uint64_t)x36 * x39))))))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x13d * ((uint64_t)x36 * x70)));
- { uint64_t x74 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + (((uint64_t)x17 * x57) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (((uint64_t)x29 * x45) + ((0x2 * ((uint64_t)x31 * x43)) + ((0x2 * ((uint64_t)x33 * x41)) + ((uint64_t)x35 * x39)))))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x37 * x70)) + (0x2 * ((uint64_t)x36 * x71)))));
- { uint64_t x75 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + ((0x2 * ((uint64_t)x13 * x59)) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + ((0x2 * ((uint64_t)x19 * x53)) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((0x2 * ((uint64_t)x31 * x41)) + ((uint64_t)x33 * x39))))))))))))))) + (0x13d * (((uint64_t)x35 * x70) + ((0x2 * ((uint64_t)x37 * x71)) + ((uint64_t)x36 * x69)))));
- { uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x13d * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- { uint64_t x77 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + (((uint64_t)x11 * x57) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + (((uint64_t)x17 * x51) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((uint64_t)x29 * x39))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x31 * x70)) + ((0x2 * ((uint64_t)x33 * x71)) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + (0x2 * ((uint64_t)x36 * x65))))))));
- { uint64_t x78 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x27 * x39)))))))))))) + (0x13d * (((uint64_t)x29 * x70) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + ((0x2 * ((uint64_t)x37 * x65)) + ((uint64_t)x36 * x63))))))));
- { uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x13d * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- { uint64_t x80 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((uint64_t)x23 * x39)))))))))) + (0x13d * ((0x2 * ((uint64_t)x25 * x70)) + ((0x2 * ((uint64_t)x27 * x71)) + (((uint64_t)x29 * x69) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + ((0x2 * ((uint64_t)x37 * x61)) + (0x2 * ((uint64_t)x36 * x59)))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + ((uint64_t)x21 * x39))))))))) + (0x13d * (((uint64_t)x23 * x70) + ((0x2 * ((uint64_t)x25 * x71)) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((0x2 * ((uint64_t)x37 * x59)) + ((uint64_t)x36 * x57)))))))))));
- { uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x13d * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- { uint64_t x83 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((uint64_t)x17 * x39))))))) + (0x13d * ((0x2 * ((uint64_t)x19 * x70)) + ((0x2 * ((uint64_t)x21 * x71)) + (((uint64_t)x23 * x69) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + ((0x2 * ((uint64_t)x31 * x61)) + ((0x2 * ((uint64_t)x33 * x59)) + (((uint64_t)x35 * x57) + ((0x2 * ((uint64_t)x37 * x55)) + (0x2 * ((uint64_t)x36 * x53))))))))))))));
- { uint64_t x84 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((uint64_t)x15 * x39)))))) + (0x13d * (((uint64_t)x17 * x70) + ((0x2 * ((uint64_t)x19 * x71)) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + ((0x2 * ((uint64_t)x31 * x59)) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + ((0x2 * ((uint64_t)x37 * x53)) + ((uint64_t)x36 * x51))))))))))))));
- { uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x13d * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- { uint64_t x86 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((uint64_t)x11 * x39)))) + (0x13d * ((0x2 * ((uint64_t)x13 * x70)) + ((0x2 * ((uint64_t)x15 * x71)) + (((uint64_t)x17 * x69) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + ((0x2 * ((uint64_t)x27 * x59)) + (((uint64_t)x29 * x57) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + (0x2 * ((uint64_t)x36 * x47)))))))))))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((uint64_t)x9 * x39))) + (0x13d * (((uint64_t)x11 * x70) + ((0x2 * ((uint64_t)x13 * x71)) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + ((0x2 * ((uint64_t)x25 * x59)) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((0x2 * ((uint64_t)x37 * x47)) + ((uint64_t)x36 * x45)))))))))))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x13d * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- { uint64_t x89 = (((uint64_t)x5 * x39) + (0x13d * ((0x2 * ((uint64_t)x7 * x70)) + ((0x2 * ((uint64_t)x9 * x71)) + (((uint64_t)x11 * x69) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + (((uint64_t)x23 * x57) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + (((uint64_t)x35 * x45) + ((0x2 * ((uint64_t)x37 * x43)) + (0x2 * ((uint64_t)x36 * x41))))))))))))))))))));
- { uint64_t x90 = (x89 >> 0x16);
- { uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- { uint64_t x92 = (x90 + x88);
- { uint64_t x93 = (x92 >> 0x15);
- { uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- { uint64_t x95 = (x93 + x87);
- { uint64_t x96 = (x95 >> 0x15);
- { uint32_t x97 = ((uint32_t)x95 & 0x1fffff);
- { uint64_t x98 = (x96 + x86);
- { uint64_t x99 = (x98 >> 0x16);
- { uint32_t x100 = ((uint32_t)x98 & 0x3fffff);
- { uint64_t x101 = (x99 + x85);
- { uint64_t x102 = (x101 >> 0x15);
- { uint32_t x103 = ((uint32_t)x101 & 0x1fffff);
- { uint64_t x104 = (x102 + x84);
- { uint64_t x105 = (x104 >> 0x15);
- { uint32_t x106 = ((uint32_t)x104 & 0x1fffff);
- { uint64_t x107 = (x105 + x83);
- { uint64_t x108 = (x107 >> 0x16);
- { uint32_t x109 = ((uint32_t)x107 & 0x3fffff);
- { uint64_t x110 = (x108 + x82);
- { uint64_t x111 = (x110 >> 0x15);
- { uint32_t x112 = ((uint32_t)x110 & 0x1fffff);
- { uint64_t x113 = (x111 + x81);
- { uint64_t x114 = (x113 >> 0x15);
- { uint32_t x115 = ((uint32_t)x113 & 0x1fffff);
- { uint64_t x116 = (x114 + x80);
- { uint64_t x117 = (x116 >> 0x16);
- { uint32_t x118 = ((uint32_t)x116 & 0x3fffff);
- { uint64_t x119 = (x117 + x79);
- { uint64_t x120 = (x119 >> 0x15);
- { uint32_t x121 = ((uint32_t)x119 & 0x1fffff);
- { uint64_t x122 = (x120 + x78);
- { uint64_t x123 = (x122 >> 0x15);
- { uint32_t x124 = ((uint32_t)x122 & 0x1fffff);
- { uint64_t x125 = (x123 + x77);
- { uint64_t x126 = (x125 >> 0x16);
- { uint32_t x127 = ((uint32_t)x125 & 0x3fffff);
- { uint64_t x128 = (x126 + x76);
- { uint64_t x129 = (x128 >> 0x15);
- { uint32_t x130 = ((uint32_t)x128 & 0x1fffff);
- { uint64_t x131 = (x129 + x75);
- { uint64_t x132 = (x131 >> 0x15);
- { uint32_t x133 = ((uint32_t)x131 & 0x1fffff);
- { uint64_t x134 = (x132 + x74);
- { uint64_t x135 = (x134 >> 0x16);
- { uint32_t x136 = ((uint32_t)x134 & 0x3fffff);
- { uint64_t x137 = (x135 + x73);
- { uint64_t x138 = (x137 >> 0x15);
- { uint32_t x139 = ((uint32_t)x137 & 0x1fffff);
- { uint64_t x140 = (x138 + x72);
- { uint32_t x141 = (uint32_t) (x140 >> 0x15);
- { uint32_t x142 = ((uint32_t)x140 & 0x1fffff);
- { uint64_t x143 = (x91 + ((uint64_t)0x13d * x141));
- { uint32_t x144 = (uint32_t) (x143 >> 0x16);
- { uint32_t x145 = ((uint32_t)x143 & 0x3fffff);
- { uint32_t x146 = (x144 + x94);
- { uint32_t x147 = (x146 >> 0x15);
- { uint32_t x148 = (x146 & 0x1fffff);
- out[0] = x145;
- out[1] = x148;
- out[2] = (x147 + x97);
- out[3] = x100;
- out[4] = x103;
- out[5] = x106;
- out[6] = x109;
- out[7] = x112;
- out[8] = x115;
- out[9] = x118;
- out[10] = x121;
- out[11] = x124;
- out[12] = x127;
- out[13] = x130;
- out[14] = x133;
- out[15] = x136;
- out[16] = x139;
- out[17] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m317/femul.v b/src/Specific/solinas32_2e384m317/femul.v
deleted file mode 100644
index 9ae71f9fe..000000000
--- a/src/Specific/solinas32_2e384m317/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m317/femulDisplay.log b/src/Specific/solinas32_2e384m317/femulDisplay.log
deleted file mode 100644
index 9b4cb94ec..000000000
--- a/src/Specific/solinas32_2e384m317/femulDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- uint64_t x72 = (((uint64_t)x5 * x70) + ((0x2 * ((uint64_t)x7 * x71)) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + ((0x2 * ((uint64_t)x19 * x59)) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((0x2 * ((uint64_t)x31 * x47)) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + ((0x2 * ((uint64_t)x37 * x41)) + ((uint64_t)x36 * x39))))))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x13d * ((uint64_t)x36 * x70)));
- uint64_t x74 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + (((uint64_t)x17 * x57) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + (((uint64_t)x23 * x51) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + (((uint64_t)x29 * x45) + ((0x2 * ((uint64_t)x31 * x43)) + ((0x2 * ((uint64_t)x33 * x41)) + ((uint64_t)x35 * x39)))))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x37 * x70)) + (0x2 * ((uint64_t)x36 * x71)))));
- uint64_t x75 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + ((0x2 * ((uint64_t)x13 * x59)) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + ((0x2 * ((uint64_t)x19 * x53)) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + ((0x2 * ((uint64_t)x31 * x41)) + ((uint64_t)x33 * x39))))))))))))))) + (0x13d * (((uint64_t)x35 * x70) + ((0x2 * ((uint64_t)x37 * x71)) + ((uint64_t)x36 * x69)))));
- uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x13d * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- uint64_t x77 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + (((uint64_t)x11 * x57) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + (((uint64_t)x17 * x51) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((uint64_t)x29 * x39))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x31 * x70)) + ((0x2 * ((uint64_t)x33 * x71)) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + (0x2 * ((uint64_t)x36 * x65))))))));
- uint64_t x78 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + ((0x2 * ((uint64_t)x19 * x47)) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((0x2 * ((uint64_t)x25 * x41)) + ((uint64_t)x27 * x39)))))))))))) + (0x13d * (((uint64_t)x29 * x70) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + ((0x2 * ((uint64_t)x37 * x65)) + ((uint64_t)x36 * x63))))))));
- uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x13d * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- uint64_t x80 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((uint64_t)x23 * x39)))))))))) + (0x13d * ((0x2 * ((uint64_t)x25 * x70)) + ((0x2 * ((uint64_t)x27 * x71)) + (((uint64_t)x29 * x69) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + ((0x2 * ((uint64_t)x37 * x61)) + (0x2 * ((uint64_t)x36 * x59)))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + ((0x2 * ((uint64_t)x13 * x47)) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((0x2 * ((uint64_t)x19 * x41)) + ((uint64_t)x21 * x39))))))))) + (0x13d * (((uint64_t)x23 * x70) + ((0x2 * ((uint64_t)x25 * x71)) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((0x2 * ((uint64_t)x37 * x59)) + ((uint64_t)x36 * x57)))))))))));
- uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x13d * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- uint64_t x83 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + (((uint64_t)x11 * x45) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((uint64_t)x17 * x39))))))) + (0x13d * ((0x2 * ((uint64_t)x19 * x70)) + ((0x2 * ((uint64_t)x21 * x71)) + (((uint64_t)x23 * x69) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + ((0x2 * ((uint64_t)x31 * x61)) + ((0x2 * ((uint64_t)x33 * x59)) + (((uint64_t)x35 * x57) + ((0x2 * ((uint64_t)x37 * x55)) + (0x2 * ((uint64_t)x36 * x53))))))))))))));
- uint64_t x84 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + ((0x2 * ((uint64_t)x13 * x41)) + ((uint64_t)x15 * x39)))))) + (0x13d * (((uint64_t)x17 * x70) + ((0x2 * ((uint64_t)x19 * x71)) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + ((0x2 * ((uint64_t)x31 * x59)) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + ((0x2 * ((uint64_t)x37 * x53)) + ((uint64_t)x36 * x51))))))))))))));
- uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x13d * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- uint64_t x86 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((uint64_t)x11 * x39)))) + (0x13d * ((0x2 * ((uint64_t)x13 * x70)) + ((0x2 * ((uint64_t)x15 * x71)) + (((uint64_t)x17 * x69) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + ((0x2 * ((uint64_t)x27 * x59)) + (((uint64_t)x29 * x57) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + (0x2 * ((uint64_t)x36 * x47)))))))))))))))));
- uint64_t x87 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((uint64_t)x9 * x39))) + (0x13d * (((uint64_t)x11 * x70) + ((0x2 * ((uint64_t)x13 * x71)) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + ((0x2 * ((uint64_t)x25 * x59)) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((0x2 * ((uint64_t)x37 * x47)) + ((uint64_t)x36 * x45)))))))))))))))));
- uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x13d * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- uint64_t x89 = (((uint64_t)x5 * x39) + (0x13d * ((0x2 * ((uint64_t)x7 * x70)) + ((0x2 * ((uint64_t)x9 * x71)) + (((uint64_t)x11 * x69) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + (((uint64_t)x23 * x57) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + (((uint64_t)x35 * x45) + ((0x2 * ((uint64_t)x37 * x43)) + (0x2 * ((uint64_t)x36 * x41))))))))))))))))))));
- uint64_t x90 = (x89 >> 0x16);
- uint32_t x91 = ((uint32_t)x89 & 0x3fffff);
- uint64_t x92 = (x90 + x88);
- uint64_t x93 = (x92 >> 0x15);
- uint32_t x94 = ((uint32_t)x92 & 0x1fffff);
- uint64_t x95 = (x93 + x87);
- uint64_t x96 = (x95 >> 0x15);
- uint32_t x97 = ((uint32_t)x95 & 0x1fffff);
- uint64_t x98 = (x96 + x86);
- uint64_t x99 = (x98 >> 0x16);
- uint32_t x100 = ((uint32_t)x98 & 0x3fffff);
- uint64_t x101 = (x99 + x85);
- uint64_t x102 = (x101 >> 0x15);
- uint32_t x103 = ((uint32_t)x101 & 0x1fffff);
- uint64_t x104 = (x102 + x84);
- uint64_t x105 = (x104 >> 0x15);
- uint32_t x106 = ((uint32_t)x104 & 0x1fffff);
- uint64_t x107 = (x105 + x83);
- uint64_t x108 = (x107 >> 0x16);
- uint32_t x109 = ((uint32_t)x107 & 0x3fffff);
- uint64_t x110 = (x108 + x82);
- uint64_t x111 = (x110 >> 0x15);
- uint32_t x112 = ((uint32_t)x110 & 0x1fffff);
- uint64_t x113 = (x111 + x81);
- uint64_t x114 = (x113 >> 0x15);
- uint32_t x115 = ((uint32_t)x113 & 0x1fffff);
- uint64_t x116 = (x114 + x80);
- uint64_t x117 = (x116 >> 0x16);
- uint32_t x118 = ((uint32_t)x116 & 0x3fffff);
- uint64_t x119 = (x117 + x79);
- uint64_t x120 = (x119 >> 0x15);
- uint32_t x121 = ((uint32_t)x119 & 0x1fffff);
- uint64_t x122 = (x120 + x78);
- uint64_t x123 = (x122 >> 0x15);
- uint32_t x124 = ((uint32_t)x122 & 0x1fffff);
- uint64_t x125 = (x123 + x77);
- uint64_t x126 = (x125 >> 0x16);
- uint32_t x127 = ((uint32_t)x125 & 0x3fffff);
- uint64_t x128 = (x126 + x76);
- uint64_t x129 = (x128 >> 0x15);
- uint32_t x130 = ((uint32_t)x128 & 0x1fffff);
- uint64_t x131 = (x129 + x75);
- uint64_t x132 = (x131 >> 0x15);
- uint32_t x133 = ((uint32_t)x131 & 0x1fffff);
- uint64_t x134 = (x132 + x74);
- uint64_t x135 = (x134 >> 0x16);
- uint32_t x136 = ((uint32_t)x134 & 0x3fffff);
- uint64_t x137 = (x135 + x73);
- uint64_t x138 = (x137 >> 0x15);
- uint32_t x139 = ((uint32_t)x137 & 0x1fffff);
- uint64_t x140 = (x138 + x72);
- uint32_t x141 = (uint32_t) (x140 >> 0x15);
- uint32_t x142 = ((uint32_t)x140 & 0x1fffff);
- uint64_t x143 = (x91 + ((uint64_t)0x13d * x141));
- uint32_t x144 = (uint32_t) (x143 >> 0x16);
- uint32_t x145 = ((uint32_t)x143 & 0x3fffff);
- uint32_t x146 = (x144 + x94);
- uint32_t x147 = (x146 >> 0x15);
- uint32_t x148 = (x146 & 0x1fffff);
- return (Return x142, Return x139, Return x136, Return x133, Return x130, Return x127, Return x124, Return x121, Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, (x147 + x97), Return x148, Return x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m317/femulDisplay.v b/src/Specific/solinas32_2e384m317/femulDisplay.v
deleted file mode 100644
index 8d6e0f842..000000000
--- a/src/Specific/solinas32_2e384m317/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m317.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e384m317/fesquare.c b/src/Specific/solinas32_2e384m317/fesquare.c
deleted file mode 100644
index a8d0e1f7c..000000000
--- a/src/Specific/solinas32_2e384m317/fesquare.c
+++ /dev/null
@@ -1,116 +0,0 @@
-static void fesquare(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x35 = (((uint64_t)x2 * x33) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x33 * x2))))))))))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x13d * ((uint64_t)x33 * x33)));
- { uint64_t x37 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x34 * x33)) + (0x2 * ((uint64_t)x33 * x34)))));
- { uint64_t x38 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x13d * (((uint64_t)x32 * x33) + ((0x2 * ((uint64_t)x34 * x34)) + ((uint64_t)x33 * x32)))));
- { uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x13d * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- { uint64_t x40 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x28 * x33)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + (0x2 * ((uint64_t)x33 * x28))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13d * (((uint64_t)x26 * x33) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + ((uint64_t)x33 * x26))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x13d * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13d * ((0x2 * ((uint64_t)x22 * x33)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + (0x2 * ((uint64_t)x33 * x22)))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13d * (((uint64_t)x20 * x33) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + ((uint64_t)x33 * x20)))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13d * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13d * ((0x2 * ((uint64_t)x16 * x33)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + (0x2 * ((uint64_t)x33 * x16))))))))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13d * (((uint64_t)x14 * x33) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + ((uint64_t)x33 * x14))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13d * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13d * ((0x2 * ((uint64_t)x10 * x33)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + (0x2 * ((uint64_t)x33 * x10)))))))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13d * (((uint64_t)x8 * x33) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + ((uint64_t)x33 * x8)))))))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13d * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- { uint64_t x52 = (((uint64_t)x2 * x2) + (0x13d * ((0x2 * ((uint64_t)x4 * x33)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + (0x2 * ((uint64_t)x33 * x4))))))))))))))))))));
- { uint64_t x53 = (x52 >> 0x16);
- { uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- { uint64_t x55 = (x53 + x51);
- { uint64_t x56 = (x55 >> 0x15);
- { uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- { uint64_t x58 = (x56 + x50);
- { uint64_t x59 = (x58 >> 0x15);
- { uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- { uint64_t x61 = (x59 + x49);
- { uint64_t x62 = (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x48);
- { uint64_t x65 = (x64 >> 0x15);
- { uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- { uint64_t x67 = (x65 + x47);
- { uint64_t x68 = (x67 >> 0x15);
- { uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- { uint64_t x70 = (x68 + x46);
- { uint64_t x71 = (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x71 + x45);
- { uint64_t x74 = (x73 >> 0x15);
- { uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- { uint64_t x76 = (x74 + x44);
- { uint64_t x77 = (x76 >> 0x15);
- { uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- { uint64_t x79 = (x77 + x43);
- { uint64_t x80 = (x79 >> 0x16);
- { uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- { uint64_t x82 = (x80 + x42);
- { uint64_t x83 = (x82 >> 0x15);
- { uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- { uint64_t x85 = (x83 + x41);
- { uint64_t x86 = (x85 >> 0x15);
- { uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- { uint64_t x88 = (x86 + x40);
- { uint64_t x89 = (x88 >> 0x16);
- { uint32_t x90 = ((uint32_t)x88 & 0x3fffff);
- { uint64_t x91 = (x89 + x39);
- { uint64_t x92 = (x91 >> 0x15);
- { uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- { uint64_t x94 = (x92 + x38);
- { uint64_t x95 = (x94 >> 0x15);
- { uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- { uint64_t x97 = (x95 + x37);
- { uint64_t x98 = (x97 >> 0x16);
- { uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- { uint64_t x100 = (x98 + x36);
- { uint64_t x101 = (x100 >> 0x15);
- { uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- { uint64_t x103 = (x101 + x35);
- { uint32_t x104 = (uint32_t) (x103 >> 0x15);
- { uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- { uint64_t x106 = (x54 + ((uint64_t)0x13d * x104));
- { uint32_t x107 = (uint32_t) (x106 >> 0x16);
- { uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- { uint32_t x109 = (x107 + x57);
- { uint32_t x110 = (x109 >> 0x15);
- { uint32_t x111 = (x109 & 0x1fffff);
- out[0] = x108;
- out[1] = x111;
- out[2] = (x110 + x60);
- out[3] = x63;
- out[4] = x66;
- out[5] = x69;
- out[6] = x72;
- out[7] = x75;
- out[8] = x78;
- out[9] = x81;
- out[10] = x84;
- out[11] = x87;
- out[12] = x90;
- out[13] = x93;
- out[14] = x96;
- out[15] = x99;
- out[16] = x102;
- out[17] = x105;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m317/fesquare.v b/src/Specific/solinas32_2e384m317/fesquare.v
deleted file mode 100644
index e00cfeed6..000000000
--- a/src/Specific/solinas32_2e384m317/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m317/fesquareDisplay.log b/src/Specific/solinas32_2e384m317/fesquareDisplay.log
deleted file mode 100644
index f8fcd2854..000000000
--- a/src/Specific/solinas32_2e384m317/fesquareDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x35 = (((uint64_t)x2 * x33) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x33 * x2))))))))))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x13d * ((uint64_t)x33 * x33)));
- uint64_t x37 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x34 * x33)) + (0x2 * ((uint64_t)x33 * x34)))));
- uint64_t x38 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x13d * (((uint64_t)x32 * x33) + ((0x2 * ((uint64_t)x34 * x34)) + ((uint64_t)x33 * x32)))));
- uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x13d * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- uint64_t x40 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x13d * ((0x2 * ((uint64_t)x28 * x33)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + (0x2 * ((uint64_t)x33 * x28))))))));
- uint64_t x41 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x13d * (((uint64_t)x26 * x33) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + ((uint64_t)x33 * x26))))))));
- uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x13d * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- uint64_t x43 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x13d * ((0x2 * ((uint64_t)x22 * x33)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + (0x2 * ((uint64_t)x33 * x22)))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x13d * (((uint64_t)x20 * x33) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + ((uint64_t)x33 * x20)))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x13d * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- uint64_t x46 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x13d * ((0x2 * ((uint64_t)x16 * x33)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + (0x2 * ((uint64_t)x33 * x16))))))))))))));
- uint64_t x47 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x13d * (((uint64_t)x14 * x33) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + ((uint64_t)x33 * x14))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x13d * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x13d * ((0x2 * ((uint64_t)x10 * x33)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + (0x2 * ((uint64_t)x33 * x10)))))))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x13d * (((uint64_t)x8 * x33) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + ((uint64_t)x33 * x8)))))))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x13d * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- uint64_t x52 = (((uint64_t)x2 * x2) + (0x13d * ((0x2 * ((uint64_t)x4 * x33)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + (0x2 * ((uint64_t)x33 * x4))))))))))))))))))));
- uint64_t x53 = (x52 >> 0x16);
- uint32_t x54 = ((uint32_t)x52 & 0x3fffff);
- uint64_t x55 = (x53 + x51);
- uint64_t x56 = (x55 >> 0x15);
- uint32_t x57 = ((uint32_t)x55 & 0x1fffff);
- uint64_t x58 = (x56 + x50);
- uint64_t x59 = (x58 >> 0x15);
- uint32_t x60 = ((uint32_t)x58 & 0x1fffff);
- uint64_t x61 = (x59 + x49);
- uint64_t x62 = (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x48);
- uint64_t x65 = (x64 >> 0x15);
- uint32_t x66 = ((uint32_t)x64 & 0x1fffff);
- uint64_t x67 = (x65 + x47);
- uint64_t x68 = (x67 >> 0x15);
- uint32_t x69 = ((uint32_t)x67 & 0x1fffff);
- uint64_t x70 = (x68 + x46);
- uint64_t x71 = (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x71 + x45);
- uint64_t x74 = (x73 >> 0x15);
- uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- uint64_t x76 = (x74 + x44);
- uint64_t x77 = (x76 >> 0x15);
- uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- uint64_t x79 = (x77 + x43);
- uint64_t x80 = (x79 >> 0x16);
- uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- uint64_t x82 = (x80 + x42);
- uint64_t x83 = (x82 >> 0x15);
- uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- uint64_t x85 = (x83 + x41);
- uint64_t x86 = (x85 >> 0x15);
- uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- uint64_t x88 = (x86 + x40);
- uint64_t x89 = (x88 >> 0x16);
- uint32_t x90 = ((uint32_t)x88 & 0x3fffff);
- uint64_t x91 = (x89 + x39);
- uint64_t x92 = (x91 >> 0x15);
- uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- uint64_t x94 = (x92 + x38);
- uint64_t x95 = (x94 >> 0x15);
- uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- uint64_t x97 = (x95 + x37);
- uint64_t x98 = (x97 >> 0x16);
- uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- uint64_t x100 = (x98 + x36);
- uint64_t x101 = (x100 >> 0x15);
- uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- uint64_t x103 = (x101 + x35);
- uint32_t x104 = (uint32_t) (x103 >> 0x15);
- uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- uint64_t x106 = (x54 + ((uint64_t)0x13d * x104));
- uint32_t x107 = (uint32_t) (x106 >> 0x16);
- uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- uint32_t x109 = (x107 + x57);
- uint32_t x110 = (x109 >> 0x15);
- uint32_t x111 = (x109 & 0x1fffff);
- return (Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, (x110 + x60), Return x111, Return x108))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m317/fesquareDisplay.v b/src/Specific/solinas32_2e384m317/fesquareDisplay.v
deleted file mode 100644
index 0d4388c1a..000000000
--- a/src/Specific/solinas32_2e384m317/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m317.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e384m317/fesub.c b/src/Specific/solinas32_2e384m317/fesub.c
deleted file mode 100644
index 5f8625d0f..000000000
--- a/src/Specific/solinas32_2e384m317/fesub.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void fesub(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = ((0x7ffd86 + x5) - x39);
- out[1] = ((0x3ffffe + x7) - x41);
- out[2] = ((0x3ffffe + x9) - x43);
- out[3] = ((0x7ffffe + x11) - x45);
- out[4] = ((0x3ffffe + x13) - x47);
- out[5] = ((0x3ffffe + x15) - x49);
- out[6] = ((0x7ffffe + x17) - x51);
- out[7] = ((0x3ffffe + x19) - x53);
- out[8] = ((0x3ffffe + x21) - x55);
- out[9] = ((0x7ffffe + x23) - x57);
- out[10] = ((0x3ffffe + x25) - x59);
- out[11] = ((0x3ffffe + x27) - x61);
- out[12] = ((0x7ffffe + x29) - x63);
- out[13] = ((0x3ffffe + x31) - x65);
- out[14] = ((0x3ffffe + x33) - x67);
- out[15] = ((0x7ffffe + x35) - x69);
- out[16] = ((0x3ffffe + x37) - x71);
- out[17] = ((0x3ffffe + x36) - x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m317/fesub.v b/src/Specific/solinas32_2e384m317/fesub.v
deleted file mode 100644
index 63204cb7d..000000000
--- a/src/Specific/solinas32_2e384m317/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m317/fesubDisplay.log b/src/Specific/solinas32_2e384m317/fesubDisplay.log
deleted file mode 100644
index 20cc9509d..000000000
--- a/src/Specific/solinas32_2e384m317/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- (((0x3ffffe + x36) - x70), ((0x3ffffe + x37) - x71), ((0x7ffffe + x35) - x69), ((0x3ffffe + x33) - x67), ((0x3ffffe + x31) - x65), ((0x7ffffe + x29) - x63), ((0x3ffffe + x27) - x61), ((0x3ffffe + x25) - x59), ((0x7ffffe + x23) - x57), ((0x3ffffe + x21) - x55), ((0x3ffffe + x19) - x53), ((0x7ffffe + x17) - x51), ((0x3ffffe + x15) - x49), ((0x3ffffe + x13) - x47), ((0x7ffffe + x11) - x45), ((0x3ffffe + x9) - x43), ((0x3ffffe + x7) - x41), ((0x7ffd86 + x5) - x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m317/fesubDisplay.v b/src/Specific/solinas32_2e384m317/fesubDisplay.v
deleted file mode 100644
index 38f9cc181..000000000
--- a/src/Specific/solinas32_2e384m317/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m317.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e384m317/freeze.c b/src/Specific/solinas32_2e384m317/freeze.c
deleted file mode 100644
index 3f87099f2..000000000
--- a/src/Specific/solinas32_2e384m317/freeze.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void freeze(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffec3);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x1fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x1fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x3fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x1fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x3fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x1fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x1fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x3fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x1fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x1fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x3fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x1fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x3fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x1fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x1fffff);
- { uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- { uint32_t x90 = (x89 & 0x3ffec3);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- { uint32_t x94 = (x89 & 0x1fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- { uint32_t x98 = (x89 & 0x1fffff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- { uint32_t x102 = (x89 & 0x3fffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- { uint32_t x106 = (x89 & 0x1fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- { uint32_t x110 = (x89 & 0x1fffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- { uint32_t x114 = (x89 & 0x3fffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- { uint32_t x118 = (x89 & 0x1fffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- { uint32_t x122 = (x89 & 0x1fffff);
- { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- { uint32_t x126 = (x89 & 0x3fffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- { uint32_t x130 = (x89 & 0x1fffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- { uint32_t x134 = (x89 & 0x1fffff);
- { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- { uint32_t x138 = (x89 & 0x3fffff);
- { uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- { uint32_t x142 = (x89 & 0x1fffff);
- { uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- { uint32_t x146 = (x89 & 0x1fffff);
- { uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- { uint32_t x150 = (x89 & 0x3fffff);
- { uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- { uint32_t x154 = (x89 & 0x1fffff);
- { uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- { uint32_t x158 = (x89 & 0x1fffff);
- { uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- out[0] = x92;
- out[1] = x96;
- out[2] = x100;
- out[3] = x104;
- out[4] = x108;
- out[5] = x112;
- out[6] = x116;
- out[7] = x120;
- out[8] = x124;
- out[9] = x128;
- out[10] = x132;
- out[11] = x136;
- out[12] = x140;
- out[13] = x144;
- out[14] = x148;
- out[15] = x152;
- out[16] = x156;
- out[17] = x160;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m317/freeze.v b/src/Specific/solinas32_2e384m317/freeze.v
deleted file mode 100644
index ce6ffa4b9..000000000
--- a/src/Specific/solinas32_2e384m317/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m317/freezeDisplay.log b/src/Specific/solinas32_2e384m317/freezeDisplay.log
deleted file mode 100644
index c508179d4..000000000
--- a/src/Specific/solinas32_2e384m317/freezeDisplay.log
+++ /dev/null
@@ -1,62 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffec3);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x1fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x1fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x3fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x1fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x3fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x1fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x1fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x3fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x1fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x1fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x3fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x1fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x3fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x1fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x1fffff);
- uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- uint32_t x90 = (x89 & 0x3ffec3);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- uint32_t x94 = (x89 & 0x1fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- uint32_t x98 = (x89 & 0x1fffff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- uint32_t x102 = (x89 & 0x3fffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- uint32_t x106 = (x89 & 0x1fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- uint32_t x110 = (x89 & 0x1fffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- uint32_t x114 = (x89 & 0x3fffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- uint32_t x118 = (x89 & 0x1fffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- uint32_t x122 = (x89 & 0x1fffff);
- uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- uint32_t x126 = (x89 & 0x3fffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- uint32_t x130 = (x89 & 0x1fffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- uint32_t x134 = (x89 & 0x1fffff);
- uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- uint32_t x138 = (x89 & 0x3fffff);
- uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- uint32_t x142 = (x89 & 0x1fffff);
- uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- uint32_t x146 = (x89 & 0x1fffff);
- uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- uint32_t x150 = (x89 & 0x3fffff);
- uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- uint32_t x154 = (x89 & 0x1fffff);
- uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- uint32_t x158 = (x89 & 0x1fffff);
- uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- (Return x160, Return x156, Return x152, Return x148, Return x144, Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m317/freezeDisplay.v b/src/Specific/solinas32_2e384m317/freezeDisplay.v
deleted file mode 100644
index 96437bc67..000000000
--- a/src/Specific/solinas32_2e384m317/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m317.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/CurveParameters.v b/src/Specific/solinas32_2e384m317_17limbs/CurveParameters.v
new file mode 100644
index 000000000..d5b3b57de
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 317
+Base: 22 + 10/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 22 + 10/17;
+ bitwidth := 32;
+ s := 2^384;
+ c := [(1, 317)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/Synthesis.v b/src/Specific/solinas32_2e384m317_17limbs/Synthesis.v
new file mode 100644
index 000000000..0f9144ea3
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/compiler.sh b/src/Specific/solinas32_2e384m317_17limbs/compiler.sh
new file mode 100755
index 000000000..b7bf58cbb
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22,23,23,22,23,22,23,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<384) - 317' "$@"
diff --git a/src/Specific/solinas32_2e384m317_17limbs/compilerxx.sh b/src/Specific/solinas32_2e384m317_17limbs/compilerxx.sh
new file mode 100755
index 000000000..71700ec55
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,22,23,22,23,23,22,23,22,23,23,22,23,22,23,22}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<384) - 317' "$@"
diff --git a/src/Specific/solinas32_2e384m317_17limbs/feadd.v b/src/Specific/solinas32_2e384m317_17limbs/feadd.v
new file mode 100644
index 000000000..8cddc007c
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e384m317_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..f43b5730a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/femul.v b/src/Specific/solinas32_2e384m317_17limbs/femul.v
new file mode 100644
index 000000000..e1f06f67f
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/femulDisplay.v b/src/Specific/solinas32_2e384m317_17limbs/femulDisplay.v
new file mode 100644
index 000000000..4368cf1b0
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/fesquare.v b/src/Specific/solinas32_2e384m317_17limbs/fesquare.v
new file mode 100644
index 000000000..a88f26416
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e384m317_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..476a93edd
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/fesub.v b/src/Specific/solinas32_2e384m317_17limbs/fesub.v
new file mode 100644
index 000000000..6edb5ebcb
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e384m317_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..0f0276213
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/freeze.v b/src/Specific/solinas32_2e384m317_17limbs/freeze.v
new file mode 100644
index 000000000..787850fed
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e384m317_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..051558a8a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e384m317_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e384m317_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..0a1cdc9b6
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 317' -Dmodulus_bytes='22 + 10/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m317/CurveParameters.v b/src/Specific/solinas32_2e384m317_18limbs/CurveParameters.v
index 303f38aa6..303f38aa6 100644
--- a/src/Specific/solinas32_2e384m317/CurveParameters.v
+++ b/src/Specific/solinas32_2e384m317_18limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e384m317_18limbs/Synthesis.v b/src/Specific/solinas32_2e384m317_18limbs/Synthesis.v
new file mode 100644
index 000000000..461597e9e
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m317/compiler.sh b/src/Specific/solinas32_2e384m317_18limbs/compiler.sh
index 97a069fc8..97a069fc8 100755
--- a/src/Specific/solinas32_2e384m317/compiler.sh
+++ b/src/Specific/solinas32_2e384m317_18limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e384m317/compilerxx.sh b/src/Specific/solinas32_2e384m317_18limbs/compilerxx.sh
index fd367f516..fd367f516 100755
--- a/src/Specific/solinas32_2e384m317/compilerxx.sh
+++ b/src/Specific/solinas32_2e384m317_18limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e384m317_18limbs/feadd.v b/src/Specific/solinas32_2e384m317_18limbs/feadd.v
new file mode 100644
index 000000000..8fff05f5d
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e384m317_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..6131661cf
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/femul.v b/src/Specific/solinas32_2e384m317_18limbs/femul.v
new file mode 100644
index 000000000..14ef03e4e
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/femulDisplay.v b/src/Specific/solinas32_2e384m317_18limbs/femulDisplay.v
new file mode 100644
index 000000000..5c15aea2a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/fesquare.v b/src/Specific/solinas32_2e384m317_18limbs/fesquare.v
new file mode 100644
index 000000000..9814b12a8
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e384m317_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d76011c32
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/fesub.v b/src/Specific/solinas32_2e384m317_18limbs/fesub.v
new file mode 100644
index 000000000..9024db6c0
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e384m317_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..f59e6d63f
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/freeze.v b/src/Specific/solinas32_2e384m317_18limbs/freeze.v
new file mode 100644
index 000000000..fb817c338
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m317_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e384m317_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..2c3eb126a
--- /dev/null
+++ b/src/Specific/solinas32_2e384m317_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e384m317_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e384m317/py_interpreter.sh b/src/Specific/solinas32_2e384m317_18limbs/py_interpreter.sh
index c50750dcd..c50750dcd 100755
--- a/src/Specific/solinas32_2e384m317/py_interpreter.sh
+++ b/src/Specific/solinas32_2e384m317_18limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/CurveParameters.v b/src/Specific/solinas32_2e384m5x2e368m1/CurveParameters.v
deleted file mode 100644
index 45616f877..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 5*2^368 - 1
-Base: 24
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 24;
- bitwidth := 32;
- s := 2^384;
- c := [(1, 1); (5, 2^368)];
- carry_chains := Some [[14; 15]; [15; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14]; [15; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/Synthesis.v b/src/Specific/solinas32_2e384m5x2e368m1/Synthesis.v
deleted file mode 100644
index 245e3c290..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/compiler.sh b/src/Specific/solinas32_2e384m5x2e368m1/compiler.sh
deleted file mode 100755
index 2b4a36ff1..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/compilerxx.sh b/src/Specific/solinas32_2e384m5x2e368m1/compilerxx.sh
deleted file mode 100755
index fb5644ead..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/feadd.c b/src/Specific/solinas32_2e384m5x2e368m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/feadd.v b/src/Specific/solinas32_2e384m5x2e368m1/feadd.v
deleted file mode 100644
index 254e7fc82..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.log b/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.v b/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.v
deleted file mode 100644
index 8bbb3a321..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/femul.v b/src/Specific/solinas32_2e384m5x2e368m1/femul.v
deleted file mode 100644
index bf4f83f1b..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/femulDisplay.v b/src/Specific/solinas32_2e384m5x2e368m1/femulDisplay.v
deleted file mode 100644
index 3514947f9..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesquare.v b/src/Specific/solinas32_2e384m5x2e368m1/fesquare.v
deleted file mode 100644
index 84341069f..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesquareDisplay.v b/src/Specific/solinas32_2e384m5x2e368m1/fesquareDisplay.v
deleted file mode 100644
index 29735e50e..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesub.c b/src/Specific/solinas32_2e384m5x2e368m1/fesub.c
deleted file mode 100644
index d1cca060f..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x1fffffe + x5) - x35);
- out[1] = ((0x1fffffe + x7) - x37);
- out[2] = ((0x1fffffe + x9) - x39);
- out[3] = ((0x1fffffe + x11) - x41);
- out[4] = ((0x1fffffe + x13) - x43);
- out[5] = ((0x1fffffe + x15) - x45);
- out[6] = ((0x1fffffe + x17) - x47);
- out[7] = ((0x1fffffe + x19) - x49);
- out[8] = ((0x1fffffe + x21) - x51);
- out[9] = ((0x1fffffe + x23) - x53);
- out[10] = ((0x1fffffe + x25) - x55);
- out[11] = ((0x1fffffe + x27) - x57);
- out[12] = ((0x1fffffe + x29) - x59);
- out[13] = ((0x1fffffe + x31) - x61);
- out[14] = ((0x1fffffe + x33) - x63);
- out[15] = ((0x1fff5fe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesub.v b/src/Specific/solinas32_2e384m5x2e368m1/fesub.v
deleted file mode 100644
index 5898d09c7..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.log b/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.log
deleted file mode 100644
index c095061d4..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x1fff5fe + x32) - x62), ((0x1fffffe + x33) - x63), ((0x1fffffe + x31) - x61), ((0x1fffffe + x29) - x59), ((0x1fffffe + x27) - x57), ((0x1fffffe + x25) - x55), ((0x1fffffe + x23) - x53), ((0x1fffffe + x21) - x51), ((0x1fffffe + x19) - x49), ((0x1fffffe + x17) - x47), ((0x1fffffe + x15) - x45), ((0x1fffffe + x13) - x43), ((0x1fffffe + x11) - x41), ((0x1fffffe + x9) - x39), ((0x1fffffe + x7) - x37), ((0x1fffffe + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.v b/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.v
deleted file mode 100644
index 0457c5670..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/freeze.c b/src/Specific/solinas32_2e384m5x2e368m1/freeze.c
deleted file mode 100644
index 70dc3411f..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffaff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0xffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0xffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0xffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0xffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0xffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0xffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0xffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0xffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0xffffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0xffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0xffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0xffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0xffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0xffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0xffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0xfffaff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/freeze.v b/src/Specific/solinas32_2e384m5x2e368m1/freeze.v
deleted file mode 100644
index 23cd4284a..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.log b/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.log
deleted file mode 100644
index 0e6d925e1..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffaff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0xffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0xffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0xffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0xffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0xffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0xffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0xffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0xffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0xffffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0xffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0xffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0xffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0xffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0xffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0xffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0xfffaff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.v b/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.v
deleted file mode 100644
index d1df7466e..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m5x2e368m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e384m5x2e368m1/py_interpreter.sh b/src/Specific/solinas32_2e384m5x2e368m1/py_interpreter.sh
deleted file mode 100755
index 227009213..000000000
--- a/src/Specific/solinas32_2e384m5x2e368m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 5*2**368 - 1' -Dmodulus_bytes='24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/CurveParameters.v b/src/Specific/solinas32_2e384m79x2e376m1/CurveParameters.v
deleted file mode 100644
index 6f020d716..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 79*2^376 - 1
-Base: 24
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 24;
- bitwidth := 32;
- s := 2^384;
- c := [(1, 1); (79, 2^376)];
- carry_chains := Some [[14; 15]; [15; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14]; [15; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/Synthesis.v b/src/Specific/solinas32_2e384m79x2e376m1/Synthesis.v
deleted file mode 100644
index 6c80f93f3..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/compiler.sh b/src/Specific/solinas32_2e384m79x2e376m1/compiler.sh
deleted file mode 100755
index 856e69580..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/compilerxx.sh b/src/Specific/solinas32_2e384m79x2e376m1/compilerxx.sh
deleted file mode 100755
index e1bd17421..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1' "$@"
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/feadd.c b/src/Specific/solinas32_2e384m79x2e376m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/feadd.v b/src/Specific/solinas32_2e384m79x2e376m1/feadd.v
deleted file mode 100644
index f6e10d8a6..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.log b/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.v b/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.v
deleted file mode 100644
index a78c10183..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/femul.v b/src/Specific/solinas32_2e384m79x2e376m1/femul.v
deleted file mode 100644
index 68d8fbb89..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/femulDisplay.v b/src/Specific/solinas32_2e384m79x2e376m1/femulDisplay.v
deleted file mode 100644
index e3e07c9c2..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesquare.v b/src/Specific/solinas32_2e384m79x2e376m1/fesquare.v
deleted file mode 100644
index 92416197a..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesquareDisplay.v b/src/Specific/solinas32_2e384m79x2e376m1/fesquareDisplay.v
deleted file mode 100644
index 504cab37b..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesub.c b/src/Specific/solinas32_2e384m79x2e376m1/fesub.c
deleted file mode 100644
index 87c8fbea0..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x1fffffe + x5) - x35);
- out[1] = ((0x1fffffe + x7) - x37);
- out[2] = ((0x1fffffe + x9) - x39);
- out[3] = ((0x1fffffe + x11) - x41);
- out[4] = ((0x1fffffe + x13) - x43);
- out[5] = ((0x1fffffe + x15) - x45);
- out[6] = ((0x1fffffe + x17) - x47);
- out[7] = ((0x1fffffe + x19) - x49);
- out[8] = ((0x1fffffe + x21) - x51);
- out[9] = ((0x1fffffe + x23) - x53);
- out[10] = ((0x1fffffe + x25) - x55);
- out[11] = ((0x1fffffe + x27) - x57);
- out[12] = ((0x1fffffe + x29) - x59);
- out[13] = ((0x1fffffe + x31) - x61);
- out[14] = ((0x1fffffe + x33) - x63);
- out[15] = ((0x161fffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesub.v b/src/Specific/solinas32_2e384m79x2e376m1/fesub.v
deleted file mode 100644
index ade675dfd..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.log b/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.log
deleted file mode 100644
index 6ed1b090d..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x161fffe + x32) - x62), ((0x1fffffe + x33) - x63), ((0x1fffffe + x31) - x61), ((0x1fffffe + x29) - x59), ((0x1fffffe + x27) - x57), ((0x1fffffe + x25) - x55), ((0x1fffffe + x23) - x53), ((0x1fffffe + x21) - x51), ((0x1fffffe + x19) - x49), ((0x1fffffe + x17) - x47), ((0x1fffffe + x15) - x45), ((0x1fffffe + x13) - x43), ((0x1fffffe + x11) - x41), ((0x1fffffe + x9) - x39), ((0x1fffffe + x7) - x37), ((0x1fffffe + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.v b/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.v
deleted file mode 100644
index 05b255470..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/freeze.c b/src/Specific/solinas32_2e384m79x2e376m1/freeze.c
deleted file mode 100644
index 19d33591c..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xb0ffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0xffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0xffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0xffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0xffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0xffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0xffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0xffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0xffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0xffffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0xffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0xffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0xffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0xffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0xffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0xffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0xb0ffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/freeze.v b/src/Specific/solinas32_2e384m79x2e376m1/freeze.v
deleted file mode 100644
index 42c170bca..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.log b/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.log
deleted file mode 100644
index f85cdc2fb..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xb0ffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0xffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0xffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0xffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0xffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0xffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0xffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0xffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0xffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0xffffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0xffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0xffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0xffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0xffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0xffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0xffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0xb0ffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.v b/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.v
deleted file mode 100644
index f02c13fcd..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e384m79x2e376m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e384m79x2e376m1/py_interpreter.sh b/src/Specific/solinas32_2e384m79x2e376m1/py_interpreter.sh
deleted file mode 100755
index d5d32506a..000000000
--- a/src/Specific/solinas32_2e384m79x2e376m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 79*2**376 - 1' -Dmodulus_bytes='24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e389m21_15limbs/CurveParameters.v b/src/Specific/solinas32_2e389m21_15limbs/CurveParameters.v
new file mode 100644
index 000000000..ab5287798
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^389 - 21
+Base: 25 + 14/15
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 15%nat;
+ base := 25 + 14/15;
+ bitwidth := 32;
+ s := 2^389;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 15); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/Synthesis.v b/src/Specific/solinas32_2e389m21_15limbs/Synthesis.v
new file mode 100644
index 000000000..8ebc8180e
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/compiler.sh b/src/Specific/solinas32_2e389m21_15limbs/compiler.sh
new file mode 100755
index 000000000..7ba639bfb
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas32_2e389m21_15limbs/compilerxx.sh b/src/Specific/solinas32_2e389m21_15limbs/compilerxx.sh
new file mode 100755
index 000000000..e8e989e04
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas32_2e389m21_15limbs/feadd.v b/src/Specific/solinas32_2e389m21_15limbs/feadd.v
new file mode 100644
index 000000000..fbb552375
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/feaddDisplay.v b/src/Specific/solinas32_2e389m21_15limbs/feaddDisplay.v
new file mode 100644
index 000000000..d2c2a9f69
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/femul.v b/src/Specific/solinas32_2e389m21_15limbs/femul.v
new file mode 100644
index 000000000..a8fc8ce8e
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/femulDisplay.v b/src/Specific/solinas32_2e389m21_15limbs/femulDisplay.v
new file mode 100644
index 000000000..f3cf57147
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/fesquare.v b/src/Specific/solinas32_2e389m21_15limbs/fesquare.v
new file mode 100644
index 000000000..17afb4559
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/fesquareDisplay.v b/src/Specific/solinas32_2e389m21_15limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d9823962d
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/fesub.v b/src/Specific/solinas32_2e389m21_15limbs/fesub.v
new file mode 100644
index 000000000..4d7b312e6
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/fesubDisplay.v b/src/Specific/solinas32_2e389m21_15limbs/fesubDisplay.v
new file mode 100644
index 000000000..9afa59740
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/freeze.v b/src/Specific/solinas32_2e389m21_15limbs/freeze.v
new file mode 100644
index 000000000..6db9164a8
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/freezeDisplay.v b/src/Specific/solinas32_2e389m21_15limbs/freezeDisplay.v
new file mode 100644
index 000000000..3ffc3a5c5
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_15limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e389m21_15limbs/py_interpreter.sh b/src/Specific/solinas32_2e389m21_15limbs/py_interpreter.sh
new file mode 100755
index 000000000..f85e35424
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_15limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**389 - 21' -Dmodulus_bytes='25 + 14/15' -Da24='121665'
diff --git a/src/Specific/solinas32_2e389m21_16limbs/CurveParameters.v b/src/Specific/solinas32_2e389m21_16limbs/CurveParameters.v
new file mode 100644
index 000000000..9a5935518
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^389 - 21
+Base: 24 + 5/16
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 24 + 5/16;
+ bitwidth := 32;
+ s := 2^389;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/Synthesis.v b/src/Specific/solinas32_2e389m21_16limbs/Synthesis.v
new file mode 100644
index 000000000..642342c2f
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/compiler.sh b/src/Specific/solinas32_2e389m21_16limbs/compiler.sh
new file mode 100755
index 000000000..fe1eb7717
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas32_2e389m21_16limbs/compilerxx.sh b/src/Specific/solinas32_2e389m21_16limbs/compilerxx.sh
new file mode 100755
index 000000000..f18c7d54f
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas32_2e389m21_16limbs/feadd.v b/src/Specific/solinas32_2e389m21_16limbs/feadd.v
new file mode 100644
index 000000000..a22e7abe1
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e389m21_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..bfe534c6b
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/femul.v b/src/Specific/solinas32_2e389m21_16limbs/femul.v
new file mode 100644
index 000000000..888ae7164
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/femulDisplay.v b/src/Specific/solinas32_2e389m21_16limbs/femulDisplay.v
new file mode 100644
index 000000000..d7cc968fc
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/fesquare.v b/src/Specific/solinas32_2e389m21_16limbs/fesquare.v
new file mode 100644
index 000000000..21d57b619
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e389m21_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3c86ac785
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/fesub.v b/src/Specific/solinas32_2e389m21_16limbs/fesub.v
new file mode 100644
index 000000000..774b8af84
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e389m21_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..01c887743
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/freeze.v b/src/Specific/solinas32_2e389m21_16limbs/freeze.v
new file mode 100644
index 000000000..1a52da835
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e389m21_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..2b74f3b84
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e389m21_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e389m21_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e389m21_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..3f8d9d9d7
--- /dev/null
+++ b/src/Specific/solinas32_2e389m21_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**389 - 21' -Dmodulus_bytes='24 + 5/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e401m31/Synthesis.v b/src/Specific/solinas32_2e401m31/Synthesis.v
deleted file mode 100644
index 6098e0c7b..000000000
--- a/src/Specific/solinas32_2e401m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e401m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e401m31/feadd.c b/src/Specific/solinas32_2e401m31/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e401m31/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e401m31/feadd.v b/src/Specific/solinas32_2e401m31/feadd.v
deleted file mode 100644
index 6b3370d4e..000000000
--- a/src/Specific/solinas32_2e401m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e401m31/feaddDisplay.log b/src/Specific/solinas32_2e401m31/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e401m31/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e401m31/feaddDisplay.v b/src/Specific/solinas32_2e401m31/feaddDisplay.v
deleted file mode 100644
index 8c880fa8d..000000000
--- a/src/Specific/solinas32_2e401m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e401m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e401m31/femul.c b/src/Specific/solinas32_2e401m31/femul.c
deleted file mode 100644
index 39cd5de4e..000000000
--- a/src/Specific/solinas32_2e401m31/femul.c
+++ /dev/null
@@ -1,120 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- { uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x1f * ((uint64_t)x32 * x62)));
- { uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x1f * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- { uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x1f * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- { uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x1f * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- { uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x1f * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- { uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x1f * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- { uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x1f * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- { uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x1f * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x1f * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- { uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x1f * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- { uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x1f * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- { uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x1f * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- { uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x1f * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- { uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x1f * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- { uint64_t x79 = (((uint64_t)x5 * x35) + (0x1f * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- { uint64_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint64_t x82 = (x80 + x78);
- { uint64_t x83 = (x82 >> 0x19);
- { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
- { uint64_t x85 = (x83 + x77);
- { uint64_t x86 = (x85 >> 0x19);
- { uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
- { uint64_t x88 = (x86 + x76);
- { uint64_t x89 = (x88 >> 0x19);
- { uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
- { uint64_t x91 = (x89 + x75);
- { uint64_t x92 = (x91 >> 0x19);
- { uint32_t x93 = ((uint32_t)x91 & 0x1ffffff);
- { uint64_t x94 = (x92 + x74);
- { uint64_t x95 = (x94 >> 0x19);
- { uint32_t x96 = ((uint32_t)x94 & 0x1ffffff);
- { uint64_t x97 = (x95 + x73);
- { uint64_t x98 = (x97 >> 0x19);
- { uint32_t x99 = ((uint32_t)x97 & 0x1ffffff);
- { uint64_t x100 = (x98 + x72);
- { uint64_t x101 = (x100 >> 0x19);
- { uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
- { uint64_t x103 = (x101 + x71);
- { uint64_t x104 = (x103 >> 0x19);
- { uint32_t x105 = ((uint32_t)x103 & 0x1ffffff);
- { uint64_t x106 = (x104 + x70);
- { uint64_t x107 = (x106 >> 0x19);
- { uint32_t x108 = ((uint32_t)x106 & 0x1ffffff);
- { uint64_t x109 = (x107 + x69);
- { uint64_t x110 = (x109 >> 0x19);
- { uint32_t x111 = ((uint32_t)x109 & 0x1ffffff);
- { uint64_t x112 = (x110 + x68);
- { uint64_t x113 = (x112 >> 0x19);
- { uint32_t x114 = ((uint32_t)x112 & 0x1ffffff);
- { uint64_t x115 = (x113 + x67);
- { uint64_t x116 = (x115 >> 0x19);
- { uint32_t x117 = ((uint32_t)x115 & 0x1ffffff);
- { uint64_t x118 = (x116 + x66);
- { uint64_t x119 = (x118 >> 0x19);
- { uint32_t x120 = ((uint32_t)x118 & 0x1ffffff);
- { uint64_t x121 = (x119 + x65);
- { uint64_t x122 = (x121 >> 0x19);
- { uint32_t x123 = ((uint32_t)x121 & 0x1ffffff);
- { uint64_t x124 = (x122 + x64);
- { uint64_t x125 = (x124 >> 0x19);
- { uint32_t x126 = ((uint32_t)x124 & 0x1ffffff);
- { uint64_t x127 = (x81 + (0x1f * x125));
- { uint32_t x128 = (uint32_t) (x127 >> 0x1a);
- { uint32_t x129 = ((uint32_t)x127 & 0x3ffffff);
- { uint32_t x130 = (x128 + x84);
- { uint32_t x131 = (x130 >> 0x19);
- { uint32_t x132 = (x130 & 0x1ffffff);
- out[0] = x129;
- out[1] = x132;
- out[2] = (x131 + x87);
- out[3] = x90;
- out[4] = x93;
- out[5] = x96;
- out[6] = x99;
- out[7] = x102;
- out[8] = x105;
- out[9] = x108;
- out[10] = x111;
- out[11] = x114;
- out[12] = x117;
- out[13] = x120;
- out[14] = x123;
- out[15] = x126;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e401m31/femul.v b/src/Specific/solinas32_2e401m31/femul.v
deleted file mode 100644
index 510b9da45..000000000
--- a/src/Specific/solinas32_2e401m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e401m31/femulDisplay.log b/src/Specific/solinas32_2e401m31/femulDisplay.log
deleted file mode 100644
index 5d597ba6a..000000000
--- a/src/Specific/solinas32_2e401m31/femulDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint64_t x64 = (((uint64_t)x5 * x62) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((0x2 * ((uint64_t)x29 * x41)) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- uint64_t x65 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((0x2 * ((uint64_t)x27 * x41)) + ((0x2 * ((uint64_t)x29 * x39)) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) + (0x1f * ((uint64_t)x32 * x62)));
- uint64_t x66 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((0x2 * ((uint64_t)x25 * x41)) + ((0x2 * ((uint64_t)x27 * x39)) + ((0x2 * ((uint64_t)x29 * x37)) + ((uint64_t)x31 * x35)))))))))))))) + (0x1f * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- uint64_t x67 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) + (0x1f * (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))));
- uint64_t x68 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((0x2 * ((uint64_t)x21 * x41)) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) + (0x1f * (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))));
- uint64_t x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((0x2 * ((uint64_t)x19 * x41)) + ((0x2 * ((uint64_t)x21 * x39)) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) + (0x1f * (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- uint64_t x70 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((0x2 * ((uint64_t)x17 * x41)) + ((0x2 * ((uint64_t)x19 * x39)) + ((0x2 * ((uint64_t)x21 * x37)) + ((uint64_t)x23 * x35)))))))))) + (0x1f * (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- uint64_t x71 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) + (0x1f * (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- uint64_t x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((0x2 * ((uint64_t)x13 * x41)) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) + (0x1f * (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((0x2 * ((uint64_t)x11 * x41)) + ((0x2 * ((uint64_t)x13 * x39)) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) + (0x1f * (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- uint64_t x74 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((0x2 * ((uint64_t)x9 * x41)) + ((0x2 * ((uint64_t)x11 * x39)) + ((0x2 * ((uint64_t)x13 * x37)) + ((uint64_t)x15 * x35)))))) + (0x1f * (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- uint64_t x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) + (0x1f * (((uint64_t)x15 * x62) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + ((uint64_t)x32 * x45)))))))))))));
- uint64_t x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) + (0x1f * (((uint64_t)x13 * x62) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + ((uint64_t)x32 * x43))))))))))))));
- uint64_t x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) + (0x1f * (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- uint64_t x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (0x1f * (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- uint64_t x79 = (((uint64_t)x5 * x35) + (0x1f * ((0x2 * ((uint64_t)x7 * x62)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- uint64_t x80 = (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint64_t x82 = (x80 + x78);
- uint64_t x83 = (x82 >> 0x19);
- uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
- uint64_t x85 = (x83 + x77);
- uint64_t x86 = (x85 >> 0x19);
- uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
- uint64_t x88 = (x86 + x76);
- uint64_t x89 = (x88 >> 0x19);
- uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
- uint64_t x91 = (x89 + x75);
- uint64_t x92 = (x91 >> 0x19);
- uint32_t x93 = ((uint32_t)x91 & 0x1ffffff);
- uint64_t x94 = (x92 + x74);
- uint64_t x95 = (x94 >> 0x19);
- uint32_t x96 = ((uint32_t)x94 & 0x1ffffff);
- uint64_t x97 = (x95 + x73);
- uint64_t x98 = (x97 >> 0x19);
- uint32_t x99 = ((uint32_t)x97 & 0x1ffffff);
- uint64_t x100 = (x98 + x72);
- uint64_t x101 = (x100 >> 0x19);
- uint32_t x102 = ((uint32_t)x100 & 0x1ffffff);
- uint64_t x103 = (x101 + x71);
- uint64_t x104 = (x103 >> 0x19);
- uint32_t x105 = ((uint32_t)x103 & 0x1ffffff);
- uint64_t x106 = (x104 + x70);
- uint64_t x107 = (x106 >> 0x19);
- uint32_t x108 = ((uint32_t)x106 & 0x1ffffff);
- uint64_t x109 = (x107 + x69);
- uint64_t x110 = (x109 >> 0x19);
- uint32_t x111 = ((uint32_t)x109 & 0x1ffffff);
- uint64_t x112 = (x110 + x68);
- uint64_t x113 = (x112 >> 0x19);
- uint32_t x114 = ((uint32_t)x112 & 0x1ffffff);
- uint64_t x115 = (x113 + x67);
- uint64_t x116 = (x115 >> 0x19);
- uint32_t x117 = ((uint32_t)x115 & 0x1ffffff);
- uint64_t x118 = (x116 + x66);
- uint64_t x119 = (x118 >> 0x19);
- uint32_t x120 = ((uint32_t)x118 & 0x1ffffff);
- uint64_t x121 = (x119 + x65);
- uint64_t x122 = (x121 >> 0x19);
- uint32_t x123 = ((uint32_t)x121 & 0x1ffffff);
- uint64_t x124 = (x122 + x64);
- uint64_t x125 = (x124 >> 0x19);
- uint32_t x126 = ((uint32_t)x124 & 0x1ffffff);
- uint64_t x127 = (x81 + (0x1f * x125));
- uint32_t x128 = (uint32_t) (x127 >> 0x1a);
- uint32_t x129 = ((uint32_t)x127 & 0x3ffffff);
- uint32_t x130 = (x128 + x84);
- uint32_t x131 = (x130 >> 0x19);
- uint32_t x132 = (x130 & 0x1ffffff);
- return (Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, (x131 + x87), Return x132, Return x129))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e401m31/femulDisplay.v b/src/Specific/solinas32_2e401m31/femulDisplay.v
deleted file mode 100644
index 9aea49854..000000000
--- a/src/Specific/solinas32_2e401m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e401m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e401m31/fesquare.c b/src/Specific/solinas32_2e401m31/fesquare.c
deleted file mode 100644
index 580bcf5f5..000000000
--- a/src/Specific/solinas32_2e401m31/fesquare.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- { uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x1f * ((uint64_t)x29 * x29)));
- { uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x1f * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- { uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x1f * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- { uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x1f * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- { uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x1f * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- { uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x1f * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x1f * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- { uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1f * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x1f * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- { uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1f * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x1f * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1f * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x1f * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1f * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- { uint64_t x46 = (((uint64_t)x2 * x2) + (0x1f * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- { uint64_t x47 = (x46 >> 0x1a);
- { uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- { uint64_t x49 = (x47 + x45);
- { uint64_t x50 = (x49 >> 0x19);
- { uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- { uint64_t x52 = (x50 + x44);
- { uint64_t x53 = (x52 >> 0x19);
- { uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- { uint64_t x55 = (x53 + x43);
- { uint64_t x56 = (x55 >> 0x19);
- { uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- { uint64_t x58 = (x56 + x42);
- { uint64_t x59 = (x58 >> 0x19);
- { uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- { uint64_t x61 = (x59 + x41);
- { uint64_t x62 = (x61 >> 0x19);
- { uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
- { uint64_t x64 = (x62 + x40);
- { uint64_t x65 = (x64 >> 0x19);
- { uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- { uint64_t x67 = (x65 + x39);
- { uint64_t x68 = (x67 >> 0x19);
- { uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
- { uint64_t x70 = (x68 + x38);
- { uint64_t x71 = (x70 >> 0x19);
- { uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- { uint64_t x73 = (x71 + x37);
- { uint64_t x74 = (x73 >> 0x19);
- { uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
- { uint64_t x76 = (x74 + x36);
- { uint64_t x77 = (x76 >> 0x19);
- { uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- { uint64_t x79 = (x77 + x35);
- { uint64_t x80 = (x79 >> 0x19);
- { uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
- { uint64_t x82 = (x80 + x34);
- { uint64_t x83 = (x82 >> 0x19);
- { uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
- { uint64_t x85 = (x83 + x33);
- { uint64_t x86 = (x85 >> 0x19);
- { uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
- { uint64_t x88 = (x86 + x32);
- { uint64_t x89 = (x88 >> 0x19);
- { uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
- { uint64_t x91 = (x89 + x31);
- { uint64_t x92 = (x91 >> 0x19);
- { uint32_t x93 = ((uint32_t)x91 & 0x1ffffff);
- { uint64_t x94 = (x48 + (0x1f * x92));
- { uint32_t x95 = (uint32_t) (x94 >> 0x1a);
- { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- { uint32_t x97 = (x95 + x51);
- { uint32_t x98 = (x97 >> 0x19);
- { uint32_t x99 = (x97 & 0x1ffffff);
- out[0] = x96;
- out[1] = x99;
- out[2] = (x98 + x54);
- out[3] = x57;
- out[4] = x60;
- out[5] = x63;
- out[6] = x66;
- out[7] = x69;
- out[8] = x72;
- out[9] = x75;
- out[10] = x78;
- out[11] = x81;
- out[12] = x84;
- out[13] = x87;
- out[14] = x90;
- out[15] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e401m31/fesquare.v b/src/Specific/solinas32_2e401m31/fesquare.v
deleted file mode 100644
index 759a1d02f..000000000
--- a/src/Specific/solinas32_2e401m31/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e401m31/fesquareDisplay.log b/src/Specific/solinas32_2e401m31/fesquareDisplay.log
deleted file mode 100644
index c1666a6e1..000000000
--- a/src/Specific/solinas32_2e401m31/fesquareDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x31 = (((uint64_t)x2 * x29) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- uint64_t x32 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x1f * ((uint64_t)x29 * x29)));
- uint64_t x33 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x1f * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- uint64_t x34 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x1f * (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))));
- uint64_t x35 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x1f * (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))));
- uint64_t x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x1f * (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- uint64_t x37 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x1f * (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- uint64_t x38 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x1f * (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- uint64_t x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1f * (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x1f * (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- uint64_t x41 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x1f * (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- uint64_t x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x1f * (((uint64_t)x12 * x29) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((uint64_t)x29 * x12)))))))))))));
- uint64_t x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x1f * (((uint64_t)x10 * x29) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + ((uint64_t)x29 * x10))))))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x1f * (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x1f * (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- uint64_t x46 = (((uint64_t)x2 * x2) + (0x1f * ((0x2 * ((uint64_t)x4 * x29)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- uint64_t x47 = (x46 >> 0x1a);
- uint32_t x48 = ((uint32_t)x46 & 0x3ffffff);
- uint64_t x49 = (x47 + x45);
- uint64_t x50 = (x49 >> 0x19);
- uint32_t x51 = ((uint32_t)x49 & 0x1ffffff);
- uint64_t x52 = (x50 + x44);
- uint64_t x53 = (x52 >> 0x19);
- uint32_t x54 = ((uint32_t)x52 & 0x1ffffff);
- uint64_t x55 = (x53 + x43);
- uint64_t x56 = (x55 >> 0x19);
- uint32_t x57 = ((uint32_t)x55 & 0x1ffffff);
- uint64_t x58 = (x56 + x42);
- uint64_t x59 = (x58 >> 0x19);
- uint32_t x60 = ((uint32_t)x58 & 0x1ffffff);
- uint64_t x61 = (x59 + x41);
- uint64_t x62 = (x61 >> 0x19);
- uint32_t x63 = ((uint32_t)x61 & 0x1ffffff);
- uint64_t x64 = (x62 + x40);
- uint64_t x65 = (x64 >> 0x19);
- uint32_t x66 = ((uint32_t)x64 & 0x1ffffff);
- uint64_t x67 = (x65 + x39);
- uint64_t x68 = (x67 >> 0x19);
- uint32_t x69 = ((uint32_t)x67 & 0x1ffffff);
- uint64_t x70 = (x68 + x38);
- uint64_t x71 = (x70 >> 0x19);
- uint32_t x72 = ((uint32_t)x70 & 0x1ffffff);
- uint64_t x73 = (x71 + x37);
- uint64_t x74 = (x73 >> 0x19);
- uint32_t x75 = ((uint32_t)x73 & 0x1ffffff);
- uint64_t x76 = (x74 + x36);
- uint64_t x77 = (x76 >> 0x19);
- uint32_t x78 = ((uint32_t)x76 & 0x1ffffff);
- uint64_t x79 = (x77 + x35);
- uint64_t x80 = (x79 >> 0x19);
- uint32_t x81 = ((uint32_t)x79 & 0x1ffffff);
- uint64_t x82 = (x80 + x34);
- uint64_t x83 = (x82 >> 0x19);
- uint32_t x84 = ((uint32_t)x82 & 0x1ffffff);
- uint64_t x85 = (x83 + x33);
- uint64_t x86 = (x85 >> 0x19);
- uint32_t x87 = ((uint32_t)x85 & 0x1ffffff);
- uint64_t x88 = (x86 + x32);
- uint64_t x89 = (x88 >> 0x19);
- uint32_t x90 = ((uint32_t)x88 & 0x1ffffff);
- uint64_t x91 = (x89 + x31);
- uint64_t x92 = (x91 >> 0x19);
- uint32_t x93 = ((uint32_t)x91 & 0x1ffffff);
- uint64_t x94 = (x48 + (0x1f * x92));
- uint32_t x95 = (uint32_t) (x94 >> 0x1a);
- uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- uint32_t x97 = (x95 + x51);
- uint32_t x98 = (x97 >> 0x19);
- uint32_t x99 = (x97 & 0x1ffffff);
- return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e401m31/fesquareDisplay.v b/src/Specific/solinas32_2e401m31/fesquareDisplay.v
deleted file mode 100644
index 1556a678e..000000000
--- a/src/Specific/solinas32_2e401m31/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e401m31.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e401m31/fesub.c b/src/Specific/solinas32_2e401m31/fesub.c
deleted file mode 100644
index f6e2353b7..000000000
--- a/src/Specific/solinas32_2e401m31/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x7ffffc2 + x5) - x35);
- out[1] = ((0x3fffffe + x7) - x37);
- out[2] = ((0x3fffffe + x9) - x39);
- out[3] = ((0x3fffffe + x11) - x41);
- out[4] = ((0x3fffffe + x13) - x43);
- out[5] = ((0x3fffffe + x15) - x45);
- out[6] = ((0x3fffffe + x17) - x47);
- out[7] = ((0x3fffffe + x19) - x49);
- out[8] = ((0x3fffffe + x21) - x51);
- out[9] = ((0x3fffffe + x23) - x53);
- out[10] = ((0x3fffffe + x25) - x55);
- out[11] = ((0x3fffffe + x27) - x57);
- out[12] = ((0x3fffffe + x29) - x59);
- out[13] = ((0x3fffffe + x31) - x61);
- out[14] = ((0x3fffffe + x33) - x63);
- out[15] = ((0x3fffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e401m31/fesub.v b/src/Specific/solinas32_2e401m31/fesub.v
deleted file mode 100644
index b528b8414..000000000
--- a/src/Specific/solinas32_2e401m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e401m31/fesubDisplay.log b/src/Specific/solinas32_2e401m31/fesubDisplay.log
deleted file mode 100644
index 97718ab84..000000000
--- a/src/Specific/solinas32_2e401m31/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x3fffffe + x32) - x62), ((0x3fffffe + x33) - x63), ((0x3fffffe + x31) - x61), ((0x3fffffe + x29) - x59), ((0x3fffffe + x27) - x57), ((0x3fffffe + x25) - x55), ((0x3fffffe + x23) - x53), ((0x3fffffe + x21) - x51), ((0x3fffffe + x19) - x49), ((0x3fffffe + x17) - x47), ((0x3fffffe + x15) - x45), ((0x3fffffe + x13) - x43), ((0x3fffffe + x11) - x41), ((0x3fffffe + x9) - x39), ((0x3fffffe + x7) - x37), ((0x7ffffc2 + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e401m31/fesubDisplay.v b/src/Specific/solinas32_2e401m31/fesubDisplay.v
deleted file mode 100644
index bb4dfb5bc..000000000
--- a/src/Specific/solinas32_2e401m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e401m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e401m31/freeze.c b/src/Specific/solinas32_2e401m31/freeze.c
deleted file mode 100644
index afca43fcc..000000000
--- a/src/Specific/solinas32_2e401m31/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffe1);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x1ffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x1ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x1ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x1ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x1ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x1ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x1ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x1ffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x1ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x1ffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x1ffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x1ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x1ffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x1ffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x1ffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0x3ffffe1);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0x1ffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0x1ffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0x1ffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0x1ffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0x1ffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0x1ffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0x1ffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0x1ffffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0x1ffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0x1ffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0x1ffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0x1ffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0x1ffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0x1ffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0x1ffffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e401m31/freeze.v b/src/Specific/solinas32_2e401m31/freeze.v
deleted file mode 100644
index 55d4e786d..000000000
--- a/src/Specific/solinas32_2e401m31/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e401m31/freezeDisplay.log b/src/Specific/solinas32_2e401m31/freezeDisplay.log
deleted file mode 100644
index a0de7633b..000000000
--- a/src/Specific/solinas32_2e401m31/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffe1);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x1ffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x1ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x1ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x1ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x1ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x1ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x1ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x1ffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x1ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x1ffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x1ffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x1ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x1ffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x1ffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x1ffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0x3ffffe1);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0x1ffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0x1ffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0x1ffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0x1ffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0x1ffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0x1ffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0x1ffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0x1ffffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0x1ffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0x1ffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0x1ffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0x1ffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0x1ffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0x1ffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0x1ffffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e401m31/freezeDisplay.v b/src/Specific/solinas32_2e401m31/freezeDisplay.v
deleted file mode 100644
index 6968231ed..000000000
--- a/src/Specific/solinas32_2e401m31/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e401m31.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e401m31/CurveParameters.v b/src/Specific/solinas32_2e401m31_16limbs/CurveParameters.v
index 9b085df66..9b085df66 100644
--- a/src/Specific/solinas32_2e401m31/CurveParameters.v
+++ b/src/Specific/solinas32_2e401m31_16limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e401m31_16limbs/Synthesis.v b/src/Specific/solinas32_2e401m31_16limbs/Synthesis.v
new file mode 100644
index 000000000..256652b10
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e401m31/compiler.sh b/src/Specific/solinas32_2e401m31_16limbs/compiler.sh
index 6879afcdc..6879afcdc 100755
--- a/src/Specific/solinas32_2e401m31/compiler.sh
+++ b/src/Specific/solinas32_2e401m31_16limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e401m31/compilerxx.sh b/src/Specific/solinas32_2e401m31_16limbs/compilerxx.sh
index 155135aa6..155135aa6 100755
--- a/src/Specific/solinas32_2e401m31/compilerxx.sh
+++ b/src/Specific/solinas32_2e401m31_16limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e401m31_16limbs/feadd.v b/src/Specific/solinas32_2e401m31_16limbs/feadd.v
new file mode 100644
index 000000000..5e8c3253e
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e401m31_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..85fdd4b5c
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/femul.v b/src/Specific/solinas32_2e401m31_16limbs/femul.v
new file mode 100644
index 000000000..e3834bc9b
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/femulDisplay.v b/src/Specific/solinas32_2e401m31_16limbs/femulDisplay.v
new file mode 100644
index 000000000..40ea489b7
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/fesquare.v b/src/Specific/solinas32_2e401m31_16limbs/fesquare.v
new file mode 100644
index 000000000..d47984fe1
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e401m31_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f282b99f7
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/fesub.v b/src/Specific/solinas32_2e401m31_16limbs/fesub.v
new file mode 100644
index 000000000..21465227f
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e401m31_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..fcc52c549
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/freeze.v b/src/Specific/solinas32_2e401m31_16limbs/freeze.v
new file mode 100644
index 000000000..fad369d14
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e401m31_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e401m31_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..61fd2172a
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e401m31/py_interpreter.sh b/src/Specific/solinas32_2e401m31_16limbs/py_interpreter.sh
index 6ca4da266..6ca4da266 100755
--- a/src/Specific/solinas32_2e401m31/py_interpreter.sh
+++ b/src/Specific/solinas32_2e401m31_16limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e401m31_17limbs/CurveParameters.v b/src/Specific/solinas32_2e401m31_17limbs/CurveParameters.v
new file mode 100644
index 000000000..665273bfa
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^401 - 31
+Base: 23 + 10/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 23 + 10/17;
+ bitwidth := 32;
+ s := 2^401;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/Synthesis.v b/src/Specific/solinas32_2e401m31_17limbs/Synthesis.v
new file mode 100644
index 000000000..1b3eb7a0f
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/compiler.sh b/src/Specific/solinas32_2e401m31_17limbs/compiler.sh
new file mode 100755
index 000000000..0127011ed
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<401) - 31' "$@"
diff --git a/src/Specific/solinas32_2e401m31_17limbs/compilerxx.sh b/src/Specific/solinas32_2e401m31_17limbs/compilerxx.sh
new file mode 100755
index 000000000..669c64247
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<401) - 31' "$@"
diff --git a/src/Specific/solinas32_2e401m31_17limbs/feadd.v b/src/Specific/solinas32_2e401m31_17limbs/feadd.v
new file mode 100644
index 000000000..f66007d94
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e401m31_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..323eeb8ee
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/femul.v b/src/Specific/solinas32_2e401m31_17limbs/femul.v
new file mode 100644
index 000000000..37c1bd731
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/femulDisplay.v b/src/Specific/solinas32_2e401m31_17limbs/femulDisplay.v
new file mode 100644
index 000000000..0c5e08bb2
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/fesquare.v b/src/Specific/solinas32_2e401m31_17limbs/fesquare.v
new file mode 100644
index 000000000..a8242f17a
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e401m31_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f8865e160
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/fesub.v b/src/Specific/solinas32_2e401m31_17limbs/fesub.v
new file mode 100644
index 000000000..a0e85743c
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e401m31_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..9d82dbfbb
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/freeze.v b/src/Specific/solinas32_2e401m31_17limbs/freeze.v
new file mode 100644
index 000000000..880adcfcc
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e401m31_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..f7cd6df88
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e401m31_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e401m31_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e401m31_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..5a4c650f2
--- /dev/null
+++ b/src/Specific/solinas32_2e401m31_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**401 - 31' -Dmodulus_bytes='23 + 10/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e413m21_16limbs/CurveParameters.v b/src/Specific/solinas32_2e413m21_16limbs/CurveParameters.v
new file mode 100644
index 000000000..e768051fd
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^413 - 21
+Base: 25 + 13/16
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 25 + 13/16;
+ bitwidth := 32;
+ s := 2^413;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/Synthesis.v b/src/Specific/solinas32_2e413m21_16limbs/Synthesis.v
new file mode 100644
index 000000000..168ec3a3c
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/compiler.sh b/src/Specific/solinas32_2e413m21_16limbs/compiler.sh
new file mode 100755
index 000000000..83227e93a
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,25,26,26,26,26,25,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas32_2e413m21_16limbs/compilerxx.sh b/src/Specific/solinas32_2e413m21_16limbs/compilerxx.sh
new file mode 100755
index 000000000..0a28002bd
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,25,26,26,26,26,25,26,26,26,26,25}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas32_2e413m21_16limbs/feadd.v b/src/Specific/solinas32_2e413m21_16limbs/feadd.v
new file mode 100644
index 000000000..9d4b6e686
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e413m21_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..b56dfe2dd
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/femul.v b/src/Specific/solinas32_2e413m21_16limbs/femul.v
new file mode 100644
index 000000000..4a9365973
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/femulDisplay.v b/src/Specific/solinas32_2e413m21_16limbs/femulDisplay.v
new file mode 100644
index 000000000..5d983dca7
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/fesquare.v b/src/Specific/solinas32_2e413m21_16limbs/fesquare.v
new file mode 100644
index 000000000..6fbf86ea0
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e413m21_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..cdea60354
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/fesub.v b/src/Specific/solinas32_2e413m21_16limbs/fesub.v
new file mode 100644
index 000000000..f0eb80343
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e413m21_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..3a42f9bb5
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/freeze.v b/src/Specific/solinas32_2e413m21_16limbs/freeze.v
new file mode 100644
index 000000000..9f29c8580
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e413m21_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..9c4e3c1aa
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e413m21_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e413m21_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..cf6970698
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**413 - 21' -Dmodulus_bytes='25 + 13/16' -Da24='121665'
diff --git a/src/Specific/solinas32_2e413m21_17limbs/CurveParameters.v b/src/Specific/solinas32_2e413m21_17limbs/CurveParameters.v
new file mode 100644
index 000000000..b8c9959e5
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^413 - 21
+Base: 24 + 5/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 24 + 5/17;
+ bitwidth := 32;
+ s := 2^413;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/Synthesis.v b/src/Specific/solinas32_2e413m21_17limbs/Synthesis.v
new file mode 100644
index 000000000..6ff1d0a5a
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/compiler.sh b/src/Specific/solinas32_2e413m21_17limbs/compiler.sh
new file mode 100755
index 000000000..32360411d
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas32_2e413m21_17limbs/compilerxx.sh b/src/Specific/solinas32_2e413m21_17limbs/compilerxx.sh
new file mode 100755
index 000000000..78b2693bd
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,24,25,24,24,25,24,24,24,25,24,24,25,24,24,24}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas32_2e413m21_17limbs/feadd.v b/src/Specific/solinas32_2e413m21_17limbs/feadd.v
new file mode 100644
index 000000000..d9e02d85f
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e413m21_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..e5bce0617
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/femul.v b/src/Specific/solinas32_2e413m21_17limbs/femul.v
new file mode 100644
index 000000000..086f225b2
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/femulDisplay.v b/src/Specific/solinas32_2e413m21_17limbs/femulDisplay.v
new file mode 100644
index 000000000..b0d357f3e
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/fesquare.v b/src/Specific/solinas32_2e413m21_17limbs/fesquare.v
new file mode 100644
index 000000000..70c272091
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e413m21_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b84904b6d
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/fesub.v b/src/Specific/solinas32_2e413m21_17limbs/fesub.v
new file mode 100644
index 000000000..ec1c54be4
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e413m21_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..ed7790db7
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/freeze.v b/src/Specific/solinas32_2e413m21_17limbs/freeze.v
new file mode 100644
index 000000000..70c66d9b5
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e413m21_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..9b7983935
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e413m21_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e413m21_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e413m21_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..dc4eaca33
--- /dev/null
+++ b/src/Specific/solinas32_2e413m21_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**413 - 21' -Dmodulus_bytes='24 + 5/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e414m17/CurveParameters.v b/src/Specific/solinas32_2e414m17/CurveParameters.v
deleted file mode 100644
index e27103969..000000000
--- a/src/Specific/solinas32_2e414m17/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^414 - 17
-Base: 23
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 18%nat;
- base := 23;
- bitwidth := 32;
- s := 2^414;
- c := [(1, 17)];
- carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e414m17/Synthesis.v b/src/Specific/solinas32_2e414m17/Synthesis.v
deleted file mode 100644
index b3a3a8429..000000000
--- a/src/Specific/solinas32_2e414m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e414m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e414m17/compiler.sh b/src/Specific/solinas32_2e414m17/compiler.sh
deleted file mode 100755
index 090a9b902..000000000
--- a/src/Specific/solinas32_2e414m17/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17/compilerxx.sh b/src/Specific/solinas32_2e414m17/compilerxx.sh
deleted file mode 100755
index b1991d71e..000000000
--- a/src/Specific/solinas32_2e414m17/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17/feadd.c b/src/Specific/solinas32_2e414m17/feadd.c
deleted file mode 100644
index 7b8380410..000000000
--- a/src/Specific/solinas32_2e414m17/feadd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void feadd(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = (x5 + x39);
- out[1] = (x7 + x41);
- out[2] = (x9 + x43);
- out[3] = (x11 + x45);
- out[4] = (x13 + x47);
- out[5] = (x15 + x49);
- out[6] = (x17 + x51);
- out[7] = (x19 + x53);
- out[8] = (x21 + x55);
- out[9] = (x23 + x57);
- out[10] = (x25 + x59);
- out[11] = (x27 + x61);
- out[12] = (x29 + x63);
- out[13] = (x31 + x65);
- out[14] = (x33 + x67);
- out[15] = (x35 + x69);
- out[16] = (x37 + x71);
- out[17] = (x36 + x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e414m17/feadd.v b/src/Specific/solinas32_2e414m17/feadd.v
deleted file mode 100644
index 08d1f93be..000000000
--- a/src/Specific/solinas32_2e414m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e414m17/feaddDisplay.log b/src/Specific/solinas32_2e414m17/feaddDisplay.log
deleted file mode 100644
index 5e9c243f4..000000000
--- a/src/Specific/solinas32_2e414m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- ((x36 + x70), (x37 + x71), (x35 + x69), (x33 + x67), (x31 + x65), (x29 + x63), (x27 + x61), (x25 + x59), (x23 + x57), (x21 + x55), (x19 + x53), (x17 + x51), (x15 + x49), (x13 + x47), (x11 + x45), (x9 + x43), (x7 + x41), (x5 + x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e414m17/feaddDisplay.v b/src/Specific/solinas32_2e414m17/feaddDisplay.v
deleted file mode 100644
index 6028e27e2..000000000
--- a/src/Specific/solinas32_2e414m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e414m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e414m17/femul.c b/src/Specific/solinas32_2e414m17/femul.c
deleted file mode 100644
index 2d3451518..000000000
--- a/src/Specific/solinas32_2e414m17/femul.c
+++ /dev/null
@@ -1,134 +0,0 @@
-static void femul(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- { uint64_t x72 = (((uint64_t)x5 * x70) + (((uint64_t)x7 * x71) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + (((uint64_t)x13 * x65) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + (((uint64_t)x37 * x41) + ((uint64_t)x36 * x39))))))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x11 * ((uint64_t)x36 * x70)));
- { uint64_t x74 = ((((uint64_t)x5 * x69) + (((uint64_t)x7 * x67) + (((uint64_t)x9 * x65) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x35 * x39)))))))))))))))) + (0x11 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- { uint64_t x75 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x33 * x39))))))))))))))) + (0x11 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- { uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x11 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- { uint64_t x77 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x29 * x39))))))))))))) + (0x11 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- { uint64_t x78 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x27 * x39)))))))))))) + (0x11 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- { uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x11 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- { uint64_t x80 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((uint64_t)x23 * x39)))))))))) + (0x11 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((uint64_t)x21 * x39))))))))) + (0x11 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- { uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x11 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- { uint64_t x83 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))))))) + (0x11 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- { uint64_t x84 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((uint64_t)x15 * x39)))))) + (0x11 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- { uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x11 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- { uint64_t x86 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + ((uint64_t)x11 * x39)))) + (0x11 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((uint64_t)x9 * x39))) + (0x11 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x11 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- { uint64_t x89 = (((uint64_t)x5 * x39) + (0x11 * (((uint64_t)x7 * x70) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x36 * x41)))))))))))))))))));
- { uint64_t x90 = (x89 >> 0x17);
- { uint32_t x91 = ((uint32_t)x89 & 0x7fffff);
- { uint64_t x92 = (x90 + x88);
- { uint64_t x93 = (x92 >> 0x17);
- { uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
- { uint64_t x95 = (x93 + x87);
- { uint64_t x96 = (x95 >> 0x17);
- { uint32_t x97 = ((uint32_t)x95 & 0x7fffff);
- { uint64_t x98 = (x96 + x86);
- { uint64_t x99 = (x98 >> 0x17);
- { uint32_t x100 = ((uint32_t)x98 & 0x7fffff);
- { uint64_t x101 = (x99 + x85);
- { uint64_t x102 = (x101 >> 0x17);
- { uint32_t x103 = ((uint32_t)x101 & 0x7fffff);
- { uint64_t x104 = (x102 + x84);
- { uint64_t x105 = (x104 >> 0x17);
- { uint32_t x106 = ((uint32_t)x104 & 0x7fffff);
- { uint64_t x107 = (x105 + x83);
- { uint64_t x108 = (x107 >> 0x17);
- { uint32_t x109 = ((uint32_t)x107 & 0x7fffff);
- { uint64_t x110 = (x108 + x82);
- { uint64_t x111 = (x110 >> 0x17);
- { uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
- { uint64_t x113 = (x111 + x81);
- { uint64_t x114 = (x113 >> 0x17);
- { uint32_t x115 = ((uint32_t)x113 & 0x7fffff);
- { uint64_t x116 = (x114 + x80);
- { uint64_t x117 = (x116 >> 0x17);
- { uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
- { uint64_t x119 = (x117 + x79);
- { uint64_t x120 = (x119 >> 0x17);
- { uint32_t x121 = ((uint32_t)x119 & 0x7fffff);
- { uint64_t x122 = (x120 + x78);
- { uint64_t x123 = (x122 >> 0x17);
- { uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
- { uint64_t x125 = (x123 + x77);
- { uint64_t x126 = (x125 >> 0x17);
- { uint32_t x127 = ((uint32_t)x125 & 0x7fffff);
- { uint64_t x128 = (x126 + x76);
- { uint64_t x129 = (x128 >> 0x17);
- { uint32_t x130 = ((uint32_t)x128 & 0x7fffff);
- { uint64_t x131 = (x129 + x75);
- { uint64_t x132 = (x131 >> 0x17);
- { uint32_t x133 = ((uint32_t)x131 & 0x7fffff);
- { uint64_t x134 = (x132 + x74);
- { uint64_t x135 = (x134 >> 0x17);
- { uint32_t x136 = ((uint32_t)x134 & 0x7fffff);
- { uint64_t x137 = (x135 + x73);
- { uint32_t x138 = (uint32_t) (x137 >> 0x17);
- { uint32_t x139 = ((uint32_t)x137 & 0x7fffff);
- { uint64_t x140 = (x138 + x72);
- { uint32_t x141 = (uint32_t) (x140 >> 0x17);
- { uint32_t x142 = ((uint32_t)x140 & 0x7fffff);
- { uint64_t x143 = (x91 + ((uint64_t)0x11 * x141));
- { uint32_t x144 = (uint32_t) (x143 >> 0x17);
- { uint32_t x145 = ((uint32_t)x143 & 0x7fffff);
- { uint32_t x146 = (x144 + x94);
- { uint32_t x147 = (x146 >> 0x17);
- { uint32_t x148 = (x146 & 0x7fffff);
- out[0] = x145;
- out[1] = x148;
- out[2] = (x147 + x97);
- out[3] = x100;
- out[4] = x103;
- out[5] = x106;
- out[6] = x109;
- out[7] = x112;
- out[8] = x115;
- out[9] = x118;
- out[10] = x121;
- out[11] = x124;
- out[12] = x127;
- out[13] = x130;
- out[14] = x133;
- out[15] = x136;
- out[16] = x139;
- out[17] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e414m17/femul.v b/src/Specific/solinas32_2e414m17/femul.v
deleted file mode 100644
index a1e575642..000000000
--- a/src/Specific/solinas32_2e414m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e414m17/femulDisplay.log b/src/Specific/solinas32_2e414m17/femulDisplay.log
deleted file mode 100644
index 20242203b..000000000
--- a/src/Specific/solinas32_2e414m17/femulDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- uint64_t x72 = (((uint64_t)x5 * x70) + (((uint64_t)x7 * x71) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + (((uint64_t)x13 * x65) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + (((uint64_t)x37 * x41) + ((uint64_t)x36 * x39))))))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x11 * ((uint64_t)x36 * x70)));
- uint64_t x74 = ((((uint64_t)x5 * x69) + (((uint64_t)x7 * x67) + (((uint64_t)x9 * x65) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x35 * x39)))))))))))))))) + (0x11 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- uint64_t x75 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x33 * x39))))))))))))))) + (0x11 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x11 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- uint64_t x77 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x29 * x39))))))))))))) + (0x11 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- uint64_t x78 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x27 * x39)))))))))))) + (0x11 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x11 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- uint64_t x80 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((uint64_t)x23 * x39)))))))))) + (0x11 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((uint64_t)x21 * x39))))))))) + (0x11 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x11 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- uint64_t x83 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))))))) + (0x11 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- uint64_t x84 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((uint64_t)x15 * x39)))))) + (0x11 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x11 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- uint64_t x86 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + ((uint64_t)x11 * x39)))) + (0x11 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- uint64_t x87 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((uint64_t)x9 * x39))) + (0x11 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x11 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- uint64_t x89 = (((uint64_t)x5 * x39) + (0x11 * (((uint64_t)x7 * x70) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x36 * x41)))))))))))))))))));
- uint64_t x90 = (x89 >> 0x17);
- uint32_t x91 = ((uint32_t)x89 & 0x7fffff);
- uint64_t x92 = (x90 + x88);
- uint64_t x93 = (x92 >> 0x17);
- uint32_t x94 = ((uint32_t)x92 & 0x7fffff);
- uint64_t x95 = (x93 + x87);
- uint64_t x96 = (x95 >> 0x17);
- uint32_t x97 = ((uint32_t)x95 & 0x7fffff);
- uint64_t x98 = (x96 + x86);
- uint64_t x99 = (x98 >> 0x17);
- uint32_t x100 = ((uint32_t)x98 & 0x7fffff);
- uint64_t x101 = (x99 + x85);
- uint64_t x102 = (x101 >> 0x17);
- uint32_t x103 = ((uint32_t)x101 & 0x7fffff);
- uint64_t x104 = (x102 + x84);
- uint64_t x105 = (x104 >> 0x17);
- uint32_t x106 = ((uint32_t)x104 & 0x7fffff);
- uint64_t x107 = (x105 + x83);
- uint64_t x108 = (x107 >> 0x17);
- uint32_t x109 = ((uint32_t)x107 & 0x7fffff);
- uint64_t x110 = (x108 + x82);
- uint64_t x111 = (x110 >> 0x17);
- uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
- uint64_t x113 = (x111 + x81);
- uint64_t x114 = (x113 >> 0x17);
- uint32_t x115 = ((uint32_t)x113 & 0x7fffff);
- uint64_t x116 = (x114 + x80);
- uint64_t x117 = (x116 >> 0x17);
- uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
- uint64_t x119 = (x117 + x79);
- uint64_t x120 = (x119 >> 0x17);
- uint32_t x121 = ((uint32_t)x119 & 0x7fffff);
- uint64_t x122 = (x120 + x78);
- uint64_t x123 = (x122 >> 0x17);
- uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
- uint64_t x125 = (x123 + x77);
- uint64_t x126 = (x125 >> 0x17);
- uint32_t x127 = ((uint32_t)x125 & 0x7fffff);
- uint64_t x128 = (x126 + x76);
- uint64_t x129 = (x128 >> 0x17);
- uint32_t x130 = ((uint32_t)x128 & 0x7fffff);
- uint64_t x131 = (x129 + x75);
- uint64_t x132 = (x131 >> 0x17);
- uint32_t x133 = ((uint32_t)x131 & 0x7fffff);
- uint64_t x134 = (x132 + x74);
- uint64_t x135 = (x134 >> 0x17);
- uint32_t x136 = ((uint32_t)x134 & 0x7fffff);
- uint64_t x137 = (x135 + x73);
- uint32_t x138 = (uint32_t) (x137 >> 0x17);
- uint32_t x139 = ((uint32_t)x137 & 0x7fffff);
- uint64_t x140 = (x138 + x72);
- uint32_t x141 = (uint32_t) (x140 >> 0x17);
- uint32_t x142 = ((uint32_t)x140 & 0x7fffff);
- uint64_t x143 = (x91 + ((uint64_t)0x11 * x141));
- uint32_t x144 = (uint32_t) (x143 >> 0x17);
- uint32_t x145 = ((uint32_t)x143 & 0x7fffff);
- uint32_t x146 = (x144 + x94);
- uint32_t x147 = (x146 >> 0x17);
- uint32_t x148 = (x146 & 0x7fffff);
- return (Return x142, Return x139, Return x136, Return x133, Return x130, Return x127, Return x124, Return x121, Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, (x147 + x97), Return x148, Return x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e414m17/femulDisplay.v b/src/Specific/solinas32_2e414m17/femulDisplay.v
deleted file mode 100644
index b2bf29690..000000000
--- a/src/Specific/solinas32_2e414m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e414m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e414m17/fesquare.c b/src/Specific/solinas32_2e414m17/fesquare.c
deleted file mode 100644
index 1527a6fbf..000000000
--- a/src/Specific/solinas32_2e414m17/fesquare.c
+++ /dev/null
@@ -1,116 +0,0 @@
-static void fesquare(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x35 = (((uint64_t)x2 * x33) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x33 * x2))))))))))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * ((uint64_t)x33 * x33)));
- { uint64_t x37 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- { uint64_t x38 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- { uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- { uint64_t x40 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- { uint64_t x41 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- { uint64_t x52 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x33) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + ((uint64_t)x33 * x4)))))))))))))))))));
- { uint64_t x53 = (x52 >> 0x17);
- { uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- { uint64_t x55 = (x53 + x51);
- { uint64_t x56 = (x55 >> 0x17);
- { uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- { uint64_t x58 = (x56 + x50);
- { uint64_t x59 = (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint64_t x61 = (x59 + x49);
- { uint64_t x62 = (x61 >> 0x17);
- { uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- { uint64_t x64 = (x62 + x48);
- { uint64_t x65 = (x64 >> 0x17);
- { uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- { uint64_t x67 = (x65 + x47);
- { uint64_t x68 = (x67 >> 0x17);
- { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- { uint64_t x70 = (x68 + x46);
- { uint64_t x71 = (x70 >> 0x17);
- { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- { uint64_t x73 = (x71 + x45);
- { uint64_t x74 = (x73 >> 0x17);
- { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- { uint64_t x76 = (x74 + x44);
- { uint64_t x77 = (x76 >> 0x17);
- { uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- { uint64_t x79 = (x77 + x43);
- { uint64_t x80 = (x79 >> 0x17);
- { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- { uint64_t x82 = (x80 + x42);
- { uint64_t x83 = (x82 >> 0x17);
- { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- { uint64_t x85 = (x83 + x41);
- { uint64_t x86 = (x85 >> 0x17);
- { uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- { uint64_t x88 = (x86 + x40);
- { uint64_t x89 = (x88 >> 0x17);
- { uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- { uint64_t x91 = (x89 + x39);
- { uint64_t x92 = (x91 >> 0x17);
- { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- { uint64_t x94 = (x92 + x38);
- { uint64_t x95 = (x94 >> 0x17);
- { uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
- { uint64_t x97 = (x95 + x37);
- { uint64_t x98 = (x97 >> 0x17);
- { uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
- { uint64_t x100 = (x98 + x36);
- { uint32_t x101 = (uint32_t) (x100 >> 0x17);
- { uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
- { uint64_t x103 = (x101 + x35);
- { uint32_t x104 = (uint32_t) (x103 >> 0x17);
- { uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- { uint64_t x106 = (x54 + ((uint64_t)0x11 * x104));
- { uint32_t x107 = (uint32_t) (x106 >> 0x17);
- { uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
- { uint32_t x109 = (x107 + x57);
- { uint32_t x110 = (x109 >> 0x17);
- { uint32_t x111 = (x109 & 0x7fffff);
- out[0] = x108;
- out[1] = x111;
- out[2] = (x110 + x60);
- out[3] = x63;
- out[4] = x66;
- out[5] = x69;
- out[6] = x72;
- out[7] = x75;
- out[8] = x78;
- out[9] = x81;
- out[10] = x84;
- out[11] = x87;
- out[12] = x90;
- out[13] = x93;
- out[14] = x96;
- out[15] = x99;
- out[16] = x102;
- out[17] = x105;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e414m17/fesquare.v b/src/Specific/solinas32_2e414m17/fesquare.v
deleted file mode 100644
index 3ff77fe17..000000000
--- a/src/Specific/solinas32_2e414m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e414m17/fesquareDisplay.log b/src/Specific/solinas32_2e414m17/fesquareDisplay.log
deleted file mode 100644
index 7601a91a3..000000000
--- a/src/Specific/solinas32_2e414m17/fesquareDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x35 = (((uint64_t)x2 * x33) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x33 * x2))))))))))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * ((uint64_t)x33 * x33)));
- uint64_t x37 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- uint64_t x38 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- uint64_t x40 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- uint64_t x41 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- uint64_t x43 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- uint64_t x47 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- uint64_t x52 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x33) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + ((uint64_t)x33 * x4)))))))))))))))))));
- uint64_t x53 = (x52 >> 0x17);
- uint32_t x54 = ((uint32_t)x52 & 0x7fffff);
- uint64_t x55 = (x53 + x51);
- uint64_t x56 = (x55 >> 0x17);
- uint32_t x57 = ((uint32_t)x55 & 0x7fffff);
- uint64_t x58 = (x56 + x50);
- uint64_t x59 = (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint64_t x61 = (x59 + x49);
- uint64_t x62 = (x61 >> 0x17);
- uint32_t x63 = ((uint32_t)x61 & 0x7fffff);
- uint64_t x64 = (x62 + x48);
- uint64_t x65 = (x64 >> 0x17);
- uint32_t x66 = ((uint32_t)x64 & 0x7fffff);
- uint64_t x67 = (x65 + x47);
- uint64_t x68 = (x67 >> 0x17);
- uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
- uint64_t x70 = (x68 + x46);
- uint64_t x71 = (x70 >> 0x17);
- uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
- uint64_t x73 = (x71 + x45);
- uint64_t x74 = (x73 >> 0x17);
- uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- uint64_t x76 = (x74 + x44);
- uint64_t x77 = (x76 >> 0x17);
- uint32_t x78 = ((uint32_t)x76 & 0x7fffff);
- uint64_t x79 = (x77 + x43);
- uint64_t x80 = (x79 >> 0x17);
- uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
- uint64_t x82 = (x80 + x42);
- uint64_t x83 = (x82 >> 0x17);
- uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
- uint64_t x85 = (x83 + x41);
- uint64_t x86 = (x85 >> 0x17);
- uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
- uint64_t x88 = (x86 + x40);
- uint64_t x89 = (x88 >> 0x17);
- uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- uint64_t x91 = (x89 + x39);
- uint64_t x92 = (x91 >> 0x17);
- uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
- uint64_t x94 = (x92 + x38);
- uint64_t x95 = (x94 >> 0x17);
- uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
- uint64_t x97 = (x95 + x37);
- uint64_t x98 = (x97 >> 0x17);
- uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
- uint64_t x100 = (x98 + x36);
- uint32_t x101 = (uint32_t) (x100 >> 0x17);
- uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
- uint64_t x103 = (x101 + x35);
- uint32_t x104 = (uint32_t) (x103 >> 0x17);
- uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- uint64_t x106 = (x54 + ((uint64_t)0x11 * x104));
- uint32_t x107 = (uint32_t) (x106 >> 0x17);
- uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
- uint32_t x109 = (x107 + x57);
- uint32_t x110 = (x109 >> 0x17);
- uint32_t x111 = (x109 & 0x7fffff);
- return (Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, (x110 + x60), Return x111, Return x108))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e414m17/fesquareDisplay.v b/src/Specific/solinas32_2e414m17/fesquareDisplay.v
deleted file mode 100644
index 04b09aa0f..000000000
--- a/src/Specific/solinas32_2e414m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e414m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e414m17/fesub.c b/src/Specific/solinas32_2e414m17/fesub.c
deleted file mode 100644
index 2aab83ae8..000000000
--- a/src/Specific/solinas32_2e414m17/fesub.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void fesub(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = ((0xffffde + x5) - x39);
- out[1] = ((0xfffffe + x7) - x41);
- out[2] = ((0xfffffe + x9) - x43);
- out[3] = ((0xfffffe + x11) - x45);
- out[4] = ((0xfffffe + x13) - x47);
- out[5] = ((0xfffffe + x15) - x49);
- out[6] = ((0xfffffe + x17) - x51);
- out[7] = ((0xfffffe + x19) - x53);
- out[8] = ((0xfffffe + x21) - x55);
- out[9] = ((0xfffffe + x23) - x57);
- out[10] = ((0xfffffe + x25) - x59);
- out[11] = ((0xfffffe + x27) - x61);
- out[12] = ((0xfffffe + x29) - x63);
- out[13] = ((0xfffffe + x31) - x65);
- out[14] = ((0xfffffe + x33) - x67);
- out[15] = ((0xfffffe + x35) - x69);
- out[16] = ((0xfffffe + x37) - x71);
- out[17] = ((0xfffffe + x36) - x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e414m17/fesub.v b/src/Specific/solinas32_2e414m17/fesub.v
deleted file mode 100644
index 59cd74879..000000000
--- a/src/Specific/solinas32_2e414m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e414m17/fesubDisplay.log b/src/Specific/solinas32_2e414m17/fesubDisplay.log
deleted file mode 100644
index d09ce7cb8..000000000
--- a/src/Specific/solinas32_2e414m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- (((0xfffffe + x36) - x70), ((0xfffffe + x37) - x71), ((0xfffffe + x35) - x69), ((0xfffffe + x33) - x67), ((0xfffffe + x31) - x65), ((0xfffffe + x29) - x63), ((0xfffffe + x27) - x61), ((0xfffffe + x25) - x59), ((0xfffffe + x23) - x57), ((0xfffffe + x21) - x55), ((0xfffffe + x19) - x53), ((0xfffffe + x17) - x51), ((0xfffffe + x15) - x49), ((0xfffffe + x13) - x47), ((0xfffffe + x11) - x45), ((0xfffffe + x9) - x43), ((0xfffffe + x7) - x41), ((0xffffde + x5) - x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e414m17/fesubDisplay.v b/src/Specific/solinas32_2e414m17/fesubDisplay.v
deleted file mode 100644
index 9d3c23918..000000000
--- a/src/Specific/solinas32_2e414m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e414m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e414m17/freeze.c b/src/Specific/solinas32_2e414m17/freeze.c
deleted file mode 100644
index ad6b277df..000000000
--- a/src/Specific/solinas32_2e414m17/freeze.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void freeze(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffef);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x7fffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x7fffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x7fffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x7fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x7fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x7fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x7fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x7fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x7fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x7fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x7fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x7fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x7fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x7fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x7fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x7fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x7fffff);
- { uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- { uint32_t x90 = (x89 & 0x7fffef);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- { uint32_t x94 = (x89 & 0x7fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- { uint32_t x98 = (x89 & 0x7fffff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- { uint32_t x102 = (x89 & 0x7fffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- { uint32_t x106 = (x89 & 0x7fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- { uint32_t x110 = (x89 & 0x7fffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- { uint32_t x114 = (x89 & 0x7fffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- { uint32_t x118 = (x89 & 0x7fffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- { uint32_t x122 = (x89 & 0x7fffff);
- { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- { uint32_t x126 = (x89 & 0x7fffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- { uint32_t x130 = (x89 & 0x7fffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- { uint32_t x134 = (x89 & 0x7fffff);
- { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- { uint32_t x138 = (x89 & 0x7fffff);
- { uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- { uint32_t x142 = (x89 & 0x7fffff);
- { uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- { uint32_t x146 = (x89 & 0x7fffff);
- { uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- { uint32_t x150 = (x89 & 0x7fffff);
- { uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- { uint32_t x154 = (x89 & 0x7fffff);
- { uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- { uint32_t x158 = (x89 & 0x7fffff);
- { uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- out[0] = x92;
- out[1] = x96;
- out[2] = x100;
- out[3] = x104;
- out[4] = x108;
- out[5] = x112;
- out[6] = x116;
- out[7] = x120;
- out[8] = x124;
- out[9] = x128;
- out[10] = x132;
- out[11] = x136;
- out[12] = x140;
- out[13] = x144;
- out[14] = x148;
- out[15] = x152;
- out[16] = x156;
- out[17] = x160;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e414m17/freeze.v b/src/Specific/solinas32_2e414m17/freeze.v
deleted file mode 100644
index 91aa166e5..000000000
--- a/src/Specific/solinas32_2e414m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e414m17/freezeDisplay.log b/src/Specific/solinas32_2e414m17/freezeDisplay.log
deleted file mode 100644
index 9e1c90b7b..000000000
--- a/src/Specific/solinas32_2e414m17/freezeDisplay.log
+++ /dev/null
@@ -1,62 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffef);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x7fffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x7fffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x7fffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x7fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x7fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x7fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x7fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x7fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x7fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x7fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x7fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x7fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x7fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x7fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x7fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x7fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x7fffff);
- uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- uint32_t x90 = (x89 & 0x7fffef);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- uint32_t x94 = (x89 & 0x7fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- uint32_t x98 = (x89 & 0x7fffff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- uint32_t x102 = (x89 & 0x7fffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- uint32_t x106 = (x89 & 0x7fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- uint32_t x110 = (x89 & 0x7fffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- uint32_t x114 = (x89 & 0x7fffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- uint32_t x118 = (x89 & 0x7fffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- uint32_t x122 = (x89 & 0x7fffff);
- uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- uint32_t x126 = (x89 & 0x7fffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- uint32_t x130 = (x89 & 0x7fffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- uint32_t x134 = (x89 & 0x7fffff);
- uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- uint32_t x138 = (x89 & 0x7fffff);
- uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- uint32_t x142 = (x89 & 0x7fffff);
- uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- uint32_t x146 = (x89 & 0x7fffff);
- uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- uint32_t x150 = (x89 & 0x7fffff);
- uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- uint32_t x154 = (x89 & 0x7fffff);
- uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- uint32_t x158 = (x89 & 0x7fffff);
- uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- (Return x160, Return x156, Return x152, Return x148, Return x144, Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e414m17/freezeDisplay.v b/src/Specific/solinas32_2e414m17/freezeDisplay.v
deleted file mode 100644
index b083fa29a..000000000
--- a/src/Specific/solinas32_2e414m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e414m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e414m17/py_interpreter.sh b/src/Specific/solinas32_2e414m17/py_interpreter.sh
deleted file mode 100755
index 77ca42b53..000000000
--- a/src/Specific/solinas32_2e414m17/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**414 - 17' -Dmodulus_bytes='23' -Da24='121665'
diff --git a/src/Specific/solinas32_2e414m17_16limbs/CurveParameters.v b/src/Specific/solinas32_2e414m17_16limbs/CurveParameters.v
new file mode 100644
index 000000000..1ae1463eb
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^414 - 17
+Base: 25.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 16%nat;
+ base := 25 + 7/8;
+ bitwidth := 32;
+ s := 2^414;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/Synthesis.v b/src/Specific/solinas32_2e414m17_16limbs/Synthesis.v
new file mode 100644
index 000000000..9dccb57c7
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/compiler.sh b/src/Specific/solinas32_2e414m17_16limbs/compiler.sh
new file mode 100755
index 000000000..815ef4bdd
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,25,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17_16limbs/compilerxx.sh b/src/Specific/solinas32_2e414m17_16limbs/compilerxx.sh
new file mode 100755
index 000000000..bdafbd4be
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,26,26,26,26,25,26,26,26,26,26,26,26,25}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17_16limbs/feadd.v b/src/Specific/solinas32_2e414m17_16limbs/feadd.v
new file mode 100644
index 000000000..b28c0593a
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e414m17_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..59424ced3
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/femul.v b/src/Specific/solinas32_2e414m17_16limbs/femul.v
new file mode 100644
index 000000000..23d88f754
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/femulDisplay.v b/src/Specific/solinas32_2e414m17_16limbs/femulDisplay.v
new file mode 100644
index 000000000..6e72de813
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/fesquare.v b/src/Specific/solinas32_2e414m17_16limbs/fesquare.v
new file mode 100644
index 000000000..d71be5bc6
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e414m17_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ec0804ce8
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/fesub.v b/src/Specific/solinas32_2e414m17_16limbs/fesub.v
new file mode 100644
index 000000000..c27c1f348
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e414m17_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..01622c0ef
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/freeze.v b/src/Specific/solinas32_2e414m17_16limbs/freeze.v
new file mode 100644
index 000000000..d0dd4e716
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e414m17_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..2b9332bdd
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e414m17_16limbs/py_interpreter.sh b/src/Specific/solinas32_2e414m17_16limbs/py_interpreter.sh
new file mode 100755
index 000000000..8423a6195
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_16limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**414 - 17' -Dmodulus_bytes='25.875' -Da24='121665'
diff --git a/src/Specific/solinas32_2e414m17_17limbs/CurveParameters.v b/src/Specific/solinas32_2e414m17_17limbs/CurveParameters.v
new file mode 100644
index 000000000..135f1e0a2
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^414 - 17
+Base: 24 + 6/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 24 + 6/17;
+ bitwidth := 32;
+ s := 2^414;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/Synthesis.v b/src/Specific/solinas32_2e414m17_17limbs/Synthesis.v
new file mode 100644
index 000000000..3c70763d3
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/compiler.sh b/src/Specific/solinas32_2e414m17_17limbs/compiler.sh
new file mode 100755
index 000000000..f657107fb
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,24,25,24,24,25,24,24,25,24,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17_17limbs/compilerxx.sh b/src/Specific/solinas32_2e414m17_17limbs/compilerxx.sh
new file mode 100755
index 000000000..625a366ce
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,24,25,24,24,25,24,24,25,24,24}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas32_2e414m17_17limbs/feadd.v b/src/Specific/solinas32_2e414m17_17limbs/feadd.v
new file mode 100644
index 000000000..3a640e412
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e414m17_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..5f214b9a4
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/femul.v b/src/Specific/solinas32_2e414m17_17limbs/femul.v
new file mode 100644
index 000000000..105854031
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/femulDisplay.v b/src/Specific/solinas32_2e414m17_17limbs/femulDisplay.v
new file mode 100644
index 000000000..0cf74a2c2
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/fesquare.v b/src/Specific/solinas32_2e414m17_17limbs/fesquare.v
new file mode 100644
index 000000000..40d1e6dc5
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e414m17_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a2d71011c
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/fesub.v b/src/Specific/solinas32_2e414m17_17limbs/fesub.v
new file mode 100644
index 000000000..1f0f4c11a
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e414m17_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..3af9b9fee
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/freeze.v b/src/Specific/solinas32_2e414m17_17limbs/freeze.v
new file mode 100644
index 000000000..4a766276b
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e414m17_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..5c730ff2b
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e414m17_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e414m17_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e414m17_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..0e3673252
--- /dev/null
+++ b/src/Specific/solinas32_2e414m17_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**414 - 17' -Dmodulus_bytes='24 + 6/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e416m2e208m1/Synthesis.v b/src/Specific/solinas32_2e416m2e208m1/Synthesis.v
deleted file mode 100644
index 86eaaf8c2..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e416m2e208m1/feadd.c b/src/Specific/solinas32_2e416m2e208m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e416m2e208m1/feadd.v b/src/Specific/solinas32_2e416m2e208m1/feadd.v
deleted file mode 100644
index e978ff228..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.log b/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.v b/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.v
deleted file mode 100644
index 69310112a..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e416m2e208m1/femul.c b/src/Specific/solinas32_2e416m2e208m1/femul.c
deleted file mode 100644
index 44254473b..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/femul.c
+++ /dev/null
@@ -1,145 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint64_t x64 = (((uint64_t)(x19 + x32) * (x49 + x62)) - ((uint64_t)x19 * x49));
- { uint64_t x65 = ((((uint64_t)(x17 + x33) * (x49 + x62)) + ((uint64_t)(x19 + x32) * (x47 + x63))) - (((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)));
- { uint64_t x66 = ((((uint64_t)(x15 + x31) * (x49 + x62)) + (((uint64_t)(x17 + x33) * (x47 + x63)) + ((uint64_t)(x19 + x32) * (x45 + x61)))) - (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))));
- { uint64_t x67 = ((((uint64_t)(x13 + x29) * (x49 + x62)) + (((uint64_t)(x15 + x31) * (x47 + x63)) + (((uint64_t)(x17 + x33) * (x45 + x61)) + ((uint64_t)(x19 + x32) * (x43 + x59))))) - (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))));
- { uint64_t x68 = ((((uint64_t)(x11 + x27) * (x49 + x62)) + (((uint64_t)(x13 + x29) * (x47 + x63)) + (((uint64_t)(x15 + x31) * (x45 + x61)) + (((uint64_t)(x17 + x33) * (x43 + x59)) + ((uint64_t)(x19 + x32) * (x41 + x57)))))) - (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))));
- { uint64_t x69 = ((((uint64_t)(x9 + x25) * (x49 + x62)) + (((uint64_t)(x11 + x27) * (x47 + x63)) + (((uint64_t)(x13 + x29) * (x45 + x61)) + (((uint64_t)(x15 + x31) * (x43 + x59)) + (((uint64_t)(x17 + x33) * (x41 + x57)) + ((uint64_t)(x19 + x32) * (x39 + x55))))))) - (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))));
- { uint64_t x70 = ((((uint64_t)(x7 + x23) * (x49 + x62)) + (((uint64_t)(x9 + x25) * (x47 + x63)) + (((uint64_t)(x11 + x27) * (x45 + x61)) + (((uint64_t)(x13 + x29) * (x43 + x59)) + (((uint64_t)(x15 + x31) * (x41 + x57)) + (((uint64_t)(x17 + x33) * (x39 + x55)) + ((uint64_t)(x19 + x32) * (x37 + x53)))))))) - (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))));
- { uint64_t x71 = ((((uint64_t)(x5 + x21) * (x49 + x62)) + (((uint64_t)(x7 + x23) * (x47 + x63)) + (((uint64_t)(x9 + x25) * (x45 + x61)) + (((uint64_t)(x11 + x27) * (x43 + x59)) + (((uint64_t)(x13 + x29) * (x41 + x57)) + (((uint64_t)(x15 + x31) * (x39 + x55)) + (((uint64_t)(x17 + x33) * (x37 + x53)) + ((uint64_t)(x19 + x32) * (x35 + x51))))))))) - (((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))));
- { uint64_t x72 = ((((uint64_t)(x5 + x21) * (x47 + x63)) + (((uint64_t)(x7 + x23) * (x45 + x61)) + (((uint64_t)(x9 + x25) * (x43 + x59)) + (((uint64_t)(x11 + x27) * (x41 + x57)) + (((uint64_t)(x13 + x29) * (x39 + x55)) + (((uint64_t)(x15 + x31) * (x37 + x53)) + ((uint64_t)(x17 + x33) * (x35 + x51)))))))) - (((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))));
- { uint64_t x73 = ((((uint64_t)(x5 + x21) * (x45 + x61)) + (((uint64_t)(x7 + x23) * (x43 + x59)) + (((uint64_t)(x9 + x25) * (x41 + x57)) + (((uint64_t)(x11 + x27) * (x39 + x55)) + (((uint64_t)(x13 + x29) * (x37 + x53)) + ((uint64_t)(x15 + x31) * (x35 + x51))))))) - (((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))));
- { uint64_t x74 = ((((uint64_t)(x5 + x21) * (x43 + x59)) + (((uint64_t)(x7 + x23) * (x41 + x57)) + (((uint64_t)(x9 + x25) * (x39 + x55)) + (((uint64_t)(x11 + x27) * (x37 + x53)) + ((uint64_t)(x13 + x29) * (x35 + x51)))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))));
- { uint64_t x75 = ((((uint64_t)(x5 + x21) * (x41 + x57)) + (((uint64_t)(x7 + x23) * (x39 + x55)) + (((uint64_t)(x9 + x25) * (x37 + x53)) + ((uint64_t)(x11 + x27) * (x35 + x51))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))));
- { uint64_t x76 = ((((uint64_t)(x5 + x21) * (x39 + x55)) + (((uint64_t)(x7 + x23) * (x37 + x53)) + ((uint64_t)(x9 + x25) * (x35 + x51)))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))));
- { uint64_t x77 = ((((uint64_t)(x5 + x21) * (x37 + x53)) + ((uint64_t)(x7 + x23) * (x35 + x51))) - (((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)));
- { uint64_t x78 = (((uint64_t)(x5 + x21) * (x35 + x51)) - ((uint64_t)x5 * x35));
- { uint64_t x79 = (((((uint64_t)x19 * x49) + ((uint64_t)x32 * x62)) + x72) + x64);
- { uint64_t x80 = ((((((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)) + (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))) + x73) + x65);
- { uint64_t x81 = ((((((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))) + (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))) + x74) + x66);
- { uint64_t x82 = ((((((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))) + (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))) + x75) + x67);
- { uint64_t x83 = ((((((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))) + (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))) + x76) + x68);
- { uint64_t x84 = ((((((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))) + x77) + x69);
- { uint64_t x85 = ((((((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))) + x78) + x70);
- { uint64_t x86 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))) + (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51)))))))));
- { uint64_t x87 = (((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))) + x64);
- { uint64_t x88 = (((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))) + x65);
- { uint64_t x89 = (((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((uint64_t)x29 * x51)))))) + x66);
- { uint64_t x90 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((uint64_t)x27 * x51))))) + x67);
- { uint64_t x91 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((uint64_t)x25 * x51)))) + x68);
- { uint64_t x92 = (((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (((uint64_t)x21 * x53) + ((uint64_t)x23 * x51))) + x69);
- { uint64_t x93 = ((((uint64_t)x5 * x35) + ((uint64_t)x21 * x51)) + x70);
- { uint64_t x94 = (x86 >> 0x1a);
- { uint32_t x95 = ((uint32_t)x86 & 0x3ffffff);
- { uint64_t x96 = (x71 >> 0x1a);
- { uint32_t x97 = ((uint32_t)x71 & 0x3ffffff);
- { uint64_t x98 = ((0x4000000 * x96) + x97);
- { uint64_t x99 = (x98 >> 0x1a);
- { uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- { uint64_t x101 = ((x94 + x85) + x99);
- { uint64_t x102 = (x101 >> 0x1a);
- { uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- { uint64_t x104 = (x93 + x99);
- { uint64_t x105 = (x104 >> 0x1a);
- { uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- { uint64_t x107 = (x102 + x84);
- { uint64_t x108 = (x107 >> 0x1a);
- { uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- { uint64_t x110 = (x105 + x92);
- { uint64_t x111 = (x110 >> 0x1a);
- { uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- { uint64_t x113 = (x108 + x83);
- { uint64_t x114 = (x113 >> 0x1a);
- { uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- { uint64_t x116 = (x111 + x91);
- { uint64_t x117 = (x116 >> 0x1a);
- { uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- { uint64_t x119 = (x114 + x82);
- { uint64_t x120 = (x119 >> 0x1a);
- { uint32_t x121 = ((uint32_t)x119 & 0x3ffffff);
- { uint64_t x122 = (x117 + x90);
- { uint64_t x123 = (x122 >> 0x1a);
- { uint32_t x124 = ((uint32_t)x122 & 0x3ffffff);
- { uint64_t x125 = (x120 + x81);
- { uint64_t x126 = (x125 >> 0x1a);
- { uint32_t x127 = ((uint32_t)x125 & 0x3ffffff);
- { uint64_t x128 = (x123 + x89);
- { uint64_t x129 = (x128 >> 0x1a);
- { uint32_t x130 = ((uint32_t)x128 & 0x3ffffff);
- { uint64_t x131 = (x126 + x80);
- { uint64_t x132 = (x131 >> 0x1a);
- { uint32_t x133 = ((uint32_t)x131 & 0x3ffffff);
- { uint64_t x134 = (x129 + x88);
- { uint64_t x135 = (x134 >> 0x1a);
- { uint32_t x136 = ((uint32_t)x134 & 0x3ffffff);
- { uint64_t x137 = (x132 + x79);
- { uint64_t x138 = (x137 >> 0x1a);
- { uint32_t x139 = ((uint32_t)x137 & 0x3ffffff);
- { uint64_t x140 = (x135 + x87);
- { uint64_t x141 = (x140 >> 0x1a);
- { uint32_t x142 = ((uint32_t)x140 & 0x3ffffff);
- { uint64_t x143 = (x138 + x100);
- { uint32_t x144 = (uint32_t) (x143 >> 0x1a);
- { uint32_t x145 = ((uint32_t)x143 & 0x3ffffff);
- { uint64_t x146 = (x141 + x95);
- { uint32_t x147 = (uint32_t) (x146 >> 0x1a);
- { uint32_t x148 = ((uint32_t)x146 & 0x3ffffff);
- { uint64_t x149 = (((uint64_t)0x4000000 * x144) + x145);
- { uint32_t x150 = (uint32_t) (x149 >> 0x1a);
- { uint32_t x151 = ((uint32_t)x149 & 0x3ffffff);
- { uint32_t x152 = ((x147 + x103) + x150);
- { uint32_t x153 = (x152 >> 0x1a);
- { uint32_t x154 = (x152 & 0x3ffffff);
- { uint32_t x155 = (x106 + x150);
- { uint32_t x156 = (x155 >> 0x1a);
- { uint32_t x157 = (x155 & 0x3ffffff);
- out[0] = x157;
- out[1] = (x156 + x112);
- out[2] = x118;
- out[3] = x124;
- out[4] = x130;
- out[5] = x136;
- out[6] = x142;
- out[7] = x148;
- out[8] = x154;
- out[9] = (x153 + x109);
- out[10] = x115;
- out[11] = x121;
- out[12] = x127;
- out[13] = x133;
- out[14] = x139;
- out[15] = x151;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e416m2e208m1/femul.v b/src/Specific/solinas32_2e416m2e208m1/femul.v
deleted file mode 100644
index 94af32300..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1/femulDisplay.log b/src/Specific/solinas32_2e416m2e208m1/femulDisplay.log
deleted file mode 100644
index a1a68ec37..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/femulDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint64_t x64 = (((uint64_t)(x19 + x32) * (x49 + x62)) - ((uint64_t)x19 * x49));
- uint64_t x65 = ((((uint64_t)(x17 + x33) * (x49 + x62)) + ((uint64_t)(x19 + x32) * (x47 + x63))) - (((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)));
- uint64_t x66 = ((((uint64_t)(x15 + x31) * (x49 + x62)) + (((uint64_t)(x17 + x33) * (x47 + x63)) + ((uint64_t)(x19 + x32) * (x45 + x61)))) - (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))));
- uint64_t x67 = ((((uint64_t)(x13 + x29) * (x49 + x62)) + (((uint64_t)(x15 + x31) * (x47 + x63)) + (((uint64_t)(x17 + x33) * (x45 + x61)) + ((uint64_t)(x19 + x32) * (x43 + x59))))) - (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))));
- uint64_t x68 = ((((uint64_t)(x11 + x27) * (x49 + x62)) + (((uint64_t)(x13 + x29) * (x47 + x63)) + (((uint64_t)(x15 + x31) * (x45 + x61)) + (((uint64_t)(x17 + x33) * (x43 + x59)) + ((uint64_t)(x19 + x32) * (x41 + x57)))))) - (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))));
- uint64_t x69 = ((((uint64_t)(x9 + x25) * (x49 + x62)) + (((uint64_t)(x11 + x27) * (x47 + x63)) + (((uint64_t)(x13 + x29) * (x45 + x61)) + (((uint64_t)(x15 + x31) * (x43 + x59)) + (((uint64_t)(x17 + x33) * (x41 + x57)) + ((uint64_t)(x19 + x32) * (x39 + x55))))))) - (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))));
- uint64_t x70 = ((((uint64_t)(x7 + x23) * (x49 + x62)) + (((uint64_t)(x9 + x25) * (x47 + x63)) + (((uint64_t)(x11 + x27) * (x45 + x61)) + (((uint64_t)(x13 + x29) * (x43 + x59)) + (((uint64_t)(x15 + x31) * (x41 + x57)) + (((uint64_t)(x17 + x33) * (x39 + x55)) + ((uint64_t)(x19 + x32) * (x37 + x53)))))))) - (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))));
- uint64_t x71 = ((((uint64_t)(x5 + x21) * (x49 + x62)) + (((uint64_t)(x7 + x23) * (x47 + x63)) + (((uint64_t)(x9 + x25) * (x45 + x61)) + (((uint64_t)(x11 + x27) * (x43 + x59)) + (((uint64_t)(x13 + x29) * (x41 + x57)) + (((uint64_t)(x15 + x31) * (x39 + x55)) + (((uint64_t)(x17 + x33) * (x37 + x53)) + ((uint64_t)(x19 + x32) * (x35 + x51))))))))) - (((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))));
- uint64_t x72 = ((((uint64_t)(x5 + x21) * (x47 + x63)) + (((uint64_t)(x7 + x23) * (x45 + x61)) + (((uint64_t)(x9 + x25) * (x43 + x59)) + (((uint64_t)(x11 + x27) * (x41 + x57)) + (((uint64_t)(x13 + x29) * (x39 + x55)) + (((uint64_t)(x15 + x31) * (x37 + x53)) + ((uint64_t)(x17 + x33) * (x35 + x51)))))))) - (((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))));
- uint64_t x73 = ((((uint64_t)(x5 + x21) * (x45 + x61)) + (((uint64_t)(x7 + x23) * (x43 + x59)) + (((uint64_t)(x9 + x25) * (x41 + x57)) + (((uint64_t)(x11 + x27) * (x39 + x55)) + (((uint64_t)(x13 + x29) * (x37 + x53)) + ((uint64_t)(x15 + x31) * (x35 + x51))))))) - (((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))));
- uint64_t x74 = ((((uint64_t)(x5 + x21) * (x43 + x59)) + (((uint64_t)(x7 + x23) * (x41 + x57)) + (((uint64_t)(x9 + x25) * (x39 + x55)) + (((uint64_t)(x11 + x27) * (x37 + x53)) + ((uint64_t)(x13 + x29) * (x35 + x51)))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))));
- uint64_t x75 = ((((uint64_t)(x5 + x21) * (x41 + x57)) + (((uint64_t)(x7 + x23) * (x39 + x55)) + (((uint64_t)(x9 + x25) * (x37 + x53)) + ((uint64_t)(x11 + x27) * (x35 + x51))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))));
- uint64_t x76 = ((((uint64_t)(x5 + x21) * (x39 + x55)) + (((uint64_t)(x7 + x23) * (x37 + x53)) + ((uint64_t)(x9 + x25) * (x35 + x51)))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))));
- uint64_t x77 = ((((uint64_t)(x5 + x21) * (x37 + x53)) + ((uint64_t)(x7 + x23) * (x35 + x51))) - (((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)));
- uint64_t x78 = (((uint64_t)(x5 + x21) * (x35 + x51)) - ((uint64_t)x5 * x35));
- uint64_t x79 = (((((uint64_t)x19 * x49) + ((uint64_t)x32 * x62)) + x72) + x64);
- uint64_t x80 = ((((((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)) + (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))) + x73) + x65);
- uint64_t x81 = ((((((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))) + (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))) + x74) + x66);
- uint64_t x82 = ((((((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))) + (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))) + x75) + x67);
- uint64_t x83 = ((((((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))) + (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))) + x76) + x68);
- uint64_t x84 = ((((((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))) + x77) + x69);
- uint64_t x85 = ((((((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))) + x78) + x70);
- uint64_t x86 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))) + (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51)))))))));
- uint64_t x87 = (((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))) + x64);
- uint64_t x88 = (((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))) + x65);
- uint64_t x89 = (((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((uint64_t)x29 * x51)))))) + x66);
- uint64_t x90 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((uint64_t)x27 * x51))))) + x67);
- uint64_t x91 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((uint64_t)x25 * x51)))) + x68);
- uint64_t x92 = (((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (((uint64_t)x21 * x53) + ((uint64_t)x23 * x51))) + x69);
- uint64_t x93 = ((((uint64_t)x5 * x35) + ((uint64_t)x21 * x51)) + x70);
- uint64_t x94 = (x86 >> 0x1a);
- uint32_t x95 = ((uint32_t)x86 & 0x3ffffff);
- uint64_t x96 = (x71 >> 0x1a);
- uint32_t x97 = ((uint32_t)x71 & 0x3ffffff);
- uint64_t x98 = ((0x4000000 * x96) + x97);
- uint64_t x99 = (x98 >> 0x1a);
- uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- uint64_t x101 = ((x94 + x85) + x99);
- uint64_t x102 = (x101 >> 0x1a);
- uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- uint64_t x104 = (x93 + x99);
- uint64_t x105 = (x104 >> 0x1a);
- uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- uint64_t x107 = (x102 + x84);
- uint64_t x108 = (x107 >> 0x1a);
- uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- uint64_t x110 = (x105 + x92);
- uint64_t x111 = (x110 >> 0x1a);
- uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- uint64_t x113 = (x108 + x83);
- uint64_t x114 = (x113 >> 0x1a);
- uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- uint64_t x116 = (x111 + x91);
- uint64_t x117 = (x116 >> 0x1a);
- uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- uint64_t x119 = (x114 + x82);
- uint64_t x120 = (x119 >> 0x1a);
- uint32_t x121 = ((uint32_t)x119 & 0x3ffffff);
- uint64_t x122 = (x117 + x90);
- uint64_t x123 = (x122 >> 0x1a);
- uint32_t x124 = ((uint32_t)x122 & 0x3ffffff);
- uint64_t x125 = (x120 + x81);
- uint64_t x126 = (x125 >> 0x1a);
- uint32_t x127 = ((uint32_t)x125 & 0x3ffffff);
- uint64_t x128 = (x123 + x89);
- uint64_t x129 = (x128 >> 0x1a);
- uint32_t x130 = ((uint32_t)x128 & 0x3ffffff);
- uint64_t x131 = (x126 + x80);
- uint64_t x132 = (x131 >> 0x1a);
- uint32_t x133 = ((uint32_t)x131 & 0x3ffffff);
- uint64_t x134 = (x129 + x88);
- uint64_t x135 = (x134 >> 0x1a);
- uint32_t x136 = ((uint32_t)x134 & 0x3ffffff);
- uint64_t x137 = (x132 + x79);
- uint64_t x138 = (x137 >> 0x1a);
- uint32_t x139 = ((uint32_t)x137 & 0x3ffffff);
- uint64_t x140 = (x135 + x87);
- uint64_t x141 = (x140 >> 0x1a);
- uint32_t x142 = ((uint32_t)x140 & 0x3ffffff);
- uint64_t x143 = (x138 + x100);
- uint32_t x144 = (uint32_t) (x143 >> 0x1a);
- uint32_t x145 = ((uint32_t)x143 & 0x3ffffff);
- uint64_t x146 = (x141 + x95);
- uint32_t x147 = (uint32_t) (x146 >> 0x1a);
- uint32_t x148 = ((uint32_t)x146 & 0x3ffffff);
- uint64_t x149 = (((uint64_t)0x4000000 * x144) + x145);
- uint32_t x150 = (uint32_t) (x149 >> 0x1a);
- uint32_t x151 = ((uint32_t)x149 & 0x3ffffff);
- uint32_t x152 = ((x147 + x103) + x150);
- uint32_t x153 = (x152 >> 0x1a);
- uint32_t x154 = (x152 & 0x3ffffff);
- uint32_t x155 = (x106 + x150);
- uint32_t x156 = (x155 >> 0x1a);
- uint32_t x157 = (x155 & 0x3ffffff);
- return (Return x151, Return x139, Return x133, Return x127, Return x121, Return x115, (x153 + x109), Return x154, Return x148, Return x142, Return x136, Return x130, Return x124, Return x118, (x156 + x112), Return x157))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v b/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v
deleted file mode 100644
index bd80fef54..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquare.c b/src/Specific/solinas32_2e416m2e208m1/fesquare.c
deleted file mode 100644
index 6499f63f0..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesquare.c
+++ /dev/null
@@ -1,129 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x31 = (((uint64_t)(x16 + x29) * (x16 + x29)) - ((uint64_t)x16 * x16));
- { uint64_t x32 = ((((uint64_t)(x14 + x30) * (x16 + x29)) + ((uint64_t)(x16 + x29) * (x14 + x30))) - (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)));
- { uint64_t x33 = ((((uint64_t)(x12 + x28) * (x16 + x29)) + (((uint64_t)(x14 + x30) * (x14 + x30)) + ((uint64_t)(x16 + x29) * (x12 + x28)))) - (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))));
- { uint64_t x34 = ((((uint64_t)(x10 + x26) * (x16 + x29)) + (((uint64_t)(x12 + x28) * (x14 + x30)) + (((uint64_t)(x14 + x30) * (x12 + x28)) + ((uint64_t)(x16 + x29) * (x10 + x26))))) - (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))));
- { uint64_t x35 = ((((uint64_t)(x8 + x24) * (x16 + x29)) + (((uint64_t)(x10 + x26) * (x14 + x30)) + (((uint64_t)(x12 + x28) * (x12 + x28)) + (((uint64_t)(x14 + x30) * (x10 + x26)) + ((uint64_t)(x16 + x29) * (x8 + x24)))))) - (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))));
- { uint64_t x36 = ((((uint64_t)(x6 + x22) * (x16 + x29)) + (((uint64_t)(x8 + x24) * (x14 + x30)) + (((uint64_t)(x10 + x26) * (x12 + x28)) + (((uint64_t)(x12 + x28) * (x10 + x26)) + (((uint64_t)(x14 + x30) * (x8 + x24)) + ((uint64_t)(x16 + x29) * (x6 + x22))))))) - (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))));
- { uint64_t x37 = ((((uint64_t)(x4 + x20) * (x16 + x29)) + (((uint64_t)(x6 + x22) * (x14 + x30)) + (((uint64_t)(x8 + x24) * (x12 + x28)) + (((uint64_t)(x10 + x26) * (x10 + x26)) + (((uint64_t)(x12 + x28) * (x8 + x24)) + (((uint64_t)(x14 + x30) * (x6 + x22)) + ((uint64_t)(x16 + x29) * (x4 + x20)))))))) - (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))));
- { uint64_t x38 = ((((uint64_t)(x2 + x18) * (x16 + x29)) + (((uint64_t)(x4 + x20) * (x14 + x30)) + (((uint64_t)(x6 + x22) * (x12 + x28)) + (((uint64_t)(x8 + x24) * (x10 + x26)) + (((uint64_t)(x10 + x26) * (x8 + x24)) + (((uint64_t)(x12 + x28) * (x6 + x22)) + (((uint64_t)(x14 + x30) * (x4 + x20)) + ((uint64_t)(x16 + x29) * (x2 + x18))))))))) - (((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))));
- { uint64_t x39 = ((((uint64_t)(x2 + x18) * (x14 + x30)) + (((uint64_t)(x4 + x20) * (x12 + x28)) + (((uint64_t)(x6 + x22) * (x10 + x26)) + (((uint64_t)(x8 + x24) * (x8 + x24)) + (((uint64_t)(x10 + x26) * (x6 + x22)) + (((uint64_t)(x12 + x28) * (x4 + x20)) + ((uint64_t)(x14 + x30) * (x2 + x18)))))))) - (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))));
- { uint64_t x40 = ((((uint64_t)(x2 + x18) * (x12 + x28)) + (((uint64_t)(x4 + x20) * (x10 + x26)) + (((uint64_t)(x6 + x22) * (x8 + x24)) + (((uint64_t)(x8 + x24) * (x6 + x22)) + (((uint64_t)(x10 + x26) * (x4 + x20)) + ((uint64_t)(x12 + x28) * (x2 + x18))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
- { uint64_t x41 = ((((uint64_t)(x2 + x18) * (x10 + x26)) + (((uint64_t)(x4 + x20) * (x8 + x24)) + (((uint64_t)(x6 + x22) * (x6 + x22)) + (((uint64_t)(x8 + x24) * (x4 + x20)) + ((uint64_t)(x10 + x26) * (x2 + x18)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- { uint64_t x42 = ((((uint64_t)(x2 + x18) * (x8 + x24)) + (((uint64_t)(x4 + x20) * (x6 + x22)) + (((uint64_t)(x6 + x22) * (x4 + x20)) + ((uint64_t)(x8 + x24) * (x2 + x18))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- { uint64_t x43 = ((((uint64_t)(x2 + x18) * (x6 + x22)) + (((uint64_t)(x4 + x20) * (x4 + x20)) + ((uint64_t)(x6 + x22) * (x2 + x18)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- { uint64_t x44 = ((((uint64_t)(x2 + x18) * (x4 + x20)) + ((uint64_t)(x4 + x20) * (x2 + x18))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- { uint64_t x45 = (((uint64_t)(x2 + x18) * (x2 + x18)) - ((uint64_t)x2 * x2));
- { uint64_t x46 = (((((uint64_t)x16 * x16) + ((uint64_t)x29 * x29)) + x39) + x31);
- { uint64_t x47 = ((((((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)) + (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))) + x40) + x32);
- { uint64_t x48 = ((((((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))) + (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))) + x41) + x33);
- { uint64_t x49 = ((((((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))) + (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))) + x42) + x34);
- { uint64_t x50 = ((((((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))) + (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))) + x43) + x35);
- { uint64_t x51 = ((((((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))) + x44) + x36);
- { uint64_t x52 = ((((((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))) + x45) + x37);
- { uint64_t x53 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18)))))))));
- { uint64_t x54 = (((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))) + x31);
- { uint64_t x55 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))) + x32);
- { uint64_t x56 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x26 * x18)))))) + x33);
- { uint64_t x57 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x24 * x18))))) + x34);
- { uint64_t x58 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + ((uint64_t)x22 * x18)))) + x35);
- { uint64_t x59 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x18 * x20) + ((uint64_t)x20 * x18))) + x36);
- { uint64_t x60 = ((((uint64_t)x2 * x2) + ((uint64_t)x18 * x18)) + x37);
- { uint64_t x61 = (x53 >> 0x1a);
- { uint32_t x62 = ((uint32_t)x53 & 0x3ffffff);
- { uint64_t x63 = (x38 >> 0x1a);
- { uint32_t x64 = ((uint32_t)x38 & 0x3ffffff);
- { uint64_t x65 = ((0x4000000 * x63) + x64);
- { uint64_t x66 = (x65 >> 0x1a);
- { uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
- { uint64_t x68 = ((x61 + x52) + x66);
- { uint64_t x69 = (x68 >> 0x1a);
- { uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
- { uint64_t x71 = (x60 + x66);
- { uint64_t x72 = (x71 >> 0x1a);
- { uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
- { uint64_t x74 = (x69 + x51);
- { uint64_t x75 = (x74 >> 0x1a);
- { uint32_t x76 = ((uint32_t)x74 & 0x3ffffff);
- { uint64_t x77 = (x72 + x59);
- { uint64_t x78 = (x77 >> 0x1a);
- { uint32_t x79 = ((uint32_t)x77 & 0x3ffffff);
- { uint64_t x80 = (x75 + x50);
- { uint64_t x81 = (x80 >> 0x1a);
- { uint32_t x82 = ((uint32_t)x80 & 0x3ffffff);
- { uint64_t x83 = (x78 + x58);
- { uint64_t x84 = (x83 >> 0x1a);
- { uint32_t x85 = ((uint32_t)x83 & 0x3ffffff);
- { uint64_t x86 = (x81 + x49);
- { uint64_t x87 = (x86 >> 0x1a);
- { uint32_t x88 = ((uint32_t)x86 & 0x3ffffff);
- { uint64_t x89 = (x84 + x57);
- { uint64_t x90 = (x89 >> 0x1a);
- { uint32_t x91 = ((uint32_t)x89 & 0x3ffffff);
- { uint64_t x92 = (x87 + x48);
- { uint64_t x93 = (x92 >> 0x1a);
- { uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
- { uint64_t x95 = (x90 + x56);
- { uint64_t x96 = (x95 >> 0x1a);
- { uint32_t x97 = ((uint32_t)x95 & 0x3ffffff);
- { uint64_t x98 = (x93 + x47);
- { uint64_t x99 = (x98 >> 0x1a);
- { uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- { uint64_t x101 = (x96 + x55);
- { uint64_t x102 = (x101 >> 0x1a);
- { uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- { uint64_t x104 = (x99 + x46);
- { uint64_t x105 = (x104 >> 0x1a);
- { uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- { uint64_t x107 = (x102 + x54);
- { uint64_t x108 = (x107 >> 0x1a);
- { uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- { uint64_t x110 = (x105 + x67);
- { uint32_t x111 = (uint32_t) (x110 >> 0x1a);
- { uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- { uint64_t x113 = (x108 + x62);
- { uint32_t x114 = (uint32_t) (x113 >> 0x1a);
- { uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- { uint64_t x116 = (((uint64_t)0x4000000 * x111) + x112);
- { uint32_t x117 = (uint32_t) (x116 >> 0x1a);
- { uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- { uint32_t x119 = ((x114 + x70) + x117);
- { uint32_t x120 = (x119 >> 0x1a);
- { uint32_t x121 = (x119 & 0x3ffffff);
- { uint32_t x122 = (x73 + x117);
- { uint32_t x123 = (x122 >> 0x1a);
- { uint32_t x124 = (x122 & 0x3ffffff);
- out[0] = x124;
- out[1] = (x123 + x79);
- out[2] = x85;
- out[3] = x91;
- out[4] = x97;
- out[5] = x103;
- out[6] = x109;
- out[7] = x115;
- out[8] = x121;
- out[9] = (x120 + x76);
- out[10] = x82;
- out[11] = x88;
- out[12] = x94;
- out[13] = x100;
- out[14] = x106;
- out[15] = x118;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquare.v b/src/Specific/solinas32_2e416m2e208m1/fesquare.v
deleted file mode 100644
index 065d229fa..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.log b/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.log
deleted file mode 100644
index 53d66e31c..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x31 = (((uint64_t)(x16 + x29) * (x16 + x29)) - ((uint64_t)x16 * x16));
- uint64_t x32 = ((((uint64_t)(x14 + x30) * (x16 + x29)) + ((uint64_t)(x16 + x29) * (x14 + x30))) - (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)));
- uint64_t x33 = ((((uint64_t)(x12 + x28) * (x16 + x29)) + (((uint64_t)(x14 + x30) * (x14 + x30)) + ((uint64_t)(x16 + x29) * (x12 + x28)))) - (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))));
- uint64_t x34 = ((((uint64_t)(x10 + x26) * (x16 + x29)) + (((uint64_t)(x12 + x28) * (x14 + x30)) + (((uint64_t)(x14 + x30) * (x12 + x28)) + ((uint64_t)(x16 + x29) * (x10 + x26))))) - (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))));
- uint64_t x35 = ((((uint64_t)(x8 + x24) * (x16 + x29)) + (((uint64_t)(x10 + x26) * (x14 + x30)) + (((uint64_t)(x12 + x28) * (x12 + x28)) + (((uint64_t)(x14 + x30) * (x10 + x26)) + ((uint64_t)(x16 + x29) * (x8 + x24)))))) - (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))));
- uint64_t x36 = ((((uint64_t)(x6 + x22) * (x16 + x29)) + (((uint64_t)(x8 + x24) * (x14 + x30)) + (((uint64_t)(x10 + x26) * (x12 + x28)) + (((uint64_t)(x12 + x28) * (x10 + x26)) + (((uint64_t)(x14 + x30) * (x8 + x24)) + ((uint64_t)(x16 + x29) * (x6 + x22))))))) - (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))));
- uint64_t x37 = ((((uint64_t)(x4 + x20) * (x16 + x29)) + (((uint64_t)(x6 + x22) * (x14 + x30)) + (((uint64_t)(x8 + x24) * (x12 + x28)) + (((uint64_t)(x10 + x26) * (x10 + x26)) + (((uint64_t)(x12 + x28) * (x8 + x24)) + (((uint64_t)(x14 + x30) * (x6 + x22)) + ((uint64_t)(x16 + x29) * (x4 + x20)))))))) - (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))));
- uint64_t x38 = ((((uint64_t)(x2 + x18) * (x16 + x29)) + (((uint64_t)(x4 + x20) * (x14 + x30)) + (((uint64_t)(x6 + x22) * (x12 + x28)) + (((uint64_t)(x8 + x24) * (x10 + x26)) + (((uint64_t)(x10 + x26) * (x8 + x24)) + (((uint64_t)(x12 + x28) * (x6 + x22)) + (((uint64_t)(x14 + x30) * (x4 + x20)) + ((uint64_t)(x16 + x29) * (x2 + x18))))))))) - (((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))));
- uint64_t x39 = ((((uint64_t)(x2 + x18) * (x14 + x30)) + (((uint64_t)(x4 + x20) * (x12 + x28)) + (((uint64_t)(x6 + x22) * (x10 + x26)) + (((uint64_t)(x8 + x24) * (x8 + x24)) + (((uint64_t)(x10 + x26) * (x6 + x22)) + (((uint64_t)(x12 + x28) * (x4 + x20)) + ((uint64_t)(x14 + x30) * (x2 + x18)))))))) - (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))));
- uint64_t x40 = ((((uint64_t)(x2 + x18) * (x12 + x28)) + (((uint64_t)(x4 + x20) * (x10 + x26)) + (((uint64_t)(x6 + x22) * (x8 + x24)) + (((uint64_t)(x8 + x24) * (x6 + x22)) + (((uint64_t)(x10 + x26) * (x4 + x20)) + ((uint64_t)(x12 + x28) * (x2 + x18))))))) - (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))));
- uint64_t x41 = ((((uint64_t)(x2 + x18) * (x10 + x26)) + (((uint64_t)(x4 + x20) * (x8 + x24)) + (((uint64_t)(x6 + x22) * (x6 + x22)) + (((uint64_t)(x8 + x24) * (x4 + x20)) + ((uint64_t)(x10 + x26) * (x2 + x18)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- uint64_t x42 = ((((uint64_t)(x2 + x18) * (x8 + x24)) + (((uint64_t)(x4 + x20) * (x6 + x22)) + (((uint64_t)(x6 + x22) * (x4 + x20)) + ((uint64_t)(x8 + x24) * (x2 + x18))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- uint64_t x43 = ((((uint64_t)(x2 + x18) * (x6 + x22)) + (((uint64_t)(x4 + x20) * (x4 + x20)) + ((uint64_t)(x6 + x22) * (x2 + x18)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- uint64_t x44 = ((((uint64_t)(x2 + x18) * (x4 + x20)) + ((uint64_t)(x4 + x20) * (x2 + x18))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- uint64_t x45 = (((uint64_t)(x2 + x18) * (x2 + x18)) - ((uint64_t)x2 * x2));
- uint64_t x46 = (((((uint64_t)x16 * x16) + ((uint64_t)x29 * x29)) + x39) + x31);
- uint64_t x47 = ((((((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)) + (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))) + x40) + x32);
- uint64_t x48 = ((((((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))) + (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))) + x41) + x33);
- uint64_t x49 = ((((((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))) + (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))) + x42) + x34);
- uint64_t x50 = ((((((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))) + (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))) + x43) + x35);
- uint64_t x51 = ((((((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))) + x44) + x36);
- uint64_t x52 = ((((((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))) + x45) + x37);
- uint64_t x53 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18)))))))));
- uint64_t x54 = (((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))) + x31);
- uint64_t x55 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))) + x32);
- uint64_t x56 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x26 * x18)))))) + x33);
- uint64_t x57 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x24 * x18))))) + x34);
- uint64_t x58 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + ((uint64_t)x22 * x18)))) + x35);
- uint64_t x59 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x18 * x20) + ((uint64_t)x20 * x18))) + x36);
- uint64_t x60 = ((((uint64_t)x2 * x2) + ((uint64_t)x18 * x18)) + x37);
- uint64_t x61 = (x53 >> 0x1a);
- uint32_t x62 = ((uint32_t)x53 & 0x3ffffff);
- uint64_t x63 = (x38 >> 0x1a);
- uint32_t x64 = ((uint32_t)x38 & 0x3ffffff);
- uint64_t x65 = ((0x4000000 * x63) + x64);
- uint64_t x66 = (x65 >> 0x1a);
- uint32_t x67 = ((uint32_t)x65 & 0x3ffffff);
- uint64_t x68 = ((x61 + x52) + x66);
- uint64_t x69 = (x68 >> 0x1a);
- uint32_t x70 = ((uint32_t)x68 & 0x3ffffff);
- uint64_t x71 = (x60 + x66);
- uint64_t x72 = (x71 >> 0x1a);
- uint32_t x73 = ((uint32_t)x71 & 0x3ffffff);
- uint64_t x74 = (x69 + x51);
- uint64_t x75 = (x74 >> 0x1a);
- uint32_t x76 = ((uint32_t)x74 & 0x3ffffff);
- uint64_t x77 = (x72 + x59);
- uint64_t x78 = (x77 >> 0x1a);
- uint32_t x79 = ((uint32_t)x77 & 0x3ffffff);
- uint64_t x80 = (x75 + x50);
- uint64_t x81 = (x80 >> 0x1a);
- uint32_t x82 = ((uint32_t)x80 & 0x3ffffff);
- uint64_t x83 = (x78 + x58);
- uint64_t x84 = (x83 >> 0x1a);
- uint32_t x85 = ((uint32_t)x83 & 0x3ffffff);
- uint64_t x86 = (x81 + x49);
- uint64_t x87 = (x86 >> 0x1a);
- uint32_t x88 = ((uint32_t)x86 & 0x3ffffff);
- uint64_t x89 = (x84 + x57);
- uint64_t x90 = (x89 >> 0x1a);
- uint32_t x91 = ((uint32_t)x89 & 0x3ffffff);
- uint64_t x92 = (x87 + x48);
- uint64_t x93 = (x92 >> 0x1a);
- uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
- uint64_t x95 = (x90 + x56);
- uint64_t x96 = (x95 >> 0x1a);
- uint32_t x97 = ((uint32_t)x95 & 0x3ffffff);
- uint64_t x98 = (x93 + x47);
- uint64_t x99 = (x98 >> 0x1a);
- uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- uint64_t x101 = (x96 + x55);
- uint64_t x102 = (x101 >> 0x1a);
- uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- uint64_t x104 = (x99 + x46);
- uint64_t x105 = (x104 >> 0x1a);
- uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- uint64_t x107 = (x102 + x54);
- uint64_t x108 = (x107 >> 0x1a);
- uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- uint64_t x110 = (x105 + x67);
- uint32_t x111 = (uint32_t) (x110 >> 0x1a);
- uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- uint64_t x113 = (x108 + x62);
- uint32_t x114 = (uint32_t) (x113 >> 0x1a);
- uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- uint64_t x116 = (((uint64_t)0x4000000 * x111) + x112);
- uint32_t x117 = (uint32_t) (x116 >> 0x1a);
- uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- uint32_t x119 = ((x114 + x70) + x117);
- uint32_t x120 = (x119 >> 0x1a);
- uint32_t x121 = (x119 & 0x3ffffff);
- uint32_t x122 = (x73 + x117);
- uint32_t x123 = (x122 >> 0x1a);
- uint32_t x124 = (x122 & 0x3ffffff);
- return (Return x118, Return x106, Return x100, Return x94, Return x88, Return x82, (x120 + x76), Return x121, Return x115, Return x109, Return x103, Return x97, Return x91, Return x85, (x123 + x79), Return x124))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v b/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v
deleted file mode 100644
index 5894a1423..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesub.c b/src/Specific/solinas32_2e416m2e208m1/fesub.c
deleted file mode 100644
index 2dbde5ca0..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x7fffffe + x5) - x35);
- out[1] = ((0x7fffffe + x7) - x37);
- out[2] = ((0x7fffffe + x9) - x39);
- out[3] = ((0x7fffffe + x11) - x41);
- out[4] = ((0x7fffffe + x13) - x43);
- out[5] = ((0x7fffffe + x15) - x45);
- out[6] = ((0x7fffffe + x17) - x47);
- out[7] = ((0x7fffffe + x19) - x49);
- out[8] = ((0x7fffffc + x21) - x51);
- out[9] = ((0x7fffffe + x23) - x53);
- out[10] = ((0x7fffffe + x25) - x55);
- out[11] = ((0x7fffffe + x27) - x57);
- out[12] = ((0x7fffffe + x29) - x59);
- out[13] = ((0x7fffffe + x31) - x61);
- out[14] = ((0x7fffffe + x33) - x63);
- out[15] = ((0x7fffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesub.v b/src/Specific/solinas32_2e416m2e208m1/fesub.v
deleted file mode 100644
index 9c7858457..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.log b/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.log
deleted file mode 100644
index b2bdd0bf6..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x7fffffe + x32) - x62), ((0x7fffffe + x33) - x63), ((0x7fffffe + x31) - x61), ((0x7fffffe + x29) - x59), ((0x7fffffe + x27) - x57), ((0x7fffffe + x25) - x55), ((0x7fffffe + x23) - x53), ((0x7fffffc + x21) - x51), ((0x7fffffe + x19) - x49), ((0x7fffffe + x17) - x47), ((0x7fffffe + x15) - x45), ((0x7fffffe + x13) - x43), ((0x7fffffe + x11) - x41), ((0x7fffffe + x9) - x39), ((0x7fffffe + x7) - x37), ((0x7fffffe + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.v b/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.v
deleted file mode 100644
index 7413d6423..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1/freeze.c b/src/Specific/solinas32_2e416m2e208m1/freeze.c
deleted file mode 100644
index ae9d0fc2e..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x3ffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x3ffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x3ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x3ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x3ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x3ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x3ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x3fffffe);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x3ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x3ffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x3ffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x3ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x3ffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x3ffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x3ffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0x3ffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0x3ffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0x3ffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0x3ffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0x3ffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0x3ffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0x3ffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0x3ffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0x3fffffe);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0x3ffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0x3ffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0x3ffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0x3ffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0x3ffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0x3ffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0x3ffffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e416m2e208m1/freeze.v b/src/Specific/solinas32_2e416m2e208m1/freeze.v
deleted file mode 100644
index ffc99fd17..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.log b/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.log
deleted file mode 100644
index 22cb7e523..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x3ffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x3ffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x3ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x3ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x3ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x3ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x3ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x3fffffe);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x3ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x3ffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x3ffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x3ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x3ffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x3ffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x3ffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0x3ffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0x3ffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0x3ffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0x3ffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0x3ffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0x3ffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0x3ffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0x3ffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0x3fffffe);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0x3ffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0x3ffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0x3ffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0x3ffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0x3ffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0x3ffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0x3ffffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v b/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v
deleted file mode 100644
index f91856518..000000000
--- a/src/Specific/solinas32_2e416m2e208m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e416m2e208m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1/CurveParameters.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/CurveParameters.v
index 327219e36..327219e36 100644
--- a/src/Specific/solinas32_2e416m2e208m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/Synthesis.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/Synthesis.v
new file mode 100644
index 000000000..37e913f3b
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e416m2e208m1/compiler.sh b/src/Specific/solinas32_2e416m2e208m1_16limbs/compiler.sh
index 3c83120f4..3c83120f4 100755
--- a/src/Specific/solinas32_2e416m2e208m1/compiler.sh
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e416m2e208m1/compilerxx.sh b/src/Specific/solinas32_2e416m2e208m1_16limbs/compilerxx.sh
index 5720c39b8..5720c39b8 100755
--- a/src/Specific/solinas32_2e416m2e208m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/feadd.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/feadd.v
new file mode 100644
index 000000000..ed7c2b662
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..193688841
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/femul.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/femul.v
new file mode 100644
index 000000000..bd37f6428
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/femulDisplay.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/femulDisplay.v
new file mode 100644
index 000000000..44f4c4240
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquare.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquare.v
new file mode 100644
index 000000000..4eb80c753
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e9fa6f1ac
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/fesub.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesub.v
new file mode 100644
index 000000000..c01cb30b1
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..84a083043
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/freeze.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/freeze.v
new file mode 100644
index 000000000..f4833cbc6
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e416m2e208m1_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..1ead1cf9c
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1/py_interpreter.sh b/src/Specific/solinas32_2e416m2e208m1_16limbs/py_interpreter.sh
index b52e08b04..b52e08b04 100755
--- a/src/Specific/solinas32_2e416m2e208m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e416m2e208m1_16limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/CurveParameters.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/CurveParameters.v
new file mode 100644
index 000000000..5911aa834
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^416 - 2^208 - 1
+Base: 23 + 1/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 23 + 1/9;
+ bitwidth := 32;
+ s := 2^416;
+ c := [(1, 1); (2^208, 1)];
+ carry_chains := Some [[8; 17]; [9; 0; 10; 1; 11; 2; 12; 3; 13; 4; 14; 5; 15; 6; 16; 7; 17; 8]; [9; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/Synthesis.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/Synthesis.v
new file mode 100644
index 000000000..7e917b7c6
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/compiler.sh b/src/Specific/solinas32_2e416m2e208m1_18limbs/compiler.sh
new file mode 100755
index 000000000..7eb154cd6
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1' "$@"
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/compilerxx.sh b/src/Specific/solinas32_2e416m2e208m1_18limbs/compilerxx.sh
new file mode 100755
index 000000000..619ecca69
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1' "$@"
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/feadd.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/feadd.v
new file mode 100644
index 000000000..e079c73d9
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..69af2d2bc
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/femul.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/femul.v
new file mode 100644
index 000000000..9045f1747
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/femulDisplay.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/femulDisplay.v
new file mode 100644
index 000000000..22592cc31
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquare.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquare.v
new file mode 100644
index 000000000..d31b22958
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..203dbf2dd
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/fesub.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesub.v
new file mode 100644
index 000000000..6f92450f4
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..c2f983d64
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/freeze.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/freeze.v
new file mode 100644
index 000000000..8c05cb013
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e416m2e208m1_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..d8ce5662a
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e416m2e208m1_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e416m2e208m1_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e416m2e208m1_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..8cc606239
--- /dev/null
+++ b/src/Specific/solinas32_2e416m2e208m1_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**416 - 2**208 - 1' -Dmodulus_bytes='23 + 1/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e444m17/CurveParameters.v b/src/Specific/solinas32_2e444m17/CurveParameters.v
deleted file mode 100644
index 0d71315d5..000000000
--- a/src/Specific/solinas32_2e444m17/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^444 - 17
-Base: 22.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 20%nat;
- base := 22 + 1/5;
- bitwidth := 32;
- s := 2^444;
- c := [(1, 17)];
- carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e444m17/Synthesis.v b/src/Specific/solinas32_2e444m17/Synthesis.v
deleted file mode 100644
index d996fe63a..000000000
--- a/src/Specific/solinas32_2e444m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e444m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e444m17/compiler.sh b/src/Specific/solinas32_2e444m17/compiler.sh
deleted file mode 100755
index 12d1ac74e..000000000
--- a/src/Specific/solinas32_2e444m17/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,23,22,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17/compilerxx.sh b/src/Specific/solinas32_2e444m17/compilerxx.sh
deleted file mode 100755
index f55134936..000000000
--- a/src/Specific/solinas32_2e444m17/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,22,23,22,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17/feadd.c b/src/Specific/solinas32_2e444m17/feadd.c
deleted file mode 100644
index 28ee6f665..000000000
--- a/src/Specific/solinas32_2e444m17/feadd.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void feadd(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = (x5 + x43);
- out[1] = (x7 + x45);
- out[2] = (x9 + x47);
- out[3] = (x11 + x49);
- out[4] = (x13 + x51);
- out[5] = (x15 + x53);
- out[6] = (x17 + x55);
- out[7] = (x19 + x57);
- out[8] = (x21 + x59);
- out[9] = (x23 + x61);
- out[10] = (x25 + x63);
- out[11] = (x27 + x65);
- out[12] = (x29 + x67);
- out[13] = (x31 + x69);
- out[14] = (x33 + x71);
- out[15] = (x35 + x73);
- out[16] = (x37 + x75);
- out[17] = (x39 + x77);
- out[18] = (x41 + x79);
- out[19] = (x40 + x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e444m17/feadd.v b/src/Specific/solinas32_2e444m17/feadd.v
deleted file mode 100644
index ee79ab173..000000000
--- a/src/Specific/solinas32_2e444m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e444m17/feaddDisplay.log b/src/Specific/solinas32_2e444m17/feaddDisplay.log
deleted file mode 100644
index eebe17777..000000000
--- a/src/Specific/solinas32_2e444m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- ((x40 + x78), (x41 + x79), (x39 + x77), (x37 + x75), (x35 + x73), (x33 + x71), (x31 + x69), (x29 + x67), (x27 + x65), (x25 + x63), (x23 + x61), (x21 + x59), (x19 + x57), (x17 + x55), (x15 + x53), (x13 + x51), (x11 + x49), (x9 + x47), (x7 + x45), (x5 + x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e444m17/feaddDisplay.v b/src/Specific/solinas32_2e444m17/feaddDisplay.v
deleted file mode 100644
index acc619db0..000000000
--- a/src/Specific/solinas32_2e444m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e444m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e444m17/femul.c b/src/Specific/solinas32_2e444m17/femul.c
deleted file mode 100644
index 5fe35eee1..000000000
--- a/src/Specific/solinas32_2e444m17/femul.c
+++ /dev/null
@@ -1,148 +0,0 @@
-static void femul(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- { uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + (0x11 * ((uint64_t)x40 * x78)));
- { uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + ((0x2 * ((uint64_t)x27 * x55)) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (0x11 * (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79))));
- { uint64_t x83 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + ((uint64_t)x37 * x43))))))))))))))))) + (0x11 * (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77)))));
- { uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x37 * x78)) + ((0x2 * ((uint64_t)x39 * x79)) + ((0x2 * ((uint64_t)x41 * x77)) + (0x2 * ((uint64_t)x40 * x75)))))));
- { uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (0x11 * (((uint64_t)x35 * x78) + ((0x2 * ((uint64_t)x37 * x79)) + ((0x2 * ((uint64_t)x39 * x77)) + ((0x2 * ((uint64_t)x41 * x75)) + ((uint64_t)x40 * x73)))))));
- { uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (0x11 * (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + ((0x2 * ((uint64_t)x37 * x77)) + ((0x2 * ((uint64_t)x39 * x75)) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + ((0x2 * ((uint64_t)x17 * x55)) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (0x11 * (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69)))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x27 * x43)))))))))))) + (0x11 * (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67))))))))));
- { uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + (((uint64_t)x15 * x53) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (0x11 * ((0x2 * ((uint64_t)x27 * x78)) + ((0x2 * ((uint64_t)x29 * x79)) + ((0x2 * ((uint64_t)x31 * x77)) + ((0x2 * ((uint64_t)x33 * x75)) + (((uint64_t)x35 * x73) + ((0x2 * ((uint64_t)x37 * x71)) + ((0x2 * ((uint64_t)x39 * x69)) + ((0x2 * ((uint64_t)x41 * x67)) + (0x2 * ((uint64_t)x40 * x65))))))))))));
- { uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (0x11 * (((uint64_t)x25 * x78) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((uint64_t)x40 * x63))))))))))));
- { uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (0x11 * (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61)))))))))))));
- { uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (0x11 * (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59))))))))))))));
- { uint64_t x93 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + ((uint64_t)x17 * x43))))))) + (0x11 * (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57)))))))))))))));
- { uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x78)) + ((0x2 * ((uint64_t)x19 * x79)) + ((0x2 * ((uint64_t)x21 * x77)) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + ((0x2 * ((uint64_t)x37 * x61)) + ((0x2 * ((uint64_t)x39 * x59)) + ((0x2 * ((uint64_t)x41 * x57)) + (0x2 * ((uint64_t)x40 * x55)))))))))))))))));
- { uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (0x11 * (((uint64_t)x15 * x78) + ((0x2 * ((uint64_t)x17 * x79)) + ((0x2 * ((uint64_t)x19 * x77)) + ((0x2 * ((uint64_t)x21 * x75)) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((0x2 * ((uint64_t)x37 * x59)) + ((0x2 * ((uint64_t)x39 * x57)) + ((0x2 * ((uint64_t)x41 * x55)) + ((uint64_t)x40 * x53)))))))))))))))));
- { uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (0x11 * (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + ((0x2 * ((uint64_t)x17 * x77)) + ((0x2 * ((uint64_t)x19 * x75)) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + ((0x2 * ((uint64_t)x37 * x57)) + ((0x2 * ((uint64_t)x39 * x55)) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51))))))))))))))))));
- { uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (0x11 * (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + ((0x2 * ((uint64_t)x37 * x55)) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49)))))))))))))))))));
- { uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (0x11 * (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47))))))))))))))))))));
- { uint64_t x99 = (((uint64_t)x5 * x43) + (0x11 * ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + (((uint64_t)x15 * x73) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + (((uint64_t)x35 * x53) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45))))))))))))))))))))));
- { uint64_t x100 = (x99 >> 0x17);
- { uint32_t x101 = ((uint32_t)x99 & 0x7fffff);
- { uint64_t x102 = (x100 + x98);
- { uint64_t x103 = (x102 >> 0x16);
- { uint32_t x104 = ((uint32_t)x102 & 0x3fffff);
- { uint64_t x105 = (x103 + x97);
- { uint64_t x106 = (x105 >> 0x16);
- { uint32_t x107 = ((uint32_t)x105 & 0x3fffff);
- { uint64_t x108 = (x106 + x96);
- { uint64_t x109 = (x108 >> 0x16);
- { uint32_t x110 = ((uint32_t)x108 & 0x3fffff);
- { uint64_t x111 = (x109 + x95);
- { uint64_t x112 = (x111 >> 0x16);
- { uint32_t x113 = ((uint32_t)x111 & 0x3fffff);
- { uint64_t x114 = (x112 + x94);
- { uint64_t x115 = (x114 >> 0x17);
- { uint32_t x116 = ((uint32_t)x114 & 0x7fffff);
- { uint64_t x117 = (x115 + x93);
- { uint64_t x118 = (x117 >> 0x16);
- { uint32_t x119 = ((uint32_t)x117 & 0x3fffff);
- { uint64_t x120 = (x118 + x92);
- { uint64_t x121 = (x120 >> 0x16);
- { uint32_t x122 = ((uint32_t)x120 & 0x3fffff);
- { uint64_t x123 = (x121 + x91);
- { uint64_t x124 = (x123 >> 0x16);
- { uint32_t x125 = ((uint32_t)x123 & 0x3fffff);
- { uint64_t x126 = (x124 + x90);
- { uint64_t x127 = (x126 >> 0x16);
- { uint32_t x128 = ((uint32_t)x126 & 0x3fffff);
- { uint64_t x129 = (x127 + x89);
- { uint64_t x130 = (x129 >> 0x17);
- { uint32_t x131 = ((uint32_t)x129 & 0x7fffff);
- { uint64_t x132 = (x130 + x88);
- { uint64_t x133 = (x132 >> 0x16);
- { uint32_t x134 = ((uint32_t)x132 & 0x3fffff);
- { uint64_t x135 = (x133 + x87);
- { uint64_t x136 = (x135 >> 0x16);
- { uint32_t x137 = ((uint32_t)x135 & 0x3fffff);
- { uint64_t x138 = (x136 + x86);
- { uint64_t x139 = (x138 >> 0x16);
- { uint32_t x140 = ((uint32_t)x138 & 0x3fffff);
- { uint64_t x141 = (x139 + x85);
- { uint64_t x142 = (x141 >> 0x16);
- { uint32_t x143 = ((uint32_t)x141 & 0x3fffff);
- { uint64_t x144 = (x142 + x84);
- { uint32_t x145 = (uint32_t) (x144 >> 0x17);
- { uint32_t x146 = ((uint32_t)x144 & 0x7fffff);
- { uint64_t x147 = (x145 + x83);
- { uint32_t x148 = (uint32_t) (x147 >> 0x16);
- { uint32_t x149 = ((uint32_t)x147 & 0x3fffff);
- { uint64_t x150 = (x148 + x82);
- { uint32_t x151 = (uint32_t) (x150 >> 0x16);
- { uint32_t x152 = ((uint32_t)x150 & 0x3fffff);
- { uint64_t x153 = (x151 + x81);
- { uint32_t x154 = (uint32_t) (x153 >> 0x16);
- { uint32_t x155 = ((uint32_t)x153 & 0x3fffff);
- { uint64_t x156 = (x154 + x80);
- { uint32_t x157 = (uint32_t) (x156 >> 0x16);
- { uint32_t x158 = ((uint32_t)x156 & 0x3fffff);
- { uint64_t x159 = (x101 + ((uint64_t)0x11 * x157));
- { uint32_t x160 = (uint32_t) (x159 >> 0x17);
- { uint32_t x161 = ((uint32_t)x159 & 0x7fffff);
- { uint32_t x162 = (x160 + x104);
- { uint32_t x163 = (x162 >> 0x16);
- { uint32_t x164 = (x162 & 0x3fffff);
- out[0] = x161;
- out[1] = x164;
- out[2] = (x163 + x107);
- out[3] = x110;
- out[4] = x113;
- out[5] = x116;
- out[6] = x119;
- out[7] = x122;
- out[8] = x125;
- out[9] = x128;
- out[10] = x131;
- out[11] = x134;
- out[12] = x137;
- out[13] = x140;
- out[14] = x143;
- out[15] = x146;
- out[16] = x149;
- out[17] = x152;
- out[18] = x155;
- out[19] = x158;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e444m17/femul.v b/src/Specific/solinas32_2e444m17/femul.v
deleted file mode 100644
index 5cd7bcc63..000000000
--- a/src/Specific/solinas32_2e444m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e444m17/femulDisplay.log b/src/Specific/solinas32_2e444m17/femulDisplay.log
deleted file mode 100644
index 2a5eb67db..000000000
--- a/src/Specific/solinas32_2e444m17/femulDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + (0x11 * ((uint64_t)x40 * x78)));
- uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + ((0x2 * ((uint64_t)x27 * x55)) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (0x11 * (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79))));
- uint64_t x83 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + ((uint64_t)x37 * x43))))))))))))))))) + (0x11 * (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77)))));
- uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + (((uint64_t)x15 * x63) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + (((uint64_t)x25 * x53) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x37 * x78)) + ((0x2 * ((uint64_t)x39 * x79)) + ((0x2 * ((uint64_t)x41 * x77)) + (0x2 * ((uint64_t)x40 * x75)))))));
- uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (0x11 * (((uint64_t)x35 * x78) + ((0x2 * ((uint64_t)x37 * x79)) + ((0x2 * ((uint64_t)x39 * x77)) + ((0x2 * ((uint64_t)x41 * x75)) + ((uint64_t)x40 * x73)))))));
- uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (0x11 * (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + ((0x2 * ((uint64_t)x37 * x77)) + ((0x2 * ((uint64_t)x39 * x75)) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71))))))));
- uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + ((0x2 * ((uint64_t)x17 * x55)) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (0x11 * (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69)))))))));
- uint64_t x88 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + ((uint64_t)x27 * x43)))))))))))) + (0x11 * (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67))))))))));
- uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + (((uint64_t)x15 * x53) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (0x11 * ((0x2 * ((uint64_t)x27 * x78)) + ((0x2 * ((uint64_t)x29 * x79)) + ((0x2 * ((uint64_t)x31 * x77)) + ((0x2 * ((uint64_t)x33 * x75)) + (((uint64_t)x35 * x73) + ((0x2 * ((uint64_t)x37 * x71)) + ((0x2 * ((uint64_t)x39 * x69)) + ((0x2 * ((uint64_t)x41 * x67)) + (0x2 * ((uint64_t)x40 * x65))))))))))));
- uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (0x11 * (((uint64_t)x25 * x78) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((uint64_t)x40 * x63))))))))))));
- uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (0x11 * (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61)))))))))))));
- uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (0x11 * (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59))))))))))))));
- uint64_t x93 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + ((uint64_t)x17 * x43))))))) + (0x11 * (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57)))))))))))))));
- uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (0x11 * ((0x2 * ((uint64_t)x17 * x78)) + ((0x2 * ((uint64_t)x19 * x79)) + ((0x2 * ((uint64_t)x21 * x77)) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + ((0x2 * ((uint64_t)x37 * x61)) + ((0x2 * ((uint64_t)x39 * x59)) + ((0x2 * ((uint64_t)x41 * x57)) + (0x2 * ((uint64_t)x40 * x55)))))))))))))))));
- uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (0x11 * (((uint64_t)x15 * x78) + ((0x2 * ((uint64_t)x17 * x79)) + ((0x2 * ((uint64_t)x19 * x77)) + ((0x2 * ((uint64_t)x21 * x75)) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + ((0x2 * ((uint64_t)x37 * x59)) + ((0x2 * ((uint64_t)x39 * x57)) + ((0x2 * ((uint64_t)x41 * x55)) + ((uint64_t)x40 * x53)))))))))))))))));
- uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (0x11 * (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + ((0x2 * ((uint64_t)x17 * x77)) + ((0x2 * ((uint64_t)x19 * x75)) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + ((0x2 * ((uint64_t)x37 * x57)) + ((0x2 * ((uint64_t)x39 * x55)) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51))))))))))))))))));
- uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (0x11 * (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + ((0x2 * ((uint64_t)x37 * x55)) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49)))))))))))))))))));
- uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (0x11 * (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47))))))))))))))))))));
- uint64_t x99 = (((uint64_t)x5 * x43) + (0x11 * ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + (((uint64_t)x15 * x73) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + (((uint64_t)x35 * x53) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45))))))))))))))))))))));
- uint64_t x100 = (x99 >> 0x17);
- uint32_t x101 = ((uint32_t)x99 & 0x7fffff);
- uint64_t x102 = (x100 + x98);
- uint64_t x103 = (x102 >> 0x16);
- uint32_t x104 = ((uint32_t)x102 & 0x3fffff);
- uint64_t x105 = (x103 + x97);
- uint64_t x106 = (x105 >> 0x16);
- uint32_t x107 = ((uint32_t)x105 & 0x3fffff);
- uint64_t x108 = (x106 + x96);
- uint64_t x109 = (x108 >> 0x16);
- uint32_t x110 = ((uint32_t)x108 & 0x3fffff);
- uint64_t x111 = (x109 + x95);
- uint64_t x112 = (x111 >> 0x16);
- uint32_t x113 = ((uint32_t)x111 & 0x3fffff);
- uint64_t x114 = (x112 + x94);
- uint64_t x115 = (x114 >> 0x17);
- uint32_t x116 = ((uint32_t)x114 & 0x7fffff);
- uint64_t x117 = (x115 + x93);
- uint64_t x118 = (x117 >> 0x16);
- uint32_t x119 = ((uint32_t)x117 & 0x3fffff);
- uint64_t x120 = (x118 + x92);
- uint64_t x121 = (x120 >> 0x16);
- uint32_t x122 = ((uint32_t)x120 & 0x3fffff);
- uint64_t x123 = (x121 + x91);
- uint64_t x124 = (x123 >> 0x16);
- uint32_t x125 = ((uint32_t)x123 & 0x3fffff);
- uint64_t x126 = (x124 + x90);
- uint64_t x127 = (x126 >> 0x16);
- uint32_t x128 = ((uint32_t)x126 & 0x3fffff);
- uint64_t x129 = (x127 + x89);
- uint64_t x130 = (x129 >> 0x17);
- uint32_t x131 = ((uint32_t)x129 & 0x7fffff);
- uint64_t x132 = (x130 + x88);
- uint64_t x133 = (x132 >> 0x16);
- uint32_t x134 = ((uint32_t)x132 & 0x3fffff);
- uint64_t x135 = (x133 + x87);
- uint64_t x136 = (x135 >> 0x16);
- uint32_t x137 = ((uint32_t)x135 & 0x3fffff);
- uint64_t x138 = (x136 + x86);
- uint64_t x139 = (x138 >> 0x16);
- uint32_t x140 = ((uint32_t)x138 & 0x3fffff);
- uint64_t x141 = (x139 + x85);
- uint64_t x142 = (x141 >> 0x16);
- uint32_t x143 = ((uint32_t)x141 & 0x3fffff);
- uint64_t x144 = (x142 + x84);
- uint32_t x145 = (uint32_t) (x144 >> 0x17);
- uint32_t x146 = ((uint32_t)x144 & 0x7fffff);
- uint64_t x147 = (x145 + x83);
- uint32_t x148 = (uint32_t) (x147 >> 0x16);
- uint32_t x149 = ((uint32_t)x147 & 0x3fffff);
- uint64_t x150 = (x148 + x82);
- uint32_t x151 = (uint32_t) (x150 >> 0x16);
- uint32_t x152 = ((uint32_t)x150 & 0x3fffff);
- uint64_t x153 = (x151 + x81);
- uint32_t x154 = (uint32_t) (x153 >> 0x16);
- uint32_t x155 = ((uint32_t)x153 & 0x3fffff);
- uint64_t x156 = (x154 + x80);
- uint32_t x157 = (uint32_t) (x156 >> 0x16);
- uint32_t x158 = ((uint32_t)x156 & 0x3fffff);
- uint64_t x159 = (x101 + ((uint64_t)0x11 * x157));
- uint32_t x160 = (uint32_t) (x159 >> 0x17);
- uint32_t x161 = ((uint32_t)x159 & 0x7fffff);
- uint32_t x162 = (x160 + x104);
- uint32_t x163 = (x162 >> 0x16);
- uint32_t x164 = (x162 & 0x3fffff);
- return (Return x158, Return x155, Return x152, Return x149, Return x146, Return x143, Return x140, Return x137, Return x134, Return x131, Return x128, Return x125, Return x122, Return x119, Return x116, Return x113, Return x110, (x163 + x107), Return x164, Return x161))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e444m17/femulDisplay.v b/src/Specific/solinas32_2e444m17/femulDisplay.v
deleted file mode 100644
index 65c7e330a..000000000
--- a/src/Specific/solinas32_2e444m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e444m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e444m17/fesquare.c b/src/Specific/solinas32_2e444m17/fesquare.c
deleted file mode 100644
index b28450764..000000000
--- a/src/Specific/solinas32_2e444m17/fesquare.c
+++ /dev/null
@@ -1,128 +0,0 @@
-static void fesquare(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x11 * ((uint64_t)x37 * x37)));
- { uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x11 * (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38))));
- { uint64_t x42 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36)))));
- { uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x34 * x37)) + ((0x2 * ((uint64_t)x36 * x38)) + ((0x2 * ((uint64_t)x38 * x36)) + (0x2 * ((uint64_t)x37 * x34)))))));
- { uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x37) + ((0x2 * ((uint64_t)x34 * x38)) + ((0x2 * ((uint64_t)x36 * x36)) + ((0x2 * ((uint64_t)x38 * x34)) + ((uint64_t)x37 * x32)))))));
- { uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28)))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x11 * ((0x2 * ((uint64_t)x24 * x37)) + ((0x2 * ((uint64_t)x26 * x38)) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + ((0x2 * ((uint64_t)x38 * x26)) + (0x2 * ((uint64_t)x37 * x24))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x37) + ((0x2 * ((uint64_t)x24 * x38)) + ((0x2 * ((uint64_t)x26 * x36)) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + ((0x2 * ((uint64_t)x36 * x26)) + ((0x2 * ((uint64_t)x38 * x24)) + ((uint64_t)x37 * x22))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20)))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18))))))))))))));
- { uint64_t x52 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16)))))))))))))));
- { uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x37)) + ((0x2 * ((uint64_t)x16 * x38)) + ((0x2 * ((uint64_t)x18 * x36)) + ((0x2 * ((uint64_t)x20 * x34)) + (((uint64_t)x22 * x32) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (((uint64_t)x32 * x22) + ((0x2 * ((uint64_t)x34 * x20)) + ((0x2 * ((uint64_t)x36 * x18)) + ((0x2 * ((uint64_t)x38 * x16)) + (0x2 * ((uint64_t)x37 * x14)))))))))))))))));
- { uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x37) + ((0x2 * ((uint64_t)x14 * x38)) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + ((0x2 * ((uint64_t)x38 * x14)) + ((uint64_t)x37 * x12)))))))))))))))));
- { uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + ((0x2 * ((uint64_t)x14 * x36)) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + ((0x2 * ((uint64_t)x36 * x14)) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10))))))))))))))))));
- { uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + ((0x2 * ((uint64_t)x14 * x34)) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + ((0x2 * ((uint64_t)x24 * x24)) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + ((0x2 * ((uint64_t)x34 * x14)) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8)))))))))))))))))));
- { uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6))))))))))))))))))));
- { uint64_t x58 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4))))))))))))))))))))));
- { uint64_t x59 = (x58 >> 0x17);
- { uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- { uint64_t x61 = (x59 + x57);
- { uint64_t x62 = (x61 >> 0x16);
- { uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- { uint64_t x64 = (x62 + x56);
- { uint64_t x65 = (x64 >> 0x16);
- { uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- { uint64_t x67 = (x65 + x55);
- { uint64_t x68 = (x67 >> 0x16);
- { uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- { uint64_t x70 = (x68 + x54);
- { uint64_t x71 = (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x71 + x53);
- { uint64_t x74 = (x73 >> 0x17);
- { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- { uint64_t x76 = (x74 + x52);
- { uint64_t x77 = (x76 >> 0x16);
- { uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- { uint64_t x79 = (x77 + x51);
- { uint64_t x80 = (x79 >> 0x16);
- { uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- { uint64_t x82 = (x80 + x50);
- { uint64_t x83 = (x82 >> 0x16);
- { uint32_t x84 = ((uint32_t)x82 & 0x3fffff);
- { uint64_t x85 = (x83 + x49);
- { uint64_t x86 = (x85 >> 0x16);
- { uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
- { uint64_t x88 = (x86 + x48);
- { uint64_t x89 = (x88 >> 0x17);
- { uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- { uint64_t x91 = (x89 + x47);
- { uint64_t x92 = (x91 >> 0x16);
- { uint32_t x93 = ((uint32_t)x91 & 0x3fffff);
- { uint64_t x94 = (x92 + x46);
- { uint64_t x95 = (x94 >> 0x16);
- { uint32_t x96 = ((uint32_t)x94 & 0x3fffff);
- { uint64_t x97 = (x95 + x45);
- { uint64_t x98 = (x97 >> 0x16);
- { uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- { uint64_t x100 = (x98 + x44);
- { uint64_t x101 = (x100 >> 0x16);
- { uint32_t x102 = ((uint32_t)x100 & 0x3fffff);
- { uint64_t x103 = (x101 + x43);
- { uint32_t x104 = (uint32_t) (x103 >> 0x17);
- { uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- { uint64_t x106 = (x104 + x42);
- { uint32_t x107 = (uint32_t) (x106 >> 0x16);
- { uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- { uint64_t x109 = (x107 + x41);
- { uint32_t x110 = (uint32_t) (x109 >> 0x16);
- { uint32_t x111 = ((uint32_t)x109 & 0x3fffff);
- { uint64_t x112 = (x110 + x40);
- { uint32_t x113 = (uint32_t) (x112 >> 0x16);
- { uint32_t x114 = ((uint32_t)x112 & 0x3fffff);
- { uint64_t x115 = (x113 + x39);
- { uint32_t x116 = (uint32_t) (x115 >> 0x16);
- { uint32_t x117 = ((uint32_t)x115 & 0x3fffff);
- { uint64_t x118 = (x60 + ((uint64_t)0x11 * x116));
- { uint32_t x119 = (uint32_t) (x118 >> 0x17);
- { uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
- { uint32_t x121 = (x119 + x63);
- { uint32_t x122 = (x121 >> 0x16);
- { uint32_t x123 = (x121 & 0x3fffff);
- out[0] = x120;
- out[1] = x123;
- out[2] = (x122 + x66);
- out[3] = x69;
- out[4] = x72;
- out[5] = x75;
- out[6] = x78;
- out[7] = x81;
- out[8] = x84;
- out[9] = x87;
- out[10] = x90;
- out[11] = x93;
- out[12] = x96;
- out[13] = x99;
- out[14] = x102;
- out[15] = x105;
- out[16] = x108;
- out[17] = x111;
- out[18] = x114;
- out[19] = x117;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e444m17/fesquare.v b/src/Specific/solinas32_2e444m17/fesquare.v
deleted file mode 100644
index 2f740437f..000000000
--- a/src/Specific/solinas32_2e444m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e444m17/fesquareDisplay.log b/src/Specific/solinas32_2e444m17/fesquareDisplay.log
deleted file mode 100644
index 9f72b96df..000000000
--- a/src/Specific/solinas32_2e444m17/fesquareDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x11 * ((uint64_t)x37 * x37)));
- uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + ((0x2 * ((uint64_t)x14 * x24)) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + ((0x2 * ((uint64_t)x24 * x14)) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x11 * (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38))));
- uint64_t x42 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36)))));
- uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + (((uint64_t)x12 * x22) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + (((uint64_t)x22 * x12) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x34 * x37)) + ((0x2 * ((uint64_t)x36 * x38)) + ((0x2 * ((uint64_t)x38 * x36)) + (0x2 * ((uint64_t)x37 * x34)))))));
- uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x37) + ((0x2 * ((uint64_t)x34 * x38)) + ((0x2 * ((uint64_t)x36 * x36)) + ((0x2 * ((uint64_t)x38 * x34)) + ((uint64_t)x37 * x32)))))));
- uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30))))))));
- uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + ((0x2 * ((uint64_t)x14 * x14)) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28)))))))));
- uint64_t x47 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + (((uint64_t)x12 * x12) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x11 * ((0x2 * ((uint64_t)x24 * x37)) + ((0x2 * ((uint64_t)x26 * x38)) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + ((0x2 * ((uint64_t)x38 * x26)) + (0x2 * ((uint64_t)x37 * x24))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x37) + ((0x2 * ((uint64_t)x24 * x38)) + ((0x2 * ((uint64_t)x26 * x36)) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + ((0x2 * ((uint64_t)x36 * x26)) + ((0x2 * ((uint64_t)x38 * x24)) + ((uint64_t)x37 * x22))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20)))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18))))))))))))));
- uint64_t x52 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16)))))))))))))));
- uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * ((0x2 * ((uint64_t)x14 * x37)) + ((0x2 * ((uint64_t)x16 * x38)) + ((0x2 * ((uint64_t)x18 * x36)) + ((0x2 * ((uint64_t)x20 * x34)) + (((uint64_t)x22 * x32) + ((0x2 * ((uint64_t)x24 * x30)) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + ((0x2 * ((uint64_t)x30 * x24)) + (((uint64_t)x32 * x22) + ((0x2 * ((uint64_t)x34 * x20)) + ((0x2 * ((uint64_t)x36 * x18)) + ((0x2 * ((uint64_t)x38 * x16)) + (0x2 * ((uint64_t)x37 * x14)))))))))))))))));
- uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x37) + ((0x2 * ((uint64_t)x14 * x38)) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + ((0x2 * ((uint64_t)x24 * x28)) + ((0x2 * ((uint64_t)x26 * x26)) + ((0x2 * ((uint64_t)x28 * x24)) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + ((0x2 * ((uint64_t)x38 * x14)) + ((uint64_t)x37 * x12)))))))))))))))));
- uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + ((0x2 * ((uint64_t)x14 * x36)) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + ((0x2 * ((uint64_t)x36 * x14)) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10))))))))))))))))));
- uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + ((0x2 * ((uint64_t)x14 * x34)) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + ((0x2 * ((uint64_t)x24 * x24)) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + ((0x2 * ((uint64_t)x34 * x14)) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8)))))))))))))))))));
- uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6))))))))))))))))))));
- uint64_t x58 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + (((uint64_t)x22 * x22) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4))))))))))))))))))))));
- uint64_t x59 = (x58 >> 0x17);
- uint32_t x60 = ((uint32_t)x58 & 0x7fffff);
- uint64_t x61 = (x59 + x57);
- uint64_t x62 = (x61 >> 0x16);
- uint32_t x63 = ((uint32_t)x61 & 0x3fffff);
- uint64_t x64 = (x62 + x56);
- uint64_t x65 = (x64 >> 0x16);
- uint32_t x66 = ((uint32_t)x64 & 0x3fffff);
- uint64_t x67 = (x65 + x55);
- uint64_t x68 = (x67 >> 0x16);
- uint32_t x69 = ((uint32_t)x67 & 0x3fffff);
- uint64_t x70 = (x68 + x54);
- uint64_t x71 = (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x71 + x53);
- uint64_t x74 = (x73 >> 0x17);
- uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
- uint64_t x76 = (x74 + x52);
- uint64_t x77 = (x76 >> 0x16);
- uint32_t x78 = ((uint32_t)x76 & 0x3fffff);
- uint64_t x79 = (x77 + x51);
- uint64_t x80 = (x79 >> 0x16);
- uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- uint64_t x82 = (x80 + x50);
- uint64_t x83 = (x82 >> 0x16);
- uint32_t x84 = ((uint32_t)x82 & 0x3fffff);
- uint64_t x85 = (x83 + x49);
- uint64_t x86 = (x85 >> 0x16);
- uint32_t x87 = ((uint32_t)x85 & 0x3fffff);
- uint64_t x88 = (x86 + x48);
- uint64_t x89 = (x88 >> 0x17);
- uint32_t x90 = ((uint32_t)x88 & 0x7fffff);
- uint64_t x91 = (x89 + x47);
- uint64_t x92 = (x91 >> 0x16);
- uint32_t x93 = ((uint32_t)x91 & 0x3fffff);
- uint64_t x94 = (x92 + x46);
- uint64_t x95 = (x94 >> 0x16);
- uint32_t x96 = ((uint32_t)x94 & 0x3fffff);
- uint64_t x97 = (x95 + x45);
- uint64_t x98 = (x97 >> 0x16);
- uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- uint64_t x100 = (x98 + x44);
- uint64_t x101 = (x100 >> 0x16);
- uint32_t x102 = ((uint32_t)x100 & 0x3fffff);
- uint64_t x103 = (x101 + x43);
- uint32_t x104 = (uint32_t) (x103 >> 0x17);
- uint32_t x105 = ((uint32_t)x103 & 0x7fffff);
- uint64_t x106 = (x104 + x42);
- uint32_t x107 = (uint32_t) (x106 >> 0x16);
- uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- uint64_t x109 = (x107 + x41);
- uint32_t x110 = (uint32_t) (x109 >> 0x16);
- uint32_t x111 = ((uint32_t)x109 & 0x3fffff);
- uint64_t x112 = (x110 + x40);
- uint32_t x113 = (uint32_t) (x112 >> 0x16);
- uint32_t x114 = ((uint32_t)x112 & 0x3fffff);
- uint64_t x115 = (x113 + x39);
- uint32_t x116 = (uint32_t) (x115 >> 0x16);
- uint32_t x117 = ((uint32_t)x115 & 0x3fffff);
- uint64_t x118 = (x60 + ((uint64_t)0x11 * x116));
- uint32_t x119 = (uint32_t) (x118 >> 0x17);
- uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
- uint32_t x121 = (x119 + x63);
- uint32_t x122 = (x121 >> 0x16);
- uint32_t x123 = (x121 & 0x3fffff);
- return (Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, (x122 + x66), Return x123, Return x120))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e444m17/fesquareDisplay.v b/src/Specific/solinas32_2e444m17/fesquareDisplay.v
deleted file mode 100644
index 1662b943c..000000000
--- a/src/Specific/solinas32_2e444m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e444m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e444m17/fesub.c b/src/Specific/solinas32_2e444m17/fesub.c
deleted file mode 100644
index 8cafca12a..000000000
--- a/src/Specific/solinas32_2e444m17/fesub.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void fesub(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = ((0xffffde + x5) - x43);
- out[1] = ((0x7ffffe + x7) - x45);
- out[2] = ((0x7ffffe + x9) - x47);
- out[3] = ((0x7ffffe + x11) - x49);
- out[4] = ((0x7ffffe + x13) - x51);
- out[5] = ((0xfffffe + x15) - x53);
- out[6] = ((0x7ffffe + x17) - x55);
- out[7] = ((0x7ffffe + x19) - x57);
- out[8] = ((0x7ffffe + x21) - x59);
- out[9] = ((0x7ffffe + x23) - x61);
- out[10] = ((0xfffffe + x25) - x63);
- out[11] = ((0x7ffffe + x27) - x65);
- out[12] = ((0x7ffffe + x29) - x67);
- out[13] = ((0x7ffffe + x31) - x69);
- out[14] = ((0x7ffffe + x33) - x71);
- out[15] = ((0xfffffe + x35) - x73);
- out[16] = ((0x7ffffe + x37) - x75);
- out[17] = ((0x7ffffe + x39) - x77);
- out[18] = ((0x7ffffe + x41) - x79);
- out[19] = ((0x7ffffe + x40) - x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e444m17/fesub.v b/src/Specific/solinas32_2e444m17/fesub.v
deleted file mode 100644
index d484dd035..000000000
--- a/src/Specific/solinas32_2e444m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e444m17/fesubDisplay.log b/src/Specific/solinas32_2e444m17/fesubDisplay.log
deleted file mode 100644
index fe256a4c8..000000000
--- a/src/Specific/solinas32_2e444m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- (((0x7ffffe + x40) - x78), ((0x7ffffe + x41) - x79), ((0x7ffffe + x39) - x77), ((0x7ffffe + x37) - x75), ((0xfffffe + x35) - x73), ((0x7ffffe + x33) - x71), ((0x7ffffe + x31) - x69), ((0x7ffffe + x29) - x67), ((0x7ffffe + x27) - x65), ((0xfffffe + x25) - x63), ((0x7ffffe + x23) - x61), ((0x7ffffe + x21) - x59), ((0x7ffffe + x19) - x57), ((0x7ffffe + x17) - x55), ((0xfffffe + x15) - x53), ((0x7ffffe + x13) - x51), ((0x7ffffe + x11) - x49), ((0x7ffffe + x9) - x47), ((0x7ffffe + x7) - x45), ((0xffffde + x5) - x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e444m17/fesubDisplay.v b/src/Specific/solinas32_2e444m17/fesubDisplay.v
deleted file mode 100644
index 8662033f4..000000000
--- a/src/Specific/solinas32_2e444m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e444m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e444m17/freeze.c b/src/Specific/solinas32_2e444m17/freeze.c
deleted file mode 100644
index b9cb08cbc..000000000
--- a/src/Specific/solinas32_2e444m17/freeze.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void freeze(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffef);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x3fffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x3fffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x3fffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x3fffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x7fffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x3fffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x3fffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x3fffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x3fffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0x7fffff);
- { uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x3fffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x3fffff);
- { uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x3fffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x3fffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x7fffff);
- { uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x3fffff);
- { uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x3fffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x3fffff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x3fffff);
- { uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- { uint32_t x100 = (x99 & 0x7fffef);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- { uint32_t x104 = (x99 & 0x3fffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- { uint32_t x108 = (x99 & 0x3fffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- { uint32_t x112 = (x99 & 0x3fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- { uint32_t x116 = (x99 & 0x3fffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- { uint32_t x120 = (x99 & 0x7fffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- { uint32_t x124 = (x99 & 0x3fffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- { uint32_t x128 = (x99 & 0x3fffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- { uint32_t x132 = (x99 & 0x3fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- { uint32_t x136 = (x99 & 0x3fffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- { uint32_t x140 = (x99 & 0x7fffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- { uint32_t x144 = (x99 & 0x3fffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- { uint32_t x148 = (x99 & 0x3fffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- { uint32_t x152 = (x99 & 0x3fffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- { uint32_t x156 = (x99 & 0x3fffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- { uint32_t x160 = (x99 & 0x7fffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- { uint32_t x164 = (x99 & 0x3fffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- { uint32_t x168 = (x99 & 0x3fffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- { uint32_t x172 = (x99 & 0x3fffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- { uint32_t x176 = (x99 & 0x3fffff);
- { uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- out[0] = x102;
- out[1] = x106;
- out[2] = x110;
- out[3] = x114;
- out[4] = x118;
- out[5] = x122;
- out[6] = x126;
- out[7] = x130;
- out[8] = x134;
- out[9] = x138;
- out[10] = x142;
- out[11] = x146;
- out[12] = x150;
- out[13] = x154;
- out[14] = x158;
- out[15] = x162;
- out[16] = x166;
- out[17] = x170;
- out[18] = x174;
- out[19] = x178;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e444m17/freeze.v b/src/Specific/solinas32_2e444m17/freeze.v
deleted file mode 100644
index aeb3d5855..000000000
--- a/src/Specific/solinas32_2e444m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e444m17/freezeDisplay.log b/src/Specific/solinas32_2e444m17/freezeDisplay.log
deleted file mode 100644
index ff788d663..000000000
--- a/src/Specific/solinas32_2e444m17/freezeDisplay.log
+++ /dev/null
@@ -1,68 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffef);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x3fffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x3fffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x3fffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x3fffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x7fffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x3fffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x3fffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x3fffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x3fffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0x7fffff);
- uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x3fffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x3fffff);
- uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x3fffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x3fffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x7fffff);
- uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x3fffff);
- uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x3fffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x3fffff);
- uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x3fffff);
- uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- uint32_t x100 = (x99 & 0x7fffef);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- uint32_t x104 = (x99 & 0x3fffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- uint32_t x108 = (x99 & 0x3fffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- uint32_t x112 = (x99 & 0x3fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- uint32_t x116 = (x99 & 0x3fffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- uint32_t x120 = (x99 & 0x7fffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- uint32_t x124 = (x99 & 0x3fffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- uint32_t x128 = (x99 & 0x3fffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- uint32_t x132 = (x99 & 0x3fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- uint32_t x136 = (x99 & 0x3fffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- uint32_t x140 = (x99 & 0x7fffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- uint32_t x144 = (x99 & 0x3fffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- uint32_t x148 = (x99 & 0x3fffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- uint32_t x152 = (x99 & 0x3fffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- uint32_t x156 = (x99 & 0x3fffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- uint32_t x160 = (x99 & 0x7fffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- uint32_t x164 = (x99 & 0x3fffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- uint32_t x168 = (x99 & 0x3fffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- uint32_t x172 = (x99 & 0x3fffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- uint32_t x176 = (x99 & 0x3fffff);
- uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- (Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e444m17/freezeDisplay.v b/src/Specific/solinas32_2e444m17/freezeDisplay.v
deleted file mode 100644
index 42a3c2418..000000000
--- a/src/Specific/solinas32_2e444m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e444m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e444m17/py_interpreter.sh b/src/Specific/solinas32_2e444m17/py_interpreter.sh
deleted file mode 100755
index 89b8a4746..000000000
--- a/src/Specific/solinas32_2e444m17/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**444 - 17' -Dmodulus_bytes='22.2' -Da24='121665'
diff --git a/src/Specific/solinas32_2e444m17_17limbs/CurveParameters.v b/src/Specific/solinas32_2e444m17_17limbs/CurveParameters.v
new file mode 100644
index 000000000..31e1b2abd
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^444 - 17
+Base: 26 + 2/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 26 + 2/17;
+ bitwidth := 32;
+ s := 2^444;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/Synthesis.v b/src/Specific/solinas32_2e444m17_17limbs/Synthesis.v
new file mode 100644
index 000000000..7503a7e9e
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/compiler.sh b/src/Specific/solinas32_2e444m17_17limbs/compiler.sh
new file mode 100755
index 000000000..fa7953ad7
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17_17limbs/compilerxx.sh b/src/Specific/solinas32_2e444m17_17limbs/compilerxx.sh
new file mode 100755
index 000000000..82632ee18
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,27,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17_17limbs/feadd.v b/src/Specific/solinas32_2e444m17_17limbs/feadd.v
new file mode 100644
index 000000000..197cb01d2
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e444m17_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..552ccb52d
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/femul.v b/src/Specific/solinas32_2e444m17_17limbs/femul.v
new file mode 100644
index 000000000..cdd2cd290
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/femulDisplay.v b/src/Specific/solinas32_2e444m17_17limbs/femulDisplay.v
new file mode 100644
index 000000000..335e11d99
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/fesquare.v b/src/Specific/solinas32_2e444m17_17limbs/fesquare.v
new file mode 100644
index 000000000..0e53eb8c0
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e444m17_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b4e84daa0
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/fesub.v b/src/Specific/solinas32_2e444m17_17limbs/fesub.v
new file mode 100644
index 000000000..41a287ed8
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e444m17_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..2e3af31f0
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/freeze.v b/src/Specific/solinas32_2e444m17_17limbs/freeze.v
new file mode 100644
index 000000000..7e302cfff
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e444m17_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..e669b84cc
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e444m17_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e444m17_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..746a5ef3f
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**444 - 17' -Dmodulus_bytes='26 + 2/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e444m17_18limbs/CurveParameters.v b/src/Specific/solinas32_2e444m17_18limbs/CurveParameters.v
new file mode 100644
index 000000000..891ec9f37
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^444 - 17
+Base: 24 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 24 + 2/3;
+ bitwidth := 32;
+ s := 2^444;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/Synthesis.v b/src/Specific/solinas32_2e444m17_18limbs/Synthesis.v
new file mode 100644
index 000000000..5254d531f
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/compiler.sh b/src/Specific/solinas32_2e444m17_18limbs/compiler.sh
new file mode 100755
index 000000000..de2ac353c
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17_18limbs/compilerxx.sh b/src/Specific/solinas32_2e444m17_18limbs/compilerxx.sh
new file mode 100755
index 000000000..8856f71e2
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,25,24,25,25,24,25,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas32_2e444m17_18limbs/feadd.v b/src/Specific/solinas32_2e444m17_18limbs/feadd.v
new file mode 100644
index 000000000..dfe1ad6db
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e444m17_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..aa1512a9f
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/femul.v b/src/Specific/solinas32_2e444m17_18limbs/femul.v
new file mode 100644
index 000000000..edc889e6f
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/femulDisplay.v b/src/Specific/solinas32_2e444m17_18limbs/femulDisplay.v
new file mode 100644
index 000000000..8fb3aca39
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/fesquare.v b/src/Specific/solinas32_2e444m17_18limbs/fesquare.v
new file mode 100644
index 000000000..309237607
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e444m17_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e93272d16
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/fesub.v b/src/Specific/solinas32_2e444m17_18limbs/fesub.v
new file mode 100644
index 000000000..d28f2dc25
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e444m17_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..2d14918e5
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/freeze.v b/src/Specific/solinas32_2e444m17_18limbs/freeze.v
new file mode 100644
index 000000000..540438b89
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e444m17_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..442619828
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e444m17_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e444m17_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e444m17_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..f215ec39d
--- /dev/null
+++ b/src/Specific/solinas32_2e444m17_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**444 - 17' -Dmodulus_bytes='24 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e448m2e224m1/Synthesis.v b/src/Specific/solinas32_2e448m2e224m1/Synthesis.v
deleted file mode 100644
index 7612eaa33..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e448m2e224m1/feadd.c b/src/Specific/solinas32_2e448m2e224m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e448m2e224m1/feadd.v b/src/Specific/solinas32_2e448m2e224m1/feadd.v
deleted file mode 100644
index 020d68df7..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.log b/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.v b/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.v
deleted file mode 100644
index d8a56a37c..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e448m2e224m1/femul.c b/src/Specific/solinas32_2e448m2e224m1/femul.c
deleted file mode 100644
index 309e7b417..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/femul.c
+++ /dev/null
@@ -1,145 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { uint64_t x64 = (((uint64_t)(x19 + x32) * (x49 + x62)) - ((uint64_t)x19 * x49));
- { uint64_t x65 = ((((uint64_t)(x17 + x33) * (x49 + x62)) + ((uint64_t)(x19 + x32) * (x47 + x63))) - (((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)));
- { uint64_t x66 = ((((uint64_t)(x15 + x31) * (x49 + x62)) + (((uint64_t)(x17 + x33) * (x47 + x63)) + ((uint64_t)(x19 + x32) * (x45 + x61)))) - (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))));
- { uint64_t x67 = ((((uint64_t)(x13 + x29) * (x49 + x62)) + (((uint64_t)(x15 + x31) * (x47 + x63)) + (((uint64_t)(x17 + x33) * (x45 + x61)) + ((uint64_t)(x19 + x32) * (x43 + x59))))) - (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))));
- { uint64_t x68 = ((((uint64_t)(x11 + x27) * (x49 + x62)) + (((uint64_t)(x13 + x29) * (x47 + x63)) + (((uint64_t)(x15 + x31) * (x45 + x61)) + (((uint64_t)(x17 + x33) * (x43 + x59)) + ((uint64_t)(x19 + x32) * (x41 + x57)))))) - (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))));
- { uint64_t x69 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x9 + x25) * (x49 + x62)) +ℤ (((uint64_t)(x11 + x27) * (x47 + x63)) + (((uint64_t)(x13 + x29) * (x45 + x61)) + (((uint64_t)(x15 + x31) * (x43 + x59)) + (((uint64_t)(x17 + x33) * (x41 + x57)) + ((uint64_t)(x19 + x32) * (x39 + x55))))))) -ℤ (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39))))))), (((((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + ((uint64_t)x19 * x55)))))) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- { uint64_t x70 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x7 + x23) * (x49 + x62)) +ℤ (((uint64_t)(x9 + x25) * (x47 + x63)) +ℤ (((uint64_t)(x11 + x27) * (x45 + x61)) + (((uint64_t)(x13 + x29) * (x43 + x59)) + (((uint64_t)(x15 + x31) * (x41 + x57)) + (((uint64_t)(x17 + x33) * (x39 + x55)) + ((uint64_t)(x19 + x32) * (x37 + x53)))))))) -ℤ (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37)))))))), (((((uint64_t)x7 * x62) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + ((uint64_t)x19 * x53))))))) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + (((uint64_t)x33 * x39) + ((uint64_t)x32 * x37)))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- { ℤ x71 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)(x5 + x21) * (x49 + x62)) +ℤ (((uint64_t)(x7 + x23) * (x47 + x63)) +ℤ (((uint64_t)(x9 + x25) * (x45 + x61)) +ℤ (((uint64_t)(x11 + x27) * (x43 + x59)) + (((uint64_t)(x13 + x29) * (x41 + x57)) + (((uint64_t)(x15 + x31) * (x39 + x55)) + (((uint64_t)(x17 + x33) * (x37 + x53)) + ((uint64_t)(x19 + x32) * (x35 + x51))))))))) -ℤ (((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35))))))))), (((((uint64_t)x5 * x62) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((uint64_t)x19 * x51)))))))) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + (((uint64_t)x31 * x39) + (((uint64_t)x33 * x37) + ((uint64_t)x32 * x35))))))))) +ℤ (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- { uint64_t x72 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x5 + x21) * (x47 + x63)) +ℤ (((uint64_t)(x7 + x23) * (x45 + x61)) +ℤ (((uint64_t)(x9 + x25) * (x43 + x59)) + (((uint64_t)(x11 + x27) * (x41 + x57)) + (((uint64_t)(x13 + x29) * (x39 + x55)) + (((uint64_t)(x15 + x31) * (x37 + x53)) + ((uint64_t)(x17 + x33) * (x35 + x51)))))))) -ℤ (((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35)))))))), (((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + ((uint64_t)x17 * x51))))))) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + (((uint64_t)x31 * x37) + ((uint64_t)x33 * x35)))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))));
- { uint64_t x73 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x5 + x21) * (x45 + x61)) +ℤ (((uint64_t)(x7 + x23) * (x43 + x59)) + (((uint64_t)(x9 + x25) * (x41 + x57)) + (((uint64_t)(x11 + x27) * (x39 + x55)) + (((uint64_t)(x13 + x29) * (x37 + x53)) + ((uint64_t)(x15 + x31) * (x35 + x51))))))) -ℤ (((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35))))))), (((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((uint64_t)x15 * x51)))))) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x31 * x35))))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))));
- { uint64_t x74 = ((((uint64_t)(x5 + x21) * (x43 + x59)) + (((uint64_t)(x7 + x23) * (x41 + x57)) + (((uint64_t)(x9 + x25) * (x39 + x55)) + (((uint64_t)(x11 + x27) * (x37 + x53)) + ((uint64_t)(x13 + x29) * (x35 + x51)))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))));
- { uint64_t x75 = ((((uint64_t)(x5 + x21) * (x41 + x57)) + (((uint64_t)(x7 + x23) * (x39 + x55)) + (((uint64_t)(x9 + x25) * (x37 + x53)) + ((uint64_t)(x11 + x27) * (x35 + x51))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))));
- { uint64_t x76 = ((((uint64_t)(x5 + x21) * (x39 + x55)) + (((uint64_t)(x7 + x23) * (x37 + x53)) + ((uint64_t)(x9 + x25) * (x35 + x51)))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))));
- { uint64_t x77 = ((((uint64_t)(x5 + x21) * (x37 + x53)) + ((uint64_t)(x7 + x23) * (x35 + x51))) - (((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)));
- { uint64_t x78 = (((uint64_t)(x5 + x21) * (x35 + x51)) - ((uint64_t)x5 * x35));
- { ℤ x79 = (((((uint64_t)x19 * x49) + ((uint64_t)x32 * x62)) +ℤ x72) +ℤ x64);
- { ℤ x80 = ((((((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)) + (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))) + x73) +ℤ x65);
- { ℤ x81 = ((((((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))) + (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))) + x74) +ℤ x66);
- { ℤ x82 = ((((((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))) + (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))) + x75) +ℤ x67);
- { ℤ x83 = ((((((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))) + (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))) + x76) +ℤ x68);
- { ℤ x84 = ((((((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))) + x77) +ℤ x69);
- { ℤ x85 = ((((((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))) + x78) +ℤ x70);
- { uint64_t x86 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))) + (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51)))))))));
- { uint64_t x87 = (((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))) + x64);
- { uint64_t x88 = (((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))) + x65);
- { uint64_t x89 = (((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((uint64_t)x29 * x51)))))) + x66);
- { uint64_t x90 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((uint64_t)x27 * x51))))) + x67);
- { uint64_t x91 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((uint64_t)x25 * x51)))) + x68);
- { uint64_t x92 = (((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (((uint64_t)x21 * x53) + ((uint64_t)x23 * x51))) + x69);
- { ℤ x93 = ((((uint64_t)x5 * x35) + ((uint64_t)x21 * x51)) +ℤ x70);
- { uint64_t x94 = (x86 >> 0x1c);
- { uint32_t x95 = ((uint32_t)x86 & 0xfffffff);
- { uint64_t x96 = (x71 >> 0x1c);
- { uint32_t x97 = (x71 & 0xfffffff);
- { ℤ x98 = ((0x10000000 *ℤ x96) +ℤ x97);
- { uint64_t x99 = (x98 >> 0x1c);
- { uint32_t x100 = (x98 & 0xfffffff);
- { ℤ x101 = ((x94 +ℤ x85) +ℤ x99);
- { uint64_t x102 = (x101 >> 0x1c);
- { uint32_t x103 = (x101 & 0xfffffff);
- { ℤ x104 = (x93 +ℤ x99);
- { uint64_t x105 = (x104 >> 0x1c);
- { uint32_t x106 = (x104 & 0xfffffff);
- { ℤ x107 = (x102 +ℤ x84);
- { uint64_t x108 = (x107 >> 0x1c);
- { uint32_t x109 = (x107 & 0xfffffff);
- { uint64_t x110 = (x105 + x92);
- { uint64_t x111 = (x110 >> 0x1c);
- { uint32_t x112 = ((uint32_t)x110 & 0xfffffff);
- { ℤ x113 = (x108 +ℤ x83);
- { uint64_t x114 = (x113 >> 0x1c);
- { uint32_t x115 = (x113 & 0xfffffff);
- { uint64_t x116 = (x111 + x91);
- { uint64_t x117 = (x116 >> 0x1c);
- { uint32_t x118 = ((uint32_t)x116 & 0xfffffff);
- { ℤ x119 = (x114 +ℤ x82);
- { uint64_t x120 = (x119 >> 0x1c);
- { uint32_t x121 = (x119 & 0xfffffff);
- { uint64_t x122 = (x117 + x90);
- { uint64_t x123 = (x122 >> 0x1c);
- { uint32_t x124 = ((uint32_t)x122 & 0xfffffff);
- { ℤ x125 = (x120 +ℤ x81);
- { uint64_t x126 = (x125 >> 0x1c);
- { uint32_t x127 = (x125 & 0xfffffff);
- { uint64_t x128 = (x123 + x89);
- { uint64_t x129 = (x128 >> 0x1c);
- { uint32_t x130 = ((uint32_t)x128 & 0xfffffff);
- { ℤ x131 = (x126 +ℤ x80);
- { uint64_t x132 = (x131 >> 0x1c);
- { uint32_t x133 = (x131 & 0xfffffff);
- { uint64_t x134 = (x129 + x88);
- { uint64_t x135 = (x134 >> 0x1c);
- { uint32_t x136 = ((uint32_t)x134 & 0xfffffff);
- { ℤ x137 = (x132 +ℤ x79);
- { uint64_t x138 = (x137 >> 0x1c);
- { uint32_t x139 = (x137 & 0xfffffff);
- { uint64_t x140 = (x135 + x87);
- { uint64_t x141 = (x140 >> 0x1c);
- { uint32_t x142 = ((uint32_t)x140 & 0xfffffff);
- { uint64_t x143 = (x138 + x100);
- { uint32_t x144 = (uint32_t) (x143 >> 0x1c);
- { uint32_t x145 = ((uint32_t)x143 & 0xfffffff);
- { uint64_t x146 = (x141 + x95);
- { uint32_t x147 = (uint32_t) (x146 >> 0x1c);
- { uint32_t x148 = ((uint32_t)x146 & 0xfffffff);
- { uint64_t x149 = (((uint64_t)0x10000000 * x144) + x145);
- { uint32_t x150 = (uint32_t) (x149 >> 0x1c);
- { uint32_t x151 = ((uint32_t)x149 & 0xfffffff);
- { uint32_t x152 = ((x147 + x103) + x150);
- { uint32_t x153 = (x152 >> 0x1c);
- { uint32_t x154 = (x152 & 0xfffffff);
- { uint32_t x155 = (x106 + x150);
- { uint32_t x156 = (x155 >> 0x1c);
- { uint32_t x157 = (x155 & 0xfffffff);
- out[0] = x157;
- out[1] = (x156 + x112);
- out[2] = x118;
- out[3] = x124;
- out[4] = x130;
- out[5] = x136;
- out[6] = x142;
- out[7] = x148;
- out[8] = x154;
- out[9] = (x153 + x109);
- out[10] = x115;
- out[11] = x121;
- out[12] = x127;
- out[13] = x133;
- out[14] = x139;
- out[15] = x151;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e448m2e224m1/femul.v b/src/Specific/solinas32_2e448m2e224m1/femul.v
deleted file mode 100644
index 6c5ee28df..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1/femulDisplay.log b/src/Specific/solinas32_2e448m2e224m1/femulDisplay.log
deleted file mode 100644
index f2ea9e588..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/femulDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint64_t x64 = (((uint64_t)(x19 + x32) * (x49 + x62)) - ((uint64_t)x19 * x49));
- uint64_t x65 = ((((uint64_t)(x17 + x33) * (x49 + x62)) + ((uint64_t)(x19 + x32) * (x47 + x63))) - (((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)));
- uint64_t x66 = ((((uint64_t)(x15 + x31) * (x49 + x62)) + (((uint64_t)(x17 + x33) * (x47 + x63)) + ((uint64_t)(x19 + x32) * (x45 + x61)))) - (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))));
- uint64_t x67 = ((((uint64_t)(x13 + x29) * (x49 + x62)) + (((uint64_t)(x15 + x31) * (x47 + x63)) + (((uint64_t)(x17 + x33) * (x45 + x61)) + ((uint64_t)(x19 + x32) * (x43 + x59))))) - (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))));
- uint64_t x68 = ((((uint64_t)(x11 + x27) * (x49 + x62)) + (((uint64_t)(x13 + x29) * (x47 + x63)) + (((uint64_t)(x15 + x31) * (x45 + x61)) + (((uint64_t)(x17 + x33) * (x43 + x59)) + ((uint64_t)(x19 + x32) * (x41 + x57)))))) - (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))));
- uint64_t x69 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x9 + x25) * (x49 + x62)) +ℤ (((uint64_t)(x11 + x27) * (x47 + x63)) + (((uint64_t)(x13 + x29) * (x45 + x61)) + (((uint64_t)(x15 + x31) * (x43 + x59)) + (((uint64_t)(x17 + x33) * (x41 + x57)) + ((uint64_t)(x19 + x32) * (x39 + x55))))))) -ℤ (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39))))))), (((((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + ((uint64_t)x19 * x55)))))) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- uint64_t x70 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x7 + x23) * (x49 + x62)) +ℤ (((uint64_t)(x9 + x25) * (x47 + x63)) +ℤ (((uint64_t)(x11 + x27) * (x45 + x61)) + (((uint64_t)(x13 + x29) * (x43 + x59)) + (((uint64_t)(x15 + x31) * (x41 + x57)) + (((uint64_t)(x17 + x33) * (x39 + x55)) + ((uint64_t)(x19 + x32) * (x37 + x53)))))))) -ℤ (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37)))))))), (((((uint64_t)x7 * x62) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + ((uint64_t)x19 * x53))))))) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + (((uint64_t)x33 * x39) + ((uint64_t)x32 * x37)))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))));
- ℤ x71 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)(x5 + x21) * (x49 + x62)) +ℤ (((uint64_t)(x7 + x23) * (x47 + x63)) +ℤ (((uint64_t)(x9 + x25) * (x45 + x61)) +ℤ (((uint64_t)(x11 + x27) * (x43 + x59)) + (((uint64_t)(x13 + x29) * (x41 + x57)) + (((uint64_t)(x15 + x31) * (x39 + x55)) + (((uint64_t)(x17 + x33) * (x37 + x53)) + ((uint64_t)(x19 + x32) * (x35 + x51))))))))) -ℤ (((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35))))))))), (((((uint64_t)x5 * x62) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + ((uint64_t)x19 * x51)))))))) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + (((uint64_t)x31 * x39) + (((uint64_t)x33 * x37) + ((uint64_t)x32 * x35))))))))) +ℤ (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51))))))))));
- uint64_t x72 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x5 + x21) * (x47 + x63)) +ℤ (((uint64_t)(x7 + x23) * (x45 + x61)) +ℤ (((uint64_t)(x9 + x25) * (x43 + x59)) + (((uint64_t)(x11 + x27) * (x41 + x57)) + (((uint64_t)(x13 + x29) * (x39 + x55)) + (((uint64_t)(x15 + x31) * (x37 + x53)) + ((uint64_t)(x17 + x33) * (x35 + x51)))))))) -ℤ (((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35)))))))), (((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + ((uint64_t)x17 * x51))))))) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + (((uint64_t)x31 * x37) + ((uint64_t)x33 * x35)))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))));
- uint64_t x73 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x5 + x21) * (x45 + x61)) +ℤ (((uint64_t)(x7 + x23) * (x43 + x59)) + (((uint64_t)(x9 + x25) * (x41 + x57)) + (((uint64_t)(x11 + x27) * (x39 + x55)) + (((uint64_t)(x13 + x29) * (x37 + x53)) + ((uint64_t)(x15 + x31) * (x35 + x51))))))) -ℤ (((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35))))))), (((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((uint64_t)x15 * x51)))))) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x31 * x35))))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))));
- uint64_t x74 = ((((uint64_t)(x5 + x21) * (x43 + x59)) + (((uint64_t)(x7 + x23) * (x41 + x57)) + (((uint64_t)(x9 + x25) * (x39 + x55)) + (((uint64_t)(x11 + x27) * (x37 + x53)) + ((uint64_t)(x13 + x29) * (x35 + x51)))))) - (((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))));
- uint64_t x75 = ((((uint64_t)(x5 + x21) * (x41 + x57)) + (((uint64_t)(x7 + x23) * (x39 + x55)) + (((uint64_t)(x9 + x25) * (x37 + x53)) + ((uint64_t)(x11 + x27) * (x35 + x51))))) - (((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))));
- uint64_t x76 = ((((uint64_t)(x5 + x21) * (x39 + x55)) + (((uint64_t)(x7 + x23) * (x37 + x53)) + ((uint64_t)(x9 + x25) * (x35 + x51)))) - (((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))));
- uint64_t x77 = ((((uint64_t)(x5 + x21) * (x37 + x53)) + ((uint64_t)(x7 + x23) * (x35 + x51))) - (((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)));
- uint64_t x78 = (((uint64_t)(x5 + x21) * (x35 + x51)) - ((uint64_t)x5 * x35));
- ℤ x79 = (((((uint64_t)x19 * x49) + ((uint64_t)x32 * x62)) +ℤ x72) +ℤ x64);
- ℤ x80 = ((((((uint64_t)x17 * x49) + ((uint64_t)x19 * x47)) + (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))) + x73) +ℤ x65);
- ℤ x81 = ((((((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + ((uint64_t)x19 * x45))) + (((uint64_t)x31 * x62) + (((uint64_t)x33 * x63) + ((uint64_t)x32 * x61)))) + x74) +ℤ x66);
- ℤ x82 = ((((((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + ((uint64_t)x19 * x43)))) + (((uint64_t)x29 * x62) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + ((uint64_t)x32 * x59))))) + x75) +ℤ x67);
- ℤ x83 = ((((((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + ((uint64_t)x19 * x41))))) + (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))) + x76) +ℤ x68);
- ℤ x84 = ((((((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))) + (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))) + x77) +ℤ x69);
- ℤ x85 = ((((((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + (((uint64_t)x17 * x39) + ((uint64_t)x19 * x37))))))) + (((uint64_t)x23 * x62) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + ((uint64_t)x32 * x53)))))))) + x78) +ℤ x70);
- uint64_t x86 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + (((uint64_t)x15 * x39) + (((uint64_t)x17 * x37) + ((uint64_t)x19 * x35)))))))) + (((uint64_t)x21 * x62) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((uint64_t)x32 * x51)))))))));
- uint64_t x87 = (((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + (((uint64_t)x15 * x37) + ((uint64_t)x17 * x35))))))) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((uint64_t)x33 * x51)))))))) + x64);
- uint64_t x88 = (((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + ((uint64_t)x31 * x51))))))) + x65);
- uint64_t x89 = (((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + (((uint64_t)x9 * x39) + (((uint64_t)x11 * x37) + ((uint64_t)x13 * x35))))) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((uint64_t)x29 * x51)))))) + x66);
- uint64_t x90 = (((((uint64_t)x5 * x41) + (((uint64_t)x7 * x39) + (((uint64_t)x9 * x37) + ((uint64_t)x11 * x35)))) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + ((uint64_t)x27 * x51))))) + x67);
- uint64_t x91 = (((((uint64_t)x5 * x39) + (((uint64_t)x7 * x37) + ((uint64_t)x9 * x35))) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((uint64_t)x25 * x51)))) + x68);
- uint64_t x92 = (((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) + (((uint64_t)x21 * x53) + ((uint64_t)x23 * x51))) + x69);
- ℤ x93 = ((((uint64_t)x5 * x35) + ((uint64_t)x21 * x51)) +ℤ x70);
- uint64_t x94 = (x86 >> 0x1c);
- uint32_t x95 = ((uint32_t)x86 & 0xfffffff);
- uint64_t x96 = (x71 >> 0x1c);
- uint32_t x97 = (x71 & 0xfffffff);
- ℤ x98 = ((0x10000000 *ℤ x96) +ℤ x97);
- uint64_t x99 = (x98 >> 0x1c);
- uint32_t x100 = (x98 & 0xfffffff);
- ℤ x101 = ((x94 +ℤ x85) +ℤ x99);
- uint64_t x102 = (x101 >> 0x1c);
- uint32_t x103 = (x101 & 0xfffffff);
- ℤ x104 = (x93 +ℤ x99);
- uint64_t x105 = (x104 >> 0x1c);
- uint32_t x106 = (x104 & 0xfffffff);
- ℤ x107 = (x102 +ℤ x84);
- uint64_t x108 = (x107 >> 0x1c);
- uint32_t x109 = (x107 & 0xfffffff);
- uint64_t x110 = (x105 + x92);
- uint64_t x111 = (x110 >> 0x1c);
- uint32_t x112 = ((uint32_t)x110 & 0xfffffff);
- ℤ x113 = (x108 +ℤ x83);
- uint64_t x114 = (x113 >> 0x1c);
- uint32_t x115 = (x113 & 0xfffffff);
- uint64_t x116 = (x111 + x91);
- uint64_t x117 = (x116 >> 0x1c);
- uint32_t x118 = ((uint32_t)x116 & 0xfffffff);
- ℤ x119 = (x114 +ℤ x82);
- uint64_t x120 = (x119 >> 0x1c);
- uint32_t x121 = (x119 & 0xfffffff);
- uint64_t x122 = (x117 + x90);
- uint64_t x123 = (x122 >> 0x1c);
- uint32_t x124 = ((uint32_t)x122 & 0xfffffff);
- ℤ x125 = (x120 +ℤ x81);
- uint64_t x126 = (x125 >> 0x1c);
- uint32_t x127 = (x125 & 0xfffffff);
- uint64_t x128 = (x123 + x89);
- uint64_t x129 = (x128 >> 0x1c);
- uint32_t x130 = ((uint32_t)x128 & 0xfffffff);
- ℤ x131 = (x126 +ℤ x80);
- uint64_t x132 = (x131 >> 0x1c);
- uint32_t x133 = (x131 & 0xfffffff);
- uint64_t x134 = (x129 + x88);
- uint64_t x135 = (x134 >> 0x1c);
- uint32_t x136 = ((uint32_t)x134 & 0xfffffff);
- ℤ x137 = (x132 +ℤ x79);
- uint64_t x138 = (x137 >> 0x1c);
- uint32_t x139 = (x137 & 0xfffffff);
- uint64_t x140 = (x135 + x87);
- uint64_t x141 = (x140 >> 0x1c);
- uint32_t x142 = ((uint32_t)x140 & 0xfffffff);
- uint64_t x143 = (x138 + x100);
- uint32_t x144 = (uint32_t) (x143 >> 0x1c);
- uint32_t x145 = ((uint32_t)x143 & 0xfffffff);
- uint64_t x146 = (x141 + x95);
- uint32_t x147 = (uint32_t) (x146 >> 0x1c);
- uint32_t x148 = ((uint32_t)x146 & 0xfffffff);
- uint64_t x149 = (((uint64_t)0x10000000 * x144) + x145);
- uint32_t x150 = (uint32_t) (x149 >> 0x1c);
- uint32_t x151 = ((uint32_t)x149 & 0xfffffff);
- uint32_t x152 = ((x147 + x103) + x150);
- uint32_t x153 = (x152 >> 0x1c);
- uint32_t x154 = (x152 & 0xfffffff);
- uint32_t x155 = (x106 + x150);
- uint32_t x156 = (x155 >> 0x1c);
- uint32_t x157 = (x155 & 0xfffffff);
- return (Return x151, Return x139, Return x133, Return x127, Return x121, Return x115, (x153 + x109), Return x154, Return x148, Return x142, Return x136, Return x130, Return x124, Return x118, (x156 + x112), Return x157))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v b/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v
deleted file mode 100644
index b381b7ba9..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquare.c b/src/Specific/solinas32_2e448m2e224m1/fesquare.c
deleted file mode 100644
index 5f1a92651..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesquare.c
+++ /dev/null
@@ -1,129 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x31 = (((uint64_t)(x16 + x29) * (x16 + x29)) - ((uint64_t)x16 * x16));
- { uint64_t x32 = ((((uint64_t)(x14 + x30) * (x16 + x29)) + ((uint64_t)(x16 + x29) * (x14 + x30))) - (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)));
- { uint64_t x33 = ((((uint64_t)(x12 + x28) * (x16 + x29)) + (((uint64_t)(x14 + x30) * (x14 + x30)) + ((uint64_t)(x16 + x29) * (x12 + x28)))) - (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))));
- { uint64_t x34 = ((((uint64_t)(x10 + x26) * (x16 + x29)) + (((uint64_t)(x12 + x28) * (x14 + x30)) + (((uint64_t)(x14 + x30) * (x12 + x28)) + ((uint64_t)(x16 + x29) * (x10 + x26))))) - (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))));
- { uint64_t x35 = ((((uint64_t)(x8 + x24) * (x16 + x29)) + (((uint64_t)(x10 + x26) * (x14 + x30)) + (((uint64_t)(x12 + x28) * (x12 + x28)) + (((uint64_t)(x14 + x30) * (x10 + x26)) + ((uint64_t)(x16 + x29) * (x8 + x24)))))) - (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))));
- { uint64_t x36 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x6 + x22) * (x16 + x29)) +ℤ (((uint64_t)(x8 + x24) * (x14 + x30)) + (((uint64_t)(x10 + x26) * (x12 + x28)) + (((uint64_t)(x12 + x28) * (x10 + x26)) + (((uint64_t)(x14 + x30) * (x8 + x24)) + ((uint64_t)(x16 + x29) * (x6 + x22))))))) -ℤ (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6))))))), (((((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((uint64_t)x16 * x22)))))) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- { uint64_t x37 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x4 + x20) * (x16 + x29)) +ℤ (((uint64_t)(x6 + x22) * (x14 + x30)) +ℤ (((uint64_t)(x8 + x24) * (x12 + x28)) + (((uint64_t)(x10 + x26) * (x10 + x26)) + (((uint64_t)(x12 + x28) * (x8 + x24)) + (((uint64_t)(x14 + x30) * (x6 + x22)) + ((uint64_t)(x16 + x29) * (x4 + x20)))))))) -ℤ (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4)))))))), (((((uint64_t)x4 * x29) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((uint64_t)x16 * x20))))))) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + ((uint64_t)x29 * x4)))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- { ℤ x38 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)(x2 + x18) * (x16 + x29)) +ℤ (((uint64_t)(x4 + x20) * (x14 + x30)) +ℤ (((uint64_t)(x6 + x22) * (x12 + x28)) +ℤ (((uint64_t)(x8 + x24) * (x10 + x26)) + (((uint64_t)(x10 + x26) * (x8 + x24)) + (((uint64_t)(x12 + x28) * (x6 + x22)) + (((uint64_t)(x14 + x30) * (x4 + x20)) + ((uint64_t)(x16 + x29) * (x2 + x18))))))))) -ℤ (((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2))))))))), (((((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((uint64_t)x16 * x18)))))))) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))) +ℤ (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- { uint64_t x39 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x2 + x18) * (x14 + x30)) +ℤ (((uint64_t)(x4 + x20) * (x12 + x28)) +ℤ (((uint64_t)(x6 + x22) * (x10 + x26)) + (((uint64_t)(x8 + x24) * (x8 + x24)) + (((uint64_t)(x10 + x26) * (x6 + x22)) + (((uint64_t)(x12 + x28) * (x4 + x20)) + ((uint64_t)(x14 + x30) * (x2 + x18)))))))) -ℤ (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2)))))))), (((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + ((uint64_t)x14 * x18))))))) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2)))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))));
- { uint64_t x40 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x2 + x18) * (x12 + x28)) +ℤ (((uint64_t)(x4 + x20) * (x10 + x26)) + (((uint64_t)(x6 + x22) * (x8 + x24)) + (((uint64_t)(x8 + x24) * (x6 + x22)) + (((uint64_t)(x10 + x26) * (x4 + x20)) + ((uint64_t)(x12 + x28) * (x2 + x18))))))) -ℤ (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2))))))), (((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + ((uint64_t)x12 * x18)))))) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2))))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))));
- { uint64_t x41 = ((((uint64_t)(x2 + x18) * (x10 + x26)) + (((uint64_t)(x4 + x20) * (x8 + x24)) + (((uint64_t)(x6 + x22) * (x6 + x22)) + (((uint64_t)(x8 + x24) * (x4 + x20)) + ((uint64_t)(x10 + x26) * (x2 + x18)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- { uint64_t x42 = ((((uint64_t)(x2 + x18) * (x8 + x24)) + (((uint64_t)(x4 + x20) * (x6 + x22)) + (((uint64_t)(x6 + x22) * (x4 + x20)) + ((uint64_t)(x8 + x24) * (x2 + x18))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- { uint64_t x43 = ((((uint64_t)(x2 + x18) * (x6 + x22)) + (((uint64_t)(x4 + x20) * (x4 + x20)) + ((uint64_t)(x6 + x22) * (x2 + x18)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- { uint64_t x44 = ((((uint64_t)(x2 + x18) * (x4 + x20)) + ((uint64_t)(x4 + x20) * (x2 + x18))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- { uint64_t x45 = (((uint64_t)(x2 + x18) * (x2 + x18)) - ((uint64_t)x2 * x2));
- { ℤ x46 = (((((uint64_t)x16 * x16) + ((uint64_t)x29 * x29)) +ℤ x39) +ℤ x31);
- { ℤ x47 = ((((((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)) + (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))) + x40) +ℤ x32);
- { ℤ x48 = ((((((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))) + (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))) + x41) +ℤ x33);
- { ℤ x49 = ((((((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))) + (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))) + x42) +ℤ x34);
- { ℤ x50 = ((((((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))) + (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))) + x43) +ℤ x35);
- { ℤ x51 = ((((((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))) + x44) +ℤ x36);
- { ℤ x52 = ((((((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))) + x45) +ℤ x37);
- { uint64_t x53 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18)))))))));
- { uint64_t x54 = (((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))) + x31);
- { uint64_t x55 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))) + x32);
- { uint64_t x56 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x26 * x18)))))) + x33);
- { uint64_t x57 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x24 * x18))))) + x34);
- { uint64_t x58 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + ((uint64_t)x22 * x18)))) + x35);
- { uint64_t x59 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x18 * x20) + ((uint64_t)x20 * x18))) + x36);
- { ℤ x60 = ((((uint64_t)x2 * x2) + ((uint64_t)x18 * x18)) +ℤ x37);
- { uint64_t x61 = (x53 >> 0x1c);
- { uint32_t x62 = ((uint32_t)x53 & 0xfffffff);
- { uint64_t x63 = (x38 >> 0x1c);
- { uint32_t x64 = (x38 & 0xfffffff);
- { ℤ x65 = ((0x10000000 *ℤ x63) +ℤ x64);
- { uint64_t x66 = (x65 >> 0x1c);
- { uint32_t x67 = (x65 & 0xfffffff);
- { ℤ x68 = ((x61 +ℤ x52) +ℤ x66);
- { uint64_t x69 = (x68 >> 0x1c);
- { uint32_t x70 = (x68 & 0xfffffff);
- { ℤ x71 = (x60 +ℤ x66);
- { uint64_t x72 = (x71 >> 0x1c);
- { uint32_t x73 = (x71 & 0xfffffff);
- { ℤ x74 = (x69 +ℤ x51);
- { uint64_t x75 = (x74 >> 0x1c);
- { uint32_t x76 = (x74 & 0xfffffff);
- { uint64_t x77 = (x72 + x59);
- { uint64_t x78 = (x77 >> 0x1c);
- { uint32_t x79 = ((uint32_t)x77 & 0xfffffff);
- { ℤ x80 = (x75 +ℤ x50);
- { uint64_t x81 = (x80 >> 0x1c);
- { uint32_t x82 = (x80 & 0xfffffff);
- { uint64_t x83 = (x78 + x58);
- { uint64_t x84 = (x83 >> 0x1c);
- { uint32_t x85 = ((uint32_t)x83 & 0xfffffff);
- { ℤ x86 = (x81 +ℤ x49);
- { uint64_t x87 = (x86 >> 0x1c);
- { uint32_t x88 = (x86 & 0xfffffff);
- { uint64_t x89 = (x84 + x57);
- { uint64_t x90 = (x89 >> 0x1c);
- { uint32_t x91 = ((uint32_t)x89 & 0xfffffff);
- { ℤ x92 = (x87 +ℤ x48);
- { uint64_t x93 = (x92 >> 0x1c);
- { uint32_t x94 = (x92 & 0xfffffff);
- { uint64_t x95 = (x90 + x56);
- { uint64_t x96 = (x95 >> 0x1c);
- { uint32_t x97 = ((uint32_t)x95 & 0xfffffff);
- { ℤ x98 = (x93 +ℤ x47);
- { uint64_t x99 = (x98 >> 0x1c);
- { uint32_t x100 = (x98 & 0xfffffff);
- { uint64_t x101 = (x96 + x55);
- { uint64_t x102 = (x101 >> 0x1c);
- { uint32_t x103 = ((uint32_t)x101 & 0xfffffff);
- { ℤ x104 = (x99 +ℤ x46);
- { uint64_t x105 = (x104 >> 0x1c);
- { uint32_t x106 = (x104 & 0xfffffff);
- { uint64_t x107 = (x102 + x54);
- { uint64_t x108 = (x107 >> 0x1c);
- { uint32_t x109 = ((uint32_t)x107 & 0xfffffff);
- { uint64_t x110 = (x105 + x67);
- { uint32_t x111 = (uint32_t) (x110 >> 0x1c);
- { uint32_t x112 = ((uint32_t)x110 & 0xfffffff);
- { uint64_t x113 = (x108 + x62);
- { uint32_t x114 = (uint32_t) (x113 >> 0x1c);
- { uint32_t x115 = ((uint32_t)x113 & 0xfffffff);
- { uint64_t x116 = (((uint64_t)0x10000000 * x111) + x112);
- { uint32_t x117 = (uint32_t) (x116 >> 0x1c);
- { uint32_t x118 = ((uint32_t)x116 & 0xfffffff);
- { uint32_t x119 = ((x114 + x70) + x117);
- { uint32_t x120 = (x119 >> 0x1c);
- { uint32_t x121 = (x119 & 0xfffffff);
- { uint32_t x122 = (x73 + x117);
- { uint32_t x123 = (x122 >> 0x1c);
- { uint32_t x124 = (x122 & 0xfffffff);
- out[0] = x124;
- out[1] = (x123 + x79);
- out[2] = x85;
- out[3] = x91;
- out[4] = x97;
- out[5] = x103;
- out[6] = x109;
- out[7] = x115;
- out[8] = x121;
- out[9] = (x120 + x76);
- out[10] = x82;
- out[11] = x88;
- out[12] = x94;
- out[13] = x100;
- out[14] = x106;
- out[15] = x118;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquare.v b/src/Specific/solinas32_2e448m2e224m1/fesquare.v
deleted file mode 100644
index 2886f929a..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.log b/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.log
deleted file mode 100644
index e1ffcf26b..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x31 = (((uint64_t)(x16 + x29) * (x16 + x29)) - ((uint64_t)x16 * x16));
- uint64_t x32 = ((((uint64_t)(x14 + x30) * (x16 + x29)) + ((uint64_t)(x16 + x29) * (x14 + x30))) - (((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)));
- uint64_t x33 = ((((uint64_t)(x12 + x28) * (x16 + x29)) + (((uint64_t)(x14 + x30) * (x14 + x30)) + ((uint64_t)(x16 + x29) * (x12 + x28)))) - (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))));
- uint64_t x34 = ((((uint64_t)(x10 + x26) * (x16 + x29)) + (((uint64_t)(x12 + x28) * (x14 + x30)) + (((uint64_t)(x14 + x30) * (x12 + x28)) + ((uint64_t)(x16 + x29) * (x10 + x26))))) - (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))));
- uint64_t x35 = ((((uint64_t)(x8 + x24) * (x16 + x29)) + (((uint64_t)(x10 + x26) * (x14 + x30)) + (((uint64_t)(x12 + x28) * (x12 + x28)) + (((uint64_t)(x14 + x30) * (x10 + x26)) + ((uint64_t)(x16 + x29) * (x8 + x24)))))) - (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))));
- uint64_t x36 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x6 + x22) * (x16 + x29)) +ℤ (((uint64_t)(x8 + x24) * (x14 + x30)) + (((uint64_t)(x10 + x26) * (x12 + x28)) + (((uint64_t)(x12 + x28) * (x10 + x26)) + (((uint64_t)(x14 + x30) * (x8 + x24)) + ((uint64_t)(x16 + x29) * (x6 + x22))))))) -ℤ (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6))))))), (((((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((uint64_t)x16 * x22)))))) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- uint64_t x37 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x4 + x20) * (x16 + x29)) +ℤ (((uint64_t)(x6 + x22) * (x14 + x30)) +ℤ (((uint64_t)(x8 + x24) * (x12 + x28)) + (((uint64_t)(x10 + x26) * (x10 + x26)) + (((uint64_t)(x12 + x28) * (x8 + x24)) + (((uint64_t)(x14 + x30) * (x6 + x22)) + ((uint64_t)(x16 + x29) * (x4 + x20)))))))) -ℤ (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4)))))))), (((((uint64_t)x4 * x29) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + ((uint64_t)x16 * x20))))))) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + ((uint64_t)x29 * x4)))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))));
- ℤ x38 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)(x2 + x18) * (x16 + x29)) +ℤ (((uint64_t)(x4 + x20) * (x14 + x30)) +ℤ (((uint64_t)(x6 + x22) * (x12 + x28)) +ℤ (((uint64_t)(x8 + x24) * (x10 + x26)) + (((uint64_t)(x10 + x26) * (x8 + x24)) + (((uint64_t)(x12 + x28) * (x6 + x22)) + (((uint64_t)(x14 + x30) * (x4 + x20)) + ((uint64_t)(x16 + x29) * (x2 + x18))))))))) -ℤ (((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2))))))))), (((((uint64_t)x2 * x29) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + ((uint64_t)x16 * x18)))))))) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x29 * x2))))))))) +ℤ (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18))))))))));
- uint64_t x39 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x2 + x18) * (x14 + x30)) +ℤ (((uint64_t)(x4 + x20) * (x12 + x28)) +ℤ (((uint64_t)(x6 + x22) * (x10 + x26)) + (((uint64_t)(x8 + x24) * (x8 + x24)) + (((uint64_t)(x10 + x26) * (x6 + x22)) + (((uint64_t)(x12 + x28) * (x4 + x20)) + ((uint64_t)(x14 + x30) * (x2 + x18)))))))) -ℤ (((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2)))))))), (((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + ((uint64_t)x14 * x18))))))) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2)))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))));
- uint64_t x40 = Op (Syntax.IdWithAlt Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6)) (((((uint64_t)(x2 + x18) * (x12 + x28)) +ℤ (((uint64_t)(x4 + x20) * (x10 + x26)) + (((uint64_t)(x6 + x22) * (x8 + x24)) + (((uint64_t)(x8 + x24) * (x6 + x22)) + (((uint64_t)(x10 + x26) * (x4 + x20)) + ((uint64_t)(x12 + x28) * (x2 + x18))))))) -ℤ (((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2))))))), (((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + ((uint64_t)x12 * x18)))))) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2))))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))));
- uint64_t x41 = ((((uint64_t)(x2 + x18) * (x10 + x26)) + (((uint64_t)(x4 + x20) * (x8 + x24)) + (((uint64_t)(x6 + x22) * (x6 + x22)) + (((uint64_t)(x8 + x24) * (x4 + x20)) + ((uint64_t)(x10 + x26) * (x2 + x18)))))) - (((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))));
- uint64_t x42 = ((((uint64_t)(x2 + x18) * (x8 + x24)) + (((uint64_t)(x4 + x20) * (x6 + x22)) + (((uint64_t)(x6 + x22) * (x4 + x20)) + ((uint64_t)(x8 + x24) * (x2 + x18))))) - (((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))));
- uint64_t x43 = ((((uint64_t)(x2 + x18) * (x6 + x22)) + (((uint64_t)(x4 + x20) * (x4 + x20)) + ((uint64_t)(x6 + x22) * (x2 + x18)))) - (((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))));
- uint64_t x44 = ((((uint64_t)(x2 + x18) * (x4 + x20)) + ((uint64_t)(x4 + x20) * (x2 + x18))) - (((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)));
- uint64_t x45 = (((uint64_t)(x2 + x18) * (x2 + x18)) - ((uint64_t)x2 * x2));
- ℤ x46 = (((((uint64_t)x16 * x16) + ((uint64_t)x29 * x29)) +ℤ x39) +ℤ x31);
- ℤ x47 = ((((((uint64_t)x14 * x16) + ((uint64_t)x16 * x14)) + (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))) + x40) +ℤ x32);
- ℤ x48 = ((((((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + ((uint64_t)x16 * x12))) + (((uint64_t)x28 * x29) + (((uint64_t)x30 * x30) + ((uint64_t)x29 * x28)))) + x41) +ℤ x33);
- ℤ x49 = ((((((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((uint64_t)x16 * x10)))) + (((uint64_t)x26 * x29) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((uint64_t)x29 * x26))))) + x42) +ℤ x34);
- ℤ x50 = ((((((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + ((uint64_t)x16 * x8))))) + (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))) + x43) +ℤ x35);
- ℤ x51 = ((((((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + ((uint64_t)x16 * x6)))))) + (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))) + x44) +ℤ x36);
- ℤ x52 = ((((((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((uint64_t)x16 * x4))))))) + (((uint64_t)x20 * x29) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + ((uint64_t)x29 * x20)))))))) + x45) +ℤ x37);
- uint64_t x53 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x29) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + ((uint64_t)x29 * x18)))))))));
- uint64_t x54 = (((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + ((uint64_t)x30 * x18)))))))) + x31);
- uint64_t x55 = (((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + ((uint64_t)x28 * x18))))))) + x32);
- uint64_t x56 = (((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + ((uint64_t)x26 * x18)))))) + x33);
- uint64_t x57 = (((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + ((uint64_t)x24 * x18))))) + x34);
- uint64_t x58 = (((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + ((uint64_t)x22 * x18)))) + x35);
- uint64_t x59 = (((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x18 * x20) + ((uint64_t)x20 * x18))) + x36);
- ℤ x60 = ((((uint64_t)x2 * x2) + ((uint64_t)x18 * x18)) +ℤ x37);
- uint64_t x61 = (x53 >> 0x1c);
- uint32_t x62 = ((uint32_t)x53 & 0xfffffff);
- uint64_t x63 = (x38 >> 0x1c);
- uint32_t x64 = (x38 & 0xfffffff);
- ℤ x65 = ((0x10000000 *ℤ x63) +ℤ x64);
- uint64_t x66 = (x65 >> 0x1c);
- uint32_t x67 = (x65 & 0xfffffff);
- ℤ x68 = ((x61 +ℤ x52) +ℤ x66);
- uint64_t x69 = (x68 >> 0x1c);
- uint32_t x70 = (x68 & 0xfffffff);
- ℤ x71 = (x60 +ℤ x66);
- uint64_t x72 = (x71 >> 0x1c);
- uint32_t x73 = (x71 & 0xfffffff);
- ℤ x74 = (x69 +ℤ x51);
- uint64_t x75 = (x74 >> 0x1c);
- uint32_t x76 = (x74 & 0xfffffff);
- uint64_t x77 = (x72 + x59);
- uint64_t x78 = (x77 >> 0x1c);
- uint32_t x79 = ((uint32_t)x77 & 0xfffffff);
- ℤ x80 = (x75 +ℤ x50);
- uint64_t x81 = (x80 >> 0x1c);
- uint32_t x82 = (x80 & 0xfffffff);
- uint64_t x83 = (x78 + x58);
- uint64_t x84 = (x83 >> 0x1c);
- uint32_t x85 = ((uint32_t)x83 & 0xfffffff);
- ℤ x86 = (x81 +ℤ x49);
- uint64_t x87 = (x86 >> 0x1c);
- uint32_t x88 = (x86 & 0xfffffff);
- uint64_t x89 = (x84 + x57);
- uint64_t x90 = (x89 >> 0x1c);
- uint32_t x91 = ((uint32_t)x89 & 0xfffffff);
- ℤ x92 = (x87 +ℤ x48);
- uint64_t x93 = (x92 >> 0x1c);
- uint32_t x94 = (x92 & 0xfffffff);
- uint64_t x95 = (x90 + x56);
- uint64_t x96 = (x95 >> 0x1c);
- uint32_t x97 = ((uint32_t)x95 & 0xfffffff);
- ℤ x98 = (x93 +ℤ x47);
- uint64_t x99 = (x98 >> 0x1c);
- uint32_t x100 = (x98 & 0xfffffff);
- uint64_t x101 = (x96 + x55);
- uint64_t x102 = (x101 >> 0x1c);
- uint32_t x103 = ((uint32_t)x101 & 0xfffffff);
- ℤ x104 = (x99 +ℤ x46);
- uint64_t x105 = (x104 >> 0x1c);
- uint32_t x106 = (x104 & 0xfffffff);
- uint64_t x107 = (x102 + x54);
- uint64_t x108 = (x107 >> 0x1c);
- uint32_t x109 = ((uint32_t)x107 & 0xfffffff);
- uint64_t x110 = (x105 + x67);
- uint32_t x111 = (uint32_t) (x110 >> 0x1c);
- uint32_t x112 = ((uint32_t)x110 & 0xfffffff);
- uint64_t x113 = (x108 + x62);
- uint32_t x114 = (uint32_t) (x113 >> 0x1c);
- uint32_t x115 = ((uint32_t)x113 & 0xfffffff);
- uint64_t x116 = (((uint64_t)0x10000000 * x111) + x112);
- uint32_t x117 = (uint32_t) (x116 >> 0x1c);
- uint32_t x118 = ((uint32_t)x116 & 0xfffffff);
- uint32_t x119 = ((x114 + x70) + x117);
- uint32_t x120 = (x119 >> 0x1c);
- uint32_t x121 = (x119 & 0xfffffff);
- uint32_t x122 = (x73 + x117);
- uint32_t x123 = (x122 >> 0x1c);
- uint32_t x124 = (x122 & 0xfffffff);
- return (Return x118, Return x106, Return x100, Return x94, Return x88, Return x82, (x120 + x76), Return x121, Return x115, Return x109, Return x103, Return x97, Return x91, Return x85, (x123 + x79), Return x124))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v b/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v
deleted file mode 100644
index e604a9c0e..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesub.c b/src/Specific/solinas32_2e448m2e224m1/fesub.c
deleted file mode 100644
index 387cc589e..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x1ffffffe + x5) - x35);
- out[1] = ((0x1ffffffe + x7) - x37);
- out[2] = ((0x1ffffffe + x9) - x39);
- out[3] = ((0x1ffffffe + x11) - x41);
- out[4] = ((0x1ffffffe + x13) - x43);
- out[5] = ((0x1ffffffe + x15) - x45);
- out[6] = ((0x1ffffffe + x17) - x47);
- out[7] = ((0x1ffffffe + x19) - x49);
- out[8] = ((0x1ffffffc + x21) - x51);
- out[9] = ((0x1ffffffe + x23) - x53);
- out[10] = ((0x1ffffffe + x25) - x55);
- out[11] = ((0x1ffffffe + x27) - x57);
- out[12] = ((0x1ffffffe + x29) - x59);
- out[13] = ((0x1ffffffe + x31) - x61);
- out[14] = ((0x1ffffffe + x33) - x63);
- out[15] = ((0x1ffffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesub.v b/src/Specific/solinas32_2e448m2e224m1/fesub.v
deleted file mode 100644
index c0c42c69d..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.log b/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.log
deleted file mode 100644
index 3007e8715..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x1ffffffe + x32) - x62), ((0x1ffffffe + x33) - x63), ((0x1ffffffe + x31) - x61), ((0x1ffffffe + x29) - x59), ((0x1ffffffe + x27) - x57), ((0x1ffffffe + x25) - x55), ((0x1ffffffe + x23) - x53), ((0x1ffffffc + x21) - x51), ((0x1ffffffe + x19) - x49), ((0x1ffffffe + x17) - x47), ((0x1ffffffe + x15) - x45), ((0x1ffffffe + x13) - x43), ((0x1ffffffe + x11) - x41), ((0x1ffffffe + x9) - x39), ((0x1ffffffe + x7) - x37), ((0x1ffffffe + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.v b/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.v
deleted file mode 100644
index b654c61f0..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1/freeze.c b/src/Specific/solinas32_2e448m2e224m1/freeze.c
deleted file mode 100644
index 0763e4c18..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xfffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffffe);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xfffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0xfffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0xfffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0xfffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0xfffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0xfffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0xfffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0xfffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0xfffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0xffffffe);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0xfffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0xfffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0xfffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0xfffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0xfffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0xfffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0xfffffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e448m2e224m1/freeze.v b/src/Specific/solinas32_2e448m2e224m1/freeze.v
deleted file mode 100644
index eb3ef1bf0..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.log b/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.log
deleted file mode 100644
index bf5bf0738..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0xfffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0xffffffe);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0xfffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0xfffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0xfffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0xfffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0xfffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0xfffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0xfffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0xfffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0xfffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0xffffffe);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0xfffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0xfffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0xfffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0xfffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0xfffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0xfffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0xfffffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v b/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v
deleted file mode 100644
index ee1243ab2..000000000
--- a/src/Specific/solinas32_2e448m2e224m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e448m2e224m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1/CurveParameters.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/CurveParameters.v
index 7588e5dd1..7588e5dd1 100644
--- a/src/Specific/solinas32_2e448m2e224m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/Synthesis.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/Synthesis.v
new file mode 100644
index 000000000..5dfd986ec
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e448m2e224m1/compiler.sh b/src/Specific/solinas32_2e448m2e224m1_16limbs/compiler.sh
index cb052d76d..cb052d76d 100755
--- a/src/Specific/solinas32_2e448m2e224m1/compiler.sh
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e448m2e224m1/compilerxx.sh b/src/Specific/solinas32_2e448m2e224m1_16limbs/compilerxx.sh
index 451401798..451401798 100755
--- a/src/Specific/solinas32_2e448m2e224m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/feadd.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/feadd.v
new file mode 100644
index 000000000..f122d3754
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/feaddDisplay.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/feaddDisplay.v
new file mode 100644
index 000000000..43ca23445
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/femul.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/femul.v
new file mode 100644
index 000000000..8f2843ccf
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/femulDisplay.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/femulDisplay.v
new file mode 100644
index 000000000..d2f8196ec
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquare.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquare.v
new file mode 100644
index 000000000..b2566b3f8
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquareDisplay.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquareDisplay.v
new file mode 100644
index 000000000..044cffaeb
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/fesub.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesub.v
new file mode 100644
index 000000000..10e5b653c
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/fesubDisplay.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesubDisplay.v
new file mode 100644
index 000000000..e89f4ace2
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/freeze.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/freeze.v
new file mode 100644
index 000000000..2563bcf51
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1_16limbs/freezeDisplay.v b/src/Specific/solinas32_2e448m2e224m1_16limbs/freezeDisplay.v
new file mode 100644
index 000000000..b9938e4c0
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_16limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1/py_interpreter.sh b/src/Specific/solinas32_2e448m2e224m1_16limbs/py_interpreter.sh
index cc74503cd..cc74503cd 100755
--- a/src/Specific/solinas32_2e448m2e224m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e448m2e224m1_16limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/CurveParameters.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/CurveParameters.v
new file mode 100644
index 000000000..798ff2fd8
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^448 - 2^224 - 1
+Base: 24 + 8/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 24 + 8/9;
+ bitwidth := 32;
+ s := 2^448;
+ c := [(1, 1); (2^224, 1)];
+ carry_chains := Some [[8; 17]; [9; 0; 10; 1; 11; 2; 12; 3; 13; 4; 14; 5; 15; 6; 16; 7; 17; 8]; [9; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/Synthesis.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/Synthesis.v
new file mode 100644
index 000000000..0776324e3
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/compiler.sh b/src/Specific/solinas32_2e448m2e224m1_18limbs/compiler.sh
new file mode 100755
index 000000000..b7f6cf5cf
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1' "$@"
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/compilerxx.sh b/src/Specific/solinas32_2e448m2e224m1_18limbs/compilerxx.sh
new file mode 100755
index 000000000..b23f3742b
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1' "$@"
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/feadd.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/feadd.v
new file mode 100644
index 000000000..e3a109779
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..5f0724be0
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/femul.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/femul.v
new file mode 100644
index 000000000..defa12b92
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/femulDisplay.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/femulDisplay.v
new file mode 100644
index 000000000..59835a631
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquare.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquare.v
new file mode 100644
index 000000000..70d782290
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4ad694326
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/fesub.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesub.v
new file mode 100644
index 000000000..a1b14d9e8
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..fba73a28c
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/freeze.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/freeze.v
new file mode 100644
index 000000000..c170a826b
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e448m2e224m1_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..9744bc807
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e448m2e224m1_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e448m2e224m1_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e448m2e224m1_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..e8f045ff8
--- /dev/null
+++ b/src/Specific/solinas32_2e448m2e224m1_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**448 - 2**224 - 1' -Dmodulus_bytes='24 + 8/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v b/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v
deleted file mode 100644
index 052aeb36e..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^450 - 2^225 - 1
-Base: 30
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 15%nat;
- base := 30;
- bitwidth := 32;
- s := 2^450;
- c := [(1, 1); (2^225, 1)];
- carry_chains := Some [[6; 14]; [7; 0; 8; 1; 9; 2; 10; 3; 11; 4; 12; 5; 13; 6; 14]; [7; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := Some true;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e450m2e225m1/Synthesis.v b/src/Specific/solinas32_2e450m2e225m1/Synthesis.v
deleted file mode 100644
index ce52c3ac1..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e450m2e225m1/compiler.sh b/src/Specific/solinas32_2e450m2e225m1/compiler.sh
deleted file mode 100755
index c4f7ba34e..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1/compilerxx.sh b/src/Specific/solinas32_2e450m2e225m1/compilerxx.sh
deleted file mode 100755
index 4091b5c51..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='15' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1/feadd.c b/src/Specific/solinas32_2e450m2e225m1/feadd.c
deleted file mode 100644
index 72a59425b..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/feadd.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void feadd(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = (x5 + x33);
- out[1] = (x7 + x35);
- out[2] = (x9 + x37);
- out[3] = (x11 + x39);
- out[4] = (x13 + x41);
- out[5] = (x15 + x43);
- out[6] = (x17 + x45);
- out[7] = (x19 + x47);
- out[8] = (x21 + x49);
- out[9] = (x23 + x51);
- out[10] = (x25 + x53);
- out[11] = (x27 + x55);
- out[12] = (x29 + x57);
- out[13] = (x31 + x59);
- out[14] = (x30 + x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e450m2e225m1/feadd.v b/src/Specific/solinas32_2e450m2e225m1/feadd.v
deleted file mode 100644
index 1aa2110a0..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.log b/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.log
deleted file mode 100644
index 08d611628..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- ((x30 + x58), (x31 + x59), (x29 + x57), (x27 + x55), (x25 + x53), (x23 + x51), (x21 + x49), (x19 + x47), (x17 + x45), (x15 + x43), (x13 + x41), (x11 + x39), (x9 + x37), (x7 + x35), (x5 + x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.v b/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.v
deleted file mode 100644
index e851a9505..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e450m2e225m1/femul.v b/src/Specific/solinas32_2e450m2e225m1/femul.v
deleted file mode 100644
index f4a02c286..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v b/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v
deleted file mode 100644
index dfebb09ef..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesquare.v b/src/Specific/solinas32_2e450m2e225m1/fesquare.v
deleted file mode 100644
index cf1257fb8..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v b/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v
deleted file mode 100644
index 77a35fc93..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesub.c b/src/Specific/solinas32_2e450m2e225m1/fesub.c
deleted file mode 100644
index 8e3a1a1bd..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesub.c
+++ /dev/null
@@ -1,48 +0,0 @@
-static void fesub(uint32_t out[15], const uint32_t in1[15], const uint32_t in2[15]) {
- { const uint32_t x30 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x58 = in2[14];
- { const uint32_t x59 = in2[13];
- { const uint32_t x57 = in2[12];
- { const uint32_t x55 = in2[11];
- { const uint32_t x53 = in2[10];
- { const uint32_t x51 = in2[9];
- { const uint32_t x49 = in2[8];
- { const uint32_t x47 = in2[7];
- { const uint32_t x45 = in2[6];
- { const uint32_t x43 = in2[5];
- { const uint32_t x41 = in2[4];
- { const uint32_t x39 = in2[3];
- { const uint32_t x37 = in2[2];
- { const uint32_t x35 = in2[1];
- { const uint32_t x33 = in2[0];
- out[0] = ((0x7ffffffe + x5) - x33);
- out[1] = ((0x7ffffffe + x7) - x35);
- out[2] = ((0x7ffffffe + x9) - x37);
- out[3] = ((0x7ffffffe + x11) - x39);
- out[4] = ((0x7ffffffe + x13) - x41);
- out[5] = ((0x7ffffffe + x15) - x43);
- out[6] = ((0x7ffffffe + x17) - x45);
- out[7] = ((0x7ffefffe + x19) - x47);
- out[8] = ((0x7ffffffe + x21) - x49);
- out[9] = ((0x7ffffffe + x23) - x51);
- out[10] = ((0x7ffffffe + x25) - x53);
- out[11] = ((0x7ffffffe + x27) - x55);
- out[12] = ((0x7ffffffe + x29) - x57);
- out[13] = ((0x7ffffffe + x31) - x59);
- out[14] = ((0x7ffffffe + x30) - x58);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesub.v b/src/Specific/solinas32_2e450m2e225m1/fesub.v
deleted file mode 100644
index 8ee3b5de2..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.log b/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.log
deleted file mode 100644
index 3c008ef9a..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x30, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x58, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33))%core,
- (((0x7ffffffe + x30) - x58), ((0x7ffffffe + x31) - x59), ((0x7ffffffe + x29) - x57), ((0x7ffffffe + x27) - x55), ((0x7ffffffe + x25) - x53), ((0x7ffffffe + x23) - x51), ((0x7ffffffe + x21) - x49), ((0x7ffefffe + x19) - x47), ((0x7ffffffe + x17) - x45), ((0x7ffffffe + x15) - x43), ((0x7ffffffe + x13) - x41), ((0x7ffffffe + x11) - x39), ((0x7ffffffe + x9) - x37), ((0x7ffffffe + x7) - x35), ((0x7ffffffe + x5) - x33)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.v b/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.v
deleted file mode 100644
index 57c4bca09..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1/freeze.c b/src/Specific/solinas32_2e450m2e225m1/freeze.c
deleted file mode 100644
index 23dc8d036..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/freeze.c
+++ /dev/null
@@ -1,79 +0,0 @@
-static void freeze(uint32_t out[15], const uint32_t in1[15]) {
- { const uint32_t x27 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffff);
- { uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x3fffffff);
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x3fffffff);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3fffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x3fffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x3fffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x3fffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3fff7fff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x3fffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x3fffffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x3fffffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3fffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x3fffffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x3fffffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x3fffffff);
- { uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- { uint32_t x75 = (x74 & 0x3fffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- { uint32_t x79 = (x74 & 0x3fffffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- { uint32_t x83 = (x74 & 0x3fffffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- { uint32_t x87 = (x74 & 0x3fffffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- { uint32_t x91 = (x74 & 0x3fffffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- { uint32_t x95 = (x74 & 0x3fffffff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- { uint32_t x99 = (x74 & 0x3fffffff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- { uint32_t x103 = (x74 & 0x3fff7fff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- { uint32_t x107 = (x74 & 0x3fffffff);
- { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- { uint32_t x111 = (x74 & 0x3fffffff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- { uint32_t x115 = (x74 & 0x3fffffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- { uint32_t x119 = (x74 & 0x3fffffff);
- { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- { uint32_t x123 = (x74 & 0x3fffffff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- { uint32_t x127 = (x74 & 0x3fffffff);
- { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- { uint32_t x131 = (x74 & 0x3fffffff);
- { uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- out[0] = x77;
- out[1] = x81;
- out[2] = x85;
- out[3] = x89;
- out[4] = x93;
- out[5] = x97;
- out[6] = x101;
- out[7] = x105;
- out[8] = x109;
- out[9] = x113;
- out[10] = x117;
- out[11] = x121;
- out[12] = x125;
- out[13] = x129;
- out[14] = x133;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e450m2e225m1/freeze.v b/src/Specific/solinas32_2e450m2e225m1/freeze.v
deleted file mode 100644
index bc7af4d8b..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.log b/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.log
deleted file mode 100644
index 21b0031fb..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.log
+++ /dev/null
@@ -1,53 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x27, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffff);
- uint32_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x31, Return x4, 0x3fffffff);
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x34, Return x6, 0x3fffffff);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x8, 0x3fffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x10, 0x3fffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x12, 0x3fffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x14, 0x3fffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x16, 0x3fff7fff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x18, 0x3fffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x20, 0x3fffffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x22, 0x3fffffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x24, 0x3fffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x26, 0x3fffffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x28, 0x3fffffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x27, 0x3fffffff);
- uint32_t x74 = cmovznz32(x73, 0x0, 0xffffffff);
- uint32_t x75 = (x74 & 0x3fffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x30, Return x75);
- uint32_t x79 = (x74 & 0x3fffffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x33, Return x79);
- uint32_t x83 = (x74 & 0x3fffffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x36, Return x83);
- uint32_t x87 = (x74 & 0x3fffffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x39, Return x87);
- uint32_t x91 = (x74 & 0x3fffffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x42, Return x91);
- uint32_t x95 = (x74 & 0x3fffffff);
- uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x45, Return x95);
- uint32_t x99 = (x74 & 0x3fffffff);
- uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x48, Return x99);
- uint32_t x103 = (x74 & 0x3fff7fff);
- uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x51, Return x103);
- uint32_t x107 = (x74 & 0x3fffffff);
- uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x54, Return x107);
- uint32_t x111 = (x74 & 0x3fffffff);
- uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x57, Return x111);
- uint32_t x115 = (x74 & 0x3fffffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x60, Return x115);
- uint32_t x119 = (x74 & 0x3fffffff);
- uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x63, Return x119);
- uint32_t x123 = (x74 & 0x3fffffff);
- uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x66, Return x123);
- uint32_t x127 = (x74 & 0x3fffffff);
- uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x69, Return x127);
- uint32_t x131 = (x74 & 0x3fffffff);
- uint32_t x133, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x72, Return x131);
- (Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97, Return x93, Return x89, Return x85, Return x81, Return x77))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v b/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v
deleted file mode 100644
index 1c562b719..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e450m2e225m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1/py_interpreter.sh b/src/Specific/solinas32_2e450m2e225m1/py_interpreter.sh
deleted file mode 100755
index 7e650efa4..000000000
--- a/src/Specific/solinas32_2e450m2e225m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**450 - 2**225 - 1' -Dmodulus_bytes='30' -Da24='121665'
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/CurveParameters.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/CurveParameters.v
new file mode 100644
index 000000000..56065b02c
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^450 - 2^225 - 1
+Base: 25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 25;
+ bitwidth := 32;
+ s := 2^450;
+ c := [(1, 1); (2^225, 1)];
+ carry_chains := Some [[8; 17]; [9; 0; 10; 1; 11; 2; 12; 3; 13; 4; 14; 5; 15; 6; 16; 7; 17; 8]; [9; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/Synthesis.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/Synthesis.v
new file mode 100644
index 000000000..ef78c8682
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/compiler.sh b/src/Specific/solinas32_2e450m2e225m1_18limbs/compiler.sh
new file mode 100755
index 000000000..4c42af10b
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/compilerxx.sh b/src/Specific/solinas32_2e450m2e225m1_18limbs/compilerxx.sh
new file mode 100755
index 000000000..6a79b3372
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/feadd.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/feadd.v
new file mode 100644
index 000000000..85331b83b
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..cb9e4b1f7
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/femul.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/femul.v
new file mode 100644
index 000000000..6dbfa959b
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/femulDisplay.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/femulDisplay.v
new file mode 100644
index 000000000..afd61db70
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquare.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquare.v
new file mode 100644
index 000000000..131550cf2
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b96996a46
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/fesub.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesub.v
new file mode 100644
index 000000000..185414f1f
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..4c87b9c94
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/freeze.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/freeze.v
new file mode 100644
index 000000000..cb8efbb4b
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e450m2e225m1_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..02926153c
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e450m2e225m1_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..a8276b1a3
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**450 - 2**225 - 1' -Dmodulus_bytes='25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/CurveParameters.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/CurveParameters.v
new file mode 100644
index 000000000..5dd10bdcd
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^450 - 2^225 - 1
+Base: 22.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 20%nat;
+ base := 22 + 1/2;
+ bitwidth := 32;
+ s := 2^450;
+ c := [(1, 1); (2^225, 1)];
+ carry_chains := Some [[9; 19]; [10; 0; 11; 1; 12; 2; 13; 3; 14; 4; 15; 5; 16; 6; 17; 7; 18; 8; 19; 9]; [10; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/Synthesis.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/Synthesis.v
new file mode 100644
index 000000000..e8edfe4fc
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/compiler.sh b/src/Specific/solinas32_2e450m2e225m1_20limbs/compiler.sh
new file mode 100755
index 000000000..656600b1b
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/compilerxx.sh b/src/Specific/solinas32_2e450m2e225m1_20limbs/compilerxx.sh
new file mode 100755
index 000000000..253a2a134
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/feadd.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/feadd.v
new file mode 100644
index 000000000..2a542e1d8
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..df7f7b477
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/femul.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/femul.v
new file mode 100644
index 000000000..6b09c1bc8
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/femulDisplay.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/femulDisplay.v
new file mode 100644
index 000000000..5cb523d55
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquare.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquare.v
new file mode 100644
index 000000000..30e0062a1
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..505034b8d
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/fesub.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesub.v
new file mode 100644
index 000000000..be6f22593
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..cb404e986
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/freeze.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/freeze.v
new file mode 100644
index 000000000..38d438a36
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e450m2e225m1_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..eb0eb0cdd
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e450m2e225m1_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e450m2e225m1_20limbs/py_interpreter.sh b/src/Specific/solinas32_2e450m2e225m1_20limbs/py_interpreter.sh
new file mode 100755
index 000000000..7d162026d
--- /dev/null
+++ b/src/Specific/solinas32_2e450m2e225m1_20limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**450 - 2**225 - 1' -Dmodulus_bytes='22.5' -Da24='121665'
diff --git a/src/Specific/solinas32_2e452m3/CurveParameters.v b/src/Specific/solinas32_2e452m3/CurveParameters.v
deleted file mode 100644
index c876bc5bb..000000000
--- a/src/Specific/solinas32_2e452m3/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^452 - 3
-Base: 28.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 28 + 1/4;
- bitwidth := 32;
- s := 2^452;
- c := [(1, 3)];
- carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e452m3/Synthesis.v b/src/Specific/solinas32_2e452m3/Synthesis.v
deleted file mode 100644
index 4a5c260ad..000000000
--- a/src/Specific/solinas32_2e452m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e452m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e452m3/compiler.sh b/src/Specific/solinas32_2e452m3/compiler.sh
deleted file mode 100755
index 5594eb7d1..000000000
--- a/src/Specific/solinas32_2e452m3/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,28,29,28,28,28,29,28,28,28,29,28,28,28}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3/compilerxx.sh b/src/Specific/solinas32_2e452m3/compilerxx.sh
deleted file mode 100755
index c159bcffc..000000000
--- a/src/Specific/solinas32_2e452m3/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{29,28,28,28,29,28,28,28,29,28,28,28,29,28,28,28}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3/feadd.c b/src/Specific/solinas32_2e452m3/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e452m3/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e452m3/feadd.v b/src/Specific/solinas32_2e452m3/feadd.v
deleted file mode 100644
index 978ee47bb..000000000
--- a/src/Specific/solinas32_2e452m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e452m3/feaddDisplay.log b/src/Specific/solinas32_2e452m3/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e452m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e452m3/feaddDisplay.v b/src/Specific/solinas32_2e452m3/feaddDisplay.v
deleted file mode 100644
index d7e32d5a6..000000000
--- a/src/Specific/solinas32_2e452m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e452m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e452m3/femul.c b/src/Specific/solinas32_2e452m3/femul.c
deleted file mode 100644
index 97c535118..000000000
--- a/src/Specific/solinas32_2e452m3/femul.c
+++ /dev/null
@@ -1,120 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { ℤ x64 = (((uint64_t)x5 * x62) +ℤ ((0x2 * ((uint64_t)x7 * x63)) +ℤ ((0x2 * ((uint64_t)x9 * x61)) +ℤ (((uint64_t)x11 * x59) +ℤ (((uint64_t)x13 * x57) +ℤ ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- { ℤ x65 = ((((uint64_t)x5 * x63) +ℤ ((0x2 * ((uint64_t)x7 * x61)) +ℤ (((uint64_t)x9 * x59) +ℤ (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) +ℤ (0x3 * ((uint64_t)x32 * x62)));
- { ℤ x66 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x31 * x35)))))))))))))) +ℤ (0x3 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- { ℤ x67 = ((((uint64_t)x5 * x59) +ℤ ((0x2 * ((uint64_t)x7 * x57)) +ℤ ((0x2 * ((uint64_t)x9 * x55)) +ℤ ((0x2 * ((uint64_t)x11 * x53)) +ℤ (((uint64_t)x13 * x51) +ℤ ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) +ℤ (0x3 * ((0x2 * ((uint64_t)x31 * x62)) + ((0x2 * ((uint64_t)x33 * x63)) + (0x2 * ((uint64_t)x32 * x61))))));
- { ℤ x68 = ((((uint64_t)x5 * x57) +ℤ ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x29 * x62) + ((0x2 * ((uint64_t)x31 * x63)) + ((0x2 * ((uint64_t)x33 * x61)) + ((uint64_t)x32 * x59))))));
- { ℤ x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- { ℤ x70 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x23 * x35)))))))))) +ℤ (0x3 *ℤ (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- { ℤ x71 = ((((uint64_t)x5 * x51) +ℤ ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x23 * x62)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + (((uint64_t)x29 * x59) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + (0x2 * ((uint64_t)x32 * x53))))))))));
- { ℤ x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) +ℤ (0x3 *ℤ (((uint64_t)x21 * x62) + ((0x2 * ((uint64_t)x23 * x63)) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((uint64_t)x32 * x51))))))))));
- { ℤ x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) +ℤ (0x3 *ℤ (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + ((0x2 * ((uint64_t)x23 * x61)) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- { ℤ x74 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) +ℤ (0x3 *ℤ (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- { ℤ x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x15 * x62)) +ℤ ((0x2 * ((uint64_t)x17 * x63)) +ℤ ((0x2 * ((uint64_t)x19 * x61)) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + (0x2 * ((uint64_t)x32 * x45))))))))))))));
- { ℤ x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x62) +ℤ ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x32 * x43))))))))))))));
- { ℤ x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((0x2 * ((uint64_t)x31 * x45)) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- { ℤ x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- { ℤ x79 = (((uint64_t)x5 * x35) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x7 * x62)) +ℤ ((0x2 * ((uint64_t)x9 * x63)) +ℤ ((0x2 * ((uint64_t)x11 * x61)) +ℤ (((uint64_t)x13 * x59) +ℤ ((0x2 * ((uint64_t)x15 * x57)) +ℤ ((0x2 * ((uint64_t)x17 * x55)) +ℤ ((0x2 * ((uint64_t)x19 * x53)) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + (((uint64_t)x29 * x43) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- { uint64_t x80 = (x79 >> 0x1d);
- { uint32_t x81 = (x79 & 0x1fffffff);
- { ℤ x82 = (x80 +ℤ x78);
- { uint64_t x83 = (x82 >> 0x1c);
- { uint32_t x84 = (x82 & 0xfffffff);
- { ℤ x85 = (x83 +ℤ x77);
- { uint64_t x86 = (x85 >> 0x1c);
- { uint32_t x87 = (x85 & 0xfffffff);
- { ℤ x88 = (x86 +ℤ x76);
- { uint64_t x89 = (x88 >> 0x1c);
- { uint32_t x90 = (x88 & 0xfffffff);
- { ℤ x91 = (x89 +ℤ x75);
- { uint64_t x92 = (x91 >> 0x1d);
- { uint32_t x93 = (x91 & 0x1fffffff);
- { ℤ x94 = (x92 +ℤ x74);
- { uint64_t x95 = (x94 >> 0x1c);
- { uint32_t x96 = (x94 & 0xfffffff);
- { ℤ x97 = (x95 +ℤ x73);
- { uint64_t x98 = (x97 >> 0x1c);
- { uint32_t x99 = (x97 & 0xfffffff);
- { ℤ x100 = (x98 +ℤ x72);
- { uint64_t x101 = (x100 >> 0x1c);
- { uint32_t x102 = (x100 & 0xfffffff);
- { ℤ x103 = (x101 +ℤ x71);
- { uint64_t x104 = (x103 >> 0x1d);
- { uint32_t x105 = (x103 & 0x1fffffff);
- { ℤ x106 = (x104 +ℤ x70);
- { uint64_t x107 = (x106 >> 0x1c);
- { uint32_t x108 = (x106 & 0xfffffff);
- { ℤ x109 = (x107 +ℤ x69);
- { uint64_t x110 = (x109 >> 0x1c);
- { uint32_t x111 = (x109 & 0xfffffff);
- { ℤ x112 = (x110 +ℤ x68);
- { uint64_t x113 = (x112 >> 0x1c);
- { uint32_t x114 = (x112 & 0xfffffff);
- { ℤ x115 = (x113 +ℤ x67);
- { uint64_t x116 = (x115 >> 0x1d);
- { uint32_t x117 = (x115 & 0x1fffffff);
- { ℤ x118 = (x116 +ℤ x66);
- { uint64_t x119 = (x118 >> 0x1c);
- { uint32_t x120 = (x118 & 0xfffffff);
- { ℤ x121 = (x119 +ℤ x65);
- { uint64_t x122 = (x121 >> 0x1c);
- { uint32_t x123 = (x121 & 0xfffffff);
- { ℤ x124 = (x122 +ℤ x64);
- { uint64_t x125 = (x124 >> 0x1c);
- { uint32_t x126 = (x124 & 0xfffffff);
- { uint64_t x127 = (x81 + (0x3 * x125));
- { uint32_t x128 = (uint32_t) (x127 >> 0x1d);
- { uint32_t x129 = ((uint32_t)x127 & 0x1fffffff);
- { uint32_t x130 = (x128 + x84);
- { uint32_t x131 = (x130 >> 0x1c);
- { uint32_t x132 = (x130 & 0xfffffff);
- out[0] = x129;
- out[1] = x132;
- out[2] = (x131 + x87);
- out[3] = x90;
- out[4] = x93;
- out[5] = x96;
- out[6] = x99;
- out[7] = x102;
- out[8] = x105;
- out[9] = x108;
- out[10] = x111;
- out[11] = x114;
- out[12] = x117;
- out[13] = x120;
- out[14] = x123;
- out[15] = x126;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e452m3/femul.v b/src/Specific/solinas32_2e452m3/femul.v
deleted file mode 100644
index 083ec02dc..000000000
--- a/src/Specific/solinas32_2e452m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e452m3/femulDisplay.log b/src/Specific/solinas32_2e452m3/femulDisplay.log
deleted file mode 100644
index ef1ce0740..000000000
--- a/src/Specific/solinas32_2e452m3/femulDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ℤ x64 = (((uint64_t)x5 * x62) +ℤ ((0x2 * ((uint64_t)x7 * x63)) +ℤ ((0x2 * ((uint64_t)x9 * x61)) +ℤ (((uint64_t)x11 * x59) +ℤ (((uint64_t)x13 * x57) +ℤ ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((0x2 * ((uint64_t)x31 * x39)) + ((0x2 * ((uint64_t)x33 * x37)) + ((uint64_t)x32 * x35))))))))))))))));
- ℤ x65 = ((((uint64_t)x5 * x63) +ℤ ((0x2 * ((uint64_t)x7 * x61)) +ℤ (((uint64_t)x9 * x59) +ℤ (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((0x2 * ((uint64_t)x23 * x45)) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + (((uint64_t)x29 * x39) + ((0x2 * ((uint64_t)x31 * x37)) + ((uint64_t)x33 * x35))))))))))))))) +ℤ (0x3 * ((uint64_t)x32 * x62)));
- ℤ x66 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + (((uint64_t)x27 * x39) + (((uint64_t)x29 * x37) + ((uint64_t)x31 * x35)))))))))))))) +ℤ (0x3 * (((uint64_t)x33 * x62) + ((uint64_t)x32 * x63))));
- ℤ x67 = ((((uint64_t)x5 * x59) +ℤ ((0x2 * ((uint64_t)x7 * x57)) +ℤ ((0x2 * ((uint64_t)x9 * x55)) +ℤ ((0x2 * ((uint64_t)x11 * x53)) +ℤ (((uint64_t)x13 * x51) +ℤ ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + (((uint64_t)x21 * x43) + ((0x2 * ((uint64_t)x23 * x41)) + ((0x2 * ((uint64_t)x25 * x39)) + ((0x2 * ((uint64_t)x27 * x37)) + ((uint64_t)x29 * x35))))))))))))) +ℤ (0x3 * ((0x2 * ((uint64_t)x31 * x62)) + ((0x2 * ((uint64_t)x33 * x63)) + (0x2 * ((uint64_t)x32 * x61))))));
- ℤ x68 = ((((uint64_t)x5 * x57) +ℤ ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((0x2 * ((uint64_t)x23 * x39)) + ((0x2 * ((uint64_t)x25 * x37)) + ((uint64_t)x27 * x35)))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x29 * x62) + ((0x2 * ((uint64_t)x31 * x63)) + ((0x2 * ((uint64_t)x33 * x61)) + ((uint64_t)x32 * x59))))));
- ℤ x69 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + ((0x2 * ((uint64_t)x15 * x45)) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + (((uint64_t)x21 * x39) + ((0x2 * ((uint64_t)x23 * x37)) + ((uint64_t)x25 * x35))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x27 * x62) + (((uint64_t)x29 * x63) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((uint64_t)x32 * x57)))))));
- ℤ x70 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + (((uint64_t)x19 * x39) + (((uint64_t)x21 * x37) + ((uint64_t)x23 * x35)))))))))) +ℤ (0x3 *ℤ (((uint64_t)x25 * x62) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + ((uint64_t)x32 * x55))))))));
- ℤ x71 = ((((uint64_t)x5 * x51) +ℤ ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + (((uint64_t)x13 * x43) + ((0x2 * ((uint64_t)x15 * x41)) + ((0x2 * ((uint64_t)x17 * x39)) + ((0x2 * ((uint64_t)x19 * x37)) + ((uint64_t)x21 * x35))))))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x23 * x62)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + (((uint64_t)x29 * x59) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + (0x2 * ((uint64_t)x32 * x53))))))))));
- ℤ x72 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((0x2 * ((uint64_t)x15 * x39)) + ((0x2 * ((uint64_t)x17 * x37)) + ((uint64_t)x19 * x35)))))))) +ℤ (0x3 *ℤ (((uint64_t)x21 * x62) + ((0x2 * ((uint64_t)x23 * x63)) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((uint64_t)x32 * x51))))))))));
- ℤ x73 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + (((uint64_t)x13 * x39) + ((0x2 * ((uint64_t)x15 * x37)) + ((uint64_t)x17 * x35))))))) +ℤ (0x3 *ℤ (((uint64_t)x19 * x62) + (((uint64_t)x21 * x63) + ((0x2 * ((uint64_t)x23 * x61)) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + ((uint64_t)x32 * x49)))))))))));
- ℤ x74 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + (((uint64_t)x11 * x39) + (((uint64_t)x13 * x37) + ((uint64_t)x15 * x35)))))) +ℤ (0x3 *ℤ (((uint64_t)x17 * x62) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + ((uint64_t)x32 * x47))))))))))));
- ℤ x75 = ((((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x41)) + ((0x2 * ((uint64_t)x9 * x39)) + ((0x2 * ((uint64_t)x11 * x37)) + ((uint64_t)x13 * x35))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x15 * x62)) +ℤ ((0x2 * ((uint64_t)x17 * x63)) +ℤ ((0x2 * ((uint64_t)x19 * x61)) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + (0x2 * ((uint64_t)x32 * x45))))))))))))));
- ℤ x76 = ((((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x39)) + ((0x2 * ((uint64_t)x9 * x37)) + ((uint64_t)x11 * x35)))) +ℤ (0x3 *ℤ (((uint64_t)x13 * x62) +ℤ ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x32 * x43))))))))))))));
- ℤ x77 = ((((uint64_t)x5 * x39) + ((0x2 * ((uint64_t)x7 * x37)) + ((uint64_t)x9 * x35))) +ℤ (0x3 *ℤ (((uint64_t)x11 * x62) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + ((0x2 * ((uint64_t)x31 * x45)) + (((uint64_t)x33 * x43) + ((uint64_t)x32 * x41)))))))))))))));
- ℤ x78 = ((((uint64_t)x5 * x37) + ((uint64_t)x7 * x35)) +ℤ (0x3 *ℤ (((uint64_t)x9 * x62) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x32 * x39))))))))))))))));
- ℤ x79 = (((uint64_t)x5 * x35) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x7 * x62)) +ℤ ((0x2 * ((uint64_t)x9 * x63)) +ℤ ((0x2 * ((uint64_t)x11 * x61)) +ℤ (((uint64_t)x13 * x59) +ℤ ((0x2 * ((uint64_t)x15 * x57)) +ℤ ((0x2 * ((uint64_t)x17 * x55)) +ℤ ((0x2 * ((uint64_t)x19 * x53)) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + (((uint64_t)x29 * x43) + ((0x2 * ((uint64_t)x31 * x41)) + ((0x2 * ((uint64_t)x33 * x39)) + (0x2 * ((uint64_t)x32 * x37))))))))))))))))));
- uint64_t x80 = (x79 >> 0x1d);
- uint32_t x81 = (x79 & 0x1fffffff);
- ℤ x82 = (x80 +ℤ x78);
- uint64_t x83 = (x82 >> 0x1c);
- uint32_t x84 = (x82 & 0xfffffff);
- ℤ x85 = (x83 +ℤ x77);
- uint64_t x86 = (x85 >> 0x1c);
- uint32_t x87 = (x85 & 0xfffffff);
- ℤ x88 = (x86 +ℤ x76);
- uint64_t x89 = (x88 >> 0x1c);
- uint32_t x90 = (x88 & 0xfffffff);
- ℤ x91 = (x89 +ℤ x75);
- uint64_t x92 = (x91 >> 0x1d);
- uint32_t x93 = (x91 & 0x1fffffff);
- ℤ x94 = (x92 +ℤ x74);
- uint64_t x95 = (x94 >> 0x1c);
- uint32_t x96 = (x94 & 0xfffffff);
- ℤ x97 = (x95 +ℤ x73);
- uint64_t x98 = (x97 >> 0x1c);
- uint32_t x99 = (x97 & 0xfffffff);
- ℤ x100 = (x98 +ℤ x72);
- uint64_t x101 = (x100 >> 0x1c);
- uint32_t x102 = (x100 & 0xfffffff);
- ℤ x103 = (x101 +ℤ x71);
- uint64_t x104 = (x103 >> 0x1d);
- uint32_t x105 = (x103 & 0x1fffffff);
- ℤ x106 = (x104 +ℤ x70);
- uint64_t x107 = (x106 >> 0x1c);
- uint32_t x108 = (x106 & 0xfffffff);
- ℤ x109 = (x107 +ℤ x69);
- uint64_t x110 = (x109 >> 0x1c);
- uint32_t x111 = (x109 & 0xfffffff);
- ℤ x112 = (x110 +ℤ x68);
- uint64_t x113 = (x112 >> 0x1c);
- uint32_t x114 = (x112 & 0xfffffff);
- ℤ x115 = (x113 +ℤ x67);
- uint64_t x116 = (x115 >> 0x1d);
- uint32_t x117 = (x115 & 0x1fffffff);
- ℤ x118 = (x116 +ℤ x66);
- uint64_t x119 = (x118 >> 0x1c);
- uint32_t x120 = (x118 & 0xfffffff);
- ℤ x121 = (x119 +ℤ x65);
- uint64_t x122 = (x121 >> 0x1c);
- uint32_t x123 = (x121 & 0xfffffff);
- ℤ x124 = (x122 +ℤ x64);
- uint64_t x125 = (x124 >> 0x1c);
- uint32_t x126 = (x124 & 0xfffffff);
- uint64_t x127 = (x81 + (0x3 * x125));
- uint32_t x128 = (uint32_t) (x127 >> 0x1d);
- uint32_t x129 = ((uint32_t)x127 & 0x1fffffff);
- uint32_t x130 = (x128 + x84);
- uint32_t x131 = (x130 >> 0x1c);
- uint32_t x132 = (x130 & 0xfffffff);
- return (Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, (x131 + x87), Return x132, Return x129))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e452m3/femulDisplay.v b/src/Specific/solinas32_2e452m3/femulDisplay.v
deleted file mode 100644
index ec8700b70..000000000
--- a/src/Specific/solinas32_2e452m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e452m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e452m3/fesquare.c b/src/Specific/solinas32_2e452m3/fesquare.c
deleted file mode 100644
index 60b1933ab..000000000
--- a/src/Specific/solinas32_2e452m3/fesquare.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { ℤ x31 = (((uint64_t)x2 * x29) +ℤ ((0x2 * ((uint64_t)x4 * x30)) +ℤ ((0x2 * ((uint64_t)x6 * x28)) +ℤ (((uint64_t)x8 * x26) +ℤ (((uint64_t)x10 * x24) +ℤ ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- { ℤ x32 = ((((uint64_t)x2 * x30) +ℤ ((0x2 * ((uint64_t)x4 * x28)) +ℤ (((uint64_t)x6 * x26) +ℤ (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) +ℤ (0x3 * ((uint64_t)x29 * x29)));
- { ℤ x33 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) +ℤ (0x3 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- { ℤ x34 = ((((uint64_t)x2 * x26) +ℤ ((0x2 * ((uint64_t)x4 * x24)) +ℤ ((0x2 * ((uint64_t)x6 * x22)) +ℤ ((0x2 * ((uint64_t)x8 * x20)) +ℤ (((uint64_t)x10 * x18) +ℤ ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) +ℤ (0x3 * ((0x2 * ((uint64_t)x28 * x29)) + ((0x2 * ((uint64_t)x30 * x30)) + (0x2 * ((uint64_t)x29 * x28))))));
- { ℤ x35 = ((((uint64_t)x2 * x24) +ℤ ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x26 * x29) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + ((uint64_t)x29 * x26))))));
- { ℤ x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- { ℤ x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) +ℤ (0x3 *ℤ (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- { ℤ x38 = ((((uint64_t)x2 * x18) +ℤ ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x20 * x29)) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (0x2 * ((uint64_t)x29 * x20))))))))));
- { ℤ x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) +ℤ (0x3 *ℤ (((uint64_t)x18 * x29) + ((0x2 * ((uint64_t)x20 * x30)) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + ((0x2 * ((uint64_t)x30 * x20)) + ((uint64_t)x29 * x18))))))))));
- { ℤ x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (0x3 *ℤ (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + ((0x2 * ((uint64_t)x20 * x28)) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((0x2 * ((uint64_t)x28 * x20)) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- { ℤ x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ (0x3 *ℤ (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- { ℤ x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x12 * x29)) +ℤ ((0x2 * ((uint64_t)x14 * x30)) +ℤ ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
- { ℤ x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x29) +ℤ ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((uint64_t)x29 * x10))))))))))))));
- { ℤ x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- { ℤ x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- { ℤ x46 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x4 * x29)) +ℤ ((0x2 * ((uint64_t)x6 * x30)) +ℤ ((0x2 * ((uint64_t)x8 * x28)) +ℤ (((uint64_t)x10 * x26) +ℤ ((0x2 * ((uint64_t)x12 * x24)) +ℤ ((0x2 * ((uint64_t)x14 * x22)) +ℤ ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (((uint64_t)x26 * x10) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- { uint64_t x47 = (x46 >> 0x1d);
- { uint32_t x48 = (x46 & 0x1fffffff);
- { ℤ x49 = (x47 +ℤ x45);
- { uint64_t x50 = (x49 >> 0x1c);
- { uint32_t x51 = (x49 & 0xfffffff);
- { ℤ x52 = (x50 +ℤ x44);
- { uint64_t x53 = (x52 >> 0x1c);
- { uint32_t x54 = (x52 & 0xfffffff);
- { ℤ x55 = (x53 +ℤ x43);
- { uint64_t x56 = (x55 >> 0x1c);
- { uint32_t x57 = (x55 & 0xfffffff);
- { ℤ x58 = (x56 +ℤ x42);
- { uint64_t x59 = (x58 >> 0x1d);
- { uint32_t x60 = (x58 & 0x1fffffff);
- { ℤ x61 = (x59 +ℤ x41);
- { uint64_t x62 = (x61 >> 0x1c);
- { uint32_t x63 = (x61 & 0xfffffff);
- { ℤ x64 = (x62 +ℤ x40);
- { uint64_t x65 = (x64 >> 0x1c);
- { uint32_t x66 = (x64 & 0xfffffff);
- { ℤ x67 = (x65 +ℤ x39);
- { uint64_t x68 = (x67 >> 0x1c);
- { uint32_t x69 = (x67 & 0xfffffff);
- { ℤ x70 = (x68 +ℤ x38);
- { uint64_t x71 = (x70 >> 0x1d);
- { uint32_t x72 = (x70 & 0x1fffffff);
- { ℤ x73 = (x71 +ℤ x37);
- { uint64_t x74 = (x73 >> 0x1c);
- { uint32_t x75 = (x73 & 0xfffffff);
- { ℤ x76 = (x74 +ℤ x36);
- { uint64_t x77 = (x76 >> 0x1c);
- { uint32_t x78 = (x76 & 0xfffffff);
- { ℤ x79 = (x77 +ℤ x35);
- { uint64_t x80 = (x79 >> 0x1c);
- { uint32_t x81 = (x79 & 0xfffffff);
- { ℤ x82 = (x80 +ℤ x34);
- { uint64_t x83 = (x82 >> 0x1d);
- { uint32_t x84 = (x82 & 0x1fffffff);
- { ℤ x85 = (x83 +ℤ x33);
- { uint64_t x86 = (x85 >> 0x1c);
- { uint32_t x87 = (x85 & 0xfffffff);
- { ℤ x88 = (x86 +ℤ x32);
- { uint64_t x89 = (x88 >> 0x1c);
- { uint32_t x90 = (x88 & 0xfffffff);
- { ℤ x91 = (x89 +ℤ x31);
- { uint64_t x92 = (x91 >> 0x1c);
- { uint32_t x93 = (x91 & 0xfffffff);
- { uint64_t x94 = (x48 + (0x3 * x92));
- { uint32_t x95 = (uint32_t) (x94 >> 0x1d);
- { uint32_t x96 = ((uint32_t)x94 & 0x1fffffff);
- { uint32_t x97 = (x95 + x51);
- { uint32_t x98 = (x97 >> 0x1c);
- { uint32_t x99 = (x97 & 0xfffffff);
- out[0] = x96;
- out[1] = x99;
- out[2] = (x98 + x54);
- out[3] = x57;
- out[4] = x60;
- out[5] = x63;
- out[6] = x66;
- out[7] = x69;
- out[8] = x72;
- out[9] = x75;
- out[10] = x78;
- out[11] = x81;
- out[12] = x84;
- out[13] = x87;
- out[14] = x90;
- out[15] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e452m3/fesquare.v b/src/Specific/solinas32_2e452m3/fesquare.v
deleted file mode 100644
index 9355341ce..000000000
--- a/src/Specific/solinas32_2e452m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e452m3/fesquareDisplay.log b/src/Specific/solinas32_2e452m3/fesquareDisplay.log
deleted file mode 100644
index b85722267..000000000
--- a/src/Specific/solinas32_2e452m3/fesquareDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- ℤ x31 = (((uint64_t)x2 * x29) +ℤ ((0x2 * ((uint64_t)x4 * x30)) +ℤ ((0x2 * ((uint64_t)x6 * x28)) +ℤ (((uint64_t)x8 * x26) +ℤ (((uint64_t)x10 * x24) +ℤ ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x29 * x2))))))))))))))));
- ℤ x32 = ((((uint64_t)x2 * x30) +ℤ ((0x2 * ((uint64_t)x4 * x28)) +ℤ (((uint64_t)x6 * x26) +ℤ (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) +ℤ (0x3 * ((uint64_t)x29 * x29)));
- ℤ x33 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) +ℤ (0x3 * (((uint64_t)x30 * x29) + ((uint64_t)x29 * x30))));
- ℤ x34 = ((((uint64_t)x2 * x26) +ℤ ((0x2 * ((uint64_t)x4 * x24)) +ℤ ((0x2 * ((uint64_t)x6 * x22)) +ℤ ((0x2 * ((uint64_t)x8 * x20)) +ℤ (((uint64_t)x10 * x18) +ℤ ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) +ℤ (0x3 * ((0x2 * ((uint64_t)x28 * x29)) + ((0x2 * ((uint64_t)x30 * x30)) + (0x2 * ((uint64_t)x29 * x28))))));
- ℤ x35 = ((((uint64_t)x2 * x24) +ℤ ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x26 * x29) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + ((uint64_t)x29 * x26))))));
- ℤ x36 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) +ℤ (0x3 *ℤ (((uint64_t)x24 * x29) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + ((uint64_t)x29 * x24)))))));
- ℤ x37 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) +ℤ (0x3 *ℤ (((uint64_t)x22 * x29) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + ((uint64_t)x29 * x22))))))));
- ℤ x38 = ((((uint64_t)x2 * x18) +ℤ ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x20 * x29)) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (0x2 * ((uint64_t)x29 * x20))))))))));
- ℤ x39 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) +ℤ (0x3 *ℤ (((uint64_t)x18 * x29) + ((0x2 * ((uint64_t)x20 * x30)) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + ((0x2 * ((uint64_t)x30 * x20)) + ((uint64_t)x29 * x18))))))))));
- ℤ x40 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (0x3 *ℤ (((uint64_t)x16 * x29) + (((uint64_t)x18 * x30) + ((0x2 * ((uint64_t)x20 * x28)) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + ((0x2 * ((uint64_t)x28 * x20)) + (((uint64_t)x30 * x18) + ((uint64_t)x29 * x16)))))))))));
- ℤ x41 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) +ℤ (0x3 *ℤ (((uint64_t)x14 * x29) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + ((uint64_t)x29 * x14))))))))))));
- ℤ x42 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x12 * x29)) +ℤ ((0x2 * ((uint64_t)x14 * x30)) +ℤ ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + (0x2 * ((uint64_t)x29 * x12))))))))))))));
- ℤ x43 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x3 *ℤ (((uint64_t)x10 * x29) +ℤ ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((uint64_t)x29 * x10))))))))))))));
- ℤ x44 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x3 *ℤ (((uint64_t)x8 * x29) + (((uint64_t)x10 * x30) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + (((uint64_t)x30 * x10) + ((uint64_t)x29 * x8)))))))))))))));
- ℤ x45 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x3 *ℤ (((uint64_t)x6 * x29) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + ((uint64_t)x29 * x6))))))))))))))));
- ℤ x46 = (((uint64_t)x2 * x2) +ℤ (0x3 *ℤ ((0x2 * ((uint64_t)x4 * x29)) +ℤ ((0x2 * ((uint64_t)x6 * x30)) +ℤ ((0x2 * ((uint64_t)x8 * x28)) +ℤ (((uint64_t)x10 * x26) +ℤ ((0x2 * ((uint64_t)x12 * x24)) +ℤ ((0x2 * ((uint64_t)x14 * x22)) +ℤ ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (((uint64_t)x26 * x10) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + (0x2 * ((uint64_t)x29 * x4))))))))))))))))));
- uint64_t x47 = (x46 >> 0x1d);
- uint32_t x48 = (x46 & 0x1fffffff);
- ℤ x49 = (x47 +ℤ x45);
- uint64_t x50 = (x49 >> 0x1c);
- uint32_t x51 = (x49 & 0xfffffff);
- ℤ x52 = (x50 +ℤ x44);
- uint64_t x53 = (x52 >> 0x1c);
- uint32_t x54 = (x52 & 0xfffffff);
- ℤ x55 = (x53 +ℤ x43);
- uint64_t x56 = (x55 >> 0x1c);
- uint32_t x57 = (x55 & 0xfffffff);
- ℤ x58 = (x56 +ℤ x42);
- uint64_t x59 = (x58 >> 0x1d);
- uint32_t x60 = (x58 & 0x1fffffff);
- ℤ x61 = (x59 +ℤ x41);
- uint64_t x62 = (x61 >> 0x1c);
- uint32_t x63 = (x61 & 0xfffffff);
- ℤ x64 = (x62 +ℤ x40);
- uint64_t x65 = (x64 >> 0x1c);
- uint32_t x66 = (x64 & 0xfffffff);
- ℤ x67 = (x65 +ℤ x39);
- uint64_t x68 = (x67 >> 0x1c);
- uint32_t x69 = (x67 & 0xfffffff);
- ℤ x70 = (x68 +ℤ x38);
- uint64_t x71 = (x70 >> 0x1d);
- uint32_t x72 = (x70 & 0x1fffffff);
- ℤ x73 = (x71 +ℤ x37);
- uint64_t x74 = (x73 >> 0x1c);
- uint32_t x75 = (x73 & 0xfffffff);
- ℤ x76 = (x74 +ℤ x36);
- uint64_t x77 = (x76 >> 0x1c);
- uint32_t x78 = (x76 & 0xfffffff);
- ℤ x79 = (x77 +ℤ x35);
- uint64_t x80 = (x79 >> 0x1c);
- uint32_t x81 = (x79 & 0xfffffff);
- ℤ x82 = (x80 +ℤ x34);
- uint64_t x83 = (x82 >> 0x1d);
- uint32_t x84 = (x82 & 0x1fffffff);
- ℤ x85 = (x83 +ℤ x33);
- uint64_t x86 = (x85 >> 0x1c);
- uint32_t x87 = (x85 & 0xfffffff);
- ℤ x88 = (x86 +ℤ x32);
- uint64_t x89 = (x88 >> 0x1c);
- uint32_t x90 = (x88 & 0xfffffff);
- ℤ x91 = (x89 +ℤ x31);
- uint64_t x92 = (x91 >> 0x1c);
- uint32_t x93 = (x91 & 0xfffffff);
- uint64_t x94 = (x48 + (0x3 * x92));
- uint32_t x95 = (uint32_t) (x94 >> 0x1d);
- uint32_t x96 = ((uint32_t)x94 & 0x1fffffff);
- uint32_t x97 = (x95 + x51);
- uint32_t x98 = (x97 >> 0x1c);
- uint32_t x99 = (x97 & 0xfffffff);
- return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e452m3/fesquareDisplay.v b/src/Specific/solinas32_2e452m3/fesquareDisplay.v
deleted file mode 100644
index 4d3956887..000000000
--- a/src/Specific/solinas32_2e452m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e452m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e452m3/fesub.c b/src/Specific/solinas32_2e452m3/fesub.c
deleted file mode 100644
index 0f52d6a92..000000000
--- a/src/Specific/solinas32_2e452m3/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x3ffffffa + x5) - x35);
- out[1] = ((0x1ffffffe + x7) - x37);
- out[2] = ((0x1ffffffe + x9) - x39);
- out[3] = ((0x1ffffffe + x11) - x41);
- out[4] = ((0x3ffffffe + x13) - x43);
- out[5] = ((0x1ffffffe + x15) - x45);
- out[6] = ((0x1ffffffe + x17) - x47);
- out[7] = ((0x1ffffffe + x19) - x49);
- out[8] = ((0x3ffffffe + x21) - x51);
- out[9] = ((0x1ffffffe + x23) - x53);
- out[10] = ((0x1ffffffe + x25) - x55);
- out[11] = ((0x1ffffffe + x27) - x57);
- out[12] = ((0x3ffffffe + x29) - x59);
- out[13] = ((0x1ffffffe + x31) - x61);
- out[14] = ((0x1ffffffe + x33) - x63);
- out[15] = ((0x1ffffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e452m3/fesub.v b/src/Specific/solinas32_2e452m3/fesub.v
deleted file mode 100644
index fa6861b66..000000000
--- a/src/Specific/solinas32_2e452m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e452m3/fesubDisplay.log b/src/Specific/solinas32_2e452m3/fesubDisplay.log
deleted file mode 100644
index bf6609b6d..000000000
--- a/src/Specific/solinas32_2e452m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x1ffffffe + x32) - x62), ((0x1ffffffe + x33) - x63), ((0x1ffffffe + x31) - x61), ((0x3ffffffe + x29) - x59), ((0x1ffffffe + x27) - x57), ((0x1ffffffe + x25) - x55), ((0x1ffffffe + x23) - x53), ((0x3ffffffe + x21) - x51), ((0x1ffffffe + x19) - x49), ((0x1ffffffe + x17) - x47), ((0x1ffffffe + x15) - x45), ((0x3ffffffe + x13) - x43), ((0x1ffffffe + x11) - x41), ((0x1ffffffe + x9) - x39), ((0x1ffffffe + x7) - x37), ((0x3ffffffa + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e452m3/fesubDisplay.v b/src/Specific/solinas32_2e452m3/fesubDisplay.v
deleted file mode 100644
index e8299441e..000000000
--- a/src/Specific/solinas32_2e452m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e452m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e452m3/freeze.c b/src/Specific/solinas32_2e452m3/freeze.c
deleted file mode 100644
index 7500bc98d..000000000
--- a/src/Specific/solinas32_2e452m3/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffd);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x1fffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x1fffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x1fffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0x1ffffffd);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0xfffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0xfffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0xfffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0x1fffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0xfffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0xfffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0xfffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0x1fffffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0xfffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0xfffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0xfffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0x1fffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0xfffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0xfffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0xfffffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e452m3/freeze.v b/src/Specific/solinas32_2e452m3/freeze.v
deleted file mode 100644
index f25d8f850..000000000
--- a/src/Specific/solinas32_2e452m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e452m3/freezeDisplay.log b/src/Specific/solinas32_2e452m3/freezeDisplay.log
deleted file mode 100644
index 1f5c90e82..000000000
--- a/src/Specific/solinas32_2e452m3/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffd);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0xfffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0xfffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0xfffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x1fffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0xfffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0xfffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0xfffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x1fffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0xfffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0xfffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0xfffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x1fffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0xfffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0xfffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0xfffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0x1ffffffd);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0xfffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0xfffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0xfffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0x1fffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0xfffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0xfffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0xfffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0x1fffffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0xfffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0xfffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0xfffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0x1fffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 29 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0xfffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0xfffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0xfffffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e452m3/freezeDisplay.v b/src/Specific/solinas32_2e452m3/freezeDisplay.v
deleted file mode 100644
index 7f4ba0cc0..000000000
--- a/src/Specific/solinas32_2e452m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e452m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e452m3/py_interpreter.sh b/src/Specific/solinas32_2e452m3/py_interpreter.sh
deleted file mode 100755
index d9edc2b2a..000000000
--- a/src/Specific/solinas32_2e452m3/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**452 - 3' -Dmodulus_bytes='28.25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e452m3_17limbs/CurveParameters.v b/src/Specific/solinas32_2e452m3_17limbs/CurveParameters.v
new file mode 100644
index 000000000..6eaf1ff77
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^452 - 3
+Base: 26 + 10/17
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 17%nat;
+ base := 26 + 10/17;
+ bitwidth := 32;
+ s := 2^452;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 17); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/Synthesis.v b/src/Specific/solinas32_2e452m3_17limbs/Synthesis.v
new file mode 100644
index 000000000..cf5d313db
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/compiler.sh b/src/Specific/solinas32_2e452m3_17limbs/compiler.sh
new file mode 100755
index 000000000..d4905016f
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26,27,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3_17limbs/compilerxx.sh b/src/Specific/solinas32_2e452m3_17limbs/compilerxx.sh
new file mode 100755
index 000000000..86bf28f4d
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,26,27,27,26,27,26,27,27,26,27,26,27,26}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='17' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3_17limbs/feadd.v b/src/Specific/solinas32_2e452m3_17limbs/feadd.v
new file mode 100644
index 000000000..d4d54bafd
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/feaddDisplay.v b/src/Specific/solinas32_2e452m3_17limbs/feaddDisplay.v
new file mode 100644
index 000000000..ae868d519
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/femul.v b/src/Specific/solinas32_2e452m3_17limbs/femul.v
new file mode 100644
index 000000000..7ac7c21f1
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/femulDisplay.v b/src/Specific/solinas32_2e452m3_17limbs/femulDisplay.v
new file mode 100644
index 000000000..97f913395
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/fesquare.v b/src/Specific/solinas32_2e452m3_17limbs/fesquare.v
new file mode 100644
index 000000000..af0b30e3a
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/fesquareDisplay.v b/src/Specific/solinas32_2e452m3_17limbs/fesquareDisplay.v
new file mode 100644
index 000000000..eb6913539
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/fesub.v b/src/Specific/solinas32_2e452m3_17limbs/fesub.v
new file mode 100644
index 000000000..2a27b3c6a
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/fesubDisplay.v b/src/Specific/solinas32_2e452m3_17limbs/fesubDisplay.v
new file mode 100644
index 000000000..b2eddd8ed
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/freeze.v b/src/Specific/solinas32_2e452m3_17limbs/freeze.v
new file mode 100644
index 000000000..bdee0d052
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/freezeDisplay.v b/src/Specific/solinas32_2e452m3_17limbs/freezeDisplay.v
new file mode 100644
index 000000000..af4d75679
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_17limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e452m3_17limbs/py_interpreter.sh b/src/Specific/solinas32_2e452m3_17limbs/py_interpreter.sh
new file mode 100755
index 000000000..825fa927d
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_17limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**452 - 3' -Dmodulus_bytes='26 + 10/17' -Da24='121665'
diff --git a/src/Specific/solinas32_2e452m3_18limbs/CurveParameters.v b/src/Specific/solinas32_2e452m3_18limbs/CurveParameters.v
new file mode 100644
index 000000000..e248a0012
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^452 - 3
+Base: 25 + 1/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 25 + 1/9;
+ bitwidth := 32;
+ s := 2^452;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 18); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/Synthesis.v b/src/Specific/solinas32_2e452m3_18limbs/Synthesis.v
new file mode 100644
index 000000000..51a907b62
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/compiler.sh b/src/Specific/solinas32_2e452m3_18limbs/compiler.sh
new file mode 100755
index 000000000..d7af94891
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3_18limbs/compilerxx.sh b/src/Specific/solinas32_2e452m3_18limbs/compilerxx.sh
new file mode 100755
index 000000000..1fbe2dd1e
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,25,25,25,25,25,25,25,25,26,25,25,25,25,25,25,25,25}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas32_2e452m3_18limbs/feadd.v b/src/Specific/solinas32_2e452m3_18limbs/feadd.v
new file mode 100644
index 000000000..77d48dc2f
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e452m3_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..95ca34983
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/femul.v b/src/Specific/solinas32_2e452m3_18limbs/femul.v
new file mode 100644
index 000000000..b7701fd22
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/femulDisplay.v b/src/Specific/solinas32_2e452m3_18limbs/femulDisplay.v
new file mode 100644
index 000000000..cc70d0e55
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/fesquare.v b/src/Specific/solinas32_2e452m3_18limbs/fesquare.v
new file mode 100644
index 000000000..1dfe73146
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e452m3_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9aa3446d9
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/fesub.v b/src/Specific/solinas32_2e452m3_18limbs/fesub.v
new file mode 100644
index 000000000..9fdafe308
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e452m3_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..8e0ad01be
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/freeze.v b/src/Specific/solinas32_2e452m3_18limbs/freeze.v
new file mode 100644
index 000000000..8f336447c
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e452m3_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..17672d058
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e452m3_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e452m3_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e452m3_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..c7fc345f1
--- /dev/null
+++ b/src/Specific/solinas32_2e452m3_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**452 - 3' -Dmodulus_bytes='25 + 1/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e468m17/Synthesis.v b/src/Specific/solinas32_2e468m17/Synthesis.v
deleted file mode 100644
index 999ef6973..000000000
--- a/src/Specific/solinas32_2e468m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e468m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e468m17/feadd.c b/src/Specific/solinas32_2e468m17/feadd.c
deleted file mode 100644
index 7b8380410..000000000
--- a/src/Specific/solinas32_2e468m17/feadd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void feadd(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = (x5 + x39);
- out[1] = (x7 + x41);
- out[2] = (x9 + x43);
- out[3] = (x11 + x45);
- out[4] = (x13 + x47);
- out[5] = (x15 + x49);
- out[6] = (x17 + x51);
- out[7] = (x19 + x53);
- out[8] = (x21 + x55);
- out[9] = (x23 + x57);
- out[10] = (x25 + x59);
- out[11] = (x27 + x61);
- out[12] = (x29 + x63);
- out[13] = (x31 + x65);
- out[14] = (x33 + x67);
- out[15] = (x35 + x69);
- out[16] = (x37 + x71);
- out[17] = (x36 + x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e468m17/feadd.v b/src/Specific/solinas32_2e468m17/feadd.v
deleted file mode 100644
index db58a4913..000000000
--- a/src/Specific/solinas32_2e468m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e468m17/feaddDisplay.log b/src/Specific/solinas32_2e468m17/feaddDisplay.log
deleted file mode 100644
index 5e9c243f4..000000000
--- a/src/Specific/solinas32_2e468m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- ((x36 + x70), (x37 + x71), (x35 + x69), (x33 + x67), (x31 + x65), (x29 + x63), (x27 + x61), (x25 + x59), (x23 + x57), (x21 + x55), (x19 + x53), (x17 + x51), (x15 + x49), (x13 + x47), (x11 + x45), (x9 + x43), (x7 + x41), (x5 + x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e468m17/feaddDisplay.v b/src/Specific/solinas32_2e468m17/feaddDisplay.v
deleted file mode 100644
index c265abcd3..000000000
--- a/src/Specific/solinas32_2e468m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e468m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e468m17/femul.c b/src/Specific/solinas32_2e468m17/femul.c
deleted file mode 100644
index fb91e4e45..000000000
--- a/src/Specific/solinas32_2e468m17/femul.c
+++ /dev/null
@@ -1,134 +0,0 @@
-static void femul(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- { uint64_t x72 = (((uint64_t)x5 * x70) + (((uint64_t)x7 * x71) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + (((uint64_t)x13 * x65) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + (((uint64_t)x37 * x41) + ((uint64_t)x36 * x39))))))))))))))))));
- { uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x11 * ((uint64_t)x36 * x70)));
- { uint64_t x74 = ((((uint64_t)x5 * x69) + (((uint64_t)x7 * x67) + (((uint64_t)x9 * x65) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x35 * x39)))))))))))))))) + (0x11 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- { uint64_t x75 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x33 * x39))))))))))))))) + (0x11 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- { uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x11 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- { uint64_t x77 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x29 * x39))))))))))))) + (0x11 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- { uint64_t x78 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x27 * x39)))))))))))) + (0x11 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- { uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x11 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- { uint64_t x80 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((uint64_t)x23 * x39)))))))))) + (0x11 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((uint64_t)x21 * x39))))))))) + (0x11 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- { uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x11 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- { uint64_t x83 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))))))) + (0x11 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- { uint64_t x84 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((uint64_t)x15 * x39)))))) + (0x11 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- { uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x11 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- { uint64_t x86 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + ((uint64_t)x11 * x39)))) + (0x11 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((uint64_t)x9 * x39))) + (0x11 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x11 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- { uint64_t x89 = (((uint64_t)x5 * x39) + (0x11 * (((uint64_t)x7 * x70) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x36 * x41)))))))))))))))))));
- { uint64_t x90 = (x89 >> 0x1a);
- { uint32_t x91 = ((uint32_t)x89 & 0x3ffffff);
- { uint64_t x92 = (x90 + x88);
- { uint64_t x93 = (x92 >> 0x1a);
- { uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
- { uint64_t x95 = (x93 + x87);
- { uint64_t x96 = (x95 >> 0x1a);
- { uint32_t x97 = ((uint32_t)x95 & 0x3ffffff);
- { uint64_t x98 = (x96 + x86);
- { uint64_t x99 = (x98 >> 0x1a);
- { uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- { uint64_t x101 = (x99 + x85);
- { uint64_t x102 = (x101 >> 0x1a);
- { uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- { uint64_t x104 = (x102 + x84);
- { uint64_t x105 = (x104 >> 0x1a);
- { uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- { uint64_t x107 = (x105 + x83);
- { uint64_t x108 = (x107 >> 0x1a);
- { uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- { uint64_t x110 = (x108 + x82);
- { uint64_t x111 = (x110 >> 0x1a);
- { uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- { uint64_t x113 = (x111 + x81);
- { uint64_t x114 = (x113 >> 0x1a);
- { uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- { uint64_t x116 = (x114 + x80);
- { uint64_t x117 = (x116 >> 0x1a);
- { uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- { uint64_t x119 = (x117 + x79);
- { uint64_t x120 = (x119 >> 0x1a);
- { uint32_t x121 = ((uint32_t)x119 & 0x3ffffff);
- { uint64_t x122 = (x120 + x78);
- { uint64_t x123 = (x122 >> 0x1a);
- { uint32_t x124 = ((uint32_t)x122 & 0x3ffffff);
- { uint64_t x125 = (x123 + x77);
- { uint64_t x126 = (x125 >> 0x1a);
- { uint32_t x127 = ((uint32_t)x125 & 0x3ffffff);
- { uint64_t x128 = (x126 + x76);
- { uint64_t x129 = (x128 >> 0x1a);
- { uint32_t x130 = ((uint32_t)x128 & 0x3ffffff);
- { uint64_t x131 = (x129 + x75);
- { uint64_t x132 = (x131 >> 0x1a);
- { uint32_t x133 = ((uint32_t)x131 & 0x3ffffff);
- { uint64_t x134 = (x132 + x74);
- { uint64_t x135 = (x134 >> 0x1a);
- { uint32_t x136 = ((uint32_t)x134 & 0x3ffffff);
- { uint64_t x137 = (x135 + x73);
- { uint64_t x138 = (x137 >> 0x1a);
- { uint32_t x139 = ((uint32_t)x137 & 0x3ffffff);
- { uint64_t x140 = (x138 + x72);
- { uint64_t x141 = (x140 >> 0x1a);
- { uint32_t x142 = ((uint32_t)x140 & 0x3ffffff);
- { uint64_t x143 = (x91 + (0x11 * x141));
- { uint32_t x144 = (uint32_t) (x143 >> 0x1a);
- { uint32_t x145 = ((uint32_t)x143 & 0x3ffffff);
- { uint32_t x146 = (x144 + x94);
- { uint32_t x147 = (x146 >> 0x1a);
- { uint32_t x148 = (x146 & 0x3ffffff);
- out[0] = x145;
- out[1] = x148;
- out[2] = (x147 + x97);
- out[3] = x100;
- out[4] = x103;
- out[5] = x106;
- out[6] = x109;
- out[7] = x112;
- out[8] = x115;
- out[9] = x118;
- out[10] = x121;
- out[11] = x124;
- out[12] = x127;
- out[13] = x130;
- out[14] = x133;
- out[15] = x136;
- out[16] = x139;
- out[17] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e468m17/femul.v b/src/Specific/solinas32_2e468m17/femul.v
deleted file mode 100644
index 0fc7ec3a3..000000000
--- a/src/Specific/solinas32_2e468m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e468m17/femulDisplay.log b/src/Specific/solinas32_2e468m17/femulDisplay.log
deleted file mode 100644
index 4785b2fac..000000000
--- a/src/Specific/solinas32_2e468m17/femulDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- uint64_t x72 = (((uint64_t)x5 * x70) + (((uint64_t)x7 * x71) + (((uint64_t)x9 * x69) + (((uint64_t)x11 * x67) + (((uint64_t)x13 * x65) + (((uint64_t)x15 * x63) + (((uint64_t)x17 * x61) + (((uint64_t)x19 * x59) + (((uint64_t)x21 * x57) + (((uint64_t)x23 * x55) + (((uint64_t)x25 * x53) + (((uint64_t)x27 * x51) + (((uint64_t)x29 * x49) + (((uint64_t)x31 * x47) + (((uint64_t)x33 * x45) + (((uint64_t)x35 * x43) + (((uint64_t)x37 * x41) + ((uint64_t)x36 * x39))))))))))))))))));
- uint64_t x73 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + (((uint64_t)x11 * x65) + (((uint64_t)x13 * x63) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + (((uint64_t)x25 * x51) + (((uint64_t)x27 * x49) + (((uint64_t)x29 * x47) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + (((uint64_t)x35 * x41) + ((uint64_t)x37 * x39))))))))))))))))) + (0x11 * ((uint64_t)x36 * x70)));
- uint64_t x74 = ((((uint64_t)x5 * x69) + (((uint64_t)x7 * x67) + (((uint64_t)x9 * x65) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + (((uint64_t)x15 * x59) + (((uint64_t)x17 * x57) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + (((uint64_t)x23 * x51) + (((uint64_t)x25 * x49) + (((uint64_t)x27 * x47) + (((uint64_t)x29 * x45) + (((uint64_t)x31 * x43) + (((uint64_t)x33 * x41) + ((uint64_t)x35 * x39)))))))))))))))) + (0x11 * (((uint64_t)x37 * x70) + ((uint64_t)x36 * x71))));
- uint64_t x75 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + (((uint64_t)x23 * x49) + (((uint64_t)x25 * x47) + (((uint64_t)x27 * x45) + (((uint64_t)x29 * x43) + (((uint64_t)x31 * x41) + ((uint64_t)x33 * x39))))))))))))))) + (0x11 * (((uint64_t)x35 * x70) + (((uint64_t)x37 * x71) + ((uint64_t)x36 * x69)))));
- uint64_t x76 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + (((uint64_t)x29 * x41) + ((uint64_t)x31 * x39)))))))))))))) + (0x11 * (((uint64_t)x33 * x70) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + ((uint64_t)x36 * x67))))));
- uint64_t x77 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + (((uint64_t)x23 * x45) + (((uint64_t)x25 * x43) + (((uint64_t)x27 * x41) + ((uint64_t)x29 * x39))))))))))))) + (0x11 * (((uint64_t)x31 * x70) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((uint64_t)x36 * x65)))))));
- uint64_t x78 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + (((uint64_t)x15 * x51) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + (((uint64_t)x25 * x41) + ((uint64_t)x27 * x39)))))))))))) + (0x11 * (((uint64_t)x29 * x70) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + ((uint64_t)x36 * x63))))))));
- uint64_t x79 = ((((uint64_t)x5 * x59) + (((uint64_t)x7 * x57) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + (((uint64_t)x15 * x49) + (((uint64_t)x17 * x47) + (((uint64_t)x19 * x45) + (((uint64_t)x21 * x43) + (((uint64_t)x23 * x41) + ((uint64_t)x25 * x39))))))))))) + (0x11 * (((uint64_t)x27 * x70) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + ((uint64_t)x36 * x61)))))))));
- uint64_t x80 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + (((uint64_t)x15 * x47) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + (((uint64_t)x21 * x41) + ((uint64_t)x23 * x39)))))))))) + (0x11 * (((uint64_t)x25 * x70) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + ((uint64_t)x36 * x59))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x55) + (((uint64_t)x7 * x53) + (((uint64_t)x9 * x51) + (((uint64_t)x11 * x49) + (((uint64_t)x13 * x47) + (((uint64_t)x15 * x45) + (((uint64_t)x17 * x43) + (((uint64_t)x19 * x41) + ((uint64_t)x21 * x39))))))))) + (0x11 * (((uint64_t)x23 * x70) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + ((uint64_t)x36 * x57)))))))))));
- uint64_t x82 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + (((uint64_t)x9 * x49) + (((uint64_t)x11 * x47) + (((uint64_t)x13 * x45) + (((uint64_t)x15 * x43) + (((uint64_t)x17 * x41) + ((uint64_t)x19 * x39)))))))) + (0x11 * (((uint64_t)x21 * x70) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + ((uint64_t)x36 * x55))))))))))));
- uint64_t x83 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + (((uint64_t)x15 * x41) + ((uint64_t)x17 * x39))))))) + (0x11 * (((uint64_t)x19 * x70) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + ((uint64_t)x36 * x53)))))))))))));
- uint64_t x84 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + (((uint64_t)x9 * x45) + (((uint64_t)x11 * x43) + (((uint64_t)x13 * x41) + ((uint64_t)x15 * x39)))))) + (0x11 * (((uint64_t)x17 * x70) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((uint64_t)x36 * x51))))))))))))));
- uint64_t x85 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + (((uint64_t)x11 * x41) + ((uint64_t)x13 * x39))))) + (0x11 * (((uint64_t)x15 * x70) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + ((uint64_t)x36 * x49)))))))))))))));
- uint64_t x86 = ((((uint64_t)x5 * x45) + (((uint64_t)x7 * x43) + (((uint64_t)x9 * x41) + ((uint64_t)x11 * x39)))) + (0x11 * (((uint64_t)x13 * x70) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + ((uint64_t)x36 * x47))))))))))))))));
- uint64_t x87 = ((((uint64_t)x5 * x43) + (((uint64_t)x7 * x41) + ((uint64_t)x9 * x39))) + (0x11 * (((uint64_t)x11 * x70) + (((uint64_t)x13 * x71) + (((uint64_t)x15 * x69) + (((uint64_t)x17 * x67) + (((uint64_t)x19 * x65) + (((uint64_t)x21 * x63) + (((uint64_t)x23 * x61) + (((uint64_t)x25 * x59) + (((uint64_t)x27 * x57) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + (((uint64_t)x33 * x51) + (((uint64_t)x35 * x49) + (((uint64_t)x37 * x47) + ((uint64_t)x36 * x45)))))))))))))))));
- uint64_t x88 = ((((uint64_t)x5 * x41) + ((uint64_t)x7 * x39)) + (0x11 * (((uint64_t)x9 * x70) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + (((uint64_t)x37 * x45) + ((uint64_t)x36 * x43))))))))))))))))));
- uint64_t x89 = (((uint64_t)x5 * x39) + (0x11 * (((uint64_t)x7 * x70) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + (((uint64_t)x15 * x65) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x36 * x41)))))))))))))))))));
- uint64_t x90 = (x89 >> 0x1a);
- uint32_t x91 = ((uint32_t)x89 & 0x3ffffff);
- uint64_t x92 = (x90 + x88);
- uint64_t x93 = (x92 >> 0x1a);
- uint32_t x94 = ((uint32_t)x92 & 0x3ffffff);
- uint64_t x95 = (x93 + x87);
- uint64_t x96 = (x95 >> 0x1a);
- uint32_t x97 = ((uint32_t)x95 & 0x3ffffff);
- uint64_t x98 = (x96 + x86);
- uint64_t x99 = (x98 >> 0x1a);
- uint32_t x100 = ((uint32_t)x98 & 0x3ffffff);
- uint64_t x101 = (x99 + x85);
- uint64_t x102 = (x101 >> 0x1a);
- uint32_t x103 = ((uint32_t)x101 & 0x3ffffff);
- uint64_t x104 = (x102 + x84);
- uint64_t x105 = (x104 >> 0x1a);
- uint32_t x106 = ((uint32_t)x104 & 0x3ffffff);
- uint64_t x107 = (x105 + x83);
- uint64_t x108 = (x107 >> 0x1a);
- uint32_t x109 = ((uint32_t)x107 & 0x3ffffff);
- uint64_t x110 = (x108 + x82);
- uint64_t x111 = (x110 >> 0x1a);
- uint32_t x112 = ((uint32_t)x110 & 0x3ffffff);
- uint64_t x113 = (x111 + x81);
- uint64_t x114 = (x113 >> 0x1a);
- uint32_t x115 = ((uint32_t)x113 & 0x3ffffff);
- uint64_t x116 = (x114 + x80);
- uint64_t x117 = (x116 >> 0x1a);
- uint32_t x118 = ((uint32_t)x116 & 0x3ffffff);
- uint64_t x119 = (x117 + x79);
- uint64_t x120 = (x119 >> 0x1a);
- uint32_t x121 = ((uint32_t)x119 & 0x3ffffff);
- uint64_t x122 = (x120 + x78);
- uint64_t x123 = (x122 >> 0x1a);
- uint32_t x124 = ((uint32_t)x122 & 0x3ffffff);
- uint64_t x125 = (x123 + x77);
- uint64_t x126 = (x125 >> 0x1a);
- uint32_t x127 = ((uint32_t)x125 & 0x3ffffff);
- uint64_t x128 = (x126 + x76);
- uint64_t x129 = (x128 >> 0x1a);
- uint32_t x130 = ((uint32_t)x128 & 0x3ffffff);
- uint64_t x131 = (x129 + x75);
- uint64_t x132 = (x131 >> 0x1a);
- uint32_t x133 = ((uint32_t)x131 & 0x3ffffff);
- uint64_t x134 = (x132 + x74);
- uint64_t x135 = (x134 >> 0x1a);
- uint32_t x136 = ((uint32_t)x134 & 0x3ffffff);
- uint64_t x137 = (x135 + x73);
- uint64_t x138 = (x137 >> 0x1a);
- uint32_t x139 = ((uint32_t)x137 & 0x3ffffff);
- uint64_t x140 = (x138 + x72);
- uint64_t x141 = (x140 >> 0x1a);
- uint32_t x142 = ((uint32_t)x140 & 0x3ffffff);
- uint64_t x143 = (x91 + (0x11 * x141));
- uint32_t x144 = (uint32_t) (x143 >> 0x1a);
- uint32_t x145 = ((uint32_t)x143 & 0x3ffffff);
- uint32_t x146 = (x144 + x94);
- uint32_t x147 = (x146 >> 0x1a);
- uint32_t x148 = (x146 & 0x3ffffff);
- return (Return x142, Return x139, Return x136, Return x133, Return x130, Return x127, Return x124, Return x121, Return x118, Return x115, Return x112, Return x109, Return x106, Return x103, Return x100, (x147 + x97), Return x148, Return x145))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e468m17/femulDisplay.v b/src/Specific/solinas32_2e468m17/femulDisplay.v
deleted file mode 100644
index c8ece38e2..000000000
--- a/src/Specific/solinas32_2e468m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e468m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e468m17/fesquare.c b/src/Specific/solinas32_2e468m17/fesquare.c
deleted file mode 100644
index d7eb27dd4..000000000
--- a/src/Specific/solinas32_2e468m17/fesquare.c
+++ /dev/null
@@ -1,116 +0,0 @@
-static void fesquare(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x35 = (((uint64_t)x2 * x33) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x33 * x2))))))))))))))))));
- { uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * ((uint64_t)x33 * x33)));
- { uint64_t x37 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- { uint64_t x38 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- { uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- { uint64_t x40 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- { uint64_t x41 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- { uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- { uint64_t x43 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- { uint64_t x52 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x33) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + ((uint64_t)x33 * x4)))))))))))))))))));
- { uint64_t x53 = (x52 >> 0x1a);
- { uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- { uint64_t x55 = (x53 + x51);
- { uint64_t x56 = (x55 >> 0x1a);
- { uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- { uint64_t x58 = (x56 + x50);
- { uint64_t x59 = (x58 >> 0x1a);
- { uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- { uint64_t x61 = (x59 + x49);
- { uint64_t x62 = (x61 >> 0x1a);
- { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- { uint64_t x64 = (x62 + x48);
- { uint64_t x65 = (x64 >> 0x1a);
- { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- { uint64_t x67 = (x65 + x47);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- { uint64_t x70 = (x68 + x46);
- { uint64_t x71 = (x70 >> 0x1a);
- { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- { uint64_t x73 = (x71 + x45);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- { uint64_t x76 = (x74 + x44);
- { uint64_t x77 = (x76 >> 0x1a);
- { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- { uint64_t x79 = (x77 + x43);
- { uint64_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint64_t x82 = (x80 + x42);
- { uint64_t x83 = (x82 >> 0x1a);
- { uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- { uint64_t x85 = (x83 + x41);
- { uint64_t x86 = (x85 >> 0x1a);
- { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- { uint64_t x88 = (x86 + x40);
- { uint64_t x89 = (x88 >> 0x1a);
- { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- { uint64_t x91 = (x89 + x39);
- { uint64_t x92 = (x91 >> 0x1a);
- { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- { uint64_t x94 = (x92 + x38);
- { uint64_t x95 = (x94 >> 0x1a);
- { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- { uint64_t x97 = (x95 + x37);
- { uint64_t x98 = (x97 >> 0x1a);
- { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- { uint64_t x100 = (x98 + x36);
- { uint64_t x101 = (x100 >> 0x1a);
- { uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- { uint64_t x103 = (x101 + x35);
- { uint64_t x104 = (x103 >> 0x1a);
- { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- { uint64_t x106 = (x54 + (0x11 * x104));
- { uint32_t x107 = (uint32_t) (x106 >> 0x1a);
- { uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- { uint32_t x109 = (x107 + x57);
- { uint32_t x110 = (x109 >> 0x1a);
- { uint32_t x111 = (x109 & 0x3ffffff);
- out[0] = x108;
- out[1] = x111;
- out[2] = (x110 + x60);
- out[3] = x63;
- out[4] = x66;
- out[5] = x69;
- out[6] = x72;
- out[7] = x75;
- out[8] = x78;
- out[9] = x81;
- out[10] = x84;
- out[11] = x87;
- out[12] = x90;
- out[13] = x93;
- out[14] = x96;
- out[15] = x99;
- out[16] = x102;
- out[17] = x105;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e468m17/fesquare.v b/src/Specific/solinas32_2e468m17/fesquare.v
deleted file mode 100644
index a75ccc430..000000000
--- a/src/Specific/solinas32_2e468m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e468m17/fesquareDisplay.log b/src/Specific/solinas32_2e468m17/fesquareDisplay.log
deleted file mode 100644
index ce059ed76..000000000
--- a/src/Specific/solinas32_2e468m17/fesquareDisplay.log
+++ /dev/null
@@ -1,84 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x35 = (((uint64_t)x2 * x33) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x33 * x2))))))))))))))))));
- uint64_t x36 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * ((uint64_t)x33 * x33)));
- uint64_t x37 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + (((uint64_t)x12 * x22) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + (((uint64_t)x22 * x12) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * (((uint64_t)x34 * x33) + ((uint64_t)x33 * x34))));
- uint64_t x38 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x33) + (((uint64_t)x34 * x34) + ((uint64_t)x33 * x32)))));
- uint64_t x39 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x33) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + ((uint64_t)x33 * x30))))));
- uint64_t x40 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * (((uint64_t)x28 * x33) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + ((uint64_t)x33 * x28)))))));
- uint64_t x41 = ((((uint64_t)x2 * x24) + (((uint64_t)x4 * x22) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + (((uint64_t)x22 * x4) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x33) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((uint64_t)x33 * x26))))))));
- uint64_t x42 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x33) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + ((uint64_t)x33 * x24)))))))));
- uint64_t x43 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0x11 * (((uint64_t)x22 * x33) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + ((uint64_t)x33 * x22))))))))));
- uint64_t x44 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x33) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + ((uint64_t)x33 * x20)))))))))));
- uint64_t x45 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x33) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + ((uint64_t)x33 * x18))))))))))));
- uint64_t x46 = ((((uint64_t)x2 * x14) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x14 * x2))))))) + (0x11 * (((uint64_t)x16 * x33) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + ((uint64_t)x33 * x16)))))))))))));
- uint64_t x47 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x33) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + ((uint64_t)x33 * x14))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x33) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((uint64_t)x33 * x12)))))))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x11 * (((uint64_t)x10 * x33) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + ((uint64_t)x33 * x10))))))))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x33) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + ((uint64_t)x33 * x8)))))))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x33) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + ((uint64_t)x33 * x6))))))))))))))))));
- uint64_t x52 = (((uint64_t)x2 * x2) + (0x11 * (((uint64_t)x4 * x33) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + (((uint64_t)x20 * x20) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + ((uint64_t)x33 * x4)))))))))))))))))));
- uint64_t x53 = (x52 >> 0x1a);
- uint32_t x54 = ((uint32_t)x52 & 0x3ffffff);
- uint64_t x55 = (x53 + x51);
- uint64_t x56 = (x55 >> 0x1a);
- uint32_t x57 = ((uint32_t)x55 & 0x3ffffff);
- uint64_t x58 = (x56 + x50);
- uint64_t x59 = (x58 >> 0x1a);
- uint32_t x60 = ((uint32_t)x58 & 0x3ffffff);
- uint64_t x61 = (x59 + x49);
- uint64_t x62 = (x61 >> 0x1a);
- uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- uint64_t x64 = (x62 + x48);
- uint64_t x65 = (x64 >> 0x1a);
- uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- uint64_t x67 = (x65 + x47);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- uint64_t x70 = (x68 + x46);
- uint64_t x71 = (x70 >> 0x1a);
- uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- uint64_t x73 = (x71 + x45);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- uint64_t x76 = (x74 + x44);
- uint64_t x77 = (x76 >> 0x1a);
- uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- uint64_t x79 = (x77 + x43);
- uint64_t x80 = (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint64_t x82 = (x80 + x42);
- uint64_t x83 = (x82 >> 0x1a);
- uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- uint64_t x85 = (x83 + x41);
- uint64_t x86 = (x85 >> 0x1a);
- uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- uint64_t x88 = (x86 + x40);
- uint64_t x89 = (x88 >> 0x1a);
- uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- uint64_t x91 = (x89 + x39);
- uint64_t x92 = (x91 >> 0x1a);
- uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- uint64_t x94 = (x92 + x38);
- uint64_t x95 = (x94 >> 0x1a);
- uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- uint64_t x97 = (x95 + x37);
- uint64_t x98 = (x97 >> 0x1a);
- uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- uint64_t x100 = (x98 + x36);
- uint64_t x101 = (x100 >> 0x1a);
- uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- uint64_t x103 = (x101 + x35);
- uint64_t x104 = (x103 >> 0x1a);
- uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- uint64_t x106 = (x54 + (0x11 * x104));
- uint32_t x107 = (uint32_t) (x106 >> 0x1a);
- uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- uint32_t x109 = (x107 + x57);
- uint32_t x110 = (x109 >> 0x1a);
- uint32_t x111 = (x109 & 0x3ffffff);
- return (Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, (x110 + x60), Return x111, Return x108))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e468m17/fesquareDisplay.v b/src/Specific/solinas32_2e468m17/fesquareDisplay.v
deleted file mode 100644
index 89eaef749..000000000
--- a/src/Specific/solinas32_2e468m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e468m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e468m17/fesub.c b/src/Specific/solinas32_2e468m17/fesub.c
deleted file mode 100644
index 033df9f0f..000000000
--- a/src/Specific/solinas32_2e468m17/fesub.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void fesub(uint32_t out[18], const uint32_t in1[18], const uint32_t in2[18]) {
- { const uint32_t x36 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x70 = in2[17];
- { const uint32_t x71 = in2[16];
- { const uint32_t x69 = in2[15];
- { const uint32_t x67 = in2[14];
- { const uint32_t x65 = in2[13];
- { const uint32_t x63 = in2[12];
- { const uint32_t x61 = in2[11];
- { const uint32_t x59 = in2[10];
- { const uint32_t x57 = in2[9];
- { const uint32_t x55 = in2[8];
- { const uint32_t x53 = in2[7];
- { const uint32_t x51 = in2[6];
- { const uint32_t x49 = in2[5];
- { const uint32_t x47 = in2[4];
- { const uint32_t x45 = in2[3];
- { const uint32_t x43 = in2[2];
- { const uint32_t x41 = in2[1];
- { const uint32_t x39 = in2[0];
- out[0] = ((0x7ffffde + x5) - x39);
- out[1] = ((0x7fffffe + x7) - x41);
- out[2] = ((0x7fffffe + x9) - x43);
- out[3] = ((0x7fffffe + x11) - x45);
- out[4] = ((0x7fffffe + x13) - x47);
- out[5] = ((0x7fffffe + x15) - x49);
- out[6] = ((0x7fffffe + x17) - x51);
- out[7] = ((0x7fffffe + x19) - x53);
- out[8] = ((0x7fffffe + x21) - x55);
- out[9] = ((0x7fffffe + x23) - x57);
- out[10] = ((0x7fffffe + x25) - x59);
- out[11] = ((0x7fffffe + x27) - x61);
- out[12] = ((0x7fffffe + x29) - x63);
- out[13] = ((0x7fffffe + x31) - x65);
- out[14] = ((0x7fffffe + x33) - x67);
- out[15] = ((0x7fffffe + x35) - x69);
- out[16] = ((0x7fffffe + x37) - x71);
- out[17] = ((0x7fffffe + x36) - x70);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e468m17/fesub.v b/src/Specific/solinas32_2e468m17/fesub.v
deleted file mode 100644
index e685ffab4..000000000
--- a/src/Specific/solinas32_2e468m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e468m17/fesubDisplay.log b/src/Specific/solinas32_2e468m17/fesubDisplay.log
deleted file mode 100644
index 0224e108e..000000000
--- a/src/Specific/solinas32_2e468m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x36, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x70, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39))%core,
- (((0x7fffffe + x36) - x70), ((0x7fffffe + x37) - x71), ((0x7fffffe + x35) - x69), ((0x7fffffe + x33) - x67), ((0x7fffffe + x31) - x65), ((0x7fffffe + x29) - x63), ((0x7fffffe + x27) - x61), ((0x7fffffe + x25) - x59), ((0x7fffffe + x23) - x57), ((0x7fffffe + x21) - x55), ((0x7fffffe + x19) - x53), ((0x7fffffe + x17) - x51), ((0x7fffffe + x15) - x49), ((0x7fffffe + x13) - x47), ((0x7fffffe + x11) - x45), ((0x7fffffe + x9) - x43), ((0x7fffffe + x7) - x41), ((0x7ffffde + x5) - x39)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e468m17/fesubDisplay.v b/src/Specific/solinas32_2e468m17/fesubDisplay.v
deleted file mode 100644
index f64978706..000000000
--- a/src/Specific/solinas32_2e468m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e468m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e468m17/freeze.c b/src/Specific/solinas32_2e468m17/freeze.c
deleted file mode 100644
index 625fba05e..000000000
--- a/src/Specific/solinas32_2e468m17/freeze.c
+++ /dev/null
@@ -1,94 +0,0 @@
-static void freeze(uint32_t out[18], const uint32_t in1[18]) {
- { const uint32_t x33 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
- { uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x3ffffff);
- { uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x3ffffff);
- { uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x3ffffff);
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x3ffffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x3ffffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x3ffffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x3ffffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x3ffffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x3ffffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x3ffffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x3ffffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x3ffffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x3ffffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x3ffffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x3ffffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x3ffffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x3ffffff);
- { uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- { uint32_t x90 = (x89 & 0x3ffffef);
- { uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- { uint32_t x94 = (x89 & 0x3ffffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- { uint32_t x98 = (x89 & 0x3ffffff);
- { uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- { uint32_t x102 = (x89 & 0x3ffffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- { uint32_t x106 = (x89 & 0x3ffffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- { uint32_t x110 = (x89 & 0x3ffffff);
- { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- { uint32_t x114 = (x89 & 0x3ffffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- { uint32_t x118 = (x89 & 0x3ffffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- { uint32_t x122 = (x89 & 0x3ffffff);
- { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- { uint32_t x126 = (x89 & 0x3ffffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- { uint32_t x130 = (x89 & 0x3ffffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- { uint32_t x134 = (x89 & 0x3ffffff);
- { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- { uint32_t x138 = (x89 & 0x3ffffff);
- { uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- { uint32_t x142 = (x89 & 0x3ffffff);
- { uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- { uint32_t x146 = (x89 & 0x3ffffff);
- { uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- { uint32_t x150 = (x89 & 0x3ffffff);
- { uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- { uint32_t x154 = (x89 & 0x3ffffff);
- { uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- { uint32_t x158 = (x89 & 0x3ffffff);
- { uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- out[0] = x92;
- out[1] = x96;
- out[2] = x100;
- out[3] = x104;
- out[4] = x108;
- out[5] = x112;
- out[6] = x116;
- out[7] = x120;
- out[8] = x124;
- out[9] = x128;
- out[10] = x132;
- out[11] = x136;
- out[12] = x140;
- out[13] = x144;
- out[14] = x148;
- out[15] = x152;
- out[16] = x156;
- out[17] = x160;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e468m17/freeze.v b/src/Specific/solinas32_2e468m17/freeze.v
deleted file mode 100644
index bcf0088fd..000000000
--- a/src/Specific/solinas32_2e468m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e468m17/freezeDisplay.log b/src/Specific/solinas32_2e468m17/freezeDisplay.log
deleted file mode 100644
index b2480f2df..000000000
--- a/src/Specific/solinas32_2e468m17/freezeDisplay.log
+++ /dev/null
@@ -1,62 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x33, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
- uint32_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x4, 0x3ffffff);
- uint32_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x40, Return x6, 0x3ffffff);
- uint32_t x45, uint8_t x46 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x43, Return x8, 0x3ffffff);
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x10, 0x3ffffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x12, 0x3ffffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x14, 0x3ffffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x16, 0x3ffffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x18, 0x3ffffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x20, 0x3ffffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x22, 0x3ffffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x24, 0x3ffffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x26, 0x3ffffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x28, 0x3ffffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x30, 0x3ffffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x32, 0x3ffffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x34, 0x3ffffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x33, 0x3ffffff);
- uint32_t x89 = cmovznz32(x88, 0x0, 0xffffffff);
- uint32_t x90 = (x89 & 0x3ffffef);
- uint32_t x92, uint8_t x93 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x36, Return x90);
- uint32_t x94 = (x89 & 0x3ffffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x39, Return x94);
- uint32_t x98 = (x89 & 0x3ffffff);
- uint32_t x100, uint8_t x101 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x42, Return x98);
- uint32_t x102 = (x89 & 0x3ffffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x101, Return x45, Return x102);
- uint32_t x106 = (x89 & 0x3ffffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x48, Return x106);
- uint32_t x110 = (x89 & 0x3ffffff);
- uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x51, Return x110);
- uint32_t x114 = (x89 & 0x3ffffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x54, Return x114);
- uint32_t x118 = (x89 & 0x3ffffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x57, Return x118);
- uint32_t x122 = (x89 & 0x3ffffff);
- uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x60, Return x122);
- uint32_t x126 = (x89 & 0x3ffffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x63, Return x126);
- uint32_t x130 = (x89 & 0x3ffffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x66, Return x130);
- uint32_t x134 = (x89 & 0x3ffffff);
- uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x69, Return x134);
- uint32_t x138 = (x89 & 0x3ffffff);
- uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x72, Return x138);
- uint32_t x142 = (x89 & 0x3ffffff);
- uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x75, Return x142);
- uint32_t x146 = (x89 & 0x3ffffff);
- uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x78, Return x146);
- uint32_t x150 = (x89 & 0x3ffffff);
- uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x81, Return x150);
- uint32_t x154 = (x89 & 0x3ffffff);
- uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x84, Return x154);
- uint32_t x158 = (x89 & 0x3ffffff);
- uint32_t x160, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x87, Return x158);
- (Return x160, Return x156, Return x152, Return x148, Return x144, Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112, Return x108, Return x104, Return x100, Return x96, Return x92))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e468m17/freezeDisplay.v b/src/Specific/solinas32_2e468m17/freezeDisplay.v
deleted file mode 100644
index f15067186..000000000
--- a/src/Specific/solinas32_2e468m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e468m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e468m17/CurveParameters.v b/src/Specific/solinas32_2e468m17_18limbs/CurveParameters.v
index 4bb88d487..4bb88d487 100644
--- a/src/Specific/solinas32_2e468m17/CurveParameters.v
+++ b/src/Specific/solinas32_2e468m17_18limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e468m17_18limbs/Synthesis.v b/src/Specific/solinas32_2e468m17_18limbs/Synthesis.v
new file mode 100644
index 000000000..dd8d91be6
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e468m17/compiler.sh b/src/Specific/solinas32_2e468m17_18limbs/compiler.sh
index 91eb2b211..91eb2b211 100755
--- a/src/Specific/solinas32_2e468m17/compiler.sh
+++ b/src/Specific/solinas32_2e468m17_18limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e468m17/compilerxx.sh b/src/Specific/solinas32_2e468m17_18limbs/compilerxx.sh
index 36843a306..36843a306 100755
--- a/src/Specific/solinas32_2e468m17/compilerxx.sh
+++ b/src/Specific/solinas32_2e468m17_18limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e468m17_18limbs/feadd.v b/src/Specific/solinas32_2e468m17_18limbs/feadd.v
new file mode 100644
index 000000000..ce7b5938c
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e468m17_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..6f9ab0650
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/femul.v b/src/Specific/solinas32_2e468m17_18limbs/femul.v
new file mode 100644
index 000000000..c8bb742ce
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/femulDisplay.v b/src/Specific/solinas32_2e468m17_18limbs/femulDisplay.v
new file mode 100644
index 000000000..4c0445b7c
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/fesquare.v b/src/Specific/solinas32_2e468m17_18limbs/fesquare.v
new file mode 100644
index 000000000..fc78927b1
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e468m17_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..16d02e529
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/fesub.v b/src/Specific/solinas32_2e468m17_18limbs/fesub.v
new file mode 100644
index 000000000..96acd5162
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e468m17_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..d7987792e
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/freeze.v b/src/Specific/solinas32_2e468m17_18limbs/freeze.v
new file mode 100644
index 000000000..3778b7a9c
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e468m17_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e468m17_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..3a39951e9
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e468m17/py_interpreter.sh b/src/Specific/solinas32_2e468m17_18limbs/py_interpreter.sh
index f551f9bed..f551f9bed 100755
--- a/src/Specific/solinas32_2e468m17/py_interpreter.sh
+++ b/src/Specific/solinas32_2e468m17_18limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e468m17_19limbs/CurveParameters.v b/src/Specific/solinas32_2e468m17_19limbs/CurveParameters.v
new file mode 100644
index 000000000..e45e0b6a8
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^468 - 17
+Base: 24 + 12/19
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 19%nat;
+ base := 24 + 12/19;
+ bitwidth := 32;
+ s := 2^468;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 19); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/Synthesis.v b/src/Specific/solinas32_2e468m17_19limbs/Synthesis.v
new file mode 100644
index 000000000..ad55dee34
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/compiler.sh b/src/Specific/solinas32_2e468m17_19limbs/compiler.sh
new file mode 100755
index 000000000..72abd0889
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,24,25,25,24,25,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<468) - 17' "$@"
diff --git a/src/Specific/solinas32_2e468m17_19limbs/compilerxx.sh b/src/Specific/solinas32_2e468m17_19limbs/compilerxx.sh
new file mode 100755
index 000000000..16ffc7521
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,24,25,25,24,25,25,24,25,24,25,25,24,25,25,24,25,24}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<468) - 17' "$@"
diff --git a/src/Specific/solinas32_2e468m17_19limbs/feadd.v b/src/Specific/solinas32_2e468m17_19limbs/feadd.v
new file mode 100644
index 000000000..a27c79f2a
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/feaddDisplay.v b/src/Specific/solinas32_2e468m17_19limbs/feaddDisplay.v
new file mode 100644
index 000000000..f7d6bbc6d
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/femul.v b/src/Specific/solinas32_2e468m17_19limbs/femul.v
new file mode 100644
index 000000000..9f6fa710e
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/femulDisplay.v b/src/Specific/solinas32_2e468m17_19limbs/femulDisplay.v
new file mode 100644
index 000000000..7ad7c42be
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/fesquare.v b/src/Specific/solinas32_2e468m17_19limbs/fesquare.v
new file mode 100644
index 000000000..ec9f2c37e
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/fesquareDisplay.v b/src/Specific/solinas32_2e468m17_19limbs/fesquareDisplay.v
new file mode 100644
index 000000000..13aa93c57
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/fesub.v b/src/Specific/solinas32_2e468m17_19limbs/fesub.v
new file mode 100644
index 000000000..3a515d44c
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/fesubDisplay.v b/src/Specific/solinas32_2e468m17_19limbs/fesubDisplay.v
new file mode 100644
index 000000000..ca0803865
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/freeze.v b/src/Specific/solinas32_2e468m17_19limbs/freeze.v
new file mode 100644
index 000000000..fb4f849ed
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/freezeDisplay.v b/src/Specific/solinas32_2e468m17_19limbs/freezeDisplay.v
new file mode 100644
index 000000000..887dc0d20
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e468m17_19limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e468m17_19limbs/py_interpreter.sh b/src/Specific/solinas32_2e468m17_19limbs/py_interpreter.sh
new file mode 100755
index 000000000..40894c774
--- /dev/null
+++ b/src/Specific/solinas32_2e468m17_19limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**468 - 17' -Dmodulus_bytes='24 + 12/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v b/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v
deleted file mode 100644
index 810a28856..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^480 - 2^240 - 1
-Base: 30
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 30;
- bitwidth := 32;
- s := 2^480;
- c := [(1, 1); (2^240, 1)];
- carry_chains := Some [[7; 15]; [8; 0; 9; 1; 10; 2; 11; 3; 12; 4; 13; 5; 14; 6; 15; 7]; [8; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := Some true;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e480m2e240m1/Synthesis.v b/src/Specific/solinas32_2e480m2e240m1/Synthesis.v
deleted file mode 100644
index f57a4bd2e..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e480m2e240m1/compiler.sh b/src/Specific/solinas32_2e480m2e240m1/compiler.sh
deleted file mode 100755
index e81b5e419..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1/compilerxx.sh b/src/Specific/solinas32_2e480m2e240m1/compilerxx.sh
deleted file mode 100755
index 3d43da73e..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1/feadd.c b/src/Specific/solinas32_2e480m2e240m1/feadd.c
deleted file mode 100644
index 18b150e21..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e480m2e240m1/feadd.v b/src/Specific/solinas32_2e480m2e240m1/feadd.v
deleted file mode 100644
index 7b57f5a2e..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.log b/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.log
deleted file mode 100644
index 130c31964..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.v b/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.v
deleted file mode 100644
index ec3a737e0..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e480m2e240m1/femul.c b/src/Specific/solinas32_2e480m2e240m1/femul.c
deleted file mode 100644
index 902c06227..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/femul.c
+++ /dev/null
@@ -1,145 +0,0 @@
-static void femul(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- { ℤ x64 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x19 + x32) *ℤ ((uint64_t)x49 + x62)) -ℤ ((uint64_t)x19 * x49)), ((((uint64_t)x19 * x62) +ℤ ((uint64_t)x32 * x49)) +ℤ ((uint64_t)x32 * x62)));
- { ℤ x65 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x17 + x33) *ℤ ((uint64_t)x49 + x62)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x47 + x63))) -ℤ (((uint64_t)x17 * x49) +ℤ ((uint64_t)x19 * x47))), (((((uint64_t)x17 * x62) +ℤ ((uint64_t)x19 * x63)) +ℤ (((uint64_t)x33 * x49) +ℤ ((uint64_t)x32 * x47))) +ℤ (((uint64_t)x33 * x62) +ℤ ((uint64_t)x32 * x63))));
- { ℤ x66 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x15 + x31) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x47 + x63)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x45 + x61)))) -ℤ (((uint64_t)x15 * x49) +ℤ (((uint64_t)x17 * x47) +ℤ ((uint64_t)x19 * x45)))), (((((uint64_t)x15 * x62) +ℤ (((uint64_t)x17 * x63) +ℤ ((uint64_t)x19 * x61))) +ℤ (((uint64_t)x31 * x49) +ℤ (((uint64_t)x33 * x47) +ℤ ((uint64_t)x32 * x45)))) +ℤ (((uint64_t)x31 * x62) +ℤ (((uint64_t)x33 * x63) +ℤ ((uint64_t)x32 * x61)))));
- { ℤ x67 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x13 + x29) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x45 + x61)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x43 + x59))))) -ℤ (((uint64_t)x13 * x49) +ℤ (((uint64_t)x15 * x47) +ℤ (((uint64_t)x17 * x45) +ℤ ((uint64_t)x19 * x43))))), (((((uint64_t)x13 * x62) +ℤ (((uint64_t)x15 * x63) +ℤ (((uint64_t)x17 * x61) +ℤ ((uint64_t)x19 * x59)))) +ℤ (((uint64_t)x29 * x49) +ℤ (((uint64_t)x31 * x47) +ℤ (((uint64_t)x33 * x45) +ℤ ((uint64_t)x32 * x43))))) +ℤ (((uint64_t)x29 * x62) +ℤ (((uint64_t)x31 * x63) +ℤ (((uint64_t)x33 * x61) +ℤ ((uint64_t)x32 * x59))))));
- { ℤ x68 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x11 + x27) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x43 + x59)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x41 + x57)))))) -ℤ (((uint64_t)x11 * x49) +ℤ (((uint64_t)x13 * x47) +ℤ (((uint64_t)x15 * x45) +ℤ (((uint64_t)x17 * x43) +ℤ ((uint64_t)x19 * x41)))))), (((((uint64_t)x11 * x62) +ℤ (((uint64_t)x13 * x63) +ℤ (((uint64_t)x15 * x61) +ℤ (((uint64_t)x17 * x59) +ℤ ((uint64_t)x19 * x57))))) +ℤ (((uint64_t)x27 * x49) +ℤ (((uint64_t)x29 * x47) +ℤ (((uint64_t)x31 * x45) +ℤ (((uint64_t)x33 * x43) +ℤ ((uint64_t)x32 * x41)))))) +ℤ (((uint64_t)x27 * x62) +ℤ (((uint64_t)x29 * x63) +ℤ (((uint64_t)x31 * x61) +ℤ (((uint64_t)x33 * x59) +ℤ ((uint64_t)x32 * x57)))))));
- { ℤ x69 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x9 + x25) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x41 + x57)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x39 + x55))))))) -ℤ (((uint64_t)x9 * x49) +ℤ (((uint64_t)x11 * x47) +ℤ (((uint64_t)x13 * x45) +ℤ (((uint64_t)x15 * x43) +ℤ (((uint64_t)x17 * x41) +ℤ ((uint64_t)x19 * x39))))))), (((((uint64_t)x9 * x62) +ℤ (((uint64_t)x11 * x63) +ℤ (((uint64_t)x13 * x61) +ℤ (((uint64_t)x15 * x59) +ℤ (((uint64_t)x17 * x57) +ℤ ((uint64_t)x19 * x55)))))) +ℤ (((uint64_t)x25 * x49) +ℤ (((uint64_t)x27 * x47) +ℤ (((uint64_t)x29 * x45) +ℤ (((uint64_t)x31 * x43) +ℤ (((uint64_t)x33 * x41) +ℤ ((uint64_t)x32 * x39))))))) +ℤ (((uint64_t)x25 * x62) +ℤ (((uint64_t)x27 * x63) +ℤ (((uint64_t)x29 * x61) +ℤ (((uint64_t)x31 * x59) +ℤ (((uint64_t)x33 * x57) +ℤ ((uint64_t)x32 * x55))))))));
- { ℤ x70 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x7 + x23) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x39 + x55)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x37 + x53)))))))) -ℤ (((uint64_t)x7 * x49) +ℤ (((uint64_t)x9 * x47) +ℤ (((uint64_t)x11 * x45) +ℤ (((uint64_t)x13 * x43) +ℤ (((uint64_t)x15 * x41) +ℤ (((uint64_t)x17 * x39) +ℤ ((uint64_t)x19 * x37)))))))), (((((uint64_t)x7 * x62) +ℤ (((uint64_t)x9 * x63) +ℤ (((uint64_t)x11 * x61) +ℤ (((uint64_t)x13 * x59) +ℤ (((uint64_t)x15 * x57) +ℤ (((uint64_t)x17 * x55) +ℤ ((uint64_t)x19 * x53))))))) +ℤ (((uint64_t)x23 * x49) +ℤ (((uint64_t)x25 * x47) +ℤ (((uint64_t)x27 * x45) +ℤ (((uint64_t)x29 * x43) +ℤ (((uint64_t)x31 * x41) +ℤ (((uint64_t)x33 * x39) +ℤ ((uint64_t)x32 * x37)))))))) +ℤ (((uint64_t)x23 * x62) +ℤ (((uint64_t)x25 * x63) +ℤ (((uint64_t)x27 * x61) +ℤ (((uint64_t)x29 * x59) +ℤ (((uint64_t)x31 * x57) +ℤ (((uint64_t)x33 * x55) +ℤ ((uint64_t)x32 * x53)))))))));
- { ℤ x71 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x35 + x51))))))))) -ℤ (((uint64_t)x5 * x49) +ℤ (((uint64_t)x7 * x47) +ℤ (((uint64_t)x9 * x45) +ℤ (((uint64_t)x11 * x43) +ℤ (((uint64_t)x13 * x41) +ℤ (((uint64_t)x15 * x39) +ℤ (((uint64_t)x17 * x37) +ℤ ((uint64_t)x19 * x35))))))))), (((((uint64_t)x5 * x62) +ℤ (((uint64_t)x7 * x63) +ℤ (((uint64_t)x9 * x61) +ℤ (((uint64_t)x11 * x59) +ℤ (((uint64_t)x13 * x57) +ℤ (((uint64_t)x15 * x55) +ℤ (((uint64_t)x17 * x53) +ℤ ((uint64_t)x19 * x51)))))))) +ℤ (((uint64_t)x21 * x49) +ℤ (((uint64_t)x23 * x47) +ℤ (((uint64_t)x25 * x45) +ℤ (((uint64_t)x27 * x43) +ℤ (((uint64_t)x29 * x41) +ℤ (((uint64_t)x31 * x39) +ℤ (((uint64_t)x33 * x37) +ℤ ((uint64_t)x32 * x35))))))))) +ℤ (((uint64_t)x21 * x62) +ℤ (((uint64_t)x23 * x63) +ℤ (((uint64_t)x25 * x61) +ℤ (((uint64_t)x27 * x59) +ℤ (((uint64_t)x29 * x57) +ℤ (((uint64_t)x31 * x55) +ℤ (((uint64_t)x33 * x53) +ℤ ((uint64_t)x32 * x51))))))))));
- { ℤ x72 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x17 + x33) *ℤ ((uint64_t)x35 + x51)))))))) -ℤ (((uint64_t)x5 * x47) +ℤ (((uint64_t)x7 * x45) +ℤ (((uint64_t)x9 * x43) +ℤ (((uint64_t)x11 * x41) +ℤ (((uint64_t)x13 * x39) +ℤ (((uint64_t)x15 * x37) +ℤ ((uint64_t)x17 * x35)))))))), (((((uint64_t)x5 * x63) +ℤ (((uint64_t)x7 * x61) +ℤ (((uint64_t)x9 * x59) +ℤ (((uint64_t)x11 * x57) +ℤ (((uint64_t)x13 * x55) +ℤ (((uint64_t)x15 * x53) +ℤ ((uint64_t)x17 * x51))))))) +ℤ (((uint64_t)x21 * x47) +ℤ (((uint64_t)x23 * x45) +ℤ (((uint64_t)x25 * x43) +ℤ (((uint64_t)x27 * x41) +ℤ (((uint64_t)x29 * x39) +ℤ (((uint64_t)x31 * x37) +ℤ ((uint64_t)x33 * x35)))))))) +ℤ (((uint64_t)x21 * x63) +ℤ (((uint64_t)x23 * x61) +ℤ (((uint64_t)x25 * x59) +ℤ (((uint64_t)x27 * x57) +ℤ (((uint64_t)x29 * x55) +ℤ (((uint64_t)x31 * x53) +ℤ ((uint64_t)x33 * x51)))))))));
- { ℤ x73 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x15 + x31) *ℤ ((uint64_t)x35 + x51))))))) -ℤ (((uint64_t)x5 * x45) +ℤ (((uint64_t)x7 * x43) +ℤ (((uint64_t)x9 * x41) +ℤ (((uint64_t)x11 * x39) +ℤ (((uint64_t)x13 * x37) +ℤ ((uint64_t)x15 * x35))))))), (((((uint64_t)x5 * x61) +ℤ (((uint64_t)x7 * x59) +ℤ (((uint64_t)x9 * x57) +ℤ (((uint64_t)x11 * x55) +ℤ (((uint64_t)x13 * x53) +ℤ ((uint64_t)x15 * x51)))))) +ℤ (((uint64_t)x21 * x45) +ℤ (((uint64_t)x23 * x43) +ℤ (((uint64_t)x25 * x41) +ℤ (((uint64_t)x27 * x39) +ℤ (((uint64_t)x29 * x37) +ℤ ((uint64_t)x31 * x35))))))) +ℤ (((uint64_t)x21 * x61) +ℤ (((uint64_t)x23 * x59) +ℤ (((uint64_t)x25 * x57) +ℤ (((uint64_t)x27 * x55) +ℤ (((uint64_t)x29 * x53) +ℤ ((uint64_t)x31 * x51))))))));
- { ℤ x74 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x13 + x29) *ℤ ((uint64_t)x35 + x51)))))) -ℤ (((uint64_t)x5 * x43) +ℤ (((uint64_t)x7 * x41) +ℤ (((uint64_t)x9 * x39) +ℤ (((uint64_t)x11 * x37) +ℤ ((uint64_t)x13 * x35)))))), (((((uint64_t)x5 * x59) +ℤ (((uint64_t)x7 * x57) +ℤ (((uint64_t)x9 * x55) +ℤ (((uint64_t)x11 * x53) +ℤ ((uint64_t)x13 * x51))))) +ℤ (((uint64_t)x21 * x43) +ℤ (((uint64_t)x23 * x41) +ℤ (((uint64_t)x25 * x39) +ℤ (((uint64_t)x27 * x37) +ℤ ((uint64_t)x29 * x35)))))) +ℤ (((uint64_t)x21 * x59) +ℤ (((uint64_t)x23 * x57) +ℤ (((uint64_t)x25 * x55) +ℤ (((uint64_t)x27 * x53) +ℤ ((uint64_t)x29 * x51)))))));
- { ℤ x75 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x11 + x27) *ℤ ((uint64_t)x35 + x51))))) -ℤ (((uint64_t)x5 * x41) +ℤ (((uint64_t)x7 * x39) +ℤ (((uint64_t)x9 * x37) +ℤ ((uint64_t)x11 * x35))))), (((((uint64_t)x5 * x57) +ℤ (((uint64_t)x7 * x55) +ℤ (((uint64_t)x9 * x53) +ℤ ((uint64_t)x11 * x51)))) +ℤ (((uint64_t)x21 * x41) +ℤ (((uint64_t)x23 * x39) +ℤ (((uint64_t)x25 * x37) +ℤ ((uint64_t)x27 * x35))))) +ℤ (((uint64_t)x21 * x57) +ℤ (((uint64_t)x23 * x55) +ℤ (((uint64_t)x25 * x53) +ℤ ((uint64_t)x27 * x51))))));
- { ℤ x76 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x9 + x25) *ℤ ((uint64_t)x35 + x51)))) -ℤ (((uint64_t)x5 * x39) +ℤ (((uint64_t)x7 * x37) +ℤ ((uint64_t)x9 * x35)))), (((((uint64_t)x5 * x55) +ℤ (((uint64_t)x7 * x53) +ℤ ((uint64_t)x9 * x51))) +ℤ (((uint64_t)x21 * x39) +ℤ (((uint64_t)x23 * x37) +ℤ ((uint64_t)x25 * x35)))) +ℤ (((uint64_t)x21 * x55) +ℤ (((uint64_t)x23 * x53) +ℤ ((uint64_t)x25 * x51)))));
- { ℤ x77 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x7 + x23) *ℤ ((uint64_t)x35 + x51))) -ℤ (((uint64_t)x5 * x37) +ℤ ((uint64_t)x7 * x35))), (((((uint64_t)x5 * x53) +ℤ ((uint64_t)x7 * x51)) +ℤ (((uint64_t)x21 * x37) +ℤ ((uint64_t)x23 * x35))) +ℤ (((uint64_t)x21 * x53) +ℤ ((uint64_t)x23 * x51))));
- { ℤ x78 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x5 + x21) *ℤ ((uint64_t)x35 + x51)) -ℤ ((uint64_t)x5 * x35)), ((((uint64_t)x5 * x51) +ℤ ((uint64_t)x21 * x35)) +ℤ ((uint64_t)x21 * x51)));
- { ℤ x79 = (((((uint64_t)x19 * x49) +ℤ ((uint64_t)x32 * x62)) +ℤ x72) +ℤ x64);
- { ℤ x80 = ((((((uint64_t)x17 * x49) +ℤ ((uint64_t)x19 * x47)) +ℤ (((uint64_t)x33 * x62) +ℤ ((uint64_t)x32 * x63))) +ℤ x73) +ℤ x65);
- { ℤ x81 = ((((((uint64_t)x15 * x49) +ℤ (((uint64_t)x17 * x47) +ℤ ((uint64_t)x19 * x45))) +ℤ (((uint64_t)x31 * x62) +ℤ (((uint64_t)x33 * x63) +ℤ ((uint64_t)x32 * x61)))) +ℤ x74) +ℤ x66);
- { ℤ x82 = ((((((uint64_t)x13 * x49) +ℤ (((uint64_t)x15 * x47) +ℤ (((uint64_t)x17 * x45) +ℤ ((uint64_t)x19 * x43)))) +ℤ (((uint64_t)x29 * x62) +ℤ (((uint64_t)x31 * x63) +ℤ (((uint64_t)x33 * x61) +ℤ ((uint64_t)x32 * x59))))) +ℤ x75) +ℤ x67);
- { ℤ x83 = ((((((uint64_t)x11 * x49) +ℤ (((uint64_t)x13 * x47) +ℤ (((uint64_t)x15 * x45) +ℤ (((uint64_t)x17 * x43) +ℤ ((uint64_t)x19 * x41))))) +ℤ (((uint64_t)x27 * x62) +ℤ (((uint64_t)x29 * x63) +ℤ (((uint64_t)x31 * x61) +ℤ (((uint64_t)x33 * x59) +ℤ ((uint64_t)x32 * x57)))))) +ℤ x76) +ℤ x68);
- { ℤ x84 = ((((((uint64_t)x9 * x49) +ℤ (((uint64_t)x11 * x47) +ℤ (((uint64_t)x13 * x45) +ℤ (((uint64_t)x15 * x43) +ℤ (((uint64_t)x17 * x41) +ℤ ((uint64_t)x19 * x39)))))) +ℤ (((uint64_t)x25 * x62) +ℤ (((uint64_t)x27 * x63) +ℤ (((uint64_t)x29 * x61) +ℤ (((uint64_t)x31 * x59) +ℤ (((uint64_t)x33 * x57) +ℤ ((uint64_t)x32 * x55))))))) +ℤ x77) +ℤ x69);
- { ℤ x85 = ((((((uint64_t)x7 * x49) +ℤ (((uint64_t)x9 * x47) +ℤ (((uint64_t)x11 * x45) +ℤ (((uint64_t)x13 * x43) +ℤ (((uint64_t)x15 * x41) +ℤ (((uint64_t)x17 * x39) +ℤ ((uint64_t)x19 * x37))))))) +ℤ (((uint64_t)x23 * x62) +ℤ (((uint64_t)x25 * x63) +ℤ (((uint64_t)x27 * x61) +ℤ (((uint64_t)x29 * x59) +ℤ (((uint64_t)x31 * x57) +ℤ (((uint64_t)x33 * x55) +ℤ ((uint64_t)x32 * x53)))))))) +ℤ x78) +ℤ x70);
- { ℤ x86 = ((((uint64_t)x5 * x49) +ℤ (((uint64_t)x7 * x47) +ℤ (((uint64_t)x9 * x45) +ℤ (((uint64_t)x11 * x43) +ℤ (((uint64_t)x13 * x41) +ℤ (((uint64_t)x15 * x39) +ℤ (((uint64_t)x17 * x37) +ℤ ((uint64_t)x19 * x35)))))))) +ℤ (((uint64_t)x21 * x62) +ℤ (((uint64_t)x23 * x63) +ℤ (((uint64_t)x25 * x61) +ℤ (((uint64_t)x27 * x59) +ℤ (((uint64_t)x29 * x57) +ℤ (((uint64_t)x31 * x55) +ℤ (((uint64_t)x33 * x53) +ℤ ((uint64_t)x32 * x51)))))))));
- { ℤ x87 = (((((uint64_t)x5 * x47) +ℤ (((uint64_t)x7 * x45) +ℤ (((uint64_t)x9 * x43) +ℤ (((uint64_t)x11 * x41) +ℤ (((uint64_t)x13 * x39) +ℤ (((uint64_t)x15 * x37) +ℤ ((uint64_t)x17 * x35))))))) +ℤ (((uint64_t)x21 * x63) +ℤ (((uint64_t)x23 * x61) +ℤ (((uint64_t)x25 * x59) +ℤ (((uint64_t)x27 * x57) +ℤ (((uint64_t)x29 * x55) +ℤ (((uint64_t)x31 * x53) +ℤ ((uint64_t)x33 * x51)))))))) +ℤ x64);
- { ℤ x88 = (((((uint64_t)x5 * x45) +ℤ (((uint64_t)x7 * x43) +ℤ (((uint64_t)x9 * x41) +ℤ (((uint64_t)x11 * x39) +ℤ (((uint64_t)x13 * x37) +ℤ ((uint64_t)x15 * x35)))))) +ℤ (((uint64_t)x21 * x61) +ℤ (((uint64_t)x23 * x59) +ℤ (((uint64_t)x25 * x57) +ℤ (((uint64_t)x27 * x55) +ℤ (((uint64_t)x29 * x53) +ℤ ((uint64_t)x31 * x51))))))) +ℤ x65);
- { ℤ x89 = (((((uint64_t)x5 * x43) +ℤ (((uint64_t)x7 * x41) +ℤ (((uint64_t)x9 * x39) +ℤ (((uint64_t)x11 * x37) +ℤ ((uint64_t)x13 * x35))))) +ℤ (((uint64_t)x21 * x59) +ℤ (((uint64_t)x23 * x57) +ℤ (((uint64_t)x25 * x55) +ℤ (((uint64_t)x27 * x53) +ℤ ((uint64_t)x29 * x51)))))) +ℤ x66);
- { ℤ x90 = (((((uint64_t)x5 * x41) +ℤ (((uint64_t)x7 * x39) +ℤ (((uint64_t)x9 * x37) +ℤ ((uint64_t)x11 * x35)))) +ℤ (((uint64_t)x21 * x57) +ℤ (((uint64_t)x23 * x55) +ℤ (((uint64_t)x25 * x53) +ℤ ((uint64_t)x27 * x51))))) +ℤ x67);
- { ℤ x91 = (((((uint64_t)x5 * x39) +ℤ (((uint64_t)x7 * x37) +ℤ ((uint64_t)x9 * x35))) +ℤ (((uint64_t)x21 * x55) +ℤ (((uint64_t)x23 * x53) +ℤ ((uint64_t)x25 * x51)))) +ℤ x68);
- { ℤ x92 = (((((uint64_t)x5 * x37) +ℤ ((uint64_t)x7 * x35)) +ℤ (((uint64_t)x21 * x53) +ℤ ((uint64_t)x23 * x51))) +ℤ x69);
- { ℤ x93 = ((((uint64_t)x5 * x35) +ℤ ((uint64_t)x21 * x51)) +ℤ x70);
- { uint64_t x94 = (x86 >> 0x1e);
- { uint32_t x95 = (x86 & 0x3fffffff);
- { uint64_t x96 = (x71 >> 0x1e);
- { uint32_t x97 = (x71 & 0x3fffffff);
- { ℤ x98 = ((0x40000000 *ℤ x96) +ℤ x97);
- { uint64_t x99 = (x98 >> 0x1e);
- { uint32_t x100 = (x98 & 0x3fffffff);
- { ℤ x101 = ((x94 +ℤ x85) +ℤ x99);
- { uint64_t x102 = (x101 >> 0x1e);
- { uint32_t x103 = (x101 & 0x3fffffff);
- { ℤ x104 = (x93 +ℤ x99);
- { uint64_t x105 = (x104 >> 0x1e);
- { uint32_t x106 = (x104 & 0x3fffffff);
- { ℤ x107 = (x102 +ℤ x84);
- { uint64_t x108 = (x107 >> 0x1e);
- { uint32_t x109 = (x107 & 0x3fffffff);
- { ℤ x110 = (x105 +ℤ x92);
- { uint64_t x111 = (x110 >> 0x1e);
- { uint32_t x112 = (x110 & 0x3fffffff);
- { ℤ x113 = (x108 +ℤ x83);
- { uint64_t x114 = (x113 >> 0x1e);
- { uint32_t x115 = (x113 & 0x3fffffff);
- { ℤ x116 = (x111 +ℤ x91);
- { uint64_t x117 = (x116 >> 0x1e);
- { uint32_t x118 = (x116 & 0x3fffffff);
- { ℤ x119 = (x114 +ℤ x82);
- { uint64_t x120 = (x119 >> 0x1e);
- { uint32_t x121 = (x119 & 0x3fffffff);
- { ℤ x122 = (x117 +ℤ x90);
- { uint64_t x123 = (x122 >> 0x1e);
- { uint32_t x124 = (x122 & 0x3fffffff);
- { ℤ x125 = (x120 +ℤ x81);
- { uint64_t x126 = (x125 >> 0x1e);
- { uint32_t x127 = (x125 & 0x3fffffff);
- { ℤ x128 = (x123 +ℤ x89);
- { uint64_t x129 = (x128 >> 0x1e);
- { uint32_t x130 = (x128 & 0x3fffffff);
- { ℤ x131 = (x126 +ℤ x80);
- { uint64_t x132 = (x131 >> 0x1e);
- { uint32_t x133 = (x131 & 0x3fffffff);
- { ℤ x134 = (x129 +ℤ x88);
- { uint64_t x135 = (x134 >> 0x1e);
- { uint32_t x136 = (x134 & 0x3fffffff);
- { ℤ x137 = (x132 +ℤ x79);
- { uint64_t x138 = (x137 >> 0x1e);
- { uint32_t x139 = (x137 & 0x3fffffff);
- { ℤ x140 = (x135 +ℤ x87);
- { uint64_t x141 = (x140 >> 0x1e);
- { uint32_t x142 = (x140 & 0x3fffffff);
- { uint64_t x143 = (x138 + x100);
- { uint32_t x144 = (uint32_t) (x143 >> 0x1e);
- { uint32_t x145 = ((uint32_t)x143 & 0x3fffffff);
- { uint64_t x146 = (x141 + x95);
- { uint32_t x147 = (uint32_t) (x146 >> 0x1e);
- { uint32_t x148 = ((uint32_t)x146 & 0x3fffffff);
- { uint64_t x149 = (((uint64_t)0x40000000 * x144) + x145);
- { uint32_t x150 = (uint32_t) (x149 >> 0x1e);
- { uint32_t x151 = ((uint32_t)x149 & 0x3fffffff);
- { uint32_t x152 = ((x147 + x103) + x150);
- { uint32_t x153 = (x152 >> 0x1e);
- { uint32_t x154 = (x152 & 0x3fffffff);
- { uint32_t x155 = (x106 + x150);
- { uint32_t x156 = (x155 >> 0x1e);
- { uint32_t x157 = (x155 & 0x3fffffff);
- out[0] = x157;
- out[1] = (x156 + x112);
- out[2] = x118;
- out[3] = x124;
- out[4] = x130;
- out[5] = x136;
- out[6] = x142;
- out[7] = x148;
- out[8] = x154;
- out[9] = (x153 + x109);
- out[10] = x115;
- out[11] = x121;
- out[12] = x127;
- out[13] = x133;
- out[14] = x139;
- out[15] = x151;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e480m2e240m1/femul.v b/src/Specific/solinas32_2e480m2e240m1/femul.v
deleted file mode 100644
index fb742e249..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1/femulDisplay.log b/src/Specific/solinas32_2e480m2e240m1/femulDisplay.log
deleted file mode 100644
index 9bed1ebda..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/femulDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ℤ x64 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x19 + x32) *ℤ ((uint64_t)x49 + x62)) -ℤ ((uint64_t)x19 * x49)), ((((uint64_t)x19 * x62) +ℤ ((uint64_t)x32 * x49)) +ℤ ((uint64_t)x32 * x62)));
- ℤ x65 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x17 + x33) *ℤ ((uint64_t)x49 + x62)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x47 + x63))) -ℤ (((uint64_t)x17 * x49) +ℤ ((uint64_t)x19 * x47))), (((((uint64_t)x17 * x62) +ℤ ((uint64_t)x19 * x63)) +ℤ (((uint64_t)x33 * x49) +ℤ ((uint64_t)x32 * x47))) +ℤ (((uint64_t)x33 * x62) +ℤ ((uint64_t)x32 * x63))));
- ℤ x66 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x15 + x31) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x47 + x63)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x45 + x61)))) -ℤ (((uint64_t)x15 * x49) +ℤ (((uint64_t)x17 * x47) +ℤ ((uint64_t)x19 * x45)))), (((((uint64_t)x15 * x62) +ℤ (((uint64_t)x17 * x63) +ℤ ((uint64_t)x19 * x61))) +ℤ (((uint64_t)x31 * x49) +ℤ (((uint64_t)x33 * x47) +ℤ ((uint64_t)x32 * x45)))) +ℤ (((uint64_t)x31 * x62) +ℤ (((uint64_t)x33 * x63) +ℤ ((uint64_t)x32 * x61)))));
- ℤ x67 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x13 + x29) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x45 + x61)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x43 + x59))))) -ℤ (((uint64_t)x13 * x49) +ℤ (((uint64_t)x15 * x47) +ℤ (((uint64_t)x17 * x45) +ℤ ((uint64_t)x19 * x43))))), (((((uint64_t)x13 * x62) +ℤ (((uint64_t)x15 * x63) +ℤ (((uint64_t)x17 * x61) +ℤ ((uint64_t)x19 * x59)))) +ℤ (((uint64_t)x29 * x49) +ℤ (((uint64_t)x31 * x47) +ℤ (((uint64_t)x33 * x45) +ℤ ((uint64_t)x32 * x43))))) +ℤ (((uint64_t)x29 * x62) +ℤ (((uint64_t)x31 * x63) +ℤ (((uint64_t)x33 * x61) +ℤ ((uint64_t)x32 * x59))))));
- ℤ x68 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x11 + x27) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x43 + x59)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x41 + x57)))))) -ℤ (((uint64_t)x11 * x49) +ℤ (((uint64_t)x13 * x47) +ℤ (((uint64_t)x15 * x45) +ℤ (((uint64_t)x17 * x43) +ℤ ((uint64_t)x19 * x41)))))), (((((uint64_t)x11 * x62) +ℤ (((uint64_t)x13 * x63) +ℤ (((uint64_t)x15 * x61) +ℤ (((uint64_t)x17 * x59) +ℤ ((uint64_t)x19 * x57))))) +ℤ (((uint64_t)x27 * x49) +ℤ (((uint64_t)x29 * x47) +ℤ (((uint64_t)x31 * x45) +ℤ (((uint64_t)x33 * x43) +ℤ ((uint64_t)x32 * x41)))))) +ℤ (((uint64_t)x27 * x62) +ℤ (((uint64_t)x29 * x63) +ℤ (((uint64_t)x31 * x61) +ℤ (((uint64_t)x33 * x59) +ℤ ((uint64_t)x32 * x57)))))));
- ℤ x69 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x9 + x25) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x41 + x57)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x39 + x55))))))) -ℤ (((uint64_t)x9 * x49) +ℤ (((uint64_t)x11 * x47) +ℤ (((uint64_t)x13 * x45) +ℤ (((uint64_t)x15 * x43) +ℤ (((uint64_t)x17 * x41) +ℤ ((uint64_t)x19 * x39))))))), (((((uint64_t)x9 * x62) +ℤ (((uint64_t)x11 * x63) +ℤ (((uint64_t)x13 * x61) +ℤ (((uint64_t)x15 * x59) +ℤ (((uint64_t)x17 * x57) +ℤ ((uint64_t)x19 * x55)))))) +ℤ (((uint64_t)x25 * x49) +ℤ (((uint64_t)x27 * x47) +ℤ (((uint64_t)x29 * x45) +ℤ (((uint64_t)x31 * x43) +ℤ (((uint64_t)x33 * x41) +ℤ ((uint64_t)x32 * x39))))))) +ℤ (((uint64_t)x25 * x62) +ℤ (((uint64_t)x27 * x63) +ℤ (((uint64_t)x29 * x61) +ℤ (((uint64_t)x31 * x59) +ℤ (((uint64_t)x33 * x57) +ℤ ((uint64_t)x32 * x55))))))));
- ℤ x70 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x7 + x23) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x39 + x55)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x37 + x53)))))))) -ℤ (((uint64_t)x7 * x49) +ℤ (((uint64_t)x9 * x47) +ℤ (((uint64_t)x11 * x45) +ℤ (((uint64_t)x13 * x43) +ℤ (((uint64_t)x15 * x41) +ℤ (((uint64_t)x17 * x39) +ℤ ((uint64_t)x19 * x37)))))))), (((((uint64_t)x7 * x62) +ℤ (((uint64_t)x9 * x63) +ℤ (((uint64_t)x11 * x61) +ℤ (((uint64_t)x13 * x59) +ℤ (((uint64_t)x15 * x57) +ℤ (((uint64_t)x17 * x55) +ℤ ((uint64_t)x19 * x53))))))) +ℤ (((uint64_t)x23 * x49) +ℤ (((uint64_t)x25 * x47) +ℤ (((uint64_t)x27 * x45) +ℤ (((uint64_t)x29 * x43) +ℤ (((uint64_t)x31 * x41) +ℤ (((uint64_t)x33 * x39) +ℤ ((uint64_t)x32 * x37)))))))) +ℤ (((uint64_t)x23 * x62) +ℤ (((uint64_t)x25 * x63) +ℤ (((uint64_t)x27 * x61) +ℤ (((uint64_t)x29 * x59) +ℤ (((uint64_t)x31 * x57) +ℤ (((uint64_t)x33 * x55) +ℤ ((uint64_t)x32 * x53)))))))));
- ℤ x71 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x49 + x62)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x17 + x33) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x19 + x32) *ℤ ((uint64_t)x35 + x51))))))))) -ℤ (((uint64_t)x5 * x49) +ℤ (((uint64_t)x7 * x47) +ℤ (((uint64_t)x9 * x45) +ℤ (((uint64_t)x11 * x43) +ℤ (((uint64_t)x13 * x41) +ℤ (((uint64_t)x15 * x39) +ℤ (((uint64_t)x17 * x37) +ℤ ((uint64_t)x19 * x35))))))))), (((((uint64_t)x5 * x62) +ℤ (((uint64_t)x7 * x63) +ℤ (((uint64_t)x9 * x61) +ℤ (((uint64_t)x11 * x59) +ℤ (((uint64_t)x13 * x57) +ℤ (((uint64_t)x15 * x55) +ℤ (((uint64_t)x17 * x53) +ℤ ((uint64_t)x19 * x51)))))))) +ℤ (((uint64_t)x21 * x49) +ℤ (((uint64_t)x23 * x47) +ℤ (((uint64_t)x25 * x45) +ℤ (((uint64_t)x27 * x43) +ℤ (((uint64_t)x29 * x41) +ℤ (((uint64_t)x31 * x39) +ℤ (((uint64_t)x33 * x37) +ℤ ((uint64_t)x32 * x35))))))))) +ℤ (((uint64_t)x21 * x62) +ℤ (((uint64_t)x23 * x63) +ℤ (((uint64_t)x25 * x61) +ℤ (((uint64_t)x27 * x59) +ℤ (((uint64_t)x29 * x57) +ℤ (((uint64_t)x31 * x55) +ℤ (((uint64_t)x33 * x53) +ℤ ((uint64_t)x32 * x51))))))))));
- ℤ x72 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x47 + x63)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x15 + x31) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x17 + x33) *ℤ ((uint64_t)x35 + x51)))))))) -ℤ (((uint64_t)x5 * x47) +ℤ (((uint64_t)x7 * x45) +ℤ (((uint64_t)x9 * x43) +ℤ (((uint64_t)x11 * x41) +ℤ (((uint64_t)x13 * x39) +ℤ (((uint64_t)x15 * x37) +ℤ ((uint64_t)x17 * x35)))))))), (((((uint64_t)x5 * x63) +ℤ (((uint64_t)x7 * x61) +ℤ (((uint64_t)x9 * x59) +ℤ (((uint64_t)x11 * x57) +ℤ (((uint64_t)x13 * x55) +ℤ (((uint64_t)x15 * x53) +ℤ ((uint64_t)x17 * x51))))))) +ℤ (((uint64_t)x21 * x47) +ℤ (((uint64_t)x23 * x45) +ℤ (((uint64_t)x25 * x43) +ℤ (((uint64_t)x27 * x41) +ℤ (((uint64_t)x29 * x39) +ℤ (((uint64_t)x31 * x37) +ℤ ((uint64_t)x33 * x35)))))))) +ℤ (((uint64_t)x21 * x63) +ℤ (((uint64_t)x23 * x61) +ℤ (((uint64_t)x25 * x59) +ℤ (((uint64_t)x27 * x57) +ℤ (((uint64_t)x29 * x55) +ℤ (((uint64_t)x31 * x53) +ℤ ((uint64_t)x33 * x51)))))))));
- ℤ x73 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x45 + x61)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x13 + x29) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x15 + x31) *ℤ ((uint64_t)x35 + x51))))))) -ℤ (((uint64_t)x5 * x45) +ℤ (((uint64_t)x7 * x43) +ℤ (((uint64_t)x9 * x41) +ℤ (((uint64_t)x11 * x39) +ℤ (((uint64_t)x13 * x37) +ℤ ((uint64_t)x15 * x35))))))), (((((uint64_t)x5 * x61) +ℤ (((uint64_t)x7 * x59) +ℤ (((uint64_t)x9 * x57) +ℤ (((uint64_t)x11 * x55) +ℤ (((uint64_t)x13 * x53) +ℤ ((uint64_t)x15 * x51)))))) +ℤ (((uint64_t)x21 * x45) +ℤ (((uint64_t)x23 * x43) +ℤ (((uint64_t)x25 * x41) +ℤ (((uint64_t)x27 * x39) +ℤ (((uint64_t)x29 * x37) +ℤ ((uint64_t)x31 * x35))))))) +ℤ (((uint64_t)x21 * x61) +ℤ (((uint64_t)x23 * x59) +ℤ (((uint64_t)x25 * x57) +ℤ (((uint64_t)x27 * x55) +ℤ (((uint64_t)x29 * x53) +ℤ ((uint64_t)x31 * x51))))))));
- ℤ x74 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x43 + x59)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x11 + x27) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x13 + x29) *ℤ ((uint64_t)x35 + x51)))))) -ℤ (((uint64_t)x5 * x43) +ℤ (((uint64_t)x7 * x41) +ℤ (((uint64_t)x9 * x39) +ℤ (((uint64_t)x11 * x37) +ℤ ((uint64_t)x13 * x35)))))), (((((uint64_t)x5 * x59) +ℤ (((uint64_t)x7 * x57) +ℤ (((uint64_t)x9 * x55) +ℤ (((uint64_t)x11 * x53) +ℤ ((uint64_t)x13 * x51))))) +ℤ (((uint64_t)x21 * x43) +ℤ (((uint64_t)x23 * x41) +ℤ (((uint64_t)x25 * x39) +ℤ (((uint64_t)x27 * x37) +ℤ ((uint64_t)x29 * x35)))))) +ℤ (((uint64_t)x21 * x59) +ℤ (((uint64_t)x23 * x57) +ℤ (((uint64_t)x25 * x55) +ℤ (((uint64_t)x27 * x53) +ℤ ((uint64_t)x29 * x51)))))));
- ℤ x75 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x41 + x57)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x9 + x25) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x11 + x27) *ℤ ((uint64_t)x35 + x51))))) -ℤ (((uint64_t)x5 * x41) +ℤ (((uint64_t)x7 * x39) +ℤ (((uint64_t)x9 * x37) +ℤ ((uint64_t)x11 * x35))))), (((((uint64_t)x5 * x57) +ℤ (((uint64_t)x7 * x55) +ℤ (((uint64_t)x9 * x53) +ℤ ((uint64_t)x11 * x51)))) +ℤ (((uint64_t)x21 * x41) +ℤ (((uint64_t)x23 * x39) +ℤ (((uint64_t)x25 * x37) +ℤ ((uint64_t)x27 * x35))))) +ℤ (((uint64_t)x21 * x57) +ℤ (((uint64_t)x23 * x55) +ℤ (((uint64_t)x25 * x53) +ℤ ((uint64_t)x27 * x51))))));
- ℤ x76 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x39 + x55)) +ℤ ((((uint64_t)x7 + x23) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x9 + x25) *ℤ ((uint64_t)x35 + x51)))) -ℤ (((uint64_t)x5 * x39) +ℤ (((uint64_t)x7 * x37) +ℤ ((uint64_t)x9 * x35)))), (((((uint64_t)x5 * x55) +ℤ (((uint64_t)x7 * x53) +ℤ ((uint64_t)x9 * x51))) +ℤ (((uint64_t)x21 * x39) +ℤ (((uint64_t)x23 * x37) +ℤ ((uint64_t)x25 * x35)))) +ℤ (((uint64_t)x21 * x55) +ℤ (((uint64_t)x23 * x53) +ℤ ((uint64_t)x25 * x51)))));
- ℤ x77 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x5 + x21) *ℤ ((uint64_t)x37 + x53)) +ℤ (((uint64_t)x7 + x23) *ℤ ((uint64_t)x35 + x51))) -ℤ (((uint64_t)x5 * x37) +ℤ ((uint64_t)x7 * x35))), (((((uint64_t)x5 * x53) +ℤ ((uint64_t)x7 * x51)) +ℤ (((uint64_t)x21 * x37) +ℤ ((uint64_t)x23 * x35))) +ℤ (((uint64_t)x21 * x53) +ℤ ((uint64_t)x23 * x51))));
- ℤ x78 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x5 + x21) *ℤ ((uint64_t)x35 + x51)) -ℤ ((uint64_t)x5 * x35)), ((((uint64_t)x5 * x51) +ℤ ((uint64_t)x21 * x35)) +ℤ ((uint64_t)x21 * x51)));
- ℤ x79 = (((((uint64_t)x19 * x49) +ℤ ((uint64_t)x32 * x62)) +ℤ x72) +ℤ x64);
- ℤ x80 = ((((((uint64_t)x17 * x49) +ℤ ((uint64_t)x19 * x47)) +ℤ (((uint64_t)x33 * x62) +ℤ ((uint64_t)x32 * x63))) +ℤ x73) +ℤ x65);
- ℤ x81 = ((((((uint64_t)x15 * x49) +ℤ (((uint64_t)x17 * x47) +ℤ ((uint64_t)x19 * x45))) +ℤ (((uint64_t)x31 * x62) +ℤ (((uint64_t)x33 * x63) +ℤ ((uint64_t)x32 * x61)))) +ℤ x74) +ℤ x66);
- ℤ x82 = ((((((uint64_t)x13 * x49) +ℤ (((uint64_t)x15 * x47) +ℤ (((uint64_t)x17 * x45) +ℤ ((uint64_t)x19 * x43)))) +ℤ (((uint64_t)x29 * x62) +ℤ (((uint64_t)x31 * x63) +ℤ (((uint64_t)x33 * x61) +ℤ ((uint64_t)x32 * x59))))) +ℤ x75) +ℤ x67);
- ℤ x83 = ((((((uint64_t)x11 * x49) +ℤ (((uint64_t)x13 * x47) +ℤ (((uint64_t)x15 * x45) +ℤ (((uint64_t)x17 * x43) +ℤ ((uint64_t)x19 * x41))))) +ℤ (((uint64_t)x27 * x62) +ℤ (((uint64_t)x29 * x63) +ℤ (((uint64_t)x31 * x61) +ℤ (((uint64_t)x33 * x59) +ℤ ((uint64_t)x32 * x57)))))) +ℤ x76) +ℤ x68);
- ℤ x84 = ((((((uint64_t)x9 * x49) +ℤ (((uint64_t)x11 * x47) +ℤ (((uint64_t)x13 * x45) +ℤ (((uint64_t)x15 * x43) +ℤ (((uint64_t)x17 * x41) +ℤ ((uint64_t)x19 * x39)))))) +ℤ (((uint64_t)x25 * x62) +ℤ (((uint64_t)x27 * x63) +ℤ (((uint64_t)x29 * x61) +ℤ (((uint64_t)x31 * x59) +ℤ (((uint64_t)x33 * x57) +ℤ ((uint64_t)x32 * x55))))))) +ℤ x77) +ℤ x69);
- ℤ x85 = ((((((uint64_t)x7 * x49) +ℤ (((uint64_t)x9 * x47) +ℤ (((uint64_t)x11 * x45) +ℤ (((uint64_t)x13 * x43) +ℤ (((uint64_t)x15 * x41) +ℤ (((uint64_t)x17 * x39) +ℤ ((uint64_t)x19 * x37))))))) +ℤ (((uint64_t)x23 * x62) +ℤ (((uint64_t)x25 * x63) +ℤ (((uint64_t)x27 * x61) +ℤ (((uint64_t)x29 * x59) +ℤ (((uint64_t)x31 * x57) +ℤ (((uint64_t)x33 * x55) +ℤ ((uint64_t)x32 * x53)))))))) +ℤ x78) +ℤ x70);
- ℤ x86 = ((((uint64_t)x5 * x49) +ℤ (((uint64_t)x7 * x47) +ℤ (((uint64_t)x9 * x45) +ℤ (((uint64_t)x11 * x43) +ℤ (((uint64_t)x13 * x41) +ℤ (((uint64_t)x15 * x39) +ℤ (((uint64_t)x17 * x37) +ℤ ((uint64_t)x19 * x35)))))))) +ℤ (((uint64_t)x21 * x62) +ℤ (((uint64_t)x23 * x63) +ℤ (((uint64_t)x25 * x61) +ℤ (((uint64_t)x27 * x59) +ℤ (((uint64_t)x29 * x57) +ℤ (((uint64_t)x31 * x55) +ℤ (((uint64_t)x33 * x53) +ℤ ((uint64_t)x32 * x51)))))))));
- ℤ x87 = (((((uint64_t)x5 * x47) +ℤ (((uint64_t)x7 * x45) +ℤ (((uint64_t)x9 * x43) +ℤ (((uint64_t)x11 * x41) +ℤ (((uint64_t)x13 * x39) +ℤ (((uint64_t)x15 * x37) +ℤ ((uint64_t)x17 * x35))))))) +ℤ (((uint64_t)x21 * x63) +ℤ (((uint64_t)x23 * x61) +ℤ (((uint64_t)x25 * x59) +ℤ (((uint64_t)x27 * x57) +ℤ (((uint64_t)x29 * x55) +ℤ (((uint64_t)x31 * x53) +ℤ ((uint64_t)x33 * x51)))))))) +ℤ x64);
- ℤ x88 = (((((uint64_t)x5 * x45) +ℤ (((uint64_t)x7 * x43) +ℤ (((uint64_t)x9 * x41) +ℤ (((uint64_t)x11 * x39) +ℤ (((uint64_t)x13 * x37) +ℤ ((uint64_t)x15 * x35)))))) +ℤ (((uint64_t)x21 * x61) +ℤ (((uint64_t)x23 * x59) +ℤ (((uint64_t)x25 * x57) +ℤ (((uint64_t)x27 * x55) +ℤ (((uint64_t)x29 * x53) +ℤ ((uint64_t)x31 * x51))))))) +ℤ x65);
- ℤ x89 = (((((uint64_t)x5 * x43) +ℤ (((uint64_t)x7 * x41) +ℤ (((uint64_t)x9 * x39) +ℤ (((uint64_t)x11 * x37) +ℤ ((uint64_t)x13 * x35))))) +ℤ (((uint64_t)x21 * x59) +ℤ (((uint64_t)x23 * x57) +ℤ (((uint64_t)x25 * x55) +ℤ (((uint64_t)x27 * x53) +ℤ ((uint64_t)x29 * x51)))))) +ℤ x66);
- ℤ x90 = (((((uint64_t)x5 * x41) +ℤ (((uint64_t)x7 * x39) +ℤ (((uint64_t)x9 * x37) +ℤ ((uint64_t)x11 * x35)))) +ℤ (((uint64_t)x21 * x57) +ℤ (((uint64_t)x23 * x55) +ℤ (((uint64_t)x25 * x53) +ℤ ((uint64_t)x27 * x51))))) +ℤ x67);
- ℤ x91 = (((((uint64_t)x5 * x39) +ℤ (((uint64_t)x7 * x37) +ℤ ((uint64_t)x9 * x35))) +ℤ (((uint64_t)x21 * x55) +ℤ (((uint64_t)x23 * x53) +ℤ ((uint64_t)x25 * x51)))) +ℤ x68);
- ℤ x92 = (((((uint64_t)x5 * x37) +ℤ ((uint64_t)x7 * x35)) +ℤ (((uint64_t)x21 * x53) +ℤ ((uint64_t)x23 * x51))) +ℤ x69);
- ℤ x93 = ((((uint64_t)x5 * x35) +ℤ ((uint64_t)x21 * x51)) +ℤ x70);
- uint64_t x94 = (x86 >> 0x1e);
- uint32_t x95 = (x86 & 0x3fffffff);
- uint64_t x96 = (x71 >> 0x1e);
- uint32_t x97 = (x71 & 0x3fffffff);
- ℤ x98 = ((0x40000000 *ℤ x96) +ℤ x97);
- uint64_t x99 = (x98 >> 0x1e);
- uint32_t x100 = (x98 & 0x3fffffff);
- ℤ x101 = ((x94 +ℤ x85) +ℤ x99);
- uint64_t x102 = (x101 >> 0x1e);
- uint32_t x103 = (x101 & 0x3fffffff);
- ℤ x104 = (x93 +ℤ x99);
- uint64_t x105 = (x104 >> 0x1e);
- uint32_t x106 = (x104 & 0x3fffffff);
- ℤ x107 = (x102 +ℤ x84);
- uint64_t x108 = (x107 >> 0x1e);
- uint32_t x109 = (x107 & 0x3fffffff);
- ℤ x110 = (x105 +ℤ x92);
- uint64_t x111 = (x110 >> 0x1e);
- uint32_t x112 = (x110 & 0x3fffffff);
- ℤ x113 = (x108 +ℤ x83);
- uint64_t x114 = (x113 >> 0x1e);
- uint32_t x115 = (x113 & 0x3fffffff);
- ℤ x116 = (x111 +ℤ x91);
- uint64_t x117 = (x116 >> 0x1e);
- uint32_t x118 = (x116 & 0x3fffffff);
- ℤ x119 = (x114 +ℤ x82);
- uint64_t x120 = (x119 >> 0x1e);
- uint32_t x121 = (x119 & 0x3fffffff);
- ℤ x122 = (x117 +ℤ x90);
- uint64_t x123 = (x122 >> 0x1e);
- uint32_t x124 = (x122 & 0x3fffffff);
- ℤ x125 = (x120 +ℤ x81);
- uint64_t x126 = (x125 >> 0x1e);
- uint32_t x127 = (x125 & 0x3fffffff);
- ℤ x128 = (x123 +ℤ x89);
- uint64_t x129 = (x128 >> 0x1e);
- uint32_t x130 = (x128 & 0x3fffffff);
- ℤ x131 = (x126 +ℤ x80);
- uint64_t x132 = (x131 >> 0x1e);
- uint32_t x133 = (x131 & 0x3fffffff);
- ℤ x134 = (x129 +ℤ x88);
- uint64_t x135 = (x134 >> 0x1e);
- uint32_t x136 = (x134 & 0x3fffffff);
- ℤ x137 = (x132 +ℤ x79);
- uint64_t x138 = (x137 >> 0x1e);
- uint32_t x139 = (x137 & 0x3fffffff);
- ℤ x140 = (x135 +ℤ x87);
- uint64_t x141 = (x140 >> 0x1e);
- uint32_t x142 = (x140 & 0x3fffffff);
- uint64_t x143 = (x138 + x100);
- uint32_t x144 = (uint32_t) (x143 >> 0x1e);
- uint32_t x145 = ((uint32_t)x143 & 0x3fffffff);
- uint64_t x146 = (x141 + x95);
- uint32_t x147 = (uint32_t) (x146 >> 0x1e);
- uint32_t x148 = ((uint32_t)x146 & 0x3fffffff);
- uint64_t x149 = (((uint64_t)0x40000000 * x144) + x145);
- uint32_t x150 = (uint32_t) (x149 >> 0x1e);
- uint32_t x151 = ((uint32_t)x149 & 0x3fffffff);
- uint32_t x152 = ((x147 + x103) + x150);
- uint32_t x153 = (x152 >> 0x1e);
- uint32_t x154 = (x152 & 0x3fffffff);
- uint32_t x155 = (x106 + x150);
- uint32_t x156 = (x155 >> 0x1e);
- uint32_t x157 = (x155 & 0x3fffffff);
- return (Return x151, Return x139, Return x133, Return x127, Return x121, Return x115, (x153 + x109), Return x154, Return x148, Return x142, Return x136, Return x130, Return x124, Return x118, (x156 + x112), Return x157))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v b/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v
deleted file mode 100644
index 16e983c49..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquare.c b/src/Specific/solinas32_2e480m2e240m1/fesquare.c
deleted file mode 100644
index a8da3832f..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesquare.c
+++ /dev/null
@@ -1,129 +0,0 @@
-static void fesquare(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { ℤ x31 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x16 + x29) *ℤ ((uint64_t)x16 + x29)) -ℤ ((uint64_t)x16 * x16)), ((((uint64_t)x16 * x29) +ℤ ((uint64_t)x29 * x16)) +ℤ ((uint64_t)x29 * x29)));
- { ℤ x32 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x14 + x30) *ℤ ((uint64_t)x16 + x29)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x14 + x30))) -ℤ (((uint64_t)x14 * x16) +ℤ ((uint64_t)x16 * x14))), (((((uint64_t)x14 * x29) +ℤ ((uint64_t)x16 * x30)) +ℤ (((uint64_t)x30 * x16) +ℤ ((uint64_t)x29 * x14))) +ℤ (((uint64_t)x30 * x29) +ℤ ((uint64_t)x29 * x30))));
- { ℤ x33 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x12 + x28) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x14 + x30)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x12 + x28)))) -ℤ (((uint64_t)x12 * x16) +ℤ (((uint64_t)x14 * x14) +ℤ ((uint64_t)x16 * x12)))), (((((uint64_t)x12 * x29) +ℤ (((uint64_t)x14 * x30) +ℤ ((uint64_t)x16 * x28))) +ℤ (((uint64_t)x28 * x16) +ℤ (((uint64_t)x30 * x14) +ℤ ((uint64_t)x29 * x12)))) +ℤ (((uint64_t)x28 * x29) +ℤ (((uint64_t)x30 * x30) +ℤ ((uint64_t)x29 * x28)))));
- { ℤ x34 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x10 + x26) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x12 + x28)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x10 + x26))))) -ℤ (((uint64_t)x10 * x16) +ℤ (((uint64_t)x12 * x14) +ℤ (((uint64_t)x14 * x12) +ℤ ((uint64_t)x16 * x10))))), (((((uint64_t)x10 * x29) +ℤ (((uint64_t)x12 * x30) +ℤ (((uint64_t)x14 * x28) +ℤ ((uint64_t)x16 * x26)))) +ℤ (((uint64_t)x26 * x16) +ℤ (((uint64_t)x28 * x14) +ℤ (((uint64_t)x30 * x12) +ℤ ((uint64_t)x29 * x10))))) +ℤ (((uint64_t)x26 * x29) +ℤ (((uint64_t)x28 * x30) +ℤ (((uint64_t)x30 * x28) +ℤ ((uint64_t)x29 * x26))))));
- { ℤ x35 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x8 + x24) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x10 + x26)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x8 + x24)))))) -ℤ (((uint64_t)x8 * x16) +ℤ (((uint64_t)x10 * x14) +ℤ (((uint64_t)x12 * x12) +ℤ (((uint64_t)x14 * x10) +ℤ ((uint64_t)x16 * x8)))))), (((((uint64_t)x8 * x29) +ℤ (((uint64_t)x10 * x30) +ℤ (((uint64_t)x12 * x28) +ℤ (((uint64_t)x14 * x26) +ℤ ((uint64_t)x16 * x24))))) +ℤ (((uint64_t)x24 * x16) +ℤ (((uint64_t)x26 * x14) +ℤ (((uint64_t)x28 * x12) +ℤ (((uint64_t)x30 * x10) +ℤ ((uint64_t)x29 * x8)))))) +ℤ (((uint64_t)x24 * x29) +ℤ (((uint64_t)x26 * x30) +ℤ (((uint64_t)x28 * x28) +ℤ (((uint64_t)x30 * x26) +ℤ ((uint64_t)x29 * x24)))))));
- { ℤ x36 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x6 + x22) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x8 + x24)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x6 + x22))))))) -ℤ (((uint64_t)x6 * x16) +ℤ (((uint64_t)x8 * x14) +ℤ (((uint64_t)x10 * x12) +ℤ (((uint64_t)x12 * x10) +ℤ (((uint64_t)x14 * x8) +ℤ ((uint64_t)x16 * x6))))))), (((((uint64_t)x6 * x29) +ℤ (((uint64_t)x8 * x30) +ℤ (((uint64_t)x10 * x28) +ℤ (((uint64_t)x12 * x26) +ℤ (((uint64_t)x14 * x24) +ℤ ((uint64_t)x16 * x22)))))) +ℤ (((uint64_t)x22 * x16) +ℤ (((uint64_t)x24 * x14) +ℤ (((uint64_t)x26 * x12) +ℤ (((uint64_t)x28 * x10) +ℤ (((uint64_t)x30 * x8) +ℤ ((uint64_t)x29 * x6))))))) +ℤ (((uint64_t)x22 * x29) +ℤ (((uint64_t)x24 * x30) +ℤ (((uint64_t)x26 * x28) +ℤ (((uint64_t)x28 * x26) +ℤ (((uint64_t)x30 * x24) +ℤ ((uint64_t)x29 * x22))))))));
- { ℤ x37 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x4 + x20) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x6 + x22)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x4 + x20)))))))) -ℤ (((uint64_t)x4 * x16) +ℤ (((uint64_t)x6 * x14) +ℤ (((uint64_t)x8 * x12) +ℤ (((uint64_t)x10 * x10) +ℤ (((uint64_t)x12 * x8) +ℤ (((uint64_t)x14 * x6) +ℤ ((uint64_t)x16 * x4)))))))), (((((uint64_t)x4 * x29) +ℤ (((uint64_t)x6 * x30) +ℤ (((uint64_t)x8 * x28) +ℤ (((uint64_t)x10 * x26) +ℤ (((uint64_t)x12 * x24) +ℤ (((uint64_t)x14 * x22) +ℤ ((uint64_t)x16 * x20))))))) +ℤ (((uint64_t)x20 * x16) +ℤ (((uint64_t)x22 * x14) +ℤ (((uint64_t)x24 * x12) +ℤ (((uint64_t)x26 * x10) +ℤ (((uint64_t)x28 * x8) +ℤ (((uint64_t)x30 * x6) +ℤ ((uint64_t)x29 * x4)))))))) +ℤ (((uint64_t)x20 * x29) +ℤ (((uint64_t)x22 * x30) +ℤ (((uint64_t)x24 * x28) +ℤ (((uint64_t)x26 * x26) +ℤ (((uint64_t)x28 * x24) +ℤ (((uint64_t)x30 * x22) +ℤ ((uint64_t)x29 * x20)))))))));
- { ℤ x38 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x2 + x18))))))))) -ℤ (((uint64_t)x2 * x16) +ℤ (((uint64_t)x4 * x14) +ℤ (((uint64_t)x6 * x12) +ℤ (((uint64_t)x8 * x10) +ℤ (((uint64_t)x10 * x8) +ℤ (((uint64_t)x12 * x6) +ℤ (((uint64_t)x14 * x4) +ℤ ((uint64_t)x16 * x2))))))))), (((((uint64_t)x2 * x29) +ℤ (((uint64_t)x4 * x30) +ℤ (((uint64_t)x6 * x28) +ℤ (((uint64_t)x8 * x26) +ℤ (((uint64_t)x10 * x24) +ℤ (((uint64_t)x12 * x22) +ℤ (((uint64_t)x14 * x20) +ℤ ((uint64_t)x16 * x18)))))))) +ℤ (((uint64_t)x18 * x16) +ℤ (((uint64_t)x20 * x14) +ℤ (((uint64_t)x22 * x12) +ℤ (((uint64_t)x24 * x10) +ℤ (((uint64_t)x26 * x8) +ℤ (((uint64_t)x28 * x6) +ℤ (((uint64_t)x30 * x4) +ℤ ((uint64_t)x29 * x2))))))))) +ℤ (((uint64_t)x18 * x29) +ℤ (((uint64_t)x20 * x30) +ℤ (((uint64_t)x22 * x28) +ℤ (((uint64_t)x24 * x26) +ℤ (((uint64_t)x26 * x24) +ℤ (((uint64_t)x28 * x22) +ℤ (((uint64_t)x30 * x20) +ℤ ((uint64_t)x29 * x18))))))))));
- { ℤ x39 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x14 + x30) *ℤ ((uint64_t)x2 + x18)))))))) -ℤ (((uint64_t)x2 * x14) +ℤ (((uint64_t)x4 * x12) +ℤ (((uint64_t)x6 * x10) +ℤ (((uint64_t)x8 * x8) +ℤ (((uint64_t)x10 * x6) +ℤ (((uint64_t)x12 * x4) +ℤ ((uint64_t)x14 * x2)))))))), (((((uint64_t)x2 * x30) +ℤ (((uint64_t)x4 * x28) +ℤ (((uint64_t)x6 * x26) +ℤ (((uint64_t)x8 * x24) +ℤ (((uint64_t)x10 * x22) +ℤ (((uint64_t)x12 * x20) +ℤ ((uint64_t)x14 * x18))))))) +ℤ (((uint64_t)x18 * x14) +ℤ (((uint64_t)x20 * x12) +ℤ (((uint64_t)x22 * x10) +ℤ (((uint64_t)x24 * x8) +ℤ (((uint64_t)x26 * x6) +ℤ (((uint64_t)x28 * x4) +ℤ ((uint64_t)x30 * x2)))))))) +ℤ (((uint64_t)x18 * x30) +ℤ (((uint64_t)x20 * x28) +ℤ (((uint64_t)x22 * x26) +ℤ (((uint64_t)x24 * x24) +ℤ (((uint64_t)x26 * x22) +ℤ (((uint64_t)x28 * x20) +ℤ ((uint64_t)x30 * x18)))))))));
- { ℤ x40 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x12 + x28) *ℤ ((uint64_t)x2 + x18))))))) -ℤ (((uint64_t)x2 * x12) +ℤ (((uint64_t)x4 * x10) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ (((uint64_t)x10 * x4) +ℤ ((uint64_t)x12 * x2))))))), (((((uint64_t)x2 * x28) +ℤ (((uint64_t)x4 * x26) +ℤ (((uint64_t)x6 * x24) +ℤ (((uint64_t)x8 * x22) +ℤ (((uint64_t)x10 * x20) +ℤ ((uint64_t)x12 * x18)))))) +ℤ (((uint64_t)x18 * x12) +ℤ (((uint64_t)x20 * x10) +ℤ (((uint64_t)x22 * x8) +ℤ (((uint64_t)x24 * x6) +ℤ (((uint64_t)x26 * x4) +ℤ ((uint64_t)x28 * x2))))))) +ℤ (((uint64_t)x18 * x28) +ℤ (((uint64_t)x20 * x26) +ℤ (((uint64_t)x22 * x24) +ℤ (((uint64_t)x24 * x22) +ℤ (((uint64_t)x26 * x20) +ℤ ((uint64_t)x28 * x18))))))));
- { ℤ x41 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x10 + x26) *ℤ ((uint64_t)x2 + x18)))))) -ℤ (((uint64_t)x2 * x10) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x10 * x2)))))), (((((uint64_t)x2 * x26) +ℤ (((uint64_t)x4 * x24) +ℤ (((uint64_t)x6 * x22) +ℤ (((uint64_t)x8 * x20) +ℤ ((uint64_t)x10 * x18))))) +ℤ (((uint64_t)x18 * x10) +ℤ (((uint64_t)x20 * x8) +ℤ (((uint64_t)x22 * x6) +ℤ (((uint64_t)x24 * x4) +ℤ ((uint64_t)x26 * x2)))))) +ℤ (((uint64_t)x18 * x26) +ℤ (((uint64_t)x20 * x24) +ℤ (((uint64_t)x22 * x22) +ℤ (((uint64_t)x24 * x20) +ℤ ((uint64_t)x26 * x18)))))));
- { ℤ x42 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x8 + x24) *ℤ ((uint64_t)x2 + x18))))) -ℤ (((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2))))), (((((uint64_t)x2 * x24) +ℤ (((uint64_t)x4 * x22) +ℤ (((uint64_t)x6 * x20) +ℤ ((uint64_t)x8 * x18)))) +ℤ (((uint64_t)x18 * x8) +ℤ (((uint64_t)x20 * x6) +ℤ (((uint64_t)x22 * x4) +ℤ ((uint64_t)x24 * x2))))) +ℤ (((uint64_t)x18 * x24) +ℤ (((uint64_t)x20 * x22) +ℤ (((uint64_t)x22 * x20) +ℤ ((uint64_t)x24 * x18))))));
- { ℤ x43 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x6 + x22) *ℤ ((uint64_t)x2 + x18)))) -ℤ (((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2)))), (((((uint64_t)x2 * x22) +ℤ (((uint64_t)x4 * x20) +ℤ ((uint64_t)x6 * x18))) +ℤ (((uint64_t)x18 * x6) +ℤ (((uint64_t)x20 * x4) +ℤ ((uint64_t)x22 * x2)))) +ℤ (((uint64_t)x18 * x22) +ℤ (((uint64_t)x20 * x20) +ℤ ((uint64_t)x22 * x18)))));
- { ℤ x44 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x4 + x20) *ℤ ((uint64_t)x2 + x18))) -ℤ (((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2))), (((((uint64_t)x2 * x20) +ℤ ((uint64_t)x4 * x18)) +ℤ (((uint64_t)x18 * x4) +ℤ ((uint64_t)x20 * x2))) +ℤ (((uint64_t)x18 * x20) +ℤ ((uint64_t)x20 * x18))));
- { ℤ x45 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x2 + x18) *ℤ ((uint64_t)x2 + x18)) -ℤ ((uint64_t)x2 * x2)), ((((uint64_t)x2 * x18) +ℤ ((uint64_t)x18 * x2)) +ℤ ((uint64_t)x18 * x18)));
- { ℤ x46 = (((((uint64_t)x16 * x16) +ℤ ((uint64_t)x29 * x29)) +ℤ x39) +ℤ x31);
- { ℤ x47 = ((((((uint64_t)x14 * x16) +ℤ ((uint64_t)x16 * x14)) +ℤ (((uint64_t)x30 * x29) +ℤ ((uint64_t)x29 * x30))) +ℤ x40) +ℤ x32);
- { ℤ x48 = ((((((uint64_t)x12 * x16) +ℤ (((uint64_t)x14 * x14) +ℤ ((uint64_t)x16 * x12))) +ℤ (((uint64_t)x28 * x29) +ℤ (((uint64_t)x30 * x30) +ℤ ((uint64_t)x29 * x28)))) +ℤ x41) +ℤ x33);
- { ℤ x49 = ((((((uint64_t)x10 * x16) +ℤ (((uint64_t)x12 * x14) +ℤ (((uint64_t)x14 * x12) +ℤ ((uint64_t)x16 * x10)))) +ℤ (((uint64_t)x26 * x29) +ℤ (((uint64_t)x28 * x30) +ℤ (((uint64_t)x30 * x28) +ℤ ((uint64_t)x29 * x26))))) +ℤ x42) +ℤ x34);
- { ℤ x50 = ((((((uint64_t)x8 * x16) +ℤ (((uint64_t)x10 * x14) +ℤ (((uint64_t)x12 * x12) +ℤ (((uint64_t)x14 * x10) +ℤ ((uint64_t)x16 * x8))))) +ℤ (((uint64_t)x24 * x29) +ℤ (((uint64_t)x26 * x30) +ℤ (((uint64_t)x28 * x28) +ℤ (((uint64_t)x30 * x26) +ℤ ((uint64_t)x29 * x24)))))) +ℤ x43) +ℤ x35);
- { ℤ x51 = ((((((uint64_t)x6 * x16) +ℤ (((uint64_t)x8 * x14) +ℤ (((uint64_t)x10 * x12) +ℤ (((uint64_t)x12 * x10) +ℤ (((uint64_t)x14 * x8) +ℤ ((uint64_t)x16 * x6)))))) +ℤ (((uint64_t)x22 * x29) +ℤ (((uint64_t)x24 * x30) +ℤ (((uint64_t)x26 * x28) +ℤ (((uint64_t)x28 * x26) +ℤ (((uint64_t)x30 * x24) +ℤ ((uint64_t)x29 * x22))))))) +ℤ x44) +ℤ x36);
- { ℤ x52 = ((((((uint64_t)x4 * x16) +ℤ (((uint64_t)x6 * x14) +ℤ (((uint64_t)x8 * x12) +ℤ (((uint64_t)x10 * x10) +ℤ (((uint64_t)x12 * x8) +ℤ (((uint64_t)x14 * x6) +ℤ ((uint64_t)x16 * x4))))))) +ℤ (((uint64_t)x20 * x29) +ℤ (((uint64_t)x22 * x30) +ℤ (((uint64_t)x24 * x28) +ℤ (((uint64_t)x26 * x26) +ℤ (((uint64_t)x28 * x24) +ℤ (((uint64_t)x30 * x22) +ℤ ((uint64_t)x29 * x20)))))))) +ℤ x45) +ℤ x37);
- { ℤ x53 = ((((uint64_t)x2 * x16) +ℤ (((uint64_t)x4 * x14) +ℤ (((uint64_t)x6 * x12) +ℤ (((uint64_t)x8 * x10) +ℤ (((uint64_t)x10 * x8) +ℤ (((uint64_t)x12 * x6) +ℤ (((uint64_t)x14 * x4) +ℤ ((uint64_t)x16 * x2)))))))) +ℤ (((uint64_t)x18 * x29) +ℤ (((uint64_t)x20 * x30) +ℤ (((uint64_t)x22 * x28) +ℤ (((uint64_t)x24 * x26) +ℤ (((uint64_t)x26 * x24) +ℤ (((uint64_t)x28 * x22) +ℤ (((uint64_t)x30 * x20) +ℤ ((uint64_t)x29 * x18)))))))));
- { ℤ x54 = (((((uint64_t)x2 * x14) +ℤ (((uint64_t)x4 * x12) +ℤ (((uint64_t)x6 * x10) +ℤ (((uint64_t)x8 * x8) +ℤ (((uint64_t)x10 * x6) +ℤ (((uint64_t)x12 * x4) +ℤ ((uint64_t)x14 * x2))))))) +ℤ (((uint64_t)x18 * x30) +ℤ (((uint64_t)x20 * x28) +ℤ (((uint64_t)x22 * x26) +ℤ (((uint64_t)x24 * x24) +ℤ (((uint64_t)x26 * x22) +ℤ (((uint64_t)x28 * x20) +ℤ ((uint64_t)x30 * x18)))))))) +ℤ x31);
- { ℤ x55 = (((((uint64_t)x2 * x12) +ℤ (((uint64_t)x4 * x10) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ (((uint64_t)x10 * x4) +ℤ ((uint64_t)x12 * x2)))))) +ℤ (((uint64_t)x18 * x28) +ℤ (((uint64_t)x20 * x26) +ℤ (((uint64_t)x22 * x24) +ℤ (((uint64_t)x24 * x22) +ℤ (((uint64_t)x26 * x20) +ℤ ((uint64_t)x28 * x18))))))) +ℤ x32);
- { ℤ x56 = (((((uint64_t)x2 * x10) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x10 * x2))))) +ℤ (((uint64_t)x18 * x26) +ℤ (((uint64_t)x20 * x24) +ℤ (((uint64_t)x22 * x22) +ℤ (((uint64_t)x24 * x20) +ℤ ((uint64_t)x26 * x18)))))) +ℤ x33);
- { ℤ x57 = (((((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2)))) +ℤ (((uint64_t)x18 * x24) +ℤ (((uint64_t)x20 * x22) +ℤ (((uint64_t)x22 * x20) +ℤ ((uint64_t)x24 * x18))))) +ℤ x34);
- { ℤ x58 = (((((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2))) +ℤ (((uint64_t)x18 * x22) +ℤ (((uint64_t)x20 * x20) +ℤ ((uint64_t)x22 * x18)))) +ℤ x35);
- { ℤ x59 = (((((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2)) +ℤ (((uint64_t)x18 * x20) +ℤ ((uint64_t)x20 * x18))) +ℤ x36);
- { ℤ x60 = ((((uint64_t)x2 * x2) +ℤ ((uint64_t)x18 * x18)) +ℤ x37);
- { uint64_t x61 = (x53 >> 0x1e);
- { uint32_t x62 = (x53 & 0x3fffffff);
- { uint64_t x63 = (x38 >> 0x1e);
- { uint32_t x64 = (x38 & 0x3fffffff);
- { ℤ x65 = ((0x40000000 *ℤ x63) +ℤ x64);
- { uint64_t x66 = (x65 >> 0x1e);
- { uint32_t x67 = (x65 & 0x3fffffff);
- { ℤ x68 = ((x61 +ℤ x52) +ℤ x66);
- { uint64_t x69 = (x68 >> 0x1e);
- { uint32_t x70 = (x68 & 0x3fffffff);
- { ℤ x71 = (x60 +ℤ x66);
- { uint64_t x72 = (x71 >> 0x1e);
- { uint32_t x73 = (x71 & 0x3fffffff);
- { ℤ x74 = (x69 +ℤ x51);
- { uint64_t x75 = (x74 >> 0x1e);
- { uint32_t x76 = (x74 & 0x3fffffff);
- { ℤ x77 = (x72 +ℤ x59);
- { uint64_t x78 = (x77 >> 0x1e);
- { uint32_t x79 = (x77 & 0x3fffffff);
- { ℤ x80 = (x75 +ℤ x50);
- { uint64_t x81 = (x80 >> 0x1e);
- { uint32_t x82 = (x80 & 0x3fffffff);
- { ℤ x83 = (x78 +ℤ x58);
- { uint64_t x84 = (x83 >> 0x1e);
- { uint32_t x85 = (x83 & 0x3fffffff);
- { ℤ x86 = (x81 +ℤ x49);
- { uint64_t x87 = (x86 >> 0x1e);
- { uint32_t x88 = (x86 & 0x3fffffff);
- { ℤ x89 = (x84 +ℤ x57);
- { uint64_t x90 = (x89 >> 0x1e);
- { uint32_t x91 = (x89 & 0x3fffffff);
- { ℤ x92 = (x87 +ℤ x48);
- { uint64_t x93 = (x92 >> 0x1e);
- { uint32_t x94 = (x92 & 0x3fffffff);
- { ℤ x95 = (x90 +ℤ x56);
- { uint64_t x96 = (x95 >> 0x1e);
- { uint32_t x97 = (x95 & 0x3fffffff);
- { ℤ x98 = (x93 +ℤ x47);
- { uint64_t x99 = (x98 >> 0x1e);
- { uint32_t x100 = (x98 & 0x3fffffff);
- { ℤ x101 = (x96 +ℤ x55);
- { uint64_t x102 = (x101 >> 0x1e);
- { uint32_t x103 = (x101 & 0x3fffffff);
- { ℤ x104 = (x99 +ℤ x46);
- { uint64_t x105 = (x104 >> 0x1e);
- { uint32_t x106 = (x104 & 0x3fffffff);
- { ℤ x107 = (x102 +ℤ x54);
- { uint64_t x108 = (x107 >> 0x1e);
- { uint32_t x109 = (x107 & 0x3fffffff);
- { uint64_t x110 = (x105 + x67);
- { uint32_t x111 = (uint32_t) (x110 >> 0x1e);
- { uint32_t x112 = ((uint32_t)x110 & 0x3fffffff);
- { uint64_t x113 = (x108 + x62);
- { uint32_t x114 = (uint32_t) (x113 >> 0x1e);
- { uint32_t x115 = ((uint32_t)x113 & 0x3fffffff);
- { uint64_t x116 = (((uint64_t)0x40000000 * x111) + x112);
- { uint32_t x117 = (uint32_t) (x116 >> 0x1e);
- { uint32_t x118 = ((uint32_t)x116 & 0x3fffffff);
- { uint32_t x119 = ((x114 + x70) + x117);
- { uint32_t x120 = (x119 >> 0x1e);
- { uint32_t x121 = (x119 & 0x3fffffff);
- { uint32_t x122 = (x73 + x117);
- { uint32_t x123 = (x122 >> 0x1e);
- { uint32_t x124 = (x122 & 0x3fffffff);
- out[0] = x124;
- out[1] = (x123 + x79);
- out[2] = x85;
- out[3] = x91;
- out[4] = x97;
- out[5] = x103;
- out[6] = x109;
- out[7] = x115;
- out[8] = x121;
- out[9] = (x120 + x76);
- out[10] = x82;
- out[11] = x88;
- out[12] = x94;
- out[13] = x100;
- out[14] = x106;
- out[15] = x118;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquare.v b/src/Specific/solinas32_2e480m2e240m1/fesquare.v
deleted file mode 100644
index 26889b7c8..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.log b/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.log
deleted file mode 100644
index 8ac962fc4..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.log
+++ /dev/null
@@ -1,101 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- ℤ x31 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x16 + x29) *ℤ ((uint64_t)x16 + x29)) -ℤ ((uint64_t)x16 * x16)), ((((uint64_t)x16 * x29) +ℤ ((uint64_t)x29 * x16)) +ℤ ((uint64_t)x29 * x29)));
- ℤ x32 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x14 + x30) *ℤ ((uint64_t)x16 + x29)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x14 + x30))) -ℤ (((uint64_t)x14 * x16) +ℤ ((uint64_t)x16 * x14))), (((((uint64_t)x14 * x29) +ℤ ((uint64_t)x16 * x30)) +ℤ (((uint64_t)x30 * x16) +ℤ ((uint64_t)x29 * x14))) +ℤ (((uint64_t)x30 * x29) +ℤ ((uint64_t)x29 * x30))));
- ℤ x33 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x12 + x28) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x14 + x30)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x12 + x28)))) -ℤ (((uint64_t)x12 * x16) +ℤ (((uint64_t)x14 * x14) +ℤ ((uint64_t)x16 * x12)))), (((((uint64_t)x12 * x29) +ℤ (((uint64_t)x14 * x30) +ℤ ((uint64_t)x16 * x28))) +ℤ (((uint64_t)x28 * x16) +ℤ (((uint64_t)x30 * x14) +ℤ ((uint64_t)x29 * x12)))) +ℤ (((uint64_t)x28 * x29) +ℤ (((uint64_t)x30 * x30) +ℤ ((uint64_t)x29 * x28)))));
- ℤ x34 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x10 + x26) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x12 + x28)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x10 + x26))))) -ℤ (((uint64_t)x10 * x16) +ℤ (((uint64_t)x12 * x14) +ℤ (((uint64_t)x14 * x12) +ℤ ((uint64_t)x16 * x10))))), (((((uint64_t)x10 * x29) +ℤ (((uint64_t)x12 * x30) +ℤ (((uint64_t)x14 * x28) +ℤ ((uint64_t)x16 * x26)))) +ℤ (((uint64_t)x26 * x16) +ℤ (((uint64_t)x28 * x14) +ℤ (((uint64_t)x30 * x12) +ℤ ((uint64_t)x29 * x10))))) +ℤ (((uint64_t)x26 * x29) +ℤ (((uint64_t)x28 * x30) +ℤ (((uint64_t)x30 * x28) +ℤ ((uint64_t)x29 * x26))))));
- ℤ x35 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x8 + x24) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x10 + x26)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x8 + x24)))))) -ℤ (((uint64_t)x8 * x16) +ℤ (((uint64_t)x10 * x14) +ℤ (((uint64_t)x12 * x12) +ℤ (((uint64_t)x14 * x10) +ℤ ((uint64_t)x16 * x8)))))), (((((uint64_t)x8 * x29) +ℤ (((uint64_t)x10 * x30) +ℤ (((uint64_t)x12 * x28) +ℤ (((uint64_t)x14 * x26) +ℤ ((uint64_t)x16 * x24))))) +ℤ (((uint64_t)x24 * x16) +ℤ (((uint64_t)x26 * x14) +ℤ (((uint64_t)x28 * x12) +ℤ (((uint64_t)x30 * x10) +ℤ ((uint64_t)x29 * x8)))))) +ℤ (((uint64_t)x24 * x29) +ℤ (((uint64_t)x26 * x30) +ℤ (((uint64_t)x28 * x28) +ℤ (((uint64_t)x30 * x26) +ℤ ((uint64_t)x29 * x24)))))));
- ℤ x36 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x6 + x22) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x8 + x24)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x6 + x22))))))) -ℤ (((uint64_t)x6 * x16) +ℤ (((uint64_t)x8 * x14) +ℤ (((uint64_t)x10 * x12) +ℤ (((uint64_t)x12 * x10) +ℤ (((uint64_t)x14 * x8) +ℤ ((uint64_t)x16 * x6))))))), (((((uint64_t)x6 * x29) +ℤ (((uint64_t)x8 * x30) +ℤ (((uint64_t)x10 * x28) +ℤ (((uint64_t)x12 * x26) +ℤ (((uint64_t)x14 * x24) +ℤ ((uint64_t)x16 * x22)))))) +ℤ (((uint64_t)x22 * x16) +ℤ (((uint64_t)x24 * x14) +ℤ (((uint64_t)x26 * x12) +ℤ (((uint64_t)x28 * x10) +ℤ (((uint64_t)x30 * x8) +ℤ ((uint64_t)x29 * x6))))))) +ℤ (((uint64_t)x22 * x29) +ℤ (((uint64_t)x24 * x30) +ℤ (((uint64_t)x26 * x28) +ℤ (((uint64_t)x28 * x26) +ℤ (((uint64_t)x30 * x24) +ℤ ((uint64_t)x29 * x22))))))));
- ℤ x37 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x4 + x20) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x6 + x22)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x4 + x20)))))))) -ℤ (((uint64_t)x4 * x16) +ℤ (((uint64_t)x6 * x14) +ℤ (((uint64_t)x8 * x12) +ℤ (((uint64_t)x10 * x10) +ℤ (((uint64_t)x12 * x8) +ℤ (((uint64_t)x14 * x6) +ℤ ((uint64_t)x16 * x4)))))))), (((((uint64_t)x4 * x29) +ℤ (((uint64_t)x6 * x30) +ℤ (((uint64_t)x8 * x28) +ℤ (((uint64_t)x10 * x26) +ℤ (((uint64_t)x12 * x24) +ℤ (((uint64_t)x14 * x22) +ℤ ((uint64_t)x16 * x20))))))) +ℤ (((uint64_t)x20 * x16) +ℤ (((uint64_t)x22 * x14) +ℤ (((uint64_t)x24 * x12) +ℤ (((uint64_t)x26 * x10) +ℤ (((uint64_t)x28 * x8) +ℤ (((uint64_t)x30 * x6) +ℤ ((uint64_t)x29 * x4)))))))) +ℤ (((uint64_t)x20 * x29) +ℤ (((uint64_t)x22 * x30) +ℤ (((uint64_t)x24 * x28) +ℤ (((uint64_t)x26 * x26) +ℤ (((uint64_t)x28 * x24) +ℤ (((uint64_t)x30 * x22) +ℤ ((uint64_t)x29 * x20)))))))));
- ℤ x38 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x16 + x29)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x14 + x30) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x16 + x29) *ℤ ((uint64_t)x2 + x18))))))))) -ℤ (((uint64_t)x2 * x16) +ℤ (((uint64_t)x4 * x14) +ℤ (((uint64_t)x6 * x12) +ℤ (((uint64_t)x8 * x10) +ℤ (((uint64_t)x10 * x8) +ℤ (((uint64_t)x12 * x6) +ℤ (((uint64_t)x14 * x4) +ℤ ((uint64_t)x16 * x2))))))))), (((((uint64_t)x2 * x29) +ℤ (((uint64_t)x4 * x30) +ℤ (((uint64_t)x6 * x28) +ℤ (((uint64_t)x8 * x26) +ℤ (((uint64_t)x10 * x24) +ℤ (((uint64_t)x12 * x22) +ℤ (((uint64_t)x14 * x20) +ℤ ((uint64_t)x16 * x18)))))))) +ℤ (((uint64_t)x18 * x16) +ℤ (((uint64_t)x20 * x14) +ℤ (((uint64_t)x22 * x12) +ℤ (((uint64_t)x24 * x10) +ℤ (((uint64_t)x26 * x8) +ℤ (((uint64_t)x28 * x6) +ℤ (((uint64_t)x30 * x4) +ℤ ((uint64_t)x29 * x2))))))))) +ℤ (((uint64_t)x18 * x29) +ℤ (((uint64_t)x20 * x30) +ℤ (((uint64_t)x22 * x28) +ℤ (((uint64_t)x24 * x26) +ℤ (((uint64_t)x26 * x24) +ℤ (((uint64_t)x28 * x22) +ℤ (((uint64_t)x30 * x20) +ℤ ((uint64_t)x29 * x18))))))))));
- ℤ x39 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x14 + x30)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x12 + x28) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x14 + x30) *ℤ ((uint64_t)x2 + x18)))))))) -ℤ (((uint64_t)x2 * x14) +ℤ (((uint64_t)x4 * x12) +ℤ (((uint64_t)x6 * x10) +ℤ (((uint64_t)x8 * x8) +ℤ (((uint64_t)x10 * x6) +ℤ (((uint64_t)x12 * x4) +ℤ ((uint64_t)x14 * x2)))))))), (((((uint64_t)x2 * x30) +ℤ (((uint64_t)x4 * x28) +ℤ (((uint64_t)x6 * x26) +ℤ (((uint64_t)x8 * x24) +ℤ (((uint64_t)x10 * x22) +ℤ (((uint64_t)x12 * x20) +ℤ ((uint64_t)x14 * x18))))))) +ℤ (((uint64_t)x18 * x14) +ℤ (((uint64_t)x20 * x12) +ℤ (((uint64_t)x22 * x10) +ℤ (((uint64_t)x24 * x8) +ℤ (((uint64_t)x26 * x6) +ℤ (((uint64_t)x28 * x4) +ℤ ((uint64_t)x30 * x2)))))))) +ℤ (((uint64_t)x18 * x30) +ℤ (((uint64_t)x20 * x28) +ℤ (((uint64_t)x22 * x26) +ℤ (((uint64_t)x24 * x24) +ℤ (((uint64_t)x26 * x22) +ℤ (((uint64_t)x28 * x20) +ℤ ((uint64_t)x30 * x18)))))))));
- ℤ x40 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x12 + x28)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x10 + x26) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x12 + x28) *ℤ ((uint64_t)x2 + x18))))))) -ℤ (((uint64_t)x2 * x12) +ℤ (((uint64_t)x4 * x10) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ (((uint64_t)x10 * x4) +ℤ ((uint64_t)x12 * x2))))))), (((((uint64_t)x2 * x28) +ℤ (((uint64_t)x4 * x26) +ℤ (((uint64_t)x6 * x24) +ℤ (((uint64_t)x8 * x22) +ℤ (((uint64_t)x10 * x20) +ℤ ((uint64_t)x12 * x18)))))) +ℤ (((uint64_t)x18 * x12) +ℤ (((uint64_t)x20 * x10) +ℤ (((uint64_t)x22 * x8) +ℤ (((uint64_t)x24 * x6) +ℤ (((uint64_t)x26 * x4) +ℤ ((uint64_t)x28 * x2))))))) +ℤ (((uint64_t)x18 * x28) +ℤ (((uint64_t)x20 * x26) +ℤ (((uint64_t)x22 * x24) +ℤ (((uint64_t)x24 * x22) +ℤ (((uint64_t)x26 * x20) +ℤ ((uint64_t)x28 * x18))))))));
- ℤ x41 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x10 + x26)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x8 + x24) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x10 + x26) *ℤ ((uint64_t)x2 + x18)))))) -ℤ (((uint64_t)x2 * x10) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x10 * x2)))))), (((((uint64_t)x2 * x26) +ℤ (((uint64_t)x4 * x24) +ℤ (((uint64_t)x6 * x22) +ℤ (((uint64_t)x8 * x20) +ℤ ((uint64_t)x10 * x18))))) +ℤ (((uint64_t)x18 * x10) +ℤ (((uint64_t)x20 * x8) +ℤ (((uint64_t)x22 * x6) +ℤ (((uint64_t)x24 * x4) +ℤ ((uint64_t)x26 * x2)))))) +ℤ (((uint64_t)x18 * x26) +ℤ (((uint64_t)x20 * x24) +ℤ (((uint64_t)x22 * x22) +ℤ (((uint64_t)x24 * x20) +ℤ ((uint64_t)x26 * x18)))))));
- ℤ x42 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x8 + x24)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x6 + x22) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x8 + x24) *ℤ ((uint64_t)x2 + x18))))) -ℤ (((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2))))), (((((uint64_t)x2 * x24) +ℤ (((uint64_t)x4 * x22) +ℤ (((uint64_t)x6 * x20) +ℤ ((uint64_t)x8 * x18)))) +ℤ (((uint64_t)x18 * x8) +ℤ (((uint64_t)x20 * x6) +ℤ (((uint64_t)x22 * x4) +ℤ ((uint64_t)x24 * x2))))) +ℤ (((uint64_t)x18 * x24) +ℤ (((uint64_t)x20 * x22) +ℤ (((uint64_t)x22 * x20) +ℤ ((uint64_t)x24 * x18))))));
- ℤ x43 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x6 + x22)) +ℤ ((((uint64_t)x4 + x20) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x6 + x22) *ℤ ((uint64_t)x2 + x18)))) -ℤ (((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2)))), (((((uint64_t)x2 * x22) +ℤ (((uint64_t)x4 * x20) +ℤ ((uint64_t)x6 * x18))) +ℤ (((uint64_t)x18 * x6) +ℤ (((uint64_t)x20 * x4) +ℤ ((uint64_t)x22 * x2)))) +ℤ (((uint64_t)x18 * x22) +ℤ (((uint64_t)x20 * x20) +ℤ ((uint64_t)x22 * x18)))));
- ℤ x44 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) ((((((uint64_t)x2 + x18) *ℤ ((uint64_t)x4 + x20)) +ℤ (((uint64_t)x4 + x20) *ℤ ((uint64_t)x2 + x18))) -ℤ (((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2))), (((((uint64_t)x2 * x20) +ℤ ((uint64_t)x4 * x18)) +ℤ (((uint64_t)x18 * x4) +ℤ ((uint64_t)x20 * x2))) +ℤ (((uint64_t)x18 * x20) +ℤ ((uint64_t)x20 * x18))));
- ℤ x45 = Op (Syntax.IdWithAlt Syntax.TZ Syntax.TZ Syntax.TZ) (((((uint64_t)x2 + x18) *ℤ ((uint64_t)x2 + x18)) -ℤ ((uint64_t)x2 * x2)), ((((uint64_t)x2 * x18) +ℤ ((uint64_t)x18 * x2)) +ℤ ((uint64_t)x18 * x18)));
- ℤ x46 = (((((uint64_t)x16 * x16) +ℤ ((uint64_t)x29 * x29)) +ℤ x39) +ℤ x31);
- ℤ x47 = ((((((uint64_t)x14 * x16) +ℤ ((uint64_t)x16 * x14)) +ℤ (((uint64_t)x30 * x29) +ℤ ((uint64_t)x29 * x30))) +ℤ x40) +ℤ x32);
- ℤ x48 = ((((((uint64_t)x12 * x16) +ℤ (((uint64_t)x14 * x14) +ℤ ((uint64_t)x16 * x12))) +ℤ (((uint64_t)x28 * x29) +ℤ (((uint64_t)x30 * x30) +ℤ ((uint64_t)x29 * x28)))) +ℤ x41) +ℤ x33);
- ℤ x49 = ((((((uint64_t)x10 * x16) +ℤ (((uint64_t)x12 * x14) +ℤ (((uint64_t)x14 * x12) +ℤ ((uint64_t)x16 * x10)))) +ℤ (((uint64_t)x26 * x29) +ℤ (((uint64_t)x28 * x30) +ℤ (((uint64_t)x30 * x28) +ℤ ((uint64_t)x29 * x26))))) +ℤ x42) +ℤ x34);
- ℤ x50 = ((((((uint64_t)x8 * x16) +ℤ (((uint64_t)x10 * x14) +ℤ (((uint64_t)x12 * x12) +ℤ (((uint64_t)x14 * x10) +ℤ ((uint64_t)x16 * x8))))) +ℤ (((uint64_t)x24 * x29) +ℤ (((uint64_t)x26 * x30) +ℤ (((uint64_t)x28 * x28) +ℤ (((uint64_t)x30 * x26) +ℤ ((uint64_t)x29 * x24)))))) +ℤ x43) +ℤ x35);
- ℤ x51 = ((((((uint64_t)x6 * x16) +ℤ (((uint64_t)x8 * x14) +ℤ (((uint64_t)x10 * x12) +ℤ (((uint64_t)x12 * x10) +ℤ (((uint64_t)x14 * x8) +ℤ ((uint64_t)x16 * x6)))))) +ℤ (((uint64_t)x22 * x29) +ℤ (((uint64_t)x24 * x30) +ℤ (((uint64_t)x26 * x28) +ℤ (((uint64_t)x28 * x26) +ℤ (((uint64_t)x30 * x24) +ℤ ((uint64_t)x29 * x22))))))) +ℤ x44) +ℤ x36);
- ℤ x52 = ((((((uint64_t)x4 * x16) +ℤ (((uint64_t)x6 * x14) +ℤ (((uint64_t)x8 * x12) +ℤ (((uint64_t)x10 * x10) +ℤ (((uint64_t)x12 * x8) +ℤ (((uint64_t)x14 * x6) +ℤ ((uint64_t)x16 * x4))))))) +ℤ (((uint64_t)x20 * x29) +ℤ (((uint64_t)x22 * x30) +ℤ (((uint64_t)x24 * x28) +ℤ (((uint64_t)x26 * x26) +ℤ (((uint64_t)x28 * x24) +ℤ (((uint64_t)x30 * x22) +ℤ ((uint64_t)x29 * x20)))))))) +ℤ x45) +ℤ x37);
- ℤ x53 = ((((uint64_t)x2 * x16) +ℤ (((uint64_t)x4 * x14) +ℤ (((uint64_t)x6 * x12) +ℤ (((uint64_t)x8 * x10) +ℤ (((uint64_t)x10 * x8) +ℤ (((uint64_t)x12 * x6) +ℤ (((uint64_t)x14 * x4) +ℤ ((uint64_t)x16 * x2)))))))) +ℤ (((uint64_t)x18 * x29) +ℤ (((uint64_t)x20 * x30) +ℤ (((uint64_t)x22 * x28) +ℤ (((uint64_t)x24 * x26) +ℤ (((uint64_t)x26 * x24) +ℤ (((uint64_t)x28 * x22) +ℤ (((uint64_t)x30 * x20) +ℤ ((uint64_t)x29 * x18)))))))));
- ℤ x54 = (((((uint64_t)x2 * x14) +ℤ (((uint64_t)x4 * x12) +ℤ (((uint64_t)x6 * x10) +ℤ (((uint64_t)x8 * x8) +ℤ (((uint64_t)x10 * x6) +ℤ (((uint64_t)x12 * x4) +ℤ ((uint64_t)x14 * x2))))))) +ℤ (((uint64_t)x18 * x30) +ℤ (((uint64_t)x20 * x28) +ℤ (((uint64_t)x22 * x26) +ℤ (((uint64_t)x24 * x24) +ℤ (((uint64_t)x26 * x22) +ℤ (((uint64_t)x28 * x20) +ℤ ((uint64_t)x30 * x18)))))))) +ℤ x31);
- ℤ x55 = (((((uint64_t)x2 * x12) +ℤ (((uint64_t)x4 * x10) +ℤ (((uint64_t)x6 * x8) +ℤ (((uint64_t)x8 * x6) +ℤ (((uint64_t)x10 * x4) +ℤ ((uint64_t)x12 * x2)))))) +ℤ (((uint64_t)x18 * x28) +ℤ (((uint64_t)x20 * x26) +ℤ (((uint64_t)x22 * x24) +ℤ (((uint64_t)x24 * x22) +ℤ (((uint64_t)x26 * x20) +ℤ ((uint64_t)x28 * x18))))))) +ℤ x32);
- ℤ x56 = (((((uint64_t)x2 * x10) +ℤ (((uint64_t)x4 * x8) +ℤ (((uint64_t)x6 * x6) +ℤ (((uint64_t)x8 * x4) +ℤ ((uint64_t)x10 * x2))))) +ℤ (((uint64_t)x18 * x26) +ℤ (((uint64_t)x20 * x24) +ℤ (((uint64_t)x22 * x22) +ℤ (((uint64_t)x24 * x20) +ℤ ((uint64_t)x26 * x18)))))) +ℤ x33);
- ℤ x57 = (((((uint64_t)x2 * x8) +ℤ (((uint64_t)x4 * x6) +ℤ (((uint64_t)x6 * x4) +ℤ ((uint64_t)x8 * x2)))) +ℤ (((uint64_t)x18 * x24) +ℤ (((uint64_t)x20 * x22) +ℤ (((uint64_t)x22 * x20) +ℤ ((uint64_t)x24 * x18))))) +ℤ x34);
- ℤ x58 = (((((uint64_t)x2 * x6) +ℤ (((uint64_t)x4 * x4) +ℤ ((uint64_t)x6 * x2))) +ℤ (((uint64_t)x18 * x22) +ℤ (((uint64_t)x20 * x20) +ℤ ((uint64_t)x22 * x18)))) +ℤ x35);
- ℤ x59 = (((((uint64_t)x2 * x4) +ℤ ((uint64_t)x4 * x2)) +ℤ (((uint64_t)x18 * x20) +ℤ ((uint64_t)x20 * x18))) +ℤ x36);
- ℤ x60 = ((((uint64_t)x2 * x2) +ℤ ((uint64_t)x18 * x18)) +ℤ x37);
- uint64_t x61 = (x53 >> 0x1e);
- uint32_t x62 = (x53 & 0x3fffffff);
- uint64_t x63 = (x38 >> 0x1e);
- uint32_t x64 = (x38 & 0x3fffffff);
- ℤ x65 = ((0x40000000 *ℤ x63) +ℤ x64);
- uint64_t x66 = (x65 >> 0x1e);
- uint32_t x67 = (x65 & 0x3fffffff);
- ℤ x68 = ((x61 +ℤ x52) +ℤ x66);
- uint64_t x69 = (x68 >> 0x1e);
- uint32_t x70 = (x68 & 0x3fffffff);
- ℤ x71 = (x60 +ℤ x66);
- uint64_t x72 = (x71 >> 0x1e);
- uint32_t x73 = (x71 & 0x3fffffff);
- ℤ x74 = (x69 +ℤ x51);
- uint64_t x75 = (x74 >> 0x1e);
- uint32_t x76 = (x74 & 0x3fffffff);
- ℤ x77 = (x72 +ℤ x59);
- uint64_t x78 = (x77 >> 0x1e);
- uint32_t x79 = (x77 & 0x3fffffff);
- ℤ x80 = (x75 +ℤ x50);
- uint64_t x81 = (x80 >> 0x1e);
- uint32_t x82 = (x80 & 0x3fffffff);
- ℤ x83 = (x78 +ℤ x58);
- uint64_t x84 = (x83 >> 0x1e);
- uint32_t x85 = (x83 & 0x3fffffff);
- ℤ x86 = (x81 +ℤ x49);
- uint64_t x87 = (x86 >> 0x1e);
- uint32_t x88 = (x86 & 0x3fffffff);
- ℤ x89 = (x84 +ℤ x57);
- uint64_t x90 = (x89 >> 0x1e);
- uint32_t x91 = (x89 & 0x3fffffff);
- ℤ x92 = (x87 +ℤ x48);
- uint64_t x93 = (x92 >> 0x1e);
- uint32_t x94 = (x92 & 0x3fffffff);
- ℤ x95 = (x90 +ℤ x56);
- uint64_t x96 = (x95 >> 0x1e);
- uint32_t x97 = (x95 & 0x3fffffff);
- ℤ x98 = (x93 +ℤ x47);
- uint64_t x99 = (x98 >> 0x1e);
- uint32_t x100 = (x98 & 0x3fffffff);
- ℤ x101 = (x96 +ℤ x55);
- uint64_t x102 = (x101 >> 0x1e);
- uint32_t x103 = (x101 & 0x3fffffff);
- ℤ x104 = (x99 +ℤ x46);
- uint64_t x105 = (x104 >> 0x1e);
- uint32_t x106 = (x104 & 0x3fffffff);
- ℤ x107 = (x102 +ℤ x54);
- uint64_t x108 = (x107 >> 0x1e);
- uint32_t x109 = (x107 & 0x3fffffff);
- uint64_t x110 = (x105 + x67);
- uint32_t x111 = (uint32_t) (x110 >> 0x1e);
- uint32_t x112 = ((uint32_t)x110 & 0x3fffffff);
- uint64_t x113 = (x108 + x62);
- uint32_t x114 = (uint32_t) (x113 >> 0x1e);
- uint32_t x115 = ((uint32_t)x113 & 0x3fffffff);
- uint64_t x116 = (((uint64_t)0x40000000 * x111) + x112);
- uint32_t x117 = (uint32_t) (x116 >> 0x1e);
- uint32_t x118 = ((uint32_t)x116 & 0x3fffffff);
- uint32_t x119 = ((x114 + x70) + x117);
- uint32_t x120 = (x119 >> 0x1e);
- uint32_t x121 = (x119 & 0x3fffffff);
- uint32_t x122 = (x73 + x117);
- uint32_t x123 = (x122 >> 0x1e);
- uint32_t x124 = (x122 & 0x3fffffff);
- return (Return x118, Return x106, Return x100, Return x94, Return x88, Return x82, (x120 + x76), Return x121, Return x115, Return x109, Return x103, Return x97, Return x91, Return x85, (x123 + x79), Return x124))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v b/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v
deleted file mode 100644
index 3200570b1..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesub.c b/src/Specific/solinas32_2e480m2e240m1/fesub.c
deleted file mode 100644
index cf5e2784d..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint32_t out[16], const uint32_t in1[16], const uint32_t in2[16]) {
- { const uint32_t x32 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x62 = in2[15];
- { const uint32_t x63 = in2[14];
- { const uint32_t x61 = in2[13];
- { const uint32_t x59 = in2[12];
- { const uint32_t x57 = in2[11];
- { const uint32_t x55 = in2[10];
- { const uint32_t x53 = in2[9];
- { const uint32_t x51 = in2[8];
- { const uint32_t x49 = in2[7];
- { const uint32_t x47 = in2[6];
- { const uint32_t x45 = in2[5];
- { const uint32_t x43 = in2[4];
- { const uint32_t x41 = in2[3];
- { const uint32_t x39 = in2[2];
- { const uint32_t x37 = in2[1];
- { const uint32_t x35 = in2[0];
- out[0] = ((0x7ffffffe + x5) - x35);
- out[1] = ((0x7ffffffe + x7) - x37);
- out[2] = ((0x7ffffffe + x9) - x39);
- out[3] = ((0x7ffffffe + x11) - x41);
- out[4] = ((0x7ffffffe + x13) - x43);
- out[5] = ((0x7ffffffe + x15) - x45);
- out[6] = ((0x7ffffffe + x17) - x47);
- out[7] = ((0x7ffffffe + x19) - x49);
- out[8] = ((0x7ffffffc + x21) - x51);
- out[9] = ((0x7ffffffe + x23) - x53);
- out[10] = ((0x7ffffffe + x25) - x55);
- out[11] = ((0x7ffffffe + x27) - x57);
- out[12] = ((0x7ffffffe + x29) - x59);
- out[13] = ((0x7ffffffe + x31) - x61);
- out[14] = ((0x7ffffffe + x33) - x63);
- out[15] = ((0x7ffffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesub.v b/src/Specific/solinas32_2e480m2e240m1/fesub.v
deleted file mode 100644
index ff17a4ac5..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.log b/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.log
deleted file mode 100644
index 05074fe42..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x7ffffffe + x32) - x62), ((0x7ffffffe + x33) - x63), ((0x7ffffffe + x31) - x61), ((0x7ffffffe + x29) - x59), ((0x7ffffffe + x27) - x57), ((0x7ffffffe + x25) - x55), ((0x7ffffffe + x23) - x53), ((0x7ffffffc + x21) - x51), ((0x7ffffffe + x19) - x49), ((0x7ffffffe + x17) - x47), ((0x7ffffffe + x15) - x45), ((0x7ffffffe + x13) - x43), ((0x7ffffffe + x11) - x41), ((0x7ffffffe + x9) - x39), ((0x7ffffffe + x7) - x37), ((0x7ffffffe + x5) - x35)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.v b/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.v
deleted file mode 100644
index ac3f21f26..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1/freeze.c b/src/Specific/solinas32_2e480m2e240m1/freeze.c
deleted file mode 100644
index df4f2391f..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint32_t out[16], const uint32_t in1[16]) {
- { const uint32_t x29 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffff);
- { uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x3fffffff);
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x3fffffff);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x3fffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x3fffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x3fffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x3fffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x3fffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x3ffffffe);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x3fffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x3fffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x3fffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x3fffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x3fffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x3fffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x3fffffff);
- { uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- { uint32_t x80 = (x79 & 0x3fffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint32_t x84 = (x79 & 0x3fffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint32_t x88 = (x79 & 0x3fffffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint32_t x92 = (x79 & 0x3fffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint32_t x96 = (x79 & 0x3fffffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint32_t x100 = (x79 & 0x3fffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint32_t x104 = (x79 & 0x3fffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint32_t x108 = (x79 & 0x3fffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint32_t x112 = (x79 & 0x3ffffffe);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint32_t x116 = (x79 & 0x3fffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint32_t x120 = (x79 & 0x3fffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint32_t x124 = (x79 & 0x3fffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint32_t x128 = (x79 & 0x3fffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint32_t x132 = (x79 & 0x3fffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint32_t x136 = (x79 & 0x3fffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint32_t x140 = (x79 & 0x3fffffff);
- { uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e480m2e240m1/freeze.v b/src/Specific/solinas32_2e480m2e240m1/freeze.v
deleted file mode 100644
index d10462aba..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.log b/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.log
deleted file mode 100644
index b977f19cf..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffff);
- uint32_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x4, 0x3fffffff);
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x36, Return x6, 0x3fffffff);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x8, 0x3fffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x10, 0x3fffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x12, 0x3fffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x14, 0x3fffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x16, 0x3fffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x18, 0x3ffffffe);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x20, 0x3fffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x22, 0x3fffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x24, 0x3fffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x26, 0x3fffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x28, 0x3fffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x30, 0x3fffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x29, 0x3fffffff);
- uint32_t x79 = cmovznz32(x78, 0x0, 0xffffffff);
- uint32_t x80 = (x79 & 0x3fffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint32_t x84 = (x79 & 0x3fffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint32_t x88 = (x79 & 0x3fffffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint32_t x92 = (x79 & 0x3fffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint32_t x96 = (x79 & 0x3fffffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint32_t x100 = (x79 & 0x3fffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint32_t x104 = (x79 & 0x3fffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint32_t x108 = (x79 & 0x3fffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint32_t x112 = (x79 & 0x3ffffffe);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint32_t x116 = (x79 & 0x3fffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint32_t x120 = (x79 & 0x3fffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint32_t x124 = (x79 & 0x3fffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint32_t x128 = (x79 & 0x3fffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint32_t x132 = (x79 & 0x3fffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint32_t x136 = (x79 & 0x3fffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint32_t x140 = (x79 & 0x3fffffff);
- uint32_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v b/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v
deleted file mode 100644
index fd38a1d38..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e480m2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1/py_interpreter.sh b/src/Specific/solinas32_2e480m2e240m1/py_interpreter.sh
deleted file mode 100755
index 91d9d593e..000000000
--- a/src/Specific/solinas32_2e480m2e240m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**480 - 2**240 - 1' -Dmodulus_bytes='30' -Da24='121665'
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/CurveParameters.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/CurveParameters.v
new file mode 100644
index 000000000..a3c18bc6a
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^480 - 2^240 - 1
+Base: 26 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 18%nat;
+ base := 26 + 2/3;
+ bitwidth := 32;
+ s := 2^480;
+ c := [(1, 1); (2^240, 1)];
+ carry_chains := Some [[8; 17]; [9; 0; 10; 1; 11; 2; 12; 3; 13; 4; 14; 5; 15; 6; 16; 7; 17; 8]; [9; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/Synthesis.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/Synthesis.v
new file mode 100644
index 000000000..34431311e
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/compiler.sh b/src/Specific/solinas32_2e480m2e240m1_18limbs/compiler.sh
new file mode 100755
index 000000000..1abad0e82
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,27,26,27,27,26,27,27,26,27,27,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/compilerxx.sh b/src/Specific/solinas32_2e480m2e240m1_18limbs/compilerxx.sh
new file mode 100755
index 000000000..02cac87b2
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,27,26,27,27,26,27,27,26,27,27,26,27,27,26,27,27,26}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='18' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/feadd.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/feadd.v
new file mode 100644
index 000000000..c6104511c
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/feaddDisplay.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/feaddDisplay.v
new file mode 100644
index 000000000..5be19f5a9
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/femul.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/femul.v
new file mode 100644
index 000000000..cf5f738e4
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/femulDisplay.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/femulDisplay.v
new file mode 100644
index 000000000..1123aa1c8
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquare.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquare.v
new file mode 100644
index 000000000..3391371cd
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquareDisplay.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquareDisplay.v
new file mode 100644
index 000000000..0ae9c2e4d
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/fesub.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesub.v
new file mode 100644
index 000000000..80cf7cd2e
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/fesubDisplay.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesubDisplay.v
new file mode 100644
index 000000000..c289d8d63
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/freeze.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/freeze.v
new file mode 100644
index 000000000..a9aa0bf7f
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/freezeDisplay.v b/src/Specific/solinas32_2e480m2e240m1_18limbs/freezeDisplay.v
new file mode 100644
index 000000000..6541480e4
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_18limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1_18limbs/py_interpreter.sh b/src/Specific/solinas32_2e480m2e240m1_18limbs/py_interpreter.sh
new file mode 100755
index 000000000..b421c17d5
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_18limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**480 - 2**240 - 1' -Dmodulus_bytes='26 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/CurveParameters.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/CurveParameters.v
new file mode 100644
index 000000000..1dce74bff
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^480 - 2^240 - 1
+Base: 24
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 20%nat;
+ base := 24;
+ bitwidth := 32;
+ s := 2^480;
+ c := [(1, 1); (2^240, 1)];
+ carry_chains := Some [[9; 19]; [10; 0; 11; 1; 12; 2; 13; 3; 14; 4; 15; 5; 16; 6; 17; 7; 18; 8; 19; 9]; [10; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/Synthesis.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/Synthesis.v
new file mode 100644
index 000000000..c50903bf2
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/compiler.sh b/src/Specific/solinas32_2e480m2e240m1_20limbs/compiler.sh
new file mode 100755
index 000000000..bc7e486bd
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/compilerxx.sh b/src/Specific/solinas32_2e480m2e240m1_20limbs/compilerxx.sh
new file mode 100755
index 000000000..2d2dbfd52
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/feadd.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/feadd.v
new file mode 100644
index 000000000..018912fdb
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..36c44209c
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/femul.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/femul.v
new file mode 100644
index 000000000..00636b95a
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/femulDisplay.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/femulDisplay.v
new file mode 100644
index 000000000..73745e82a
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquare.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquare.v
new file mode 100644
index 000000000..e2a24f49b
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c3e9a0f5f
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/fesub.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesub.v
new file mode 100644
index 000000000..3f0ddf055
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..bf9822a3e
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/freeze.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/freeze.v
new file mode 100644
index 000000000..ed1f7c8bc
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e480m2e240m1_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..ce84e57bb
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e480m2e240m1_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e480m2e240m1_20limbs/py_interpreter.sh b/src/Specific/solinas32_2e480m2e240m1_20limbs/py_interpreter.sh
new file mode 100755
index 000000000..cbc626bfb
--- /dev/null
+++ b/src/Specific/solinas32_2e480m2e240m1_20limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**480 - 2**240 - 1' -Dmodulus_bytes='24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e488m17/CurveParameters.v b/src/Specific/solinas32_2e488m17/CurveParameters.v
deleted file mode 100644
index 888cb21c1..000000000
--- a/src/Specific/solinas32_2e488m17/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^488 - 17
-Base: 20 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 24%nat;
- base := 20 + 1/3;
- bitwidth := 32;
- s := 2^488;
- c := [(1, 17)];
- carry_chains := Some [seq 0 (pred 24); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e488m17/Synthesis.v b/src/Specific/solinas32_2e488m17/Synthesis.v
deleted file mode 100644
index 1d87bb2a9..000000000
--- a/src/Specific/solinas32_2e488m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e488m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e488m17/compiler.sh b/src/Specific/solinas32_2e488m17/compiler.sh
deleted file mode 100755
index c53433015..000000000
--- a/src/Specific/solinas32_2e488m17/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17/compilerxx.sh b/src/Specific/solinas32_2e488m17/compilerxx.sh
deleted file mode 100755
index df486fd80..000000000
--- a/src/Specific/solinas32_2e488m17/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17/feadd.c b/src/Specific/solinas32_2e488m17/feadd.c
deleted file mode 100644
index 115132981..000000000
--- a/src/Specific/solinas32_2e488m17/feadd.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void feadd(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = (x5 + x51);
- out[1] = (x7 + x53);
- out[2] = (x9 + x55);
- out[3] = (x11 + x57);
- out[4] = (x13 + x59);
- out[5] = (x15 + x61);
- out[6] = (x17 + x63);
- out[7] = (x19 + x65);
- out[8] = (x21 + x67);
- out[9] = (x23 + x69);
- out[10] = (x25 + x71);
- out[11] = (x27 + x73);
- out[12] = (x29 + x75);
- out[13] = (x31 + x77);
- out[14] = (x33 + x79);
- out[15] = (x35 + x81);
- out[16] = (x37 + x83);
- out[17] = (x39 + x85);
- out[18] = (x41 + x87);
- out[19] = (x43 + x89);
- out[20] = (x45 + x91);
- out[21] = (x47 + x93);
- out[22] = (x49 + x95);
- out[23] = (x48 + x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e488m17/feadd.v b/src/Specific/solinas32_2e488m17/feadd.v
deleted file mode 100644
index ace917c35..000000000
--- a/src/Specific/solinas32_2e488m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e488m17/feaddDisplay.log b/src/Specific/solinas32_2e488m17/feaddDisplay.log
deleted file mode 100644
index 8ec776f44..000000000
--- a/src/Specific/solinas32_2e488m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- ((x48 + x94), (x49 + x95), (x47 + x93), (x45 + x91), (x43 + x89), (x41 + x87), (x39 + x85), (x37 + x83), (x35 + x81), (x33 + x79), (x31 + x77), (x29 + x75), (x27 + x73), (x25 + x71), (x23 + x69), (x21 + x67), (x19 + x65), (x17 + x63), (x15 + x61), (x13 + x59), (x11 + x57), (x9 + x55), (x7 + x53), (x5 + x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e488m17/feaddDisplay.v b/src/Specific/solinas32_2e488m17/feaddDisplay.v
deleted file mode 100644
index e47e7cbb2..000000000
--- a/src/Specific/solinas32_2e488m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e488m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e488m17/femul.v b/src/Specific/solinas32_2e488m17/femul.v
deleted file mode 100644
index 06cd6df69..000000000
--- a/src/Specific/solinas32_2e488m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e488m17/femulDisplay.v b/src/Specific/solinas32_2e488m17/femulDisplay.v
deleted file mode 100644
index 573ba1091..000000000
--- a/src/Specific/solinas32_2e488m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e488m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e488m17/fesquare.c b/src/Specific/solinas32_2e488m17/fesquare.c
deleted file mode 100644
index 424bf33d9..000000000
--- a/src/Specific/solinas32_2e488m17/fesquare.c
+++ /dev/null
@@ -1,152 +0,0 @@
-static void fesquare(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x11 * ((uint64_t)x45 * x45)));
- { uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
- { uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x11 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
- { uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x11 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
- { uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
- { uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x11 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
- { uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
- { uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
- { uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
- { uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
- { uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
- { uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
- { uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
- { uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x11 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
- { uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
- { uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
- { uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
- { uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
- { uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
- { uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
- { uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
- { uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
- { uint64_t x70 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
- { uint64_t x71 = (x70 >> 0x15);
- { uint32_t x72 = ((uint32_t)x70 & 0x1fffff);
- { uint64_t x73 = (x71 + x69);
- { uint64_t x74 = (x73 >> 0x14);
- { uint32_t x75 = ((uint32_t)x73 & 0xfffff);
- { uint64_t x76 = (x74 + x68);
- { uint64_t x77 = (x76 >> 0x14);
- { uint32_t x78 = ((uint32_t)x76 & 0xfffff);
- { uint64_t x79 = (x77 + x67);
- { uint64_t x80 = (x79 >> 0x15);
- { uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- { uint64_t x82 = (x80 + x66);
- { uint64_t x83 = (x82 >> 0x14);
- { uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- { uint64_t x85 = (x83 + x65);
- { uint64_t x86 = (x85 >> 0x14);
- { uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- { uint64_t x88 = (x86 + x64);
- { uint64_t x89 = (x88 >> 0x15);
- { uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- { uint64_t x91 = (x89 + x63);
- { uint64_t x92 = (x91 >> 0x14);
- { uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- { uint64_t x94 = (x92 + x62);
- { uint64_t x95 = (x94 >> 0x14);
- { uint32_t x96 = ((uint32_t)x94 & 0xfffff);
- { uint64_t x97 = (x95 + x61);
- { uint32_t x98 = (uint32_t) (x97 >> 0x15);
- { uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- { uint64_t x100 = (x98 + x60);
- { uint64_t x101 = (x100 >> 0x14);
- { uint32_t x102 = ((uint32_t)x100 & 0xfffff);
- { uint64_t x103 = (x101 + x59);
- { uint64_t x104 = (x103 >> 0x14);
- { uint32_t x105 = ((uint32_t)x103 & 0xfffff);
- { uint64_t x106 = (x104 + x58);
- { uint32_t x107 = (uint32_t) (x106 >> 0x15);
- { uint32_t x108 = ((uint32_t)x106 & 0x1fffff);
- { uint64_t x109 = (x107 + x57);
- { uint32_t x110 = (uint32_t) (x109 >> 0x14);
- { uint32_t x111 = ((uint32_t)x109 & 0xfffff);
- { uint64_t x112 = (x110 + x56);
- { uint32_t x113 = (uint32_t) (x112 >> 0x14);
- { uint32_t x114 = ((uint32_t)x112 & 0xfffff);
- { uint64_t x115 = (x113 + x55);
- { uint32_t x116 = (uint32_t) (x115 >> 0x15);
- { uint32_t x117 = ((uint32_t)x115 & 0x1fffff);
- { uint64_t x118 = (x116 + x54);
- { uint32_t x119 = (uint32_t) (x118 >> 0x14);
- { uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- { uint64_t x121 = (x119 + x53);
- { uint32_t x122 = (uint32_t) (x121 >> 0x14);
- { uint32_t x123 = ((uint32_t)x121 & 0xfffff);
- { uint64_t x124 = (x122 + x52);
- { uint32_t x125 = (uint32_t) (x124 >> 0x15);
- { uint32_t x126 = ((uint32_t)x124 & 0x1fffff);
- { uint64_t x127 = (x125 + x51);
- { uint32_t x128 = (uint32_t) (x127 >> 0x14);
- { uint32_t x129 = ((uint32_t)x127 & 0xfffff);
- { uint64_t x130 = (x128 + x50);
- { uint32_t x131 = (uint32_t) (x130 >> 0x14);
- { uint32_t x132 = ((uint32_t)x130 & 0xfffff);
- { uint64_t x133 = (x131 + x49);
- { uint32_t x134 = (uint32_t) (x133 >> 0x15);
- { uint32_t x135 = ((uint32_t)x133 & 0x1fffff);
- { uint64_t x136 = (x134 + x48);
- { uint32_t x137 = (uint32_t) (x136 >> 0x14);
- { uint32_t x138 = ((uint32_t)x136 & 0xfffff);
- { uint64_t x139 = (x137 + x47);
- { uint32_t x140 = (uint32_t) (x139 >> 0x14);
- { uint32_t x141 = ((uint32_t)x139 & 0xfffff);
- { uint64_t x142 = (x72 + ((uint64_t)0x11 * x140));
- { uint32_t x143 = (uint32_t) (x142 >> 0x15);
- { uint32_t x144 = ((uint32_t)x142 & 0x1fffff);
- { uint32_t x145 = (x143 + x75);
- { uint32_t x146 = (x145 >> 0x14);
- { uint32_t x147 = (x145 & 0xfffff);
- out[0] = x144;
- out[1] = x147;
- out[2] = (x146 + x78);
- out[3] = x81;
- out[4] = x84;
- out[5] = x87;
- out[6] = x90;
- out[7] = x93;
- out[8] = x96;
- out[9] = x99;
- out[10] = x102;
- out[11] = x105;
- out[12] = x108;
- out[13] = x111;
- out[14] = x114;
- out[15] = x117;
- out[16] = x120;
- out[17] = x123;
- out[18] = x126;
- out[19] = x129;
- out[20] = x132;
- out[21] = x135;
- out[22] = x138;
- out[23] = x141;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e488m17/fesquare.v b/src/Specific/solinas32_2e488m17/fesquare.v
deleted file mode 100644
index 0644bc327..000000000
--- a/src/Specific/solinas32_2e488m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e488m17/fesquareDisplay.log b/src/Specific/solinas32_2e488m17/fesquareDisplay.log
deleted file mode 100644
index 98bb84530..000000000
--- a/src/Specific/solinas32_2e488m17/fesquareDisplay.log
+++ /dev/null
@@ -1,108 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x11 * ((uint64_t)x45 * x45)));
- uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
- uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x11 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
- uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x11 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
- uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
- uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x11 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
- uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
- uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
- uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
- uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
- uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
- uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
- uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
- uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x11 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
- uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
- uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
- uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
- uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
- uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
- uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
- uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
- uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
- uint64_t x70 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
- uint64_t x71 = (x70 >> 0x15);
- uint32_t x72 = ((uint32_t)x70 & 0x1fffff);
- uint64_t x73 = (x71 + x69);
- uint64_t x74 = (x73 >> 0x14);
- uint32_t x75 = ((uint32_t)x73 & 0xfffff);
- uint64_t x76 = (x74 + x68);
- uint64_t x77 = (x76 >> 0x14);
- uint32_t x78 = ((uint32_t)x76 & 0xfffff);
- uint64_t x79 = (x77 + x67);
- uint64_t x80 = (x79 >> 0x15);
- uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
- uint64_t x82 = (x80 + x66);
- uint64_t x83 = (x82 >> 0x14);
- uint32_t x84 = ((uint32_t)x82 & 0xfffff);
- uint64_t x85 = (x83 + x65);
- uint64_t x86 = (x85 >> 0x14);
- uint32_t x87 = ((uint32_t)x85 & 0xfffff);
- uint64_t x88 = (x86 + x64);
- uint64_t x89 = (x88 >> 0x15);
- uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
- uint64_t x91 = (x89 + x63);
- uint64_t x92 = (x91 >> 0x14);
- uint32_t x93 = ((uint32_t)x91 & 0xfffff);
- uint64_t x94 = (x92 + x62);
- uint64_t x95 = (x94 >> 0x14);
- uint32_t x96 = ((uint32_t)x94 & 0xfffff);
- uint64_t x97 = (x95 + x61);
- uint32_t x98 = (uint32_t) (x97 >> 0x15);
- uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
- uint64_t x100 = (x98 + x60);
- uint64_t x101 = (x100 >> 0x14);
- uint32_t x102 = ((uint32_t)x100 & 0xfffff);
- uint64_t x103 = (x101 + x59);
- uint64_t x104 = (x103 >> 0x14);
- uint32_t x105 = ((uint32_t)x103 & 0xfffff);
- uint64_t x106 = (x104 + x58);
- uint32_t x107 = (uint32_t) (x106 >> 0x15);
- uint32_t x108 = ((uint32_t)x106 & 0x1fffff);
- uint64_t x109 = (x107 + x57);
- uint32_t x110 = (uint32_t) (x109 >> 0x14);
- uint32_t x111 = ((uint32_t)x109 & 0xfffff);
- uint64_t x112 = (x110 + x56);
- uint32_t x113 = (uint32_t) (x112 >> 0x14);
- uint32_t x114 = ((uint32_t)x112 & 0xfffff);
- uint64_t x115 = (x113 + x55);
- uint32_t x116 = (uint32_t) (x115 >> 0x15);
- uint32_t x117 = ((uint32_t)x115 & 0x1fffff);
- uint64_t x118 = (x116 + x54);
- uint32_t x119 = (uint32_t) (x118 >> 0x14);
- uint32_t x120 = ((uint32_t)x118 & 0xfffff);
- uint64_t x121 = (x119 + x53);
- uint32_t x122 = (uint32_t) (x121 >> 0x14);
- uint32_t x123 = ((uint32_t)x121 & 0xfffff);
- uint64_t x124 = (x122 + x52);
- uint32_t x125 = (uint32_t) (x124 >> 0x15);
- uint32_t x126 = ((uint32_t)x124 & 0x1fffff);
- uint64_t x127 = (x125 + x51);
- uint32_t x128 = (uint32_t) (x127 >> 0x14);
- uint32_t x129 = ((uint32_t)x127 & 0xfffff);
- uint64_t x130 = (x128 + x50);
- uint32_t x131 = (uint32_t) (x130 >> 0x14);
- uint32_t x132 = ((uint32_t)x130 & 0xfffff);
- uint64_t x133 = (x131 + x49);
- uint32_t x134 = (uint32_t) (x133 >> 0x15);
- uint32_t x135 = ((uint32_t)x133 & 0x1fffff);
- uint64_t x136 = (x134 + x48);
- uint32_t x137 = (uint32_t) (x136 >> 0x14);
- uint32_t x138 = ((uint32_t)x136 & 0xfffff);
- uint64_t x139 = (x137 + x47);
- uint32_t x140 = (uint32_t) (x139 >> 0x14);
- uint32_t x141 = ((uint32_t)x139 & 0xfffff);
- uint64_t x142 = (x72 + ((uint64_t)0x11 * x140));
- uint32_t x143 = (uint32_t) (x142 >> 0x15);
- uint32_t x144 = ((uint32_t)x142 & 0x1fffff);
- uint32_t x145 = (x143 + x75);
- uint32_t x146 = (x145 >> 0x14);
- uint32_t x147 = (x145 & 0xfffff);
- return (Return x141, Return x138, Return x135, Return x132, Return x129, Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, (x146 + x78), Return x147, Return x144))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e488m17/fesquareDisplay.v b/src/Specific/solinas32_2e488m17/fesquareDisplay.v
deleted file mode 100644
index c9aa5c7d0..000000000
--- a/src/Specific/solinas32_2e488m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e488m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e488m17/fesub.c b/src/Specific/solinas32_2e488m17/fesub.c
deleted file mode 100644
index 02063ee8b..000000000
--- a/src/Specific/solinas32_2e488m17/fesub.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void fesub(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = ((0x3fffde + x5) - x51);
- out[1] = ((0x1ffffe + x7) - x53);
- out[2] = ((0x1ffffe + x9) - x55);
- out[3] = ((0x3ffffe + x11) - x57);
- out[4] = ((0x1ffffe + x13) - x59);
- out[5] = ((0x1ffffe + x15) - x61);
- out[6] = ((0x3ffffe + x17) - x63);
- out[7] = ((0x1ffffe + x19) - x65);
- out[8] = ((0x1ffffe + x21) - x67);
- out[9] = ((0x3ffffe + x23) - x69);
- out[10] = ((0x1ffffe + x25) - x71);
- out[11] = ((0x1ffffe + x27) - x73);
- out[12] = ((0x3ffffe + x29) - x75);
- out[13] = ((0x1ffffe + x31) - x77);
- out[14] = ((0x1ffffe + x33) - x79);
- out[15] = ((0x3ffffe + x35) - x81);
- out[16] = ((0x1ffffe + x37) - x83);
- out[17] = ((0x1ffffe + x39) - x85);
- out[18] = ((0x3ffffe + x41) - x87);
- out[19] = ((0x1ffffe + x43) - x89);
- out[20] = ((0x1ffffe + x45) - x91);
- out[21] = ((0x3ffffe + x47) - x93);
- out[22] = ((0x1ffffe + x49) - x95);
- out[23] = ((0x1ffffe + x48) - x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e488m17/fesub.v b/src/Specific/solinas32_2e488m17/fesub.v
deleted file mode 100644
index 9c3608a91..000000000
--- a/src/Specific/solinas32_2e488m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e488m17/fesubDisplay.log b/src/Specific/solinas32_2e488m17/fesubDisplay.log
deleted file mode 100644
index c163604d4..000000000
--- a/src/Specific/solinas32_2e488m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- (((0x1ffffe + x48) - x94), ((0x1ffffe + x49) - x95), ((0x3ffffe + x47) - x93), ((0x1ffffe + x45) - x91), ((0x1ffffe + x43) - x89), ((0x3ffffe + x41) - x87), ((0x1ffffe + x39) - x85), ((0x1ffffe + x37) - x83), ((0x3ffffe + x35) - x81), ((0x1ffffe + x33) - x79), ((0x1ffffe + x31) - x77), ((0x3ffffe + x29) - x75), ((0x1ffffe + x27) - x73), ((0x1ffffe + x25) - x71), ((0x3ffffe + x23) - x69), ((0x1ffffe + x21) - x67), ((0x1ffffe + x19) - x65), ((0x3ffffe + x17) - x63), ((0x1ffffe + x15) - x61), ((0x1ffffe + x13) - x59), ((0x3ffffe + x11) - x57), ((0x1ffffe + x9) - x55), ((0x1ffffe + x7) - x53), ((0x3fffde + x5) - x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e488m17/fesubDisplay.v b/src/Specific/solinas32_2e488m17/fesubDisplay.v
deleted file mode 100644
index ed83d665e..000000000
--- a/src/Specific/solinas32_2e488m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e488m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e488m17/freeze.c b/src/Specific/solinas32_2e488m17/freeze.c
deleted file mode 100644
index b94faeff8..000000000
--- a/src/Specific/solinas32_2e488m17/freeze.c
+++ /dev/null
@@ -1,124 +0,0 @@
-static void freeze(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffef);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0xfffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0xfffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x1fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0xfffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0xfffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x1fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0xfffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0xfffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0xfffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0xfffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x1fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0xfffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0xfffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x1fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0xfffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0xfffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x1fffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0xfffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0xfffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0xfffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0xfffff);
- { uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- { uint32_t x120 = (x119 & 0x1fffef);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- { uint32_t x124 = (x119 & 0xfffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- { uint32_t x128 = (x119 & 0xfffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- { uint32_t x132 = (x119 & 0x1fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- { uint32_t x136 = (x119 & 0xfffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- { uint32_t x140 = (x119 & 0xfffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- { uint32_t x144 = (x119 & 0x1fffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- { uint32_t x148 = (x119 & 0xfffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- { uint32_t x152 = (x119 & 0xfffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- { uint32_t x156 = (x119 & 0x1fffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- { uint32_t x160 = (x119 & 0xfffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- { uint32_t x164 = (x119 & 0xfffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- { uint32_t x168 = (x119 & 0x1fffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- { uint32_t x172 = (x119 & 0xfffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- { uint32_t x176 = (x119 & 0xfffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- { uint32_t x180 = (x119 & 0x1fffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- { uint32_t x184 = (x119 & 0xfffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- { uint32_t x188 = (x119 & 0xfffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- { uint32_t x192 = (x119 & 0x1fffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- { uint32_t x196 = (x119 & 0xfffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- { uint32_t x200 = (x119 & 0xfffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- { uint32_t x204 = (x119 & 0x1fffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- { uint32_t x208 = (x119 & 0xfffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- { uint32_t x212 = (x119 & 0xfffff);
- { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- out[0] = x122;
- out[1] = x126;
- out[2] = x130;
- out[3] = x134;
- out[4] = x138;
- out[5] = x142;
- out[6] = x146;
- out[7] = x150;
- out[8] = x154;
- out[9] = x158;
- out[10] = x162;
- out[11] = x166;
- out[12] = x170;
- out[13] = x174;
- out[14] = x178;
- out[15] = x182;
- out[16] = x186;
- out[17] = x190;
- out[18] = x194;
- out[19] = x198;
- out[20] = x202;
- out[21] = x206;
- out[22] = x210;
- out[23] = x214;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e488m17/freeze.v b/src/Specific/solinas32_2e488m17/freeze.v
deleted file mode 100644
index a48ca4156..000000000
--- a/src/Specific/solinas32_2e488m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e488m17/freezeDisplay.log b/src/Specific/solinas32_2e488m17/freezeDisplay.log
deleted file mode 100644
index 6cc31bd4e..000000000
--- a/src/Specific/solinas32_2e488m17/freezeDisplay.log
+++ /dev/null
@@ -1,80 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffef);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0xfffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0xfffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x1fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0xfffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0xfffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x1fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0xfffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0xfffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0xfffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0xfffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x1fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0xfffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0xfffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x1fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0xfffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0xfffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x1fffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0xfffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0xfffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0xfffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0xfffff);
- uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- uint32_t x120 = (x119 & 0x1fffef);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- uint32_t x124 = (x119 & 0xfffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- uint32_t x128 = (x119 & 0xfffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- uint32_t x132 = (x119 & 0x1fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- uint32_t x136 = (x119 & 0xfffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- uint32_t x140 = (x119 & 0xfffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- uint32_t x144 = (x119 & 0x1fffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- uint32_t x148 = (x119 & 0xfffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- uint32_t x152 = (x119 & 0xfffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- uint32_t x156 = (x119 & 0x1fffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- uint32_t x160 = (x119 & 0xfffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- uint32_t x164 = (x119 & 0xfffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- uint32_t x168 = (x119 & 0x1fffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- uint32_t x172 = (x119 & 0xfffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- uint32_t x176 = (x119 & 0xfffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- uint32_t x180 = (x119 & 0x1fffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- uint32_t x184 = (x119 & 0xfffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- uint32_t x188 = (x119 & 0xfffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- uint32_t x192 = (x119 & 0x1fffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- uint32_t x196 = (x119 & 0xfffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- uint32_t x200 = (x119 & 0xfffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- uint32_t x204 = (x119 & 0x1fffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- uint32_t x208 = (x119 & 0xfffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & 0xfffff);
- uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 20 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- (Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e488m17/freezeDisplay.v b/src/Specific/solinas32_2e488m17/freezeDisplay.v
deleted file mode 100644
index 01e7830d4..000000000
--- a/src/Specific/solinas32_2e488m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e488m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e488m17/py_interpreter.sh b/src/Specific/solinas32_2e488m17/py_interpreter.sh
deleted file mode 100755
index 242bd4d68..000000000
--- a/src/Specific/solinas32_2e488m17/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='20 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e488m17_19limbs/CurveParameters.v b/src/Specific/solinas32_2e488m17_19limbs/CurveParameters.v
new file mode 100644
index 000000000..b1014a16f
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^488 - 17
+Base: 25 + 13/19
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 19%nat;
+ base := 25 + 13/19;
+ bitwidth := 32;
+ s := 2^488;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 19); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/Synthesis.v b/src/Specific/solinas32_2e488m17_19limbs/Synthesis.v
new file mode 100644
index 000000000..844e66895
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/compiler.sh b/src/Specific/solinas32_2e488m17_19limbs/compiler.sh
new file mode 100755
index 000000000..e4ddf58cf
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17_19limbs/compilerxx.sh b/src/Specific/solinas32_2e488m17_19limbs/compilerxx.sh
new file mode 100755
index 000000000..13a597801
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25,26,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17_19limbs/feadd.v b/src/Specific/solinas32_2e488m17_19limbs/feadd.v
new file mode 100644
index 000000000..90623b7af
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/feaddDisplay.v b/src/Specific/solinas32_2e488m17_19limbs/feaddDisplay.v
new file mode 100644
index 000000000..34b7f80be
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/femul.v b/src/Specific/solinas32_2e488m17_19limbs/femul.v
new file mode 100644
index 000000000..1ac7ce256
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/femulDisplay.v b/src/Specific/solinas32_2e488m17_19limbs/femulDisplay.v
new file mode 100644
index 000000000..fa87269b0
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/fesquare.v b/src/Specific/solinas32_2e488m17_19limbs/fesquare.v
new file mode 100644
index 000000000..b516c0d66
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/fesquareDisplay.v b/src/Specific/solinas32_2e488m17_19limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2e8db5ad9
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/fesub.v b/src/Specific/solinas32_2e488m17_19limbs/fesub.v
new file mode 100644
index 000000000..88eabf376
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/fesubDisplay.v b/src/Specific/solinas32_2e488m17_19limbs/fesubDisplay.v
new file mode 100644
index 000000000..9b498cf2f
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/freeze.v b/src/Specific/solinas32_2e488m17_19limbs/freeze.v
new file mode 100644
index 000000000..d40fd750c
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/freezeDisplay.v b/src/Specific/solinas32_2e488m17_19limbs/freezeDisplay.v
new file mode 100644
index 000000000..dd05b88ea
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_19limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e488m17_19limbs/py_interpreter.sh b/src/Specific/solinas32_2e488m17_19limbs/py_interpreter.sh
new file mode 100755
index 000000000..67515d991
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_19limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='25 + 13/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e488m17_20limbs/CurveParameters.v b/src/Specific/solinas32_2e488m17_20limbs/CurveParameters.v
new file mode 100644
index 000000000..0c38c15e7
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^488 - 17
+Base: 24.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 20%nat;
+ base := 24 + 2/5;
+ bitwidth := 32;
+ s := 2^488;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/Synthesis.v b/src/Specific/solinas32_2e488m17_20limbs/Synthesis.v
new file mode 100644
index 000000000..421236ed7
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/compiler.sh b/src/Specific/solinas32_2e488m17_20limbs/compiler.sh
new file mode 100755
index 000000000..f4498f6dc
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,25,24,24,25,24,25,24,24,25,24,25,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17_20limbs/compilerxx.sh b/src/Specific/solinas32_2e488m17_20limbs/compilerxx.sh
new file mode 100755
index 000000000..b70a1d1d2
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,24,25,24,25,24,24,25,24,25,24,24,25,24,25,24,24}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas32_2e488m17_20limbs/feadd.v b/src/Specific/solinas32_2e488m17_20limbs/feadd.v
new file mode 100644
index 000000000..905cc672b
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e488m17_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..dd1a3c726
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/femul.v b/src/Specific/solinas32_2e488m17_20limbs/femul.v
new file mode 100644
index 000000000..76d8f1315
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/femulDisplay.v b/src/Specific/solinas32_2e488m17_20limbs/femulDisplay.v
new file mode 100644
index 000000000..f3e20757d
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/fesquare.v b/src/Specific/solinas32_2e488m17_20limbs/fesquare.v
new file mode 100644
index 000000000..007079fa6
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e488m17_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ce7e965aa
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/fesub.v b/src/Specific/solinas32_2e488m17_20limbs/fesub.v
new file mode 100644
index 000000000..662033c26
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e488m17_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..877b9efde
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/freeze.v b/src/Specific/solinas32_2e488m17_20limbs/freeze.v
new file mode 100644
index 000000000..36268957e
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e488m17_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..36b01db19
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e488m17_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e488m17_20limbs/py_interpreter.sh b/src/Specific/solinas32_2e488m17_20limbs/py_interpreter.sh
new file mode 100755
index 000000000..906be2e3d
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17_20limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='24.4' -Da24='121665'
diff --git a/src/Specific/solinas32_2e489m21/CurveParameters.v b/src/Specific/solinas32_2e489m21/CurveParameters.v
deleted file mode 100644
index 517a6dc09..000000000
--- a/src/Specific/solinas32_2e489m21/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^489 - 21
-Base: 18 + 1/9
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 27%nat;
- base := 18 + 1/9;
- bitwidth := 32;
- s := 2^489;
- c := [(1, 21)];
- carry_chains := Some [seq 0 (pred 27); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e489m21/Synthesis.v b/src/Specific/solinas32_2e489m21/Synthesis.v
deleted file mode 100644
index d01329972..000000000
--- a/src/Specific/solinas32_2e489m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e489m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e489m21/compiler.sh b/src/Specific/solinas32_2e489m21/compiler.sh
deleted file mode 100755
index 29e9cb0b4..000000000
--- a/src/Specific/solinas32_2e489m21/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,18}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='27' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21/compilerxx.sh b/src/Specific/solinas32_2e489m21/compilerxx.sh
deleted file mode 100755
index 476c4c8a5..000000000
--- a/src/Specific/solinas32_2e489m21/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,18}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='27' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21/feadd.c b/src/Specific/solinas32_2e489m21/feadd.c
deleted file mode 100644
index 425ad4cb5..000000000
--- a/src/Specific/solinas32_2e489m21/feadd.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void feadd(uint32_t out[27], const uint32_t in1[27], const uint32_t in2[27]) {
- { const uint32_t x54 = in1[26];
- { const uint32_t x55 = in1[25];
- { const uint32_t x53 = in1[24];
- { const uint32_t x51 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x106 = in2[26];
- { const uint32_t x107 = in2[25];
- { const uint32_t x105 = in2[24];
- { const uint32_t x103 = in2[23];
- { const uint32_t x101 = in2[22];
- { const uint32_t x99 = in2[21];
- { const uint32_t x97 = in2[20];
- { const uint32_t x95 = in2[19];
- { const uint32_t x93 = in2[18];
- { const uint32_t x91 = in2[17];
- { const uint32_t x89 = in2[16];
- { const uint32_t x87 = in2[15];
- { const uint32_t x85 = in2[14];
- { const uint32_t x83 = in2[13];
- { const uint32_t x81 = in2[12];
- { const uint32_t x79 = in2[11];
- { const uint32_t x77 = in2[10];
- { const uint32_t x75 = in2[9];
- { const uint32_t x73 = in2[8];
- { const uint32_t x71 = in2[7];
- { const uint32_t x69 = in2[6];
- { const uint32_t x67 = in2[5];
- { const uint32_t x65 = in2[4];
- { const uint32_t x63 = in2[3];
- { const uint32_t x61 = in2[2];
- { const uint32_t x59 = in2[1];
- { const uint32_t x57 = in2[0];
- out[0] = (x5 + x57);
- out[1] = (x7 + x59);
- out[2] = (x9 + x61);
- out[3] = (x11 + x63);
- out[4] = (x13 + x65);
- out[5] = (x15 + x67);
- out[6] = (x17 + x69);
- out[7] = (x19 + x71);
- out[8] = (x21 + x73);
- out[9] = (x23 + x75);
- out[10] = (x25 + x77);
- out[11] = (x27 + x79);
- out[12] = (x29 + x81);
- out[13] = (x31 + x83);
- out[14] = (x33 + x85);
- out[15] = (x35 + x87);
- out[16] = (x37 + x89);
- out[17] = (x39 + x91);
- out[18] = (x41 + x93);
- out[19] = (x43 + x95);
- out[20] = (x45 + x97);
- out[21] = (x47 + x99);
- out[22] = (x49 + x101);
- out[23] = (x51 + x103);
- out[24] = (x53 + x105);
- out[25] = (x55 + x107);
- out[26] = (x54 + x106);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e489m21/feadd.v b/src/Specific/solinas32_2e489m21/feadd.v
deleted file mode 100644
index 680a9cf9c..000000000
--- a/src/Specific/solinas32_2e489m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e489m21/feaddDisplay.log b/src/Specific/solinas32_2e489m21/feaddDisplay.log
deleted file mode 100644
index 22b12f3e0..000000000
--- a/src/Specific/solinas32_2e489m21/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x106, x107, x105, x103, x101, x99, x97, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57))%core,
- ((x54 + x106), (x55 + x107), (x53 + x105), (x51 + x103), (x49 + x101), (x47 + x99), (x45 + x97), (x43 + x95), (x41 + x93), (x39 + x91), (x37 + x89), (x35 + x87), (x33 + x85), (x31 + x83), (x29 + x81), (x27 + x79), (x25 + x77), (x23 + x75), (x21 + x73), (x19 + x71), (x17 + x69), (x15 + x67), (x13 + x65), (x11 + x63), (x9 + x61), (x7 + x59), (x5 + x57)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e489m21/feaddDisplay.v b/src/Specific/solinas32_2e489m21/feaddDisplay.v
deleted file mode 100644
index 3c062cc08..000000000
--- a/src/Specific/solinas32_2e489m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e489m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e489m21/femul.v b/src/Specific/solinas32_2e489m21/femul.v
deleted file mode 100644
index 8b01b21d4..000000000
--- a/src/Specific/solinas32_2e489m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e489m21/femulDisplay.v b/src/Specific/solinas32_2e489m21/femulDisplay.v
deleted file mode 100644
index b8f1d0971..000000000
--- a/src/Specific/solinas32_2e489m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e489m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e489m21/fesquare.v b/src/Specific/solinas32_2e489m21/fesquare.v
deleted file mode 100644
index ae5ec5e35..000000000
--- a/src/Specific/solinas32_2e489m21/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e489m21/fesquareDisplay.v b/src/Specific/solinas32_2e489m21/fesquareDisplay.v
deleted file mode 100644
index 8f90e9196..000000000
--- a/src/Specific/solinas32_2e489m21/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e489m21.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e489m21/fesub.c b/src/Specific/solinas32_2e489m21/fesub.c
deleted file mode 100644
index d7d657388..000000000
--- a/src/Specific/solinas32_2e489m21/fesub.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void fesub(uint32_t out[27], const uint32_t in1[27], const uint32_t in2[27]) {
- { const uint32_t x54 = in1[26];
- { const uint32_t x55 = in1[25];
- { const uint32_t x53 = in1[24];
- { const uint32_t x51 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x106 = in2[26];
- { const uint32_t x107 = in2[25];
- { const uint32_t x105 = in2[24];
- { const uint32_t x103 = in2[23];
- { const uint32_t x101 = in2[22];
- { const uint32_t x99 = in2[21];
- { const uint32_t x97 = in2[20];
- { const uint32_t x95 = in2[19];
- { const uint32_t x93 = in2[18];
- { const uint32_t x91 = in2[17];
- { const uint32_t x89 = in2[16];
- { const uint32_t x87 = in2[15];
- { const uint32_t x85 = in2[14];
- { const uint32_t x83 = in2[13];
- { const uint32_t x81 = in2[12];
- { const uint32_t x79 = in2[11];
- { const uint32_t x77 = in2[10];
- { const uint32_t x75 = in2[9];
- { const uint32_t x73 = in2[8];
- { const uint32_t x71 = in2[7];
- { const uint32_t x69 = in2[6];
- { const uint32_t x67 = in2[5];
- { const uint32_t x65 = in2[4];
- { const uint32_t x63 = in2[3];
- { const uint32_t x61 = in2[2];
- { const uint32_t x59 = in2[1];
- { const uint32_t x57 = in2[0];
- out[0] = ((0xfffd6 + x5) - x57);
- out[1] = ((0x7fffe + x7) - x59);
- out[2] = ((0x7fffe + x9) - x61);
- out[3] = ((0x7fffe + x11) - x63);
- out[4] = ((0x7fffe + x13) - x65);
- out[5] = ((0x7fffe + x15) - x67);
- out[6] = ((0x7fffe + x17) - x69);
- out[7] = ((0x7fffe + x19) - x71);
- out[8] = ((0x7fffe + x21) - x73);
- out[9] = ((0xffffe + x23) - x75);
- out[10] = ((0x7fffe + x25) - x77);
- out[11] = ((0x7fffe + x27) - x79);
- out[12] = ((0x7fffe + x29) - x81);
- out[13] = ((0x7fffe + x31) - x83);
- out[14] = ((0x7fffe + x33) - x85);
- out[15] = ((0x7fffe + x35) - x87);
- out[16] = ((0x7fffe + x37) - x89);
- out[17] = ((0x7fffe + x39) - x91);
- out[18] = ((0xffffe + x41) - x93);
- out[19] = ((0x7fffe + x43) - x95);
- out[20] = ((0x7fffe + x45) - x97);
- out[21] = ((0x7fffe + x47) - x99);
- out[22] = ((0x7fffe + x49) - x101);
- out[23] = ((0x7fffe + x51) - x103);
- out[24] = ((0x7fffe + x53) - x105);
- out[25] = ((0x7fffe + x55) - x107);
- out[26] = ((0x7fffe + x54) - x106);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e489m21/fesub.v b/src/Specific/solinas32_2e489m21/fesub.v
deleted file mode 100644
index 8b3d1c2e0..000000000
--- a/src/Specific/solinas32_2e489m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e489m21/fesubDisplay.log b/src/Specific/solinas32_2e489m21/fesubDisplay.log
deleted file mode 100644
index e41ae3524..000000000
--- a/src/Specific/solinas32_2e489m21/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x54, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x106, x107, x105, x103, x101, x99, x97, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57))%core,
- (((0x7fffe + x54) - x106), ((0x7fffe + x55) - x107), ((0x7fffe + x53) - x105), ((0x7fffe + x51) - x103), ((0x7fffe + x49) - x101), ((0x7fffe + x47) - x99), ((0x7fffe + x45) - x97), ((0x7fffe + x43) - x95), ((0xffffe + x41) - x93), ((0x7fffe + x39) - x91), ((0x7fffe + x37) - x89), ((0x7fffe + x35) - x87), ((0x7fffe + x33) - x85), ((0x7fffe + x31) - x83), ((0x7fffe + x29) - x81), ((0x7fffe + x27) - x79), ((0x7fffe + x25) - x77), ((0xffffe + x23) - x75), ((0x7fffe + x21) - x73), ((0x7fffe + x19) - x71), ((0x7fffe + x17) - x69), ((0x7fffe + x15) - x67), ((0x7fffe + x13) - x65), ((0x7fffe + x11) - x63), ((0x7fffe + x9) - x61), ((0x7fffe + x7) - x59), ((0xfffd6 + x5) - x57)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e489m21/fesubDisplay.v b/src/Specific/solinas32_2e489m21/fesubDisplay.v
deleted file mode 100644
index be590bd53..000000000
--- a/src/Specific/solinas32_2e489m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e489m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e489m21/freeze.c b/src/Specific/solinas32_2e489m21/freeze.c
deleted file mode 100644
index bef638c96..000000000
--- a/src/Specific/solinas32_2e489m21/freeze.c
+++ /dev/null
@@ -1,139 +0,0 @@
-static void freeze(uint32_t out[27], const uint32_t in1[27]) {
- { const uint32_t x51 = in1[26];
- { const uint32_t x52 = in1[25];
- { const uint32_t x50 = in1[24];
- { const uint32_t x48 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffeb);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x4, 0x3ffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x6, 0x3ffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x8, 0x3ffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x10, 0x3ffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x12, 0x3ffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x14, 0x3ffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x16, 0x3ffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x18, 0x3ffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x20, 0x7ffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x22, 0x3ffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x24, 0x3ffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x26, 0x3ffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x28, 0x3ffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x30, 0x3ffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x32, 0x3ffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x34, 0x3ffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x36, 0x3ffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x38, 0x7ffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x40, 0x3ffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x42, 0x3ffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x44, 0x3ffff);
- { uint32_t x120, uint8_t x121 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x46, 0x3ffff);
- { uint32_t x123, uint8_t x124 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x48, 0x3ffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x124, Return x50, 0x3ffff);
- { uint32_t x129, uint8_t x130 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x52, 0x3ffff);
- { uint32_t x132, uint8_t x133 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x51, 0x3ffff);
- { uint32_t x134 = cmovznz32(x133, 0x0, 0xffffffff);
- { uint32_t x135 = (x134 & 0x7ffeb);
- { uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x54, Return x135);
- { uint32_t x139 = (x134 & 0x3ffff);
- { uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x57, Return x139);
- { uint32_t x143 = (x134 & 0x3ffff);
- { uint32_t x145, uint8_t x146 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x142, Return x60, Return x143);
- { uint32_t x147 = (x134 & 0x3ffff);
- { uint32_t x149, uint8_t x150 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x146, Return x63, Return x147);
- { uint32_t x151 = (x134 & 0x3ffff);
- { uint32_t x153, uint8_t x154 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x150, Return x66, Return x151);
- { uint32_t x155 = (x134 & 0x3ffff);
- { uint32_t x157, uint8_t x158 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x154, Return x69, Return x155);
- { uint32_t x159 = (x134 & 0x3ffff);
- { uint32_t x161, uint8_t x162 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x158, Return x72, Return x159);
- { uint32_t x163 = (x134 & 0x3ffff);
- { uint32_t x165, uint8_t x166 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x162, Return x75, Return x163);
- { uint32_t x167 = (x134 & 0x3ffff);
- { uint32_t x169, uint8_t x170 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x166, Return x78, Return x167);
- { uint32_t x171 = (x134 & 0x7ffff);
- { uint32_t x173, uint8_t x174 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x170, Return x81, Return x171);
- { uint32_t x175 = (x134 & 0x3ffff);
- { uint32_t x177, uint8_t x178 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x174, Return x84, Return x175);
- { uint32_t x179 = (x134 & 0x3ffff);
- { uint32_t x181, uint8_t x182 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x178, Return x87, Return x179);
- { uint32_t x183 = (x134 & 0x3ffff);
- { uint32_t x185, uint8_t x186 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x182, Return x90, Return x183);
- { uint32_t x187 = (x134 & 0x3ffff);
- { uint32_t x189, uint8_t x190 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x186, Return x93, Return x187);
- { uint32_t x191 = (x134 & 0x3ffff);
- { uint32_t x193, uint8_t x194 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x190, Return x96, Return x191);
- { uint32_t x195 = (x134 & 0x3ffff);
- { uint32_t x197, uint8_t x198 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x194, Return x99, Return x195);
- { uint32_t x199 = (x134 & 0x3ffff);
- { uint32_t x201, uint8_t x202 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x198, Return x102, Return x199);
- { uint32_t x203 = (x134 & 0x3ffff);
- { uint32_t x205, uint8_t x206 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x202, Return x105, Return x203);
- { uint32_t x207 = (x134 & 0x7ffff);
- { uint32_t x209, uint8_t x210 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x206, Return x108, Return x207);
- { uint32_t x211 = (x134 & 0x3ffff);
- { uint32_t x213, uint8_t x214 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x210, Return x111, Return x211);
- { uint32_t x215 = (x134 & 0x3ffff);
- { uint32_t x217, uint8_t x218 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x214, Return x114, Return x215);
- { uint32_t x219 = (x134 & 0x3ffff);
- { uint32_t x221, uint8_t x222 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x218, Return x117, Return x219);
- { uint32_t x223 = (x134 & 0x3ffff);
- { uint32_t x225, uint8_t x226 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x222, Return x120, Return x223);
- { uint32_t x227 = (x134 & 0x3ffff);
- { uint32_t x229, uint8_t x230 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x226, Return x123, Return x227);
- { uint32_t x231 = (x134 & 0x3ffff);
- { uint32_t x233, uint8_t x234 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x230, Return x126, Return x231);
- { uint32_t x235 = (x134 & 0x3ffff);
- { uint32_t x237, uint8_t x238 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x234, Return x129, Return x235);
- { uint32_t x239 = (x134 & 0x3ffff);
- { uint32_t x241, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x238, Return x132, Return x239);
- out[0] = x137;
- out[1] = x141;
- out[2] = x145;
- out[3] = x149;
- out[4] = x153;
- out[5] = x157;
- out[6] = x161;
- out[7] = x165;
- out[8] = x169;
- out[9] = x173;
- out[10] = x177;
- out[11] = x181;
- out[12] = x185;
- out[13] = x189;
- out[14] = x193;
- out[15] = x197;
- out[16] = x201;
- out[17] = x205;
- out[18] = x209;
- out[19] = x213;
- out[20] = x217;
- out[21] = x221;
- out[22] = x225;
- out[23] = x229;
- out[24] = x233;
- out[25] = x237;
- out[26] = x241;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e489m21/freeze.v b/src/Specific/solinas32_2e489m21/freeze.v
deleted file mode 100644
index 1d4c3544b..000000000
--- a/src/Specific/solinas32_2e489m21/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e489m21/freezeDisplay.log b/src/Specific/solinas32_2e489m21/freezeDisplay.log
deleted file mode 100644
index ca45eb256..000000000
--- a/src/Specific/solinas32_2e489m21/freezeDisplay.log
+++ /dev/null
@@ -1,89 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x51, x52, x50, x48, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffeb);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x4, 0x3ffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x6, 0x3ffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x8, 0x3ffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x10, 0x3ffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x12, 0x3ffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x14, 0x3ffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x16, 0x3ffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x18, 0x3ffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x20, 0x7ffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x22, 0x3ffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x24, 0x3ffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x26, 0x3ffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x28, 0x3ffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x30, 0x3ffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x32, 0x3ffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x34, 0x3ffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x36, 0x3ffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x38, 0x7ffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x40, 0x3ffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x42, 0x3ffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x44, 0x3ffff);
- uint32_t x120, uint8_t x121 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x46, 0x3ffff);
- uint32_t x123, uint8_t x124 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x48, 0x3ffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x124, Return x50, 0x3ffff);
- uint32_t x129, uint8_t x130 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x52, 0x3ffff);
- uint32_t x132, uint8_t x133 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x51, 0x3ffff);
- uint32_t x134 = cmovznz32(x133, 0x0, 0xffffffff);
- uint32_t x135 = (x134 & 0x7ffeb);
- uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x54, Return x135);
- uint32_t x139 = (x134 & 0x3ffff);
- uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x57, Return x139);
- uint32_t x143 = (x134 & 0x3ffff);
- uint32_t x145, uint8_t x146 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x142, Return x60, Return x143);
- uint32_t x147 = (x134 & 0x3ffff);
- uint32_t x149, uint8_t x150 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x146, Return x63, Return x147);
- uint32_t x151 = (x134 & 0x3ffff);
- uint32_t x153, uint8_t x154 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x150, Return x66, Return x151);
- uint32_t x155 = (x134 & 0x3ffff);
- uint32_t x157, uint8_t x158 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x154, Return x69, Return x155);
- uint32_t x159 = (x134 & 0x3ffff);
- uint32_t x161, uint8_t x162 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x158, Return x72, Return x159);
- uint32_t x163 = (x134 & 0x3ffff);
- uint32_t x165, uint8_t x166 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x162, Return x75, Return x163);
- uint32_t x167 = (x134 & 0x3ffff);
- uint32_t x169, uint8_t x170 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x166, Return x78, Return x167);
- uint32_t x171 = (x134 & 0x7ffff);
- uint32_t x173, uint8_t x174 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x170, Return x81, Return x171);
- uint32_t x175 = (x134 & 0x3ffff);
- uint32_t x177, uint8_t x178 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x174, Return x84, Return x175);
- uint32_t x179 = (x134 & 0x3ffff);
- uint32_t x181, uint8_t x182 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x178, Return x87, Return x179);
- uint32_t x183 = (x134 & 0x3ffff);
- uint32_t x185, uint8_t x186 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x182, Return x90, Return x183);
- uint32_t x187 = (x134 & 0x3ffff);
- uint32_t x189, uint8_t x190 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x186, Return x93, Return x187);
- uint32_t x191 = (x134 & 0x3ffff);
- uint32_t x193, uint8_t x194 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x190, Return x96, Return x191);
- uint32_t x195 = (x134 & 0x3ffff);
- uint32_t x197, uint8_t x198 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x194, Return x99, Return x195);
- uint32_t x199 = (x134 & 0x3ffff);
- uint32_t x201, uint8_t x202 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x198, Return x102, Return x199);
- uint32_t x203 = (x134 & 0x3ffff);
- uint32_t x205, uint8_t x206 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x202, Return x105, Return x203);
- uint32_t x207 = (x134 & 0x7ffff);
- uint32_t x209, uint8_t x210 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x206, Return x108, Return x207);
- uint32_t x211 = (x134 & 0x3ffff);
- uint32_t x213, uint8_t x214 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x210, Return x111, Return x211);
- uint32_t x215 = (x134 & 0x3ffff);
- uint32_t x217, uint8_t x218 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x214, Return x114, Return x215);
- uint32_t x219 = (x134 & 0x3ffff);
- uint32_t x221, uint8_t x222 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x218, Return x117, Return x219);
- uint32_t x223 = (x134 & 0x3ffff);
- uint32_t x225, uint8_t x226 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x222, Return x120, Return x223);
- uint32_t x227 = (x134 & 0x3ffff);
- uint32_t x229, uint8_t x230 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x226, Return x123, Return x227);
- uint32_t x231 = (x134 & 0x3ffff);
- uint32_t x233, uint8_t x234 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x230, Return x126, Return x231);
- uint32_t x235 = (x134 & 0x3ffff);
- uint32_t x237, uint8_t x238 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x234, Return x129, Return x235);
- uint32_t x239 = (x134 & 0x3ffff);
- uint32_t x241, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x238, Return x132, Return x239);
- (Return x241, Return x237, Return x233, Return x229, Return x225, Return x221, Return x217, Return x213, Return x209, Return x205, Return x201, Return x197, Return x193, Return x189, Return x185, Return x181, Return x177, Return x173, Return x169, Return x165, Return x161, Return x157, Return x153, Return x149, Return x145, Return x141, Return x137))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e489m21/freezeDisplay.v b/src/Specific/solinas32_2e489m21/freezeDisplay.v
deleted file mode 100644
index 52f0276ef..000000000
--- a/src/Specific/solinas32_2e489m21/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e489m21.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e489m21/py_interpreter.sh b/src/Specific/solinas32_2e489m21/py_interpreter.sh
deleted file mode 100755
index dbbe88475..000000000
--- a/src/Specific/solinas32_2e489m21/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**489 - 21' -Dmodulus_bytes='18 + 1/9' -Da24='121665'
diff --git a/src/Specific/solinas32_2e489m21_19limbs/CurveParameters.v b/src/Specific/solinas32_2e489m21_19limbs/CurveParameters.v
new file mode 100644
index 000000000..55c7fba35
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^489 - 21
+Base: 25 + 14/19
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 19%nat;
+ base := 25 + 14/19;
+ bitwidth := 32;
+ s := 2^489;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 19); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/Synthesis.v b/src/Specific/solinas32_2e489m21_19limbs/Synthesis.v
new file mode 100644
index 000000000..f5eb0a99e
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/compiler.sh b/src/Specific/solinas32_2e489m21_19limbs/compiler.sh
new file mode 100755
index 000000000..30c5993d0
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25,26,26,26,25,26,26,26,25,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21_19limbs/compilerxx.sh b/src/Specific/solinas32_2e489m21_19limbs/compilerxx.sh
new file mode 100755
index 000000000..675ee6174
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{26,26,26,25,26,26,26,25,26,26,26,25,26,26,26,25,26,26,25}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21_19limbs/feadd.v b/src/Specific/solinas32_2e489m21_19limbs/feadd.v
new file mode 100644
index 000000000..7e346bcdb
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/feaddDisplay.v b/src/Specific/solinas32_2e489m21_19limbs/feaddDisplay.v
new file mode 100644
index 000000000..78dee1f40
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/femul.v b/src/Specific/solinas32_2e489m21_19limbs/femul.v
new file mode 100644
index 000000000..9d6bc5e17
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/femulDisplay.v b/src/Specific/solinas32_2e489m21_19limbs/femulDisplay.v
new file mode 100644
index 000000000..0195adea7
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/fesquare.v b/src/Specific/solinas32_2e489m21_19limbs/fesquare.v
new file mode 100644
index 000000000..0ae018993
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/fesquareDisplay.v b/src/Specific/solinas32_2e489m21_19limbs/fesquareDisplay.v
new file mode 100644
index 000000000..469ff012f
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/fesub.v b/src/Specific/solinas32_2e489m21_19limbs/fesub.v
new file mode 100644
index 000000000..e2bbea9b0
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/fesubDisplay.v b/src/Specific/solinas32_2e489m21_19limbs/fesubDisplay.v
new file mode 100644
index 000000000..dd3bd6b9a
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/freeze.v b/src/Specific/solinas32_2e489m21_19limbs/freeze.v
new file mode 100644
index 000000000..a875989ac
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/freezeDisplay.v b/src/Specific/solinas32_2e489m21_19limbs/freezeDisplay.v
new file mode 100644
index 000000000..75662dc3d
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_19limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e489m21_19limbs/py_interpreter.sh b/src/Specific/solinas32_2e489m21_19limbs/py_interpreter.sh
new file mode 100755
index 000000000..559437c50
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_19limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**489 - 21' -Dmodulus_bytes='25 + 14/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e489m21_20limbs/CurveParameters.v b/src/Specific/solinas32_2e489m21_20limbs/CurveParameters.v
new file mode 100644
index 000000000..da6de2217
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^489 - 21
+Base: 24 + 9/20
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 20%nat;
+ base := 24 + 9/20;
+ bitwidth := 32;
+ s := 2^489;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/Synthesis.v b/src/Specific/solinas32_2e489m21_20limbs/Synthesis.v
new file mode 100644
index 000000000..61f5940d3
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/compiler.sh b/src/Specific/solinas32_2e489m21_20limbs/compiler.sh
new file mode 100755
index 000000000..b83d8a56a
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24,25,24,24,25,24,25,24,25,24,25,24,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21_20limbs/compilerxx.sh b/src/Specific/solinas32_2e489m21_20limbs/compilerxx.sh
new file mode 100755
index 000000000..580d046df
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,24,25,24,25,24,25,24,25,24,24,25,24,25,24,25,24,25,24,24}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas32_2e489m21_20limbs/feadd.v b/src/Specific/solinas32_2e489m21_20limbs/feadd.v
new file mode 100644
index 000000000..47765b62b
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e489m21_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..04d64b1ce
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/femul.v b/src/Specific/solinas32_2e489m21_20limbs/femul.v
new file mode 100644
index 000000000..58bbbb570
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/femulDisplay.v b/src/Specific/solinas32_2e489m21_20limbs/femulDisplay.v
new file mode 100644
index 000000000..7795ee25b
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/fesquare.v b/src/Specific/solinas32_2e489m21_20limbs/fesquare.v
new file mode 100644
index 000000000..c4809a321
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e489m21_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..76ec1f57f
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/fesub.v b/src/Specific/solinas32_2e489m21_20limbs/fesub.v
new file mode 100644
index 000000000..18a68ac6d
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e489m21_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..5ab8157d9
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/freeze.v b/src/Specific/solinas32_2e489m21_20limbs/freeze.v
new file mode 100644
index 000000000..7c038c01a
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e489m21_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..99a9d6ce2
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e489m21_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e489m21_20limbs/py_interpreter.sh b/src/Specific/solinas32_2e489m21_20limbs/py_interpreter.sh
new file mode 100755
index 000000000..0d19b63ff
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21_20limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**489 - 21' -Dmodulus_bytes='24 + 9/20' -Da24='121665'
diff --git a/src/Specific/solinas32_2e495m31/CurveParameters.v b/src/Specific/solinas32_2e495m31/CurveParameters.v
deleted file mode 100644
index a92c8f408..000000000
--- a/src/Specific/solinas32_2e495m31/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^495 - 31
-Base: 26 + 1/19
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 19%nat;
- base := 26 + 1/19;
- bitwidth := 32;
- s := 2^495;
- c := [(1, 31)];
- carry_chains := Some [seq 0 (pred 19); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e495m31/Synthesis.v b/src/Specific/solinas32_2e495m31/Synthesis.v
deleted file mode 100644
index 00de3fafd..000000000
--- a/src/Specific/solinas32_2e495m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e495m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e495m31/compiler.sh b/src/Specific/solinas32_2e495m31/compiler.sh
deleted file mode 100755
index a349fb12c..000000000
--- a/src/Specific/solinas32_2e495m31/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31/compilerxx.sh b/src/Specific/solinas32_2e495m31/compilerxx.sh
deleted file mode 100755
index a7f4a65ad..000000000
--- a/src/Specific/solinas32_2e495m31/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{27,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31/feadd.c b/src/Specific/solinas32_2e495m31/feadd.c
deleted file mode 100644
index 7432e2ef1..000000000
--- a/src/Specific/solinas32_2e495m31/feadd.c
+++ /dev/null
@@ -1,60 +0,0 @@
-static void feadd(uint32_t out[19], const uint32_t in1[19], const uint32_t in2[19]) {
- { const uint32_t x38 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x74 = in2[18];
- { const uint32_t x75 = in2[17];
- { const uint32_t x73 = in2[16];
- { const uint32_t x71 = in2[15];
- { const uint32_t x69 = in2[14];
- { const uint32_t x67 = in2[13];
- { const uint32_t x65 = in2[12];
- { const uint32_t x63 = in2[11];
- { const uint32_t x61 = in2[10];
- { const uint32_t x59 = in2[9];
- { const uint32_t x57 = in2[8];
- { const uint32_t x55 = in2[7];
- { const uint32_t x53 = in2[6];
- { const uint32_t x51 = in2[5];
- { const uint32_t x49 = in2[4];
- { const uint32_t x47 = in2[3];
- { const uint32_t x45 = in2[2];
- { const uint32_t x43 = in2[1];
- { const uint32_t x41 = in2[0];
- out[0] = (x5 + x41);
- out[1] = (x7 + x43);
- out[2] = (x9 + x45);
- out[3] = (x11 + x47);
- out[4] = (x13 + x49);
- out[5] = (x15 + x51);
- out[6] = (x17 + x53);
- out[7] = (x19 + x55);
- out[8] = (x21 + x57);
- out[9] = (x23 + x59);
- out[10] = (x25 + x61);
- out[11] = (x27 + x63);
- out[12] = (x29 + x65);
- out[13] = (x31 + x67);
- out[14] = (x33 + x69);
- out[15] = (x35 + x71);
- out[16] = (x37 + x73);
- out[17] = (x39 + x75);
- out[18] = (x38 + x74);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e495m31/feadd.v b/src/Specific/solinas32_2e495m31/feadd.v
deleted file mode 100644
index 1f9796292..000000000
--- a/src/Specific/solinas32_2e495m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e495m31/feaddDisplay.log b/src/Specific/solinas32_2e495m31/feaddDisplay.log
deleted file mode 100644
index 76a71b356..000000000
--- a/src/Specific/solinas32_2e495m31/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x38, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x74, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41))%core,
- ((x38 + x74), (x39 + x75), (x37 + x73), (x35 + x71), (x33 + x69), (x31 + x67), (x29 + x65), (x27 + x63), (x25 + x61), (x23 + x59), (x21 + x57), (x19 + x55), (x17 + x53), (x15 + x51), (x13 + x49), (x11 + x47), (x9 + x45), (x7 + x43), (x5 + x41)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e495m31/feaddDisplay.v b/src/Specific/solinas32_2e495m31/feaddDisplay.v
deleted file mode 100644
index 7be4b8371..000000000
--- a/src/Specific/solinas32_2e495m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e495m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e495m31/femul.c b/src/Specific/solinas32_2e495m31/femul.c
deleted file mode 100644
index f76cef93c..000000000
--- a/src/Specific/solinas32_2e495m31/femul.c
+++ /dev/null
@@ -1,141 +0,0 @@
-static void femul(uint32_t out[19], const uint32_t in1[19], const uint32_t in2[19]) {
- { const uint32_t x38 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x74 = in2[18];
- { const uint32_t x75 = in2[17];
- { const uint32_t x73 = in2[16];
- { const uint32_t x71 = in2[15];
- { const uint32_t x69 = in2[14];
- { const uint32_t x67 = in2[13];
- { const uint32_t x65 = in2[12];
- { const uint32_t x63 = in2[11];
- { const uint32_t x61 = in2[10];
- { const uint32_t x59 = in2[9];
- { const uint32_t x57 = in2[8];
- { const uint32_t x55 = in2[7];
- { const uint32_t x53 = in2[6];
- { const uint32_t x51 = in2[5];
- { const uint32_t x49 = in2[4];
- { const uint32_t x47 = in2[3];
- { const uint32_t x45 = in2[2];
- { const uint32_t x43 = in2[1];
- { const uint32_t x41 = in2[0];
- { uint64_t x76 = (((uint64_t)x5 * x74) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + ((0x2 * ((uint64_t)x19 * x63)) + ((0x2 * ((uint64_t)x21 * x61)) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((0x2 * ((uint64_t)x39 * x43)) + ((uint64_t)x38 * x41)))))))))))))))))));
- { uint64_t x77 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((0x2 * ((uint64_t)x37 * x43)) + ((uint64_t)x39 * x41)))))))))))))))))) + (0x1f * ((uint64_t)x38 * x74)));
- { uint64_t x78 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((0x2 * ((uint64_t)x35 * x43)) + ((uint64_t)x37 * x41))))))))))))))))) + (0x1f * (((uint64_t)x39 * x74) + ((uint64_t)x38 * x75))));
- { uint64_t x79 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((uint64_t)x35 * x41)))))))))))))))) + (0x1f * (((uint64_t)x37 * x74) + (((uint64_t)x39 * x75) + ((uint64_t)x38 * x73)))));
- { uint64_t x80 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((uint64_t)x33 * x41))))))))))))))) + (0x1f * (((uint64_t)x35 * x74) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + ((uint64_t)x38 * x71))))));
- { uint64_t x81 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((uint64_t)x31 * x41)))))))))))))) + (0x1f * (((uint64_t)x33 * x74) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + ((uint64_t)x38 * x69)))))));
- { uint64_t x82 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((uint64_t)x29 * x41))))))))))))) + (0x1f * (((uint64_t)x31 * x74) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((uint64_t)x38 * x67))))))));
- { uint64_t x83 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((uint64_t)x27 * x41)))))))))))) + (0x1f * (((uint64_t)x29 * x74) + (((uint64_t)x31 * x75) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + (((uint64_t)x39 * x67) + ((uint64_t)x38 * x65)))))))));
- { uint64_t x84 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((uint64_t)x25 * x41))))))))))) + (0x1f * (((uint64_t)x27 * x74) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + (((uint64_t)x39 * x65) + ((uint64_t)x38 * x63))))))))));
- { uint64_t x85 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((uint64_t)x23 * x41)))))))))) + (0x1f * (((uint64_t)x25 * x74) + (((uint64_t)x27 * x75) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + (((uint64_t)x39 * x63) + ((uint64_t)x38 * x61)))))))))));
- { uint64_t x86 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((uint64_t)x21 * x41))))))))) + (0x1f * (((uint64_t)x23 * x74) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + ((uint64_t)x38 * x59))))))))))));
- { uint64_t x87 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((uint64_t)x19 * x41)))))))) + (0x1f * (((uint64_t)x21 * x74) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + ((uint64_t)x38 * x57)))))))))))));
- { ℤ x88 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((uint64_t)x17 * x41))))))) +ℤ (0x1f *ℤ (((uint64_t)x19 * x74) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + ((uint64_t)x38 * x55))))))))))))));
- { ℤ x89 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((uint64_t)x15 * x41)))))) +ℤ (0x1f *ℤ (((uint64_t)x17 * x74) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + ((uint64_t)x38 * x53)))))))))))))));
- { ℤ x90 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((uint64_t)x13 * x41))))) +ℤ (0x1f *ℤ (((uint64_t)x15 * x74) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + ((uint64_t)x38 * x51))))))))))))))));
- { ℤ x91 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((uint64_t)x11 * x41)))) +ℤ (0x1f *ℤ (((uint64_t)x13 * x74) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + ((uint64_t)x38 * x49)))))))))))))))));
- { ℤ x92 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((uint64_t)x9 * x41))) +ℤ (0x1f *ℤ (((uint64_t)x11 * x74) + (((uint64_t)x13 * x75) + (((uint64_t)x15 * x73) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + (((uint64_t)x39 * x49) + ((uint64_t)x38 * x47))))))))))))))))));
- { ℤ x93 = ((((uint64_t)x5 * x43) + ((uint64_t)x7 * x41)) +ℤ (0x1f *ℤ (((uint64_t)x9 * x74) + (((uint64_t)x11 * x75) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + (((uint64_t)x39 * x47) + ((uint64_t)x38 * x45)))))))))))))))))));
- { ℤ x94 = (((uint64_t)x5 * x41) +ℤ (0x1f *ℤ ((0x2 * ((uint64_t)x7 * x74)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + (0x2 * ((uint64_t)x38 * x43)))))))))))))))))))));
- { uint64_t x95 = (x94 >> 0x1b);
- { uint32_t x96 = (x94 & 0x7ffffff);
- { ℤ x97 = (x95 +ℤ x93);
- { uint64_t x98 = (x97 >> 0x1a);
- { uint32_t x99 = (x97 & 0x3ffffff);
- { ℤ x100 = (x98 +ℤ x92);
- { uint64_t x101 = (x100 >> 0x1a);
- { uint32_t x102 = (x100 & 0x3ffffff);
- { ℤ x103 = (x101 +ℤ x91);
- { uint64_t x104 = (x103 >> 0x1a);
- { uint32_t x105 = (x103 & 0x3ffffff);
- { ℤ x106 = (x104 +ℤ x90);
- { uint64_t x107 = (x106 >> 0x1a);
- { uint32_t x108 = (x106 & 0x3ffffff);
- { ℤ x109 = (x107 +ℤ x89);
- { uint64_t x110 = (x109 >> 0x1a);
- { uint32_t x111 = (x109 & 0x3ffffff);
- { ℤ x112 = (x110 +ℤ x88);
- { uint64_t x113 = (x112 >> 0x1a);
- { uint32_t x114 = (x112 & 0x3ffffff);
- { uint64_t x115 = (x113 + x87);
- { uint64_t x116 = (x115 >> 0x1a);
- { uint32_t x117 = ((uint32_t)x115 & 0x3ffffff);
- { uint64_t x118 = (x116 + x86);
- { uint64_t x119 = (x118 >> 0x1a);
- { uint32_t x120 = ((uint32_t)x118 & 0x3ffffff);
- { uint64_t x121 = (x119 + x85);
- { uint64_t x122 = (x121 >> 0x1a);
- { uint32_t x123 = ((uint32_t)x121 & 0x3ffffff);
- { uint64_t x124 = (x122 + x84);
- { uint64_t x125 = (x124 >> 0x1a);
- { uint32_t x126 = ((uint32_t)x124 & 0x3ffffff);
- { uint64_t x127 = (x125 + x83);
- { uint64_t x128 = (x127 >> 0x1a);
- { uint32_t x129 = ((uint32_t)x127 & 0x3ffffff);
- { uint64_t x130 = (x128 + x82);
- { uint64_t x131 = (x130 >> 0x1a);
- { uint32_t x132 = ((uint32_t)x130 & 0x3ffffff);
- { uint64_t x133 = (x131 + x81);
- { uint64_t x134 = (x133 >> 0x1a);
- { uint32_t x135 = ((uint32_t)x133 & 0x3ffffff);
- { uint64_t x136 = (x134 + x80);
- { uint64_t x137 = (x136 >> 0x1a);
- { uint32_t x138 = ((uint32_t)x136 & 0x3ffffff);
- { uint64_t x139 = (x137 + x79);
- { uint64_t x140 = (x139 >> 0x1a);
- { uint32_t x141 = ((uint32_t)x139 & 0x3ffffff);
- { uint64_t x142 = (x140 + x78);
- { uint64_t x143 = (x142 >> 0x1a);
- { uint32_t x144 = ((uint32_t)x142 & 0x3ffffff);
- { uint64_t x145 = (x143 + x77);
- { uint64_t x146 = (x145 >> 0x1a);
- { uint32_t x147 = ((uint32_t)x145 & 0x3ffffff);
- { uint64_t x148 = (x146 + x76);
- { uint64_t x149 = (x148 >> 0x1a);
- { uint32_t x150 = ((uint32_t)x148 & 0x3ffffff);
- { uint64_t x151 = (x96 + (0x1f * x149));
- { uint32_t x152 = (uint32_t) (x151 >> 0x1b);
- { uint32_t x153 = ((uint32_t)x151 & 0x7ffffff);
- { uint32_t x154 = (x152 + x99);
- { uint32_t x155 = (x154 >> 0x1a);
- { uint32_t x156 = (x154 & 0x3ffffff);
- out[0] = x153;
- out[1] = x156;
- out[2] = (x155 + x102);
- out[3] = x105;
- out[4] = x108;
- out[5] = x111;
- out[6] = x114;
- out[7] = x117;
- out[8] = x120;
- out[9] = x123;
- out[10] = x126;
- out[11] = x129;
- out[12] = x132;
- out[13] = x135;
- out[14] = x138;
- out[15] = x141;
- out[16] = x144;
- out[17] = x147;
- out[18] = x150;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e495m31/femul.v b/src/Specific/solinas32_2e495m31/femul.v
deleted file mode 100644
index 3c0f27e7f..000000000
--- a/src/Specific/solinas32_2e495m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e495m31/femulDisplay.log b/src/Specific/solinas32_2e495m31/femulDisplay.log
deleted file mode 100644
index e846c731b..000000000
--- a/src/Specific/solinas32_2e495m31/femulDisplay.log
+++ /dev/null
@@ -1,88 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x38, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x74, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41))%core,
- uint64_t x76 = (((uint64_t)x5 * x74) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + ((0x2 * ((uint64_t)x19 * x63)) + ((0x2 * ((uint64_t)x21 * x61)) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((0x2 * ((uint64_t)x39 * x43)) + ((uint64_t)x38 * x41)))))))))))))))))));
- uint64_t x77 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((0x2 * ((uint64_t)x37 * x43)) + ((uint64_t)x39 * x41)))))))))))))))))) + (0x1f * ((uint64_t)x38 * x74)));
- uint64_t x78 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((0x2 * ((uint64_t)x35 * x43)) + ((uint64_t)x37 * x41))))))))))))))))) + (0x1f * (((uint64_t)x39 * x74) + ((uint64_t)x38 * x75))));
- uint64_t x79 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((0x2 * ((uint64_t)x33 * x43)) + ((uint64_t)x35 * x41)))))))))))))))) + (0x1f * (((uint64_t)x37 * x74) + (((uint64_t)x39 * x75) + ((uint64_t)x38 * x73)))));
- uint64_t x80 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((uint64_t)x33 * x41))))))))))))))) + (0x1f * (((uint64_t)x35 * x74) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + ((uint64_t)x38 * x71))))));
- uint64_t x81 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((0x2 * ((uint64_t)x29 * x43)) + ((uint64_t)x31 * x41)))))))))))))) + (0x1f * (((uint64_t)x33 * x74) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + ((uint64_t)x38 * x69)))))));
- uint64_t x82 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((0x2 * ((uint64_t)x27 * x43)) + ((uint64_t)x29 * x41))))))))))))) + (0x1f * (((uint64_t)x31 * x74) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((uint64_t)x38 * x67))))))));
- uint64_t x83 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((0x2 * ((uint64_t)x25 * x43)) + ((uint64_t)x27 * x41)))))))))))) + (0x1f * (((uint64_t)x29 * x74) + (((uint64_t)x31 * x75) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + (((uint64_t)x39 * x67) + ((uint64_t)x38 * x65)))))))));
- uint64_t x84 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((0x2 * ((uint64_t)x23 * x43)) + ((uint64_t)x25 * x41))))))))))) + (0x1f * (((uint64_t)x27 * x74) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + (((uint64_t)x39 * x65) + ((uint64_t)x38 * x63))))))))));
- uint64_t x85 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((0x2 * ((uint64_t)x21 * x43)) + ((uint64_t)x23 * x41)))))))))) + (0x1f * (((uint64_t)x25 * x74) + (((uint64_t)x27 * x75) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + (((uint64_t)x39 * x63) + ((uint64_t)x38 * x61)))))))))));
- uint64_t x86 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((0x2 * ((uint64_t)x19 * x43)) + ((uint64_t)x21 * x41))))))))) + (0x1f * (((uint64_t)x23 * x74) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + ((uint64_t)x38 * x59))))))))))));
- uint64_t x87 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((uint64_t)x19 * x41)))))))) + (0x1f * (((uint64_t)x21 * x74) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + ((uint64_t)x38 * x57)))))))))))));
- ℤ x88 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((0x2 * ((uint64_t)x15 * x43)) + ((uint64_t)x17 * x41))))))) +ℤ (0x1f *ℤ (((uint64_t)x19 * x74) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + ((uint64_t)x38 * x55))))))))))))));
- ℤ x89 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((0x2 * ((uint64_t)x13 * x43)) + ((uint64_t)x15 * x41)))))) +ℤ (0x1f *ℤ (((uint64_t)x17 * x74) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + ((uint64_t)x38 * x53)))))))))))))));
- ℤ x90 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((0x2 * ((uint64_t)x11 * x43)) + ((uint64_t)x13 * x41))))) +ℤ (0x1f *ℤ (((uint64_t)x15 * x74) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + ((uint64_t)x38 * x51))))))))))))))));
- ℤ x91 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((0x2 * ((uint64_t)x9 * x43)) + ((uint64_t)x11 * x41)))) +ℤ (0x1f *ℤ (((uint64_t)x13 * x74) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + ((uint64_t)x38 * x49)))))))))))))))));
- ℤ x92 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((uint64_t)x9 * x41))) +ℤ (0x1f *ℤ (((uint64_t)x11 * x74) + (((uint64_t)x13 * x75) + (((uint64_t)x15 * x73) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + (((uint64_t)x23 * x65) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + (((uint64_t)x39 * x49) + ((uint64_t)x38 * x47))))))))))))))))));
- ℤ x93 = ((((uint64_t)x5 * x43) + ((uint64_t)x7 * x41)) +ℤ (0x1f *ℤ (((uint64_t)x9 * x74) + (((uint64_t)x11 * x75) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + (((uint64_t)x23 * x63) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + (((uint64_t)x37 * x49) + (((uint64_t)x39 * x47) + ((uint64_t)x38 * x45)))))))))))))))))));
- ℤ x94 = (((uint64_t)x5 * x41) +ℤ (0x1f *ℤ ((0x2 * ((uint64_t)x7 * x74)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + (0x2 * ((uint64_t)x38 * x43)))))))))))))))))))));
- uint64_t x95 = (x94 >> 0x1b);
- uint32_t x96 = (x94 & 0x7ffffff);
- ℤ x97 = (x95 +ℤ x93);
- uint64_t x98 = (x97 >> 0x1a);
- uint32_t x99 = (x97 & 0x3ffffff);
- ℤ x100 = (x98 +ℤ x92);
- uint64_t x101 = (x100 >> 0x1a);
- uint32_t x102 = (x100 & 0x3ffffff);
- ℤ x103 = (x101 +ℤ x91);
- uint64_t x104 = (x103 >> 0x1a);
- uint32_t x105 = (x103 & 0x3ffffff);
- ℤ x106 = (x104 +ℤ x90);
- uint64_t x107 = (x106 >> 0x1a);
- uint32_t x108 = (x106 & 0x3ffffff);
- ℤ x109 = (x107 +ℤ x89);
- uint64_t x110 = (x109 >> 0x1a);
- uint32_t x111 = (x109 & 0x3ffffff);
- ℤ x112 = (x110 +ℤ x88);
- uint64_t x113 = (x112 >> 0x1a);
- uint32_t x114 = (x112 & 0x3ffffff);
- uint64_t x115 = (x113 + x87);
- uint64_t x116 = (x115 >> 0x1a);
- uint32_t x117 = ((uint32_t)x115 & 0x3ffffff);
- uint64_t x118 = (x116 + x86);
- uint64_t x119 = (x118 >> 0x1a);
- uint32_t x120 = ((uint32_t)x118 & 0x3ffffff);
- uint64_t x121 = (x119 + x85);
- uint64_t x122 = (x121 >> 0x1a);
- uint32_t x123 = ((uint32_t)x121 & 0x3ffffff);
- uint64_t x124 = (x122 + x84);
- uint64_t x125 = (x124 >> 0x1a);
- uint32_t x126 = ((uint32_t)x124 & 0x3ffffff);
- uint64_t x127 = (x125 + x83);
- uint64_t x128 = (x127 >> 0x1a);
- uint32_t x129 = ((uint32_t)x127 & 0x3ffffff);
- uint64_t x130 = (x128 + x82);
- uint64_t x131 = (x130 >> 0x1a);
- uint32_t x132 = ((uint32_t)x130 & 0x3ffffff);
- uint64_t x133 = (x131 + x81);
- uint64_t x134 = (x133 >> 0x1a);
- uint32_t x135 = ((uint32_t)x133 & 0x3ffffff);
- uint64_t x136 = (x134 + x80);
- uint64_t x137 = (x136 >> 0x1a);
- uint32_t x138 = ((uint32_t)x136 & 0x3ffffff);
- uint64_t x139 = (x137 + x79);
- uint64_t x140 = (x139 >> 0x1a);
- uint32_t x141 = ((uint32_t)x139 & 0x3ffffff);
- uint64_t x142 = (x140 + x78);
- uint64_t x143 = (x142 >> 0x1a);
- uint32_t x144 = ((uint32_t)x142 & 0x3ffffff);
- uint64_t x145 = (x143 + x77);
- uint64_t x146 = (x145 >> 0x1a);
- uint32_t x147 = ((uint32_t)x145 & 0x3ffffff);
- uint64_t x148 = (x146 + x76);
- uint64_t x149 = (x148 >> 0x1a);
- uint32_t x150 = ((uint32_t)x148 & 0x3ffffff);
- uint64_t x151 = (x96 + (0x1f * x149));
- uint32_t x152 = (uint32_t) (x151 >> 0x1b);
- uint32_t x153 = ((uint32_t)x151 & 0x7ffffff);
- uint32_t x154 = (x152 + x99);
- uint32_t x155 = (x154 >> 0x1a);
- uint32_t x156 = (x154 & 0x3ffffff);
- return (Return x150, Return x147, Return x144, Return x141, Return x138, Return x135, Return x132, Return x129, Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, (x155 + x102), Return x156, Return x153))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e495m31/femulDisplay.v b/src/Specific/solinas32_2e495m31/femulDisplay.v
deleted file mode 100644
index 84af0b8b7..000000000
--- a/src/Specific/solinas32_2e495m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e495m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e495m31/fesquare.c b/src/Specific/solinas32_2e495m31/fesquare.c
deleted file mode 100644
index 2165569de..000000000
--- a/src/Specific/solinas32_2e495m31/fesquare.c
+++ /dev/null
@@ -1,122 +0,0 @@
-static void fesquare(uint32_t out[19], const uint32_t in1[19]) {
- { const uint32_t x35 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x37 = (((uint64_t)x2 * x35) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x35 * x2)))))))))))))))))));
- { uint64_t x38 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x1f * ((uint64_t)x35 * x35)));
- { uint64_t x39 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x1f * (((uint64_t)x36 * x35) + ((uint64_t)x35 * x36))));
- { uint64_t x40 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x1f * (((uint64_t)x34 * x35) + (((uint64_t)x36 * x36) + ((uint64_t)x35 * x34)))));
- { uint64_t x41 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x1f * (((uint64_t)x32 * x35) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + ((uint64_t)x35 * x32))))));
- { uint64_t x42 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x1f * (((uint64_t)x30 * x35) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + ((uint64_t)x35 * x30)))))));
- { uint64_t x43 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x1f * (((uint64_t)x28 * x35) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + ((uint64_t)x35 * x28))))))));
- { uint64_t x44 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x1f * (((uint64_t)x26 * x35) + (((uint64_t)x28 * x36) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + (((uint64_t)x36 * x28) + ((uint64_t)x35 * x26)))))))));
- { uint64_t x45 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x1f * (((uint64_t)x24 * x35) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + ((uint64_t)x35 * x24))))))))));
- { uint64_t x46 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x1f * (((uint64_t)x22 * x35) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + ((uint64_t)x35 * x22)))))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x1f * (((uint64_t)x20 * x35) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + ((uint64_t)x35 * x20))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1f * (((uint64_t)x18 * x35) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + ((uint64_t)x35 * x18)))))))))))));
- { ℤ x49 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (0x1f *ℤ (((uint64_t)x16 * x35) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + ((uint64_t)x35 * x16))))))))))))));
- { ℤ x50 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) +ℤ (0x1f *ℤ (((uint64_t)x14 * x35) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((uint64_t)x35 * x14)))))))))))))));
- { ℤ x51 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x1f *ℤ (((uint64_t)x12 * x35) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + ((uint64_t)x35 * x12))))))))))))))));
- { ℤ x52 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x1f *ℤ (((uint64_t)x10 * x35) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + ((uint64_t)x35 * x10)))))))))))))))));
- { ℤ x53 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x1f *ℤ (((uint64_t)x8 * x35) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + ((uint64_t)x35 * x8))))))))))))))))));
- { ℤ x54 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x1f *ℤ (((uint64_t)x6 * x35) + (((uint64_t)x8 * x36) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + (((uint64_t)x36 * x8) + ((uint64_t)x35 * x6)))))))))))))))))));
- { ℤ x55 = (((uint64_t)x2 * x2) +ℤ (0x1f *ℤ ((0x2 * ((uint64_t)x4 * x35)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + (0x2 * ((uint64_t)x35 * x4)))))))))))))))))))));
- { uint64_t x56 = (x55 >> 0x1b);
- { uint32_t x57 = (x55 & 0x7ffffff);
- { ℤ x58 = (x56 +ℤ x54);
- { uint64_t x59 = (x58 >> 0x1a);
- { uint32_t x60 = (x58 & 0x3ffffff);
- { ℤ x61 = (x59 +ℤ x53);
- { uint64_t x62 = (x61 >> 0x1a);
- { uint32_t x63 = (x61 & 0x3ffffff);
- { ℤ x64 = (x62 +ℤ x52);
- { uint64_t x65 = (x64 >> 0x1a);
- { uint32_t x66 = (x64 & 0x3ffffff);
- { ℤ x67 = (x65 +ℤ x51);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = (x67 & 0x3ffffff);
- { ℤ x70 = (x68 +ℤ x50);
- { uint64_t x71 = (x70 >> 0x1a);
- { uint32_t x72 = (x70 & 0x3ffffff);
- { ℤ x73 = (x71 +ℤ x49);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = (x73 & 0x3ffffff);
- { uint64_t x76 = (x74 + x48);
- { uint64_t x77 = (x76 >> 0x1a);
- { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- { uint64_t x79 = (x77 + x47);
- { uint64_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint64_t x82 = (x80 + x46);
- { uint64_t x83 = (x82 >> 0x1a);
- { uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- { uint64_t x85 = (x83 + x45);
- { uint64_t x86 = (x85 >> 0x1a);
- { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- { uint64_t x88 = (x86 + x44);
- { uint64_t x89 = (x88 >> 0x1a);
- { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- { uint64_t x91 = (x89 + x43);
- { uint64_t x92 = (x91 >> 0x1a);
- { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- { uint64_t x94 = (x92 + x42);
- { uint64_t x95 = (x94 >> 0x1a);
- { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- { uint64_t x97 = (x95 + x41);
- { uint64_t x98 = (x97 >> 0x1a);
- { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- { uint64_t x100 = (x98 + x40);
- { uint64_t x101 = (x100 >> 0x1a);
- { uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- { uint64_t x103 = (x101 + x39);
- { uint64_t x104 = (x103 >> 0x1a);
- { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- { uint64_t x106 = (x104 + x38);
- { uint64_t x107 = (x106 >> 0x1a);
- { uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- { uint64_t x109 = (x107 + x37);
- { uint64_t x110 = (x109 >> 0x1a);
- { uint32_t x111 = ((uint32_t)x109 & 0x3ffffff);
- { uint64_t x112 = (x57 + (0x1f * x110));
- { uint32_t x113 = (uint32_t) (x112 >> 0x1b);
- { uint32_t x114 = ((uint32_t)x112 & 0x7ffffff);
- { uint32_t x115 = (x113 + x60);
- { uint32_t x116 = (x115 >> 0x1a);
- { uint32_t x117 = (x115 & 0x3ffffff);
- out[0] = x114;
- out[1] = x117;
- out[2] = (x116 + x63);
- out[3] = x66;
- out[4] = x69;
- out[5] = x72;
- out[6] = x75;
- out[7] = x78;
- out[8] = x81;
- out[9] = x84;
- out[10] = x87;
- out[11] = x90;
- out[12] = x93;
- out[13] = x96;
- out[14] = x99;
- out[15] = x102;
- out[16] = x105;
- out[17] = x108;
- out[18] = x111;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e495m31/fesquare.v b/src/Specific/solinas32_2e495m31/fesquare.v
deleted file mode 100644
index 7772a1a20..000000000
--- a/src/Specific/solinas32_2e495m31/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e495m31/fesquareDisplay.log b/src/Specific/solinas32_2e495m31/fesquareDisplay.log
deleted file mode 100644
index dcbc50950..000000000
--- a/src/Specific/solinas32_2e495m31/fesquareDisplay.log
+++ /dev/null
@@ -1,88 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x35, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x37 = (((uint64_t)x2 * x35) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x35 * x2)))))))))))))))))));
- uint64_t x38 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x1f * ((uint64_t)x35 * x35)));
- uint64_t x39 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0x1f * (((uint64_t)x36 * x35) + ((uint64_t)x35 * x36))));
- uint64_t x40 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x1f * (((uint64_t)x34 * x35) + (((uint64_t)x36 * x36) + ((uint64_t)x35 * x34)))));
- uint64_t x41 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x1f * (((uint64_t)x32 * x35) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + ((uint64_t)x35 * x32))))));
- uint64_t x42 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0x1f * (((uint64_t)x30 * x35) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + ((uint64_t)x35 * x30)))))));
- uint64_t x43 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x1f * (((uint64_t)x28 * x35) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + ((uint64_t)x35 * x28))))))));
- uint64_t x44 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x1f * (((uint64_t)x26 * x35) + (((uint64_t)x28 * x36) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + (((uint64_t)x36 * x28) + ((uint64_t)x35 * x26)))))))));
- uint64_t x45 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0x1f * (((uint64_t)x24 * x35) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + ((uint64_t)x35 * x24))))))))));
- uint64_t x46 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x1f * (((uint64_t)x22 * x35) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + ((uint64_t)x35 * x22)))))))))));
- uint64_t x47 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x1f * (((uint64_t)x20 * x35) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + ((uint64_t)x35 * x20))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0x1f * (((uint64_t)x18 * x35) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + ((uint64_t)x35 * x18)))))))))))));
- ℤ x49 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) +ℤ (0x1f *ℤ (((uint64_t)x16 * x35) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + ((uint64_t)x35 * x16))))))))))))));
- ℤ x50 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) +ℤ (0x1f *ℤ (((uint64_t)x14 * x35) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((uint64_t)x35 * x14)))))))))))))));
- ℤ x51 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) +ℤ (0x1f *ℤ (((uint64_t)x12 * x35) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + ((uint64_t)x35 * x12))))))))))))))));
- ℤ x52 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) +ℤ (0x1f *ℤ (((uint64_t)x10 * x35) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + ((uint64_t)x35 * x10)))))))))))))))));
- ℤ x53 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) +ℤ (0x1f *ℤ (((uint64_t)x8 * x35) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + ((uint64_t)x35 * x8))))))))))))))))));
- ℤ x54 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x1f *ℤ (((uint64_t)x6 * x35) + (((uint64_t)x8 * x36) + (((uint64_t)x10 * x34) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + (((uint64_t)x22 * x22) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + (((uint64_t)x34 * x10) + (((uint64_t)x36 * x8) + ((uint64_t)x35 * x6)))))))))))))))))));
- ℤ x55 = (((uint64_t)x2 * x2) +ℤ (0x1f *ℤ ((0x2 * ((uint64_t)x4 * x35)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + (0x2 * ((uint64_t)x35 * x4)))))))))))))))))))));
- uint64_t x56 = (x55 >> 0x1b);
- uint32_t x57 = (x55 & 0x7ffffff);
- ℤ x58 = (x56 +ℤ x54);
- uint64_t x59 = (x58 >> 0x1a);
- uint32_t x60 = (x58 & 0x3ffffff);
- ℤ x61 = (x59 +ℤ x53);
- uint64_t x62 = (x61 >> 0x1a);
- uint32_t x63 = (x61 & 0x3ffffff);
- ℤ x64 = (x62 +ℤ x52);
- uint64_t x65 = (x64 >> 0x1a);
- uint32_t x66 = (x64 & 0x3ffffff);
- ℤ x67 = (x65 +ℤ x51);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = (x67 & 0x3ffffff);
- ℤ x70 = (x68 +ℤ x50);
- uint64_t x71 = (x70 >> 0x1a);
- uint32_t x72 = (x70 & 0x3ffffff);
- ℤ x73 = (x71 +ℤ x49);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = (x73 & 0x3ffffff);
- uint64_t x76 = (x74 + x48);
- uint64_t x77 = (x76 >> 0x1a);
- uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- uint64_t x79 = (x77 + x47);
- uint64_t x80 = (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint64_t x82 = (x80 + x46);
- uint64_t x83 = (x82 >> 0x1a);
- uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- uint64_t x85 = (x83 + x45);
- uint64_t x86 = (x85 >> 0x1a);
- uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- uint64_t x88 = (x86 + x44);
- uint64_t x89 = (x88 >> 0x1a);
- uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- uint64_t x91 = (x89 + x43);
- uint64_t x92 = (x91 >> 0x1a);
- uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- uint64_t x94 = (x92 + x42);
- uint64_t x95 = (x94 >> 0x1a);
- uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- uint64_t x97 = (x95 + x41);
- uint64_t x98 = (x97 >> 0x1a);
- uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- uint64_t x100 = (x98 + x40);
- uint64_t x101 = (x100 >> 0x1a);
- uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- uint64_t x103 = (x101 + x39);
- uint64_t x104 = (x103 >> 0x1a);
- uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- uint64_t x106 = (x104 + x38);
- uint64_t x107 = (x106 >> 0x1a);
- uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- uint64_t x109 = (x107 + x37);
- uint64_t x110 = (x109 >> 0x1a);
- uint32_t x111 = ((uint32_t)x109 & 0x3ffffff);
- uint64_t x112 = (x57 + (0x1f * x110));
- uint32_t x113 = (uint32_t) (x112 >> 0x1b);
- uint32_t x114 = ((uint32_t)x112 & 0x7ffffff);
- uint32_t x115 = (x113 + x60);
- uint32_t x116 = (x115 >> 0x1a);
- uint32_t x117 = (x115 & 0x3ffffff);
- return (Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, (x116 + x63), Return x117, Return x114))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e495m31/fesquareDisplay.v b/src/Specific/solinas32_2e495m31/fesquareDisplay.v
deleted file mode 100644
index 0db5995e7..000000000
--- a/src/Specific/solinas32_2e495m31/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e495m31.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e495m31/fesub.c b/src/Specific/solinas32_2e495m31/fesub.c
deleted file mode 100644
index f7c27b5d7..000000000
--- a/src/Specific/solinas32_2e495m31/fesub.c
+++ /dev/null
@@ -1,60 +0,0 @@
-static void fesub(uint32_t out[19], const uint32_t in1[19], const uint32_t in2[19]) {
- { const uint32_t x38 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x74 = in2[18];
- { const uint32_t x75 = in2[17];
- { const uint32_t x73 = in2[16];
- { const uint32_t x71 = in2[15];
- { const uint32_t x69 = in2[14];
- { const uint32_t x67 = in2[13];
- { const uint32_t x65 = in2[12];
- { const uint32_t x63 = in2[11];
- { const uint32_t x61 = in2[10];
- { const uint32_t x59 = in2[9];
- { const uint32_t x57 = in2[8];
- { const uint32_t x55 = in2[7];
- { const uint32_t x53 = in2[6];
- { const uint32_t x51 = in2[5];
- { const uint32_t x49 = in2[4];
- { const uint32_t x47 = in2[3];
- { const uint32_t x45 = in2[2];
- { const uint32_t x43 = in2[1];
- { const uint32_t x41 = in2[0];
- out[0] = ((0xfffffc2 + x5) - x41);
- out[1] = ((0x7fffffe + x7) - x43);
- out[2] = ((0x7fffffe + x9) - x45);
- out[3] = ((0x7fffffe + x11) - x47);
- out[4] = ((0x7fffffe + x13) - x49);
- out[5] = ((0x7fffffe + x15) - x51);
- out[6] = ((0x7fffffe + x17) - x53);
- out[7] = ((0x7fffffe + x19) - x55);
- out[8] = ((0x7fffffe + x21) - x57);
- out[9] = ((0x7fffffe + x23) - x59);
- out[10] = ((0x7fffffe + x25) - x61);
- out[11] = ((0x7fffffe + x27) - x63);
- out[12] = ((0x7fffffe + x29) - x65);
- out[13] = ((0x7fffffe + x31) - x67);
- out[14] = ((0x7fffffe + x33) - x69);
- out[15] = ((0x7fffffe + x35) - x71);
- out[16] = ((0x7fffffe + x37) - x73);
- out[17] = ((0x7fffffe + x39) - x75);
- out[18] = ((0x7fffffe + x38) - x74);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e495m31/fesub.v b/src/Specific/solinas32_2e495m31/fesub.v
deleted file mode 100644
index 70cf1e045..000000000
--- a/src/Specific/solinas32_2e495m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e495m31/fesubDisplay.log b/src/Specific/solinas32_2e495m31/fesubDisplay.log
deleted file mode 100644
index 5dd55db7a..000000000
--- a/src/Specific/solinas32_2e495m31/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x38, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x74, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41))%core,
- (((0x7fffffe + x38) - x74), ((0x7fffffe + x39) - x75), ((0x7fffffe + x37) - x73), ((0x7fffffe + x35) - x71), ((0x7fffffe + x33) - x69), ((0x7fffffe + x31) - x67), ((0x7fffffe + x29) - x65), ((0x7fffffe + x27) - x63), ((0x7fffffe + x25) - x61), ((0x7fffffe + x23) - x59), ((0x7fffffe + x21) - x57), ((0x7fffffe + x19) - x55), ((0x7fffffe + x17) - x53), ((0x7fffffe + x15) - x51), ((0x7fffffe + x13) - x49), ((0x7fffffe + x11) - x47), ((0x7fffffe + x9) - x45), ((0x7fffffe + x7) - x43), ((0xfffffc2 + x5) - x41)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e495m31/fesubDisplay.v b/src/Specific/solinas32_2e495m31/fesubDisplay.v
deleted file mode 100644
index 87b1e2050..000000000
--- a/src/Specific/solinas32_2e495m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e495m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e495m31/freeze.c b/src/Specific/solinas32_2e495m31/freeze.c
deleted file mode 100644
index 578edfca4..000000000
--- a/src/Specific/solinas32_2e495m31/freeze.c
+++ /dev/null
@@ -1,99 +0,0 @@
-static void freeze(uint32_t out[19], const uint32_t in1[19]) {
- { const uint32_t x35 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe1);
- { uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x4, 0x3ffffff);
- { uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x6, 0x3ffffff);
- { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x8, 0x3ffffff);
- { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x10, 0x3ffffff);
- { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x12, 0x3ffffff);
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x14, 0x3ffffff);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x16, 0x3ffffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x18, 0x3ffffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x20, 0x3ffffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x22, 0x3ffffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x24, 0x3ffffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x26, 0x3ffffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x28, 0x3ffffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x30, 0x3ffffff);
- { uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x32, 0x3ffffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x34, 0x3ffffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x36, 0x3ffffff);
- { uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x35, 0x3ffffff);
- { uint32_t x94 = cmovznz32(x93, 0x0, 0xffffffff);
- { uint32_t x95 = (x94 & 0x7ffffe1);
- { uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x38, Return x95);
- { uint32_t x99 = (x94 & 0x3ffffff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x41, Return x99);
- { uint32_t x103 = (x94 & 0x3ffffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x44, Return x103);
- { uint32_t x107 = (x94 & 0x3ffffff);
- { uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x47, Return x107);
- { uint32_t x111 = (x94 & 0x3ffffff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x50, Return x111);
- { uint32_t x115 = (x94 & 0x3ffffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x53, Return x115);
- { uint32_t x119 = (x94 & 0x3ffffff);
- { uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x56, Return x119);
- { uint32_t x123 = (x94 & 0x3ffffff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x59, Return x123);
- { uint32_t x127 = (x94 & 0x3ffffff);
- { uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x62, Return x127);
- { uint32_t x131 = (x94 & 0x3ffffff);
- { uint32_t x133, uint8_t x134 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x65, Return x131);
- { uint32_t x135 = (x94 & 0x3ffffff);
- { uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x134, Return x68, Return x135);
- { uint32_t x139 = (x94 & 0x3ffffff);
- { uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x71, Return x139);
- { uint32_t x143 = (x94 & 0x3ffffff);
- { uint32_t x145, uint8_t x146 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x142, Return x74, Return x143);
- { uint32_t x147 = (x94 & 0x3ffffff);
- { uint32_t x149, uint8_t x150 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x146, Return x77, Return x147);
- { uint32_t x151 = (x94 & 0x3ffffff);
- { uint32_t x153, uint8_t x154 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x150, Return x80, Return x151);
- { uint32_t x155 = (x94 & 0x3ffffff);
- { uint32_t x157, uint8_t x158 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x154, Return x83, Return x155);
- { uint32_t x159 = (x94 & 0x3ffffff);
- { uint32_t x161, uint8_t x162 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x158, Return x86, Return x159);
- { uint32_t x163 = (x94 & 0x3ffffff);
- { uint32_t x165, uint8_t x166 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x162, Return x89, Return x163);
- { uint32_t x167 = (x94 & 0x3ffffff);
- { uint32_t x169, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x166, Return x92, Return x167);
- out[0] = x97;
- out[1] = x101;
- out[2] = x105;
- out[3] = x109;
- out[4] = x113;
- out[5] = x117;
- out[6] = x121;
- out[7] = x125;
- out[8] = x129;
- out[9] = x133;
- out[10] = x137;
- out[11] = x141;
- out[12] = x145;
- out[13] = x149;
- out[14] = x153;
- out[15] = x157;
- out[16] = x161;
- out[17] = x165;
- out[18] = x169;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e495m31/freeze.v b/src/Specific/solinas32_2e495m31/freeze.v
deleted file mode 100644
index 75174feb8..000000000
--- a/src/Specific/solinas32_2e495m31/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e495m31/freezeDisplay.log b/src/Specific/solinas32_2e495m31/freezeDisplay.log
deleted file mode 100644
index 8ff3d14dc..000000000
--- a/src/Specific/solinas32_2e495m31/freezeDisplay.log
+++ /dev/null
@@ -1,65 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x35, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe1);
- uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x4, 0x3ffffff);
- uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x6, 0x3ffffff);
- uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x8, 0x3ffffff);
- uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x10, 0x3ffffff);
- uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x12, 0x3ffffff);
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x14, 0x3ffffff);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x16, 0x3ffffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x18, 0x3ffffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x20, 0x3ffffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x22, 0x3ffffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x24, 0x3ffffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x26, 0x3ffffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x28, 0x3ffffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x30, 0x3ffffff);
- uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x32, 0x3ffffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x34, 0x3ffffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x36, 0x3ffffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x35, 0x3ffffff);
- uint32_t x94 = cmovznz32(x93, 0x0, 0xffffffff);
- uint32_t x95 = (x94 & 0x7ffffe1);
- uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x38, Return x95);
- uint32_t x99 = (x94 & 0x3ffffff);
- uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x41, Return x99);
- uint32_t x103 = (x94 & 0x3ffffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x44, Return x103);
- uint32_t x107 = (x94 & 0x3ffffff);
- uint32_t x109, uint8_t x110 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x47, Return x107);
- uint32_t x111 = (x94 & 0x3ffffff);
- uint32_t x113, uint8_t x114 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x110, Return x50, Return x111);
- uint32_t x115 = (x94 & 0x3ffffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x53, Return x115);
- uint32_t x119 = (x94 & 0x3ffffff);
- uint32_t x121, uint8_t x122 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x56, Return x119);
- uint32_t x123 = (x94 & 0x3ffffff);
- uint32_t x125, uint8_t x126 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x122, Return x59, Return x123);
- uint32_t x127 = (x94 & 0x3ffffff);
- uint32_t x129, uint8_t x130 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x62, Return x127);
- uint32_t x131 = (x94 & 0x3ffffff);
- uint32_t x133, uint8_t x134 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x65, Return x131);
- uint32_t x135 = (x94 & 0x3ffffff);
- uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x134, Return x68, Return x135);
- uint32_t x139 = (x94 & 0x3ffffff);
- uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x71, Return x139);
- uint32_t x143 = (x94 & 0x3ffffff);
- uint32_t x145, uint8_t x146 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x142, Return x74, Return x143);
- uint32_t x147 = (x94 & 0x3ffffff);
- uint32_t x149, uint8_t x150 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x146, Return x77, Return x147);
- uint32_t x151 = (x94 & 0x3ffffff);
- uint32_t x153, uint8_t x154 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x150, Return x80, Return x151);
- uint32_t x155 = (x94 & 0x3ffffff);
- uint32_t x157, uint8_t x158 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x154, Return x83, Return x155);
- uint32_t x159 = (x94 & 0x3ffffff);
- uint32_t x161, uint8_t x162 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x158, Return x86, Return x159);
- uint32_t x163 = (x94 & 0x3ffffff);
- uint32_t x165, uint8_t x166 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x162, Return x89, Return x163);
- uint32_t x167 = (x94 & 0x3ffffff);
- uint32_t x169, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x166, Return x92, Return x167);
- (Return x169, Return x165, Return x161, Return x157, Return x153, Return x149, Return x145, Return x141, Return x137, Return x133, Return x129, Return x125, Return x121, Return x117, Return x113, Return x109, Return x105, Return x101, Return x97))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e495m31/freezeDisplay.v b/src/Specific/solinas32_2e495m31/freezeDisplay.v
deleted file mode 100644
index 039f793bb..000000000
--- a/src/Specific/solinas32_2e495m31/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e495m31.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e495m31/py_interpreter.sh b/src/Specific/solinas32_2e495m31/py_interpreter.sh
deleted file mode 100755
index 674ac256f..000000000
--- a/src/Specific/solinas32_2e495m31/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**495 - 31' -Dmodulus_bytes='26 + 1/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e495m31_20limbs/CurveParameters.v b/src/Specific/solinas32_2e495m31_20limbs/CurveParameters.v
new file mode 100644
index 000000000..4e2d82a90
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^495 - 31
+Base: 24.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 20%nat;
+ base := 24 + 3/4;
+ bitwidth := 32;
+ s := 2^495;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 20); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/Synthesis.v b/src/Specific/solinas32_2e495m31_20limbs/Synthesis.v
new file mode 100644
index 000000000..8ae6b2161
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/compiler.sh b/src/Specific/solinas32_2e495m31_20limbs/compiler.sh
new file mode 100755
index 000000000..c7cb24d0f
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31_20limbs/compilerxx.sh b/src/Specific/solinas32_2e495m31_20limbs/compilerxx.sh
new file mode 100755
index 000000000..5b29f2ce6
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24,25,25,25,24}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='20' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31_20limbs/feadd.v b/src/Specific/solinas32_2e495m31_20limbs/feadd.v
new file mode 100644
index 000000000..801a6dae0
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e495m31_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..608b1fdd0
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/femul.v b/src/Specific/solinas32_2e495m31_20limbs/femul.v
new file mode 100644
index 000000000..7ea6d31ef
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/femulDisplay.v b/src/Specific/solinas32_2e495m31_20limbs/femulDisplay.v
new file mode 100644
index 000000000..426f08911
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/fesquare.v b/src/Specific/solinas32_2e495m31_20limbs/fesquare.v
new file mode 100644
index 000000000..e2500d864
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e495m31_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..dc4656fc2
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/fesub.v b/src/Specific/solinas32_2e495m31_20limbs/fesub.v
new file mode 100644
index 000000000..ff352a2f1
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e495m31_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..565c8bad7
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/freeze.v b/src/Specific/solinas32_2e495m31_20limbs/freeze.v
new file mode 100644
index 000000000..d51880edf
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e495m31_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..278c54d82
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e495m31_20limbs/py_interpreter.sh b/src/Specific/solinas32_2e495m31_20limbs/py_interpreter.sh
new file mode 100755
index 000000000..60e78069b
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_20limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**495 - 31' -Dmodulus_bytes='24.75' -Da24='121665'
diff --git a/src/Specific/solinas32_2e495m31_21limbs/CurveParameters.v b/src/Specific/solinas32_2e495m31_21limbs/CurveParameters.v
new file mode 100644
index 000000000..17fe6c0b8
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^495 - 31
+Base: 23 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 21%nat;
+ base := 23 + 4/7;
+ bitwidth := 32;
+ s := 2^495;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 21); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/Synthesis.v b/src/Specific/solinas32_2e495m31_21limbs/Synthesis.v
new file mode 100644
index 000000000..b55dd1d70
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/compiler.sh b/src/Specific/solinas32_2e495m31_21limbs/compiler.sh
new file mode 100755
index 000000000..75607ac60
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,24,23,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='21' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31_21limbs/compilerxx.sh b/src/Specific/solinas32_2e495m31_21limbs/compilerxx.sh
new file mode 100755
index 000000000..906f96666
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,24,23,24,23,24,23,24,24,23,24,23,24,23,24,24,23,24,23,24,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='21' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas32_2e495m31_21limbs/feadd.v b/src/Specific/solinas32_2e495m31_21limbs/feadd.v
new file mode 100644
index 000000000..3e0caf08c
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/feaddDisplay.v b/src/Specific/solinas32_2e495m31_21limbs/feaddDisplay.v
new file mode 100644
index 000000000..a0c1fb07a
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/femul.v b/src/Specific/solinas32_2e495m31_21limbs/femul.v
new file mode 100644
index 000000000..860886430
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.v b/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.v
new file mode 100644
index 000000000..f7109ada5
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/fesquare.v b/src/Specific/solinas32_2e495m31_21limbs/fesquare.v
new file mode 100644
index 000000000..794bfcee7
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/fesquareDisplay.v b/src/Specific/solinas32_2e495m31_21limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d0144a732
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/fesub.v b/src/Specific/solinas32_2e495m31_21limbs/fesub.v
new file mode 100644
index 000000000..48a3002cb
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/fesubDisplay.v b/src/Specific/solinas32_2e495m31_21limbs/fesubDisplay.v
new file mode 100644
index 000000000..c834d28da
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/freeze.v b/src/Specific/solinas32_2e495m31_21limbs/freeze.v
new file mode 100644
index 000000000..c18a9461e
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/freezeDisplay.v b/src/Specific/solinas32_2e495m31_21limbs/freezeDisplay.v
new file mode 100644
index 000000000..ddf9c252c
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e495m31_21limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e495m31_21limbs/py_interpreter.sh b/src/Specific/solinas32_2e495m31_21limbs/py_interpreter.sh
new file mode 100755
index 000000000..b789f7fe4
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**495 - 31' -Dmodulus_bytes='23 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/CurveParameters.v b/src/Specific/solinas32_2e510m290x2e496m1/CurveParameters.v
deleted file mode 100644
index b18533e1f..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^510 - 290*2^496 - 1
-Base: 21.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 24%nat;
- base := 21 + 1/4;
- bitwidth := 32;
- s := 2^510;
- c := [(1, 1); (290, 2^496)];
- carry_chains := Some [[22; 23]; [23; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22]; [23; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/Synthesis.v b/src/Specific/solinas32_2e510m290x2e496m1/Synthesis.v
deleted file mode 100644
index f3276364d..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/compiler.sh b/src/Specific/solinas32_2e510m290x2e496m1/compiler.sh
deleted file mode 100755
index f98bdde7c..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/compilerxx.sh b/src/Specific/solinas32_2e510m290x2e496m1/compilerxx.sh
deleted file mode 100755
index 92cd8b9fa..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21,22,21,21,21}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/feadd.c b/src/Specific/solinas32_2e510m290x2e496m1/feadd.c
deleted file mode 100644
index 115132981..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/feadd.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void feadd(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = (x5 + x51);
- out[1] = (x7 + x53);
- out[2] = (x9 + x55);
- out[3] = (x11 + x57);
- out[4] = (x13 + x59);
- out[5] = (x15 + x61);
- out[6] = (x17 + x63);
- out[7] = (x19 + x65);
- out[8] = (x21 + x67);
- out[9] = (x23 + x69);
- out[10] = (x25 + x71);
- out[11] = (x27 + x73);
- out[12] = (x29 + x75);
- out[13] = (x31 + x77);
- out[14] = (x33 + x79);
- out[15] = (x35 + x81);
- out[16] = (x37 + x83);
- out[17] = (x39 + x85);
- out[18] = (x41 + x87);
- out[19] = (x43 + x89);
- out[20] = (x45 + x91);
- out[21] = (x47 + x93);
- out[22] = (x49 + x95);
- out[23] = (x48 + x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/feadd.v b/src/Specific/solinas32_2e510m290x2e496m1/feadd.v
deleted file mode 100644
index e58e444a1..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.log b/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.log
deleted file mode 100644
index 8ec776f44..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- ((x48 + x94), (x49 + x95), (x47 + x93), (x45 + x91), (x43 + x89), (x41 + x87), (x39 + x85), (x37 + x83), (x35 + x81), (x33 + x79), (x31 + x77), (x29 + x75), (x27 + x73), (x25 + x71), (x23 + x69), (x21 + x67), (x19 + x65), (x17 + x63), (x15 + x61), (x13 + x59), (x11 + x57), (x9 + x55), (x7 + x53), (x5 + x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.v b/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.v
deleted file mode 100644
index 496dae955..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/femul.v b/src/Specific/solinas32_2e510m290x2e496m1/femul.v
deleted file mode 100644
index dd6941230..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/femulDisplay.v b/src/Specific/solinas32_2e510m290x2e496m1/femulDisplay.v
deleted file mode 100644
index 924d110ed..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesquare.v b/src/Specific/solinas32_2e510m290x2e496m1/fesquare.v
deleted file mode 100644
index eb4f18cf6..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesquareDisplay.v b/src/Specific/solinas32_2e510m290x2e496m1/fesquareDisplay.v
deleted file mode 100644
index 7ab7a089f..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesub.c b/src/Specific/solinas32_2e510m290x2e496m1/fesub.c
deleted file mode 100644
index a7f6fb53a..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesub.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void fesub(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = ((0x7ffffe + x5) - x51);
- out[1] = ((0x3ffffe + x7) - x53);
- out[2] = ((0x3ffffe + x9) - x55);
- out[3] = ((0x3ffffe + x11) - x57);
- out[4] = ((0x7ffffe + x13) - x59);
- out[5] = ((0x3ffffe + x15) - x61);
- out[6] = ((0x3ffffe + x17) - x63);
- out[7] = ((0x3ffffe + x19) - x65);
- out[8] = ((0x7ffffe + x21) - x67);
- out[9] = ((0x3ffffe + x23) - x69);
- out[10] = ((0x3ffffe + x25) - x71);
- out[11] = ((0x3ffffe + x27) - x73);
- out[12] = ((0x7ffffe + x29) - x75);
- out[13] = ((0x3ffffe + x31) - x77);
- out[14] = ((0x3ffffe + x33) - x79);
- out[15] = ((0x3ffffe + x35) - x81);
- out[16] = ((0x7ffffe + x37) - x83);
- out[17] = ((0x3ffffe + x39) - x85);
- out[18] = ((0x3ffffe + x41) - x87);
- out[19] = ((0x3ffffe + x43) - x89);
- out[20] = ((0x7ffffe + x45) - x91);
- out[21] = ((0x3ffffe + x47) - x93);
- out[22] = ((0x3ffffe + x49) - x95);
- out[23] = ((0x3eddfe + x48) - x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesub.v b/src/Specific/solinas32_2e510m290x2e496m1/fesub.v
deleted file mode 100644
index 6661496b8..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.log b/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.log
deleted file mode 100644
index 318927f69..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- (((0x3eddfe + x48) - x94), ((0x3ffffe + x49) - x95), ((0x3ffffe + x47) - x93), ((0x7ffffe + x45) - x91), ((0x3ffffe + x43) - x89), ((0x3ffffe + x41) - x87), ((0x3ffffe + x39) - x85), ((0x7ffffe + x37) - x83), ((0x3ffffe + x35) - x81), ((0x3ffffe + x33) - x79), ((0x3ffffe + x31) - x77), ((0x7ffffe + x29) - x75), ((0x3ffffe + x27) - x73), ((0x3ffffe + x25) - x71), ((0x3ffffe + x23) - x69), ((0x7ffffe + x21) - x67), ((0x3ffffe + x19) - x65), ((0x3ffffe + x17) - x63), ((0x3ffffe + x15) - x61), ((0x7ffffe + x13) - x59), ((0x3ffffe + x11) - x57), ((0x3ffffe + x9) - x55), ((0x3ffffe + x7) - x53), ((0x7ffffe + x5) - x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.v b/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.v
deleted file mode 100644
index 370d0da9a..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freeze.c b/src/Specific/solinas32_2e510m290x2e496m1/freeze.c
deleted file mode 100644
index d0e5eb447..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/freeze.c
+++ /dev/null
@@ -1,124 +0,0 @@
-static void freeze(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x1fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x3fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x1fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x3fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x1fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x1fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x3fffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x1fffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x3fffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1f6eff);
- { uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- { uint32_t x120 = (x119 & 0x3fffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- { uint32_t x124 = (x119 & 0x1fffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- { uint32_t x128 = (x119 & 0x1fffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- { uint32_t x132 = (x119 & 0x1fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- { uint32_t x136 = (x119 & 0x3fffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- { uint32_t x140 = (x119 & 0x1fffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- { uint32_t x144 = (x119 & 0x1fffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- { uint32_t x148 = (x119 & 0x1fffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- { uint32_t x152 = (x119 & 0x3fffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- { uint32_t x156 = (x119 & 0x1fffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- { uint32_t x160 = (x119 & 0x1fffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- { uint32_t x164 = (x119 & 0x1fffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- { uint32_t x168 = (x119 & 0x3fffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- { uint32_t x172 = (x119 & 0x1fffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- { uint32_t x176 = (x119 & 0x1fffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- { uint32_t x180 = (x119 & 0x1fffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- { uint32_t x184 = (x119 & 0x3fffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- { uint32_t x188 = (x119 & 0x1fffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- { uint32_t x192 = (x119 & 0x1fffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- { uint32_t x196 = (x119 & 0x1fffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- { uint32_t x200 = (x119 & 0x3fffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- { uint32_t x204 = (x119 & 0x1fffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- { uint32_t x208 = (x119 & 0x1fffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- { uint32_t x212 = (x119 & 0x1f6eff);
- { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- out[0] = x122;
- out[1] = x126;
- out[2] = x130;
- out[3] = x134;
- out[4] = x138;
- out[5] = x142;
- out[6] = x146;
- out[7] = x150;
- out[8] = x154;
- out[9] = x158;
- out[10] = x162;
- out[11] = x166;
- out[12] = x170;
- out[13] = x174;
- out[14] = x178;
- out[15] = x182;
- out[16] = x186;
- out[17] = x190;
- out[18] = x194;
- out[19] = x198;
- out[20] = x202;
- out[21] = x206;
- out[22] = x210;
- out[23] = x214;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freeze.v b/src/Specific/solinas32_2e510m290x2e496m1/freeze.v
deleted file mode 100644
index 1f0d0a7ac..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log b/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log
deleted file mode 100644
index 48c4c4b92..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log
+++ /dev/null
@@ -1,80 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x1fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x3fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x1fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x3fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x1fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x1fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x3fffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x1fffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x3fffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1f6eff);
- uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- uint32_t x120 = (x119 & 0x3fffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- uint32_t x124 = (x119 & 0x1fffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- uint32_t x128 = (x119 & 0x1fffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- uint32_t x132 = (x119 & 0x1fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- uint32_t x136 = (x119 & 0x3fffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- uint32_t x140 = (x119 & 0x1fffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- uint32_t x144 = (x119 & 0x1fffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- uint32_t x148 = (x119 & 0x1fffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- uint32_t x152 = (x119 & 0x3fffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- uint32_t x156 = (x119 & 0x1fffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- uint32_t x160 = (x119 & 0x1fffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- uint32_t x164 = (x119 & 0x1fffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- uint32_t x168 = (x119 & 0x3fffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- uint32_t x172 = (x119 & 0x1fffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- uint32_t x176 = (x119 & 0x1fffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- uint32_t x180 = (x119 & 0x1fffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- uint32_t x184 = (x119 & 0x3fffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- uint32_t x188 = (x119 & 0x1fffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- uint32_t x192 = (x119 & 0x1fffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- uint32_t x196 = (x119 & 0x1fffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- uint32_t x200 = (x119 & 0x3fffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- uint32_t x204 = (x119 & 0x1fffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- uint32_t x208 = (x119 & 0x1fffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & 0x1f6eff);
- uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- (Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.v b/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.v
deleted file mode 100644
index 0b3b105e3..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e510m290x2e496m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/py_interpreter.sh b/src/Specific/solinas32_2e510m290x2e496m1/py_interpreter.sh
deleted file mode 100755
index 2e0ce6458..000000000
--- a/src/Specific/solinas32_2e510m290x2e496m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**510 - 290*2**496 - 1' -Dmodulus_bytes='21.25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m187/CurveParameters.v b/src/Specific/solinas32_2e511m187/CurveParameters.v
deleted file mode 100644
index 257c04523..000000000
--- a/src/Specific/solinas32_2e511m187/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^511 - 187
-Base: 18.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 28%nat;
- base := 18 + 1/4;
- bitwidth := 32;
- s := 2^511;
- c := [(1, 187)];
- carry_chains := Some [seq 0 (pred 28); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m187/Synthesis.v b/src/Specific/solinas32_2e511m187/Synthesis.v
deleted file mode 100644
index e2ccddf39..000000000
--- a/src/Specific/solinas32_2e511m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e511m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m187/compiler.sh b/src/Specific/solinas32_2e511m187/compiler.sh
deleted file mode 100755
index be5a225ed..000000000
--- a/src/Specific/solinas32_2e511m187/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='28' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187/compilerxx.sh b/src/Specific/solinas32_2e511m187/compilerxx.sh
deleted file mode 100755
index cdb584f20..000000000
--- a/src/Specific/solinas32_2e511m187/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='28' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187/feadd.c b/src/Specific/solinas32_2e511m187/feadd.c
deleted file mode 100644
index ea5a0de71..000000000
--- a/src/Specific/solinas32_2e511m187/feadd.c
+++ /dev/null
@@ -1,87 +0,0 @@
-static void feadd(uint32_t out[28], const uint32_t in1[28], const uint32_t in2[28]) {
- { const uint32_t x56 = in1[27];
- { const uint32_t x57 = in1[26];
- { const uint32_t x55 = in1[25];
- { const uint32_t x53 = in1[24];
- { const uint32_t x51 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x110 = in2[27];
- { const uint32_t x111 = in2[26];
- { const uint32_t x109 = in2[25];
- { const uint32_t x107 = in2[24];
- { const uint32_t x105 = in2[23];
- { const uint32_t x103 = in2[22];
- { const uint32_t x101 = in2[21];
- { const uint32_t x99 = in2[20];
- { const uint32_t x97 = in2[19];
- { const uint32_t x95 = in2[18];
- { const uint32_t x93 = in2[17];
- { const uint32_t x91 = in2[16];
- { const uint32_t x89 = in2[15];
- { const uint32_t x87 = in2[14];
- { const uint32_t x85 = in2[13];
- { const uint32_t x83 = in2[12];
- { const uint32_t x81 = in2[11];
- { const uint32_t x79 = in2[10];
- { const uint32_t x77 = in2[9];
- { const uint32_t x75 = in2[8];
- { const uint32_t x73 = in2[7];
- { const uint32_t x71 = in2[6];
- { const uint32_t x69 = in2[5];
- { const uint32_t x67 = in2[4];
- { const uint32_t x65 = in2[3];
- { const uint32_t x63 = in2[2];
- { const uint32_t x61 = in2[1];
- { const uint32_t x59 = in2[0];
- out[0] = (x5 + x59);
- out[1] = (x7 + x61);
- out[2] = (x9 + x63);
- out[3] = (x11 + x65);
- out[4] = (x13 + x67);
- out[5] = (x15 + x69);
- out[6] = (x17 + x71);
- out[7] = (x19 + x73);
- out[8] = (x21 + x75);
- out[9] = (x23 + x77);
- out[10] = (x25 + x79);
- out[11] = (x27 + x81);
- out[12] = (x29 + x83);
- out[13] = (x31 + x85);
- out[14] = (x33 + x87);
- out[15] = (x35 + x89);
- out[16] = (x37 + x91);
- out[17] = (x39 + x93);
- out[18] = (x41 + x95);
- out[19] = (x43 + x97);
- out[20] = (x45 + x99);
- out[21] = (x47 + x101);
- out[22] = (x49 + x103);
- out[23] = (x51 + x105);
- out[24] = (x53 + x107);
- out[25] = (x55 + x109);
- out[26] = (x57 + x111);
- out[27] = (x56 + x110);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e511m187/feadd.v b/src/Specific/solinas32_2e511m187/feadd.v
deleted file mode 100644
index 4fe376c50..000000000
--- a/src/Specific/solinas32_2e511m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m187/feaddDisplay.log b/src/Specific/solinas32_2e511m187/feaddDisplay.log
deleted file mode 100644
index 881e72050..000000000
--- a/src/Specific/solinas32_2e511m187/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x56, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x110, x111, x109, x107, x105, x103, x101, x99, x97, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59))%core,
- ((x56 + x110), (x57 + x111), (x55 + x109), (x53 + x107), (x51 + x105), (x49 + x103), (x47 + x101), (x45 + x99), (x43 + x97), (x41 + x95), (x39 + x93), (x37 + x91), (x35 + x89), (x33 + x87), (x31 + x85), (x29 + x83), (x27 + x81), (x25 + x79), (x23 + x77), (x21 + x75), (x19 + x73), (x17 + x71), (x15 + x69), (x13 + x67), (x11 + x65), (x9 + x63), (x7 + x61), (x5 + x59)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187/feaddDisplay.v b/src/Specific/solinas32_2e511m187/feaddDisplay.v
deleted file mode 100644
index 881420fcc..000000000
--- a/src/Specific/solinas32_2e511m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e511m187/femul.v b/src/Specific/solinas32_2e511m187/femul.v
deleted file mode 100644
index f369e47bc..000000000
--- a/src/Specific/solinas32_2e511m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m187/femulDisplay.v b/src/Specific/solinas32_2e511m187/femulDisplay.v
deleted file mode 100644
index 37c22439a..000000000
--- a/src/Specific/solinas32_2e511m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e511m187/fesquare.v b/src/Specific/solinas32_2e511m187/fesquare.v
deleted file mode 100644
index 6ca547cd9..000000000
--- a/src/Specific/solinas32_2e511m187/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m187/fesquareDisplay.v b/src/Specific/solinas32_2e511m187/fesquareDisplay.v
deleted file mode 100644
index 6735a28b4..000000000
--- a/src/Specific/solinas32_2e511m187/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m187.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e511m187/fesub.c b/src/Specific/solinas32_2e511m187/fesub.c
deleted file mode 100644
index 3aed6811f..000000000
--- a/src/Specific/solinas32_2e511m187/fesub.c
+++ /dev/null
@@ -1,87 +0,0 @@
-static void fesub(uint32_t out[28], const uint32_t in1[28], const uint32_t in2[28]) {
- { const uint32_t x56 = in1[27];
- { const uint32_t x57 = in1[26];
- { const uint32_t x55 = in1[25];
- { const uint32_t x53 = in1[24];
- { const uint32_t x51 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x110 = in2[27];
- { const uint32_t x111 = in2[26];
- { const uint32_t x109 = in2[25];
- { const uint32_t x107 = in2[24];
- { const uint32_t x105 = in2[23];
- { const uint32_t x103 = in2[22];
- { const uint32_t x101 = in2[21];
- { const uint32_t x99 = in2[20];
- { const uint32_t x97 = in2[19];
- { const uint32_t x95 = in2[18];
- { const uint32_t x93 = in2[17];
- { const uint32_t x91 = in2[16];
- { const uint32_t x89 = in2[15];
- { const uint32_t x87 = in2[14];
- { const uint32_t x85 = in2[13];
- { const uint32_t x83 = in2[12];
- { const uint32_t x81 = in2[11];
- { const uint32_t x79 = in2[10];
- { const uint32_t x77 = in2[9];
- { const uint32_t x75 = in2[8];
- { const uint32_t x73 = in2[7];
- { const uint32_t x71 = in2[6];
- { const uint32_t x69 = in2[5];
- { const uint32_t x67 = in2[4];
- { const uint32_t x65 = in2[3];
- { const uint32_t x63 = in2[2];
- { const uint32_t x61 = in2[1];
- { const uint32_t x59 = in2[0];
- out[0] = ((0xffe8a + x5) - x59);
- out[1] = ((0x7fffe + x7) - x61);
- out[2] = ((0x7fffe + x9) - x63);
- out[3] = ((0x7fffe + x11) - x65);
- out[4] = ((0xffffe + x13) - x67);
- out[5] = ((0x7fffe + x15) - x69);
- out[6] = ((0x7fffe + x17) - x71);
- out[7] = ((0x7fffe + x19) - x73);
- out[8] = ((0xffffe + x21) - x75);
- out[9] = ((0x7fffe + x23) - x77);
- out[10] = ((0x7fffe + x25) - x79);
- out[11] = ((0x7fffe + x27) - x81);
- out[12] = ((0xffffe + x29) - x83);
- out[13] = ((0x7fffe + x31) - x85);
- out[14] = ((0x7fffe + x33) - x87);
- out[15] = ((0x7fffe + x35) - x89);
- out[16] = ((0xffffe + x37) - x91);
- out[17] = ((0x7fffe + x39) - x93);
- out[18] = ((0x7fffe + x41) - x95);
- out[19] = ((0x7fffe + x43) - x97);
- out[20] = ((0xffffe + x45) - x99);
- out[21] = ((0x7fffe + x47) - x101);
- out[22] = ((0x7fffe + x49) - x103);
- out[23] = ((0x7fffe + x51) - x105);
- out[24] = ((0xffffe + x53) - x107);
- out[25] = ((0x7fffe + x55) - x109);
- out[26] = ((0x7fffe + x57) - x111);
- out[27] = ((0x7fffe + x56) - x110);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e511m187/fesub.v b/src/Specific/solinas32_2e511m187/fesub.v
deleted file mode 100644
index a65634a5e..000000000
--- a/src/Specific/solinas32_2e511m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m187/fesubDisplay.log b/src/Specific/solinas32_2e511m187/fesubDisplay.log
deleted file mode 100644
index 6f251e609..000000000
--- a/src/Specific/solinas32_2e511m187/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x56, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x110, x111, x109, x107, x105, x103, x101, x99, x97, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59))%core,
- (((0x7fffe + x56) - x110), ((0x7fffe + x57) - x111), ((0x7fffe + x55) - x109), ((0xffffe + x53) - x107), ((0x7fffe + x51) - x105), ((0x7fffe + x49) - x103), ((0x7fffe + x47) - x101), ((0xffffe + x45) - x99), ((0x7fffe + x43) - x97), ((0x7fffe + x41) - x95), ((0x7fffe + x39) - x93), ((0xffffe + x37) - x91), ((0x7fffe + x35) - x89), ((0x7fffe + x33) - x87), ((0x7fffe + x31) - x85), ((0xffffe + x29) - x83), ((0x7fffe + x27) - x81), ((0x7fffe + x25) - x79), ((0x7fffe + x23) - x77), ((0xffffe + x21) - x75), ((0x7fffe + x19) - x73), ((0x7fffe + x17) - x71), ((0x7fffe + x15) - x69), ((0xffffe + x13) - x67), ((0x7fffe + x11) - x65), ((0x7fffe + x9) - x63), ((0x7fffe + x7) - x61), ((0xffe8a + x5) - x59)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187/fesubDisplay.v b/src/Specific/solinas32_2e511m187/fesubDisplay.v
deleted file mode 100644
index f06160816..000000000
--- a/src/Specific/solinas32_2e511m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e511m187/freeze.c b/src/Specific/solinas32_2e511m187/freeze.c
deleted file mode 100644
index 245df8444..000000000
--- a/src/Specific/solinas32_2e511m187/freeze.c
+++ /dev/null
@@ -1,144 +0,0 @@
-static void freeze(uint32_t out[28], const uint32_t in1[28]) {
- { const uint32_t x53 = in1[27];
- { const uint32_t x54 = in1[26];
- { const uint32_t x52 = in1[25];
- { const uint32_t x50 = in1[24];
- { const uint32_t x48 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ff45);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x4, 0x3ffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x6, 0x3ffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x8, 0x3ffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x10, 0x7ffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x12, 0x3ffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x14, 0x3ffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x16, 0x3ffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x18, 0x7ffff);
- { uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x20, 0x3ffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x22, 0x3ffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x24, 0x3ffff);
- { uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x26, 0x7ffff);
- { uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x28, 0x3ffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x30, 0x3ffff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x32, 0x3ffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x34, 0x7ffff);
- { uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x36, 0x3ffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x38, 0x3ffff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x40, 0x3ffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x42, 0x7ffff);
- { uint32_t x119, uint8_t x120 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x44, 0x3ffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x46, 0x3ffff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x48, 0x3ffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x50, 0x7ffff);
- { uint32_t x131, uint8_t x132 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x52, 0x3ffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x54, 0x3ffff);
- { uint32_t x137, uint8_t x138 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x53, 0x3ffff);
- { uint32_t x139 = cmovznz32(x138, 0x0, 0xffffffff);
- { uint32_t x140 = (x139 & 0x7ff45);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x56, Return x140);
- { uint32_t x144 = (x139 & 0x3ffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x59, Return x144);
- { uint32_t x148 = (x139 & 0x3ffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x62, Return x148);
- { uint32_t x152 = (x139 & 0x3ffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x65, Return x152);
- { uint32_t x156 = (x139 & 0x7ffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x68, Return x156);
- { uint32_t x160 = (x139 & 0x3ffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x71, Return x160);
- { uint32_t x164 = (x139 & 0x3ffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x74, Return x164);
- { uint32_t x168 = (x139 & 0x3ffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x77, Return x168);
- { uint32_t x172 = (x139 & 0x7ffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x80, Return x172);
- { uint32_t x176 = (x139 & 0x3ffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x83, Return x176);
- { uint32_t x180 = (x139 & 0x3ffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x86, Return x180);
- { uint32_t x184 = (x139 & 0x3ffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x89, Return x184);
- { uint32_t x188 = (x139 & 0x7ffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x92, Return x188);
- { uint32_t x192 = (x139 & 0x3ffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x95, Return x192);
- { uint32_t x196 = (x139 & 0x3ffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x98, Return x196);
- { uint32_t x200 = (x139 & 0x3ffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x101, Return x200);
- { uint32_t x204 = (x139 & 0x7ffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x104, Return x204);
- { uint32_t x208 = (x139 & 0x3ffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x107, Return x208);
- { uint32_t x212 = (x139 & 0x3ffff);
- { uint32_t x214, uint8_t x215 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x110, Return x212);
- { uint32_t x216 = (x139 & 0x3ffff);
- { uint32_t x218, uint8_t x219 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x215, Return x113, Return x216);
- { uint32_t x220 = (x139 & 0x7ffff);
- { uint32_t x222, uint8_t x223 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x219, Return x116, Return x220);
- { uint32_t x224 = (x139 & 0x3ffff);
- { uint32_t x226, uint8_t x227 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x223, Return x119, Return x224);
- { uint32_t x228 = (x139 & 0x3ffff);
- { uint32_t x230, uint8_t x231 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x227, Return x122, Return x228);
- { uint32_t x232 = (x139 & 0x3ffff);
- { uint32_t x234, uint8_t x235 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x231, Return x125, Return x232);
- { uint32_t x236 = (x139 & 0x7ffff);
- { uint32_t x238, uint8_t x239 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x235, Return x128, Return x236);
- { uint32_t x240 = (x139 & 0x3ffff);
- { uint32_t x242, uint8_t x243 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x239, Return x131, Return x240);
- { uint32_t x244 = (x139 & 0x3ffff);
- { uint32_t x246, uint8_t x247 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x243, Return x134, Return x244);
- { uint32_t x248 = (x139 & 0x3ffff);
- { uint32_t x250, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x247, Return x137, Return x248);
- out[0] = x142;
- out[1] = x146;
- out[2] = x150;
- out[3] = x154;
- out[4] = x158;
- out[5] = x162;
- out[6] = x166;
- out[7] = x170;
- out[8] = x174;
- out[9] = x178;
- out[10] = x182;
- out[11] = x186;
- out[12] = x190;
- out[13] = x194;
- out[14] = x198;
- out[15] = x202;
- out[16] = x206;
- out[17] = x210;
- out[18] = x214;
- out[19] = x218;
- out[20] = x222;
- out[21] = x226;
- out[22] = x230;
- out[23] = x234;
- out[24] = x238;
- out[25] = x242;
- out[26] = x246;
- out[27] = x250;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e511m187/freeze.v b/src/Specific/solinas32_2e511m187/freeze.v
deleted file mode 100644
index 7c748465a..000000000
--- a/src/Specific/solinas32_2e511m187/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m187/freezeDisplay.log b/src/Specific/solinas32_2e511m187/freezeDisplay.log
deleted file mode 100644
index 8d9b7d049..000000000
--- a/src/Specific/solinas32_2e511m187/freezeDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x53, x54, x52, x50, x48, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ff45);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x4, 0x3ffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x6, 0x3ffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x8, 0x3ffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x10, 0x7ffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x12, 0x3ffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x14, 0x3ffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x16, 0x3ffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x18, 0x7ffff);
- uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x20, 0x3ffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x22, 0x3ffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x24, 0x3ffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x26, 0x7ffff);
- uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x28, 0x3ffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x30, 0x3ffff);
- uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x32, 0x3ffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x34, 0x7ffff);
- uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x36, 0x3ffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x38, 0x3ffff);
- uint32_t x113, uint8_t x114 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x40, 0x3ffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x42, 0x7ffff);
- uint32_t x119, uint8_t x120 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x44, 0x3ffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x46, 0x3ffff);
- uint32_t x125, uint8_t x126 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x48, 0x3ffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x50, 0x7ffff);
- uint32_t x131, uint8_t x132 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x52, 0x3ffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x54, 0x3ffff);
- uint32_t x137, uint8_t x138 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x53, 0x3ffff);
- uint32_t x139 = cmovznz32(x138, 0x0, 0xffffffff);
- uint32_t x140 = (x139 & 0x7ff45);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x56, Return x140);
- uint32_t x144 = (x139 & 0x3ffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x59, Return x144);
- uint32_t x148 = (x139 & 0x3ffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x62, Return x148);
- uint32_t x152 = (x139 & 0x3ffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x65, Return x152);
- uint32_t x156 = (x139 & 0x7ffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x68, Return x156);
- uint32_t x160 = (x139 & 0x3ffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x71, Return x160);
- uint32_t x164 = (x139 & 0x3ffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x74, Return x164);
- uint32_t x168 = (x139 & 0x3ffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x77, Return x168);
- uint32_t x172 = (x139 & 0x7ffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x80, Return x172);
- uint32_t x176 = (x139 & 0x3ffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x83, Return x176);
- uint32_t x180 = (x139 & 0x3ffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x86, Return x180);
- uint32_t x184 = (x139 & 0x3ffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x89, Return x184);
- uint32_t x188 = (x139 & 0x7ffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x92, Return x188);
- uint32_t x192 = (x139 & 0x3ffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x95, Return x192);
- uint32_t x196 = (x139 & 0x3ffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x98, Return x196);
- uint32_t x200 = (x139 & 0x3ffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x101, Return x200);
- uint32_t x204 = (x139 & 0x7ffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x104, Return x204);
- uint32_t x208 = (x139 & 0x3ffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x107, Return x208);
- uint32_t x212 = (x139 & 0x3ffff);
- uint32_t x214, uint8_t x215 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x110, Return x212);
- uint32_t x216 = (x139 & 0x3ffff);
- uint32_t x218, uint8_t x219 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x215, Return x113, Return x216);
- uint32_t x220 = (x139 & 0x7ffff);
- uint32_t x222, uint8_t x223 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x219, Return x116, Return x220);
- uint32_t x224 = (x139 & 0x3ffff);
- uint32_t x226, uint8_t x227 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x223, Return x119, Return x224);
- uint32_t x228 = (x139 & 0x3ffff);
- uint32_t x230, uint8_t x231 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x227, Return x122, Return x228);
- uint32_t x232 = (x139 & 0x3ffff);
- uint32_t x234, uint8_t x235 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x231, Return x125, Return x232);
- uint32_t x236 = (x139 & 0x7ffff);
- uint32_t x238, uint8_t x239 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x235, Return x128, Return x236);
- uint32_t x240 = (x139 & 0x3ffff);
- uint32_t x242, uint8_t x243 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x239, Return x131, Return x240);
- uint32_t x244 = (x139 & 0x3ffff);
- uint32_t x246, uint8_t x247 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x243, Return x134, Return x244);
- uint32_t x248 = (x139 & 0x3ffff);
- uint32_t x250, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x247, Return x137, Return x248);
- (Return x250, Return x246, Return x242, Return x238, Return x234, Return x230, Return x226, Return x222, Return x218, Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187/freezeDisplay.v b/src/Specific/solinas32_2e511m187/freezeDisplay.v
deleted file mode 100644
index 1e93eb9be..000000000
--- a/src/Specific/solinas32_2e511m187/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m187.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e511m187/py_interpreter.sh b/src/Specific/solinas32_2e511m187/py_interpreter.sh
deleted file mode 100755
index 6900eaec6..000000000
--- a/src/Specific/solinas32_2e511m187/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**511 - 187' -Dmodulus_bytes='18.25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m187_22limbs/CurveParameters.v b/src/Specific/solinas32_2e511m187_22limbs/CurveParameters.v
new file mode 100644
index 000000000..911ade92b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 187
+Base: 23 + 5/22
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 22%nat;
+ base := 23 + 5/22;
+ bitwidth := 32;
+ s := 2^511;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 22); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/Synthesis.v b/src/Specific/solinas32_2e511m187_22limbs/Synthesis.v
new file mode 100644
index 000000000..ad22063c2
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/compiler.sh b/src/Specific/solinas32_2e511m187_22limbs/compiler.sh
new file mode 100755
index 000000000..ecf30ac2a
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,24,23,23,23,24,23,23,23,23,24,23,23,23,24,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='22' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187_22limbs/compilerxx.sh b/src/Specific/solinas32_2e511m187_22limbs/compilerxx.sh
new file mode 100755
index 000000000..c2abb927b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{24,23,23,23,24,23,23,23,24,23,23,23,23,24,23,23,23,24,23,23,23,23}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='22' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187_22limbs/feadd.v b/src/Specific/solinas32_2e511m187_22limbs/feadd.v
new file mode 100644
index 000000000..25cd4e3aa
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.v b/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.v
new file mode 100644
index 000000000..b2fb0847d
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/femul.v b/src/Specific/solinas32_2e511m187_22limbs/femul.v
new file mode 100644
index 000000000..1201c85ba
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.v b/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.v
new file mode 100644
index 000000000..7b0822995
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesquare.v b/src/Specific/solinas32_2e511m187_22limbs/fesquare.v
new file mode 100644
index 000000000..9aecd2cbb
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.v b/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e7fbb69c5
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesub.v b/src/Specific/solinas32_2e511m187_22limbs/fesub.v
new file mode 100644
index 000000000..a2594d765
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.v b/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.v
new file mode 100644
index 000000000..6b4a495c7
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/freeze.v b/src/Specific/solinas32_2e511m187_22limbs/freeze.v
new file mode 100644
index 000000000..8f7e348b3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.v b/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.v
new file mode 100644
index 000000000..7b629f620
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_22limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e511m187_22limbs/py_interpreter.sh b/src/Specific/solinas32_2e511m187_22limbs/py_interpreter.sh
new file mode 100755
index 000000000..6424acd21
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 187' -Dmodulus_bytes='23 + 5/22' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m187_23limbs/CurveParameters.v b/src/Specific/solinas32_2e511m187_23limbs/CurveParameters.v
new file mode 100644
index 000000000..bae6e9ac3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 187
+Base: 22 + 5/23
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 23%nat;
+ base := 22 + 5/23;
+ bitwidth := 32;
+ s := 2^511;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 23); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/Synthesis.v b/src/Specific/solinas32_2e511m187_23limbs/Synthesis.v
new file mode 100644
index 000000000..019dd5088
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/compiler.sh b/src/Specific/solinas32_2e511m187_23limbs/compiler.sh
new file mode 100755
index 000000000..9d222ed6f
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187_23limbs/compilerxx.sh b/src/Specific/solinas32_2e511m187_23limbs/compilerxx.sh
new file mode 100755
index 000000000..2b73248d3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas32_2e511m187_23limbs/feadd.v b/src/Specific/solinas32_2e511m187_23limbs/feadd.v
new file mode 100644
index 000000000..abcde5034
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/feaddDisplay.v b/src/Specific/solinas32_2e511m187_23limbs/feaddDisplay.v
new file mode 100644
index 000000000..785bd0373
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/femul.v b/src/Specific/solinas32_2e511m187_23limbs/femul.v
new file mode 100644
index 000000000..7ab057ece
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/femulDisplay.v b/src/Specific/solinas32_2e511m187_23limbs/femulDisplay.v
new file mode 100644
index 000000000..48b2db1cb
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/fesquare.v b/src/Specific/solinas32_2e511m187_23limbs/fesquare.v
new file mode 100644
index 000000000..d60704062
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/fesquareDisplay.v b/src/Specific/solinas32_2e511m187_23limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e85e7f0fd
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/fesub.v b/src/Specific/solinas32_2e511m187_23limbs/fesub.v
new file mode 100644
index 000000000..b8d52e6e9
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/fesubDisplay.v b/src/Specific/solinas32_2e511m187_23limbs/fesubDisplay.v
new file mode 100644
index 000000000..466b081ab
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/freeze.v b/src/Specific/solinas32_2e511m187_23limbs/freeze.v
new file mode 100644
index 000000000..ac9bcfe5c
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/freezeDisplay.v b/src/Specific/solinas32_2e511m187_23limbs/freezeDisplay.v
new file mode 100644
index 000000000..19b4b09e9
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m187_23limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e511m187_23limbs/py_interpreter.sh b/src/Specific/solinas32_2e511m187_23limbs/py_interpreter.sh
new file mode 100755
index 000000000..a1d2975d2
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_23limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 187' -Dmodulus_bytes='22 + 5/23' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m481/CurveParameters.v b/src/Specific/solinas32_2e511m481/CurveParameters.v
deleted file mode 100644
index d7640365d..000000000
--- a/src/Specific/solinas32_2e511m481/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^511 - 481
-Base: 18.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 28%nat;
- base := 18 + 1/4;
- bitwidth := 32;
- s := 2^511;
- c := [(1, 481)];
- carry_chains := Some [seq 0 (pred 28); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m481/Synthesis.v b/src/Specific/solinas32_2e511m481/Synthesis.v
deleted file mode 100644
index 232591803..000000000
--- a/src/Specific/solinas32_2e511m481/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e511m481.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m481/compiler.sh b/src/Specific/solinas32_2e511m481/compiler.sh
deleted file mode 100755
index 8d50ac6fb..000000000
--- a/src/Specific/solinas32_2e511m481/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='28' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481/compilerxx.sh b/src/Specific/solinas32_2e511m481/compilerxx.sh
deleted file mode 100755
index 04bcf3a2f..000000000
--- a/src/Specific/solinas32_2e511m481/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18,19,18,18,18}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='28' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481/feadd.v b/src/Specific/solinas32_2e511m481/feadd.v
deleted file mode 100644
index 9267daa19..000000000
--- a/src/Specific/solinas32_2e511m481/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m481/feaddDisplay.v b/src/Specific/solinas32_2e511m481/feaddDisplay.v
deleted file mode 100644
index 201fbac74..000000000
--- a/src/Specific/solinas32_2e511m481/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m481.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e511m481/femul.v b/src/Specific/solinas32_2e511m481/femul.v
deleted file mode 100644
index 758204a90..000000000
--- a/src/Specific/solinas32_2e511m481/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m481/femulDisplay.v b/src/Specific/solinas32_2e511m481/femulDisplay.v
deleted file mode 100644
index 4b852f3c2..000000000
--- a/src/Specific/solinas32_2e511m481/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m481.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e511m481/fesquare.v b/src/Specific/solinas32_2e511m481/fesquare.v
deleted file mode 100644
index a578f838a..000000000
--- a/src/Specific/solinas32_2e511m481/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m481/fesquareDisplay.v b/src/Specific/solinas32_2e511m481/fesquareDisplay.v
deleted file mode 100644
index 538facd42..000000000
--- a/src/Specific/solinas32_2e511m481/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m481.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e511m481/fesub.v b/src/Specific/solinas32_2e511m481/fesub.v
deleted file mode 100644
index 037fb98a6..000000000
--- a/src/Specific/solinas32_2e511m481/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m481/fesubDisplay.v b/src/Specific/solinas32_2e511m481/fesubDisplay.v
deleted file mode 100644
index 519cc4a6c..000000000
--- a/src/Specific/solinas32_2e511m481/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m481.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e511m481/freeze.c b/src/Specific/solinas32_2e511m481/freeze.c
deleted file mode 100644
index 81a60fae1..000000000
--- a/src/Specific/solinas32_2e511m481/freeze.c
+++ /dev/null
@@ -1,144 +0,0 @@
-static void freeze(uint32_t out[28], const uint32_t in1[28]) {
- { const uint32_t x53 = in1[27];
- { const uint32_t x54 = in1[26];
- { const uint32_t x52 = in1[25];
- { const uint32_t x50 = in1[24];
- { const uint32_t x48 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fe1f);
- { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x4, 0x3ffff);
- { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x6, 0x3ffff);
- { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x8, 0x3ffff);
- { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x10, 0x7ffff);
- { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x12, 0x3ffff);
- { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x14, 0x3ffff);
- { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x16, 0x3ffff);
- { uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x18, 0x7ffff);
- { uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x20, 0x3ffff);
- { uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x22, 0x3ffff);
- { uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x24, 0x3ffff);
- { uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x26, 0x7ffff);
- { uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x28, 0x3ffff);
- { uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x30, 0x3ffff);
- { uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x32, 0x3ffff);
- { uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x34, 0x7ffff);
- { uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x36, 0x3ffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x38, 0x3ffff);
- { uint32_t x113, uint8_t x114 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x40, 0x3ffff);
- { uint32_t x116, uint8_t x117 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x42, 0x7ffff);
- { uint32_t x119, uint8_t x120 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x44, 0x3ffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x46, 0x3ffff);
- { uint32_t x125, uint8_t x126 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x48, 0x3ffff);
- { uint32_t x128, uint8_t x129 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x50, 0x7ffff);
- { uint32_t x131, uint8_t x132 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x52, 0x3ffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x54, 0x3ffff);
- { uint32_t x137, uint8_t x138 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x53, 0x3ffff);
- { uint32_t x139 = cmovznz32(x138, 0x0, 0xffffffff);
- { uint32_t x140 = (x139 & 0x7fe1f);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x56, Return x140);
- { uint32_t x144 = (x139 & 0x3ffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x59, Return x144);
- { uint32_t x148 = (x139 & 0x3ffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x62, Return x148);
- { uint32_t x152 = (x139 & 0x3ffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x65, Return x152);
- { uint32_t x156 = (x139 & 0x7ffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x68, Return x156);
- { uint32_t x160 = (x139 & 0x3ffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x71, Return x160);
- { uint32_t x164 = (x139 & 0x3ffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x74, Return x164);
- { uint32_t x168 = (x139 & 0x3ffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x77, Return x168);
- { uint32_t x172 = (x139 & 0x7ffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x80, Return x172);
- { uint32_t x176 = (x139 & 0x3ffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x83, Return x176);
- { uint32_t x180 = (x139 & 0x3ffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x86, Return x180);
- { uint32_t x184 = (x139 & 0x3ffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x89, Return x184);
- { uint32_t x188 = (x139 & 0x7ffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x92, Return x188);
- { uint32_t x192 = (x139 & 0x3ffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x95, Return x192);
- { uint32_t x196 = (x139 & 0x3ffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x98, Return x196);
- { uint32_t x200 = (x139 & 0x3ffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x101, Return x200);
- { uint32_t x204 = (x139 & 0x7ffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x104, Return x204);
- { uint32_t x208 = (x139 & 0x3ffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x107, Return x208);
- { uint32_t x212 = (x139 & 0x3ffff);
- { uint32_t x214, uint8_t x215 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x110, Return x212);
- { uint32_t x216 = (x139 & 0x3ffff);
- { uint32_t x218, uint8_t x219 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x215, Return x113, Return x216);
- { uint32_t x220 = (x139 & 0x7ffff);
- { uint32_t x222, uint8_t x223 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x219, Return x116, Return x220);
- { uint32_t x224 = (x139 & 0x3ffff);
- { uint32_t x226, uint8_t x227 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x223, Return x119, Return x224);
- { uint32_t x228 = (x139 & 0x3ffff);
- { uint32_t x230, uint8_t x231 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x227, Return x122, Return x228);
- { uint32_t x232 = (x139 & 0x3ffff);
- { uint32_t x234, uint8_t x235 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x231, Return x125, Return x232);
- { uint32_t x236 = (x139 & 0x7ffff);
- { uint32_t x238, uint8_t x239 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x235, Return x128, Return x236);
- { uint32_t x240 = (x139 & 0x3ffff);
- { uint32_t x242, uint8_t x243 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x239, Return x131, Return x240);
- { uint32_t x244 = (x139 & 0x3ffff);
- { uint32_t x246, uint8_t x247 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x243, Return x134, Return x244);
- { uint32_t x248 = (x139 & 0x3ffff);
- { uint32_t x250, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x247, Return x137, Return x248);
- out[0] = x142;
- out[1] = x146;
- out[2] = x150;
- out[3] = x154;
- out[4] = x158;
- out[5] = x162;
- out[6] = x166;
- out[7] = x170;
- out[8] = x174;
- out[9] = x178;
- out[10] = x182;
- out[11] = x186;
- out[12] = x190;
- out[13] = x194;
- out[14] = x198;
- out[15] = x202;
- out[16] = x206;
- out[17] = x210;
- out[18] = x214;
- out[19] = x218;
- out[20] = x222;
- out[21] = x226;
- out[22] = x230;
- out[23] = x234;
- out[24] = x238;
- out[25] = x242;
- out[26] = x246;
- out[27] = x250;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e511m481/freeze.v b/src/Specific/solinas32_2e511m481/freeze.v
deleted file mode 100644
index acf407f65..000000000
--- a/src/Specific/solinas32_2e511m481/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m481/freezeDisplay.log b/src/Specific/solinas32_2e511m481/freezeDisplay.log
deleted file mode 100644
index b937cbf6a..000000000
--- a/src/Specific/solinas32_2e511m481/freezeDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x53, x54, x52, x50, x48, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fe1f);
- uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x4, 0x3ffff);
- uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x6, 0x3ffff);
- uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x8, 0x3ffff);
- uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x10, 0x7ffff);
- uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x12, 0x3ffff);
- uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x14, 0x3ffff);
- uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x16, 0x3ffff);
- uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x18, 0x7ffff);
- uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x20, 0x3ffff);
- uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x22, 0x3ffff);
- uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x24, 0x3ffff);
- uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x26, 0x7ffff);
- uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x28, 0x3ffff);
- uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x30, 0x3ffff);
- uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x32, 0x3ffff);
- uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x34, 0x7ffff);
- uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x36, 0x3ffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x38, 0x3ffff);
- uint32_t x113, uint8_t x114 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x40, 0x3ffff);
- uint32_t x116, uint8_t x117 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x42, 0x7ffff);
- uint32_t x119, uint8_t x120 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x44, 0x3ffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x46, 0x3ffff);
- uint32_t x125, uint8_t x126 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x48, 0x3ffff);
- uint32_t x128, uint8_t x129 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x50, 0x7ffff);
- uint32_t x131, uint8_t x132 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x52, 0x3ffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x54, 0x3ffff);
- uint32_t x137, uint8_t x138 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x53, 0x3ffff);
- uint32_t x139 = cmovznz32(x138, 0x0, 0xffffffff);
- uint32_t x140 = (x139 & 0x7fe1f);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x56, Return x140);
- uint32_t x144 = (x139 & 0x3ffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x59, Return x144);
- uint32_t x148 = (x139 & 0x3ffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x62, Return x148);
- uint32_t x152 = (x139 & 0x3ffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x65, Return x152);
- uint32_t x156 = (x139 & 0x7ffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x68, Return x156);
- uint32_t x160 = (x139 & 0x3ffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x71, Return x160);
- uint32_t x164 = (x139 & 0x3ffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x74, Return x164);
- uint32_t x168 = (x139 & 0x3ffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x77, Return x168);
- uint32_t x172 = (x139 & 0x7ffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x80, Return x172);
- uint32_t x176 = (x139 & 0x3ffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x83, Return x176);
- uint32_t x180 = (x139 & 0x3ffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x86, Return x180);
- uint32_t x184 = (x139 & 0x3ffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x89, Return x184);
- uint32_t x188 = (x139 & 0x7ffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x92, Return x188);
- uint32_t x192 = (x139 & 0x3ffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x95, Return x192);
- uint32_t x196 = (x139 & 0x3ffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x98, Return x196);
- uint32_t x200 = (x139 & 0x3ffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x101, Return x200);
- uint32_t x204 = (x139 & 0x7ffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x104, Return x204);
- uint32_t x208 = (x139 & 0x3ffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x107, Return x208);
- uint32_t x212 = (x139 & 0x3ffff);
- uint32_t x214, uint8_t x215 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x110, Return x212);
- uint32_t x216 = (x139 & 0x3ffff);
- uint32_t x218, uint8_t x219 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x215, Return x113, Return x216);
- uint32_t x220 = (x139 & 0x7ffff);
- uint32_t x222, uint8_t x223 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x219, Return x116, Return x220);
- uint32_t x224 = (x139 & 0x3ffff);
- uint32_t x226, uint8_t x227 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x223, Return x119, Return x224);
- uint32_t x228 = (x139 & 0x3ffff);
- uint32_t x230, uint8_t x231 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x227, Return x122, Return x228);
- uint32_t x232 = (x139 & 0x3ffff);
- uint32_t x234, uint8_t x235 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x231, Return x125, Return x232);
- uint32_t x236 = (x139 & 0x7ffff);
- uint32_t x238, uint8_t x239 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x235, Return x128, Return x236);
- uint32_t x240 = (x139 & 0x3ffff);
- uint32_t x242, uint8_t x243 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x239, Return x131, Return x240);
- uint32_t x244 = (x139 & 0x3ffff);
- uint32_t x246, uint8_t x247 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x243, Return x134, Return x244);
- uint32_t x248 = (x139 & 0x3ffff);
- uint32_t x250, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x247, Return x137, Return x248);
- (Return x250, Return x246, Return x242, Return x238, Return x234, Return x230, Return x226, Return x222, Return x218, Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m481/freezeDisplay.v b/src/Specific/solinas32_2e511m481/freezeDisplay.v
deleted file mode 100644
index 2a55bd9f1..000000000
--- a/src/Specific/solinas32_2e511m481/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e511m481.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e511m481/py_interpreter.sh b/src/Specific/solinas32_2e511m481/py_interpreter.sh
deleted file mode 100755
index d872c46f5..000000000
--- a/src/Specific/solinas32_2e511m481/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**511 - 481' -Dmodulus_bytes='18.25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m481_23limbs/CurveParameters.v b/src/Specific/solinas32_2e511m481_23limbs/CurveParameters.v
new file mode 100644
index 000000000..2279e611b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 481
+Base: 22 + 5/23
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 23%nat;
+ base := 22 + 5/23;
+ bitwidth := 32;
+ s := 2^511;
+ c := [(1, 481)];
+ carry_chains := Some [seq 0 (pred 23); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/Synthesis.v b/src/Specific/solinas32_2e511m481_23limbs/Synthesis.v
new file mode 100644
index 000000000..efe1e8bce
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/compiler.sh b/src/Specific/solinas32_2e511m481_23limbs/compiler.sh
new file mode 100755
index 000000000..ab653e0d1
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481_23limbs/compilerxx.sh b/src/Specific/solinas32_2e511m481_23limbs/compilerxx.sh
new file mode 100755
index 000000000..ed1ad2d7c
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{23,22,22,22,23,22,22,22,22,23,22,22,22,23,22,22,22,22,23,22,22,22,22}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='23' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481_23limbs/feadd.v b/src/Specific/solinas32_2e511m481_23limbs/feadd.v
new file mode 100644
index 000000000..b09d5b4fe
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/feaddDisplay.v b/src/Specific/solinas32_2e511m481_23limbs/feaddDisplay.v
new file mode 100644
index 000000000..035721b49
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/femul.v b/src/Specific/solinas32_2e511m481_23limbs/femul.v
new file mode 100644
index 000000000..4d9d6762a
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/femulDisplay.v b/src/Specific/solinas32_2e511m481_23limbs/femulDisplay.v
new file mode 100644
index 000000000..b64e2f0ac
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/fesquare.v b/src/Specific/solinas32_2e511m481_23limbs/fesquare.v
new file mode 100644
index 000000000..453b4bac6
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/fesquareDisplay.v b/src/Specific/solinas32_2e511m481_23limbs/fesquareDisplay.v
new file mode 100644
index 000000000..36824d5af
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/fesub.v b/src/Specific/solinas32_2e511m481_23limbs/fesub.v
new file mode 100644
index 000000000..d168af4b3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/fesubDisplay.v b/src/Specific/solinas32_2e511m481_23limbs/fesubDisplay.v
new file mode 100644
index 000000000..f1c244b04
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/freeze.v b/src/Specific/solinas32_2e511m481_23limbs/freeze.v
new file mode 100644
index 000000000..006b005d8
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/freezeDisplay.v b/src/Specific/solinas32_2e511m481_23limbs/freezeDisplay.v
new file mode 100644
index 000000000..92188dcbe
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_23limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e511m481_23limbs/py_interpreter.sh b/src/Specific/solinas32_2e511m481_23limbs/py_interpreter.sh
new file mode 100755
index 000000000..f56ac3492
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_23limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 481' -Dmodulus_bytes='22 + 5/23' -Da24='121665'
diff --git a/src/Specific/solinas32_2e511m481_24limbs/CurveParameters.v b/src/Specific/solinas32_2e511m481_24limbs/CurveParameters.v
new file mode 100644
index 000000000..a30f9f608
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 481
+Base: 21 + 7/24
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 24%nat;
+ base := 21 + 7/24;
+ bitwidth := 32;
+ s := 2^511;
+ c := [(1, 481)];
+ carry_chains := Some [seq 0 (pred 24); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/Synthesis.v b/src/Specific/solinas32_2e511m481_24limbs/Synthesis.v
new file mode 100644
index 000000000..4063d289d
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/compiler.sh b/src/Specific/solinas32_2e511m481_24limbs/compiler.sh
new file mode 100755
index 000000000..ac7dac5b6
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481_24limbs/compilerxx.sh b/src/Specific/solinas32_2e511m481_24limbs/compilerxx.sh
new file mode 100755
index 000000000..1ebd5c99a
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21,22,21,21,22,21,21,21}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas32_2e511m481_24limbs/feadd.v b/src/Specific/solinas32_2e511m481_24limbs/feadd.v
new file mode 100644
index 000000000..d67400ba4
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/feaddDisplay.v b/src/Specific/solinas32_2e511m481_24limbs/feaddDisplay.v
new file mode 100644
index 000000000..0f9d72b8b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/femul.v b/src/Specific/solinas32_2e511m481_24limbs/femul.v
new file mode 100644
index 000000000..6eb722bd3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/femulDisplay.v b/src/Specific/solinas32_2e511m481_24limbs/femulDisplay.v
new file mode 100644
index 000000000..04377712c
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/fesquare.v b/src/Specific/solinas32_2e511m481_24limbs/fesquare.v
new file mode 100644
index 000000000..3bbcd6344
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/fesquareDisplay.v b/src/Specific/solinas32_2e511m481_24limbs/fesquareDisplay.v
new file mode 100644
index 000000000..89388dd05
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/fesub.v b/src/Specific/solinas32_2e511m481_24limbs/fesub.v
new file mode 100644
index 000000000..07625eb6b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/fesubDisplay.v b/src/Specific/solinas32_2e511m481_24limbs/fesubDisplay.v
new file mode 100644
index 000000000..605ff19b6
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/freeze.v b/src/Specific/solinas32_2e511m481_24limbs/freeze.v
new file mode 100644
index 000000000..72dc11d57
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/freezeDisplay.v b/src/Specific/solinas32_2e511m481_24limbs/freezeDisplay.v
new file mode 100644
index 000000000..ca9e9bbec
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e511m481_24limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e511m481_24limbs/py_interpreter.sh b/src/Specific/solinas32_2e511m481_24limbs/py_interpreter.sh
new file mode 100755
index 000000000..82064f834
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481_24limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 481' -Dmodulus_bytes='21 + 7/24' -Da24='121665'
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/CurveParameters.v b/src/Specific/solinas32_2e512m491x2e496m1/CurveParameters.v
deleted file mode 100644
index a8f2f3ed5..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^512 - 491*2^496 - 1
-Base: 21 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 24%nat;
- base := 21 + 1/3;
- bitwidth := 32;
- s := 2^512;
- c := [(1, 1); (491, 2^496)];
- carry_chains := Some [[22; 23]; [23; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22]; [23; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/Synthesis.v b/src/Specific/solinas32_2e512m491x2e496m1/Synthesis.v
deleted file mode 100644
index 10b75e690..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/compiler.sh b/src/Specific/solinas32_2e512m491x2e496m1/compiler.sh
deleted file mode 100755
index cb4378980..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/compilerxx.sh b/src/Specific/solinas32_2e512m491x2e496m1/compilerxx.sh
deleted file mode 100755
index 61b860cdc..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21,22,21,21}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='24' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/feadd.c b/src/Specific/solinas32_2e512m491x2e496m1/feadd.c
deleted file mode 100644
index 115132981..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/feadd.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void feadd(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = (x5 + x51);
- out[1] = (x7 + x53);
- out[2] = (x9 + x55);
- out[3] = (x11 + x57);
- out[4] = (x13 + x59);
- out[5] = (x15 + x61);
- out[6] = (x17 + x63);
- out[7] = (x19 + x65);
- out[8] = (x21 + x67);
- out[9] = (x23 + x69);
- out[10] = (x25 + x71);
- out[11] = (x27 + x73);
- out[12] = (x29 + x75);
- out[13] = (x31 + x77);
- out[14] = (x33 + x79);
- out[15] = (x35 + x81);
- out[16] = (x37 + x83);
- out[17] = (x39 + x85);
- out[18] = (x41 + x87);
- out[19] = (x43 + x89);
- out[20] = (x45 + x91);
- out[21] = (x47 + x93);
- out[22] = (x49 + x95);
- out[23] = (x48 + x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/feadd.v b/src/Specific/solinas32_2e512m491x2e496m1/feadd.v
deleted file mode 100644
index 488a210ca..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.log b/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.log
deleted file mode 100644
index 8ec776f44..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- ((x48 + x94), (x49 + x95), (x47 + x93), (x45 + x91), (x43 + x89), (x41 + x87), (x39 + x85), (x37 + x83), (x35 + x81), (x33 + x79), (x31 + x77), (x29 + x75), (x27 + x73), (x25 + x71), (x23 + x69), (x21 + x67), (x19 + x65), (x17 + x63), (x15 + x61), (x13 + x59), (x11 + x57), (x9 + x55), (x7 + x53), (x5 + x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.v b/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.v
deleted file mode 100644
index 770a0306e..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/femul.v b/src/Specific/solinas32_2e512m491x2e496m1/femul.v
deleted file mode 100644
index e56bf9e4a..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/femulDisplay.v b/src/Specific/solinas32_2e512m491x2e496m1/femulDisplay.v
deleted file mode 100644
index 43019f5e0..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesquare.v b/src/Specific/solinas32_2e512m491x2e496m1/fesquare.v
deleted file mode 100644
index 8b8b2c229..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesquareDisplay.v b/src/Specific/solinas32_2e512m491x2e496m1/fesquareDisplay.v
deleted file mode 100644
index 509baa545..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesub.c b/src/Specific/solinas32_2e512m491x2e496m1/fesub.c
deleted file mode 100644
index b8728068e..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesub.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void fesub(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = ((0x7ffffe + x5) - x51);
- out[1] = ((0x3ffffe + x7) - x53);
- out[2] = ((0x3ffffe + x9) - x55);
- out[3] = ((0x7ffffe + x11) - x57);
- out[4] = ((0x3ffffe + x13) - x59);
- out[5] = ((0x3ffffe + x15) - x61);
- out[6] = ((0x7ffffe + x17) - x63);
- out[7] = ((0x3ffffe + x19) - x65);
- out[8] = ((0x3ffffe + x21) - x67);
- out[9] = ((0x7ffffe + x23) - x69);
- out[10] = ((0x3ffffe + x25) - x71);
- out[11] = ((0x3ffffe + x27) - x73);
- out[12] = ((0x7ffffe + x29) - x75);
- out[13] = ((0x3ffffe + x31) - x77);
- out[14] = ((0x3ffffe + x33) - x79);
- out[15] = ((0x7ffffe + x35) - x81);
- out[16] = ((0x3ffffe + x37) - x83);
- out[17] = ((0x3ffffe + x39) - x85);
- out[18] = ((0x7ffffe + x41) - x87);
- out[19] = ((0x3ffffe + x43) - x89);
- out[20] = ((0x3ffffe + x45) - x91);
- out[21] = ((0x7ffffe + x47) - x93);
- out[22] = ((0x3ffffe + x49) - x95);
- out[23] = ((0x3f853e + x48) - x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesub.v b/src/Specific/solinas32_2e512m491x2e496m1/fesub.v
deleted file mode 100644
index fe5cbe4f8..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.log b/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.log
deleted file mode 100644
index 70d35506c..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- (((0x3f853e + x48) - x94), ((0x3ffffe + x49) - x95), ((0x7ffffe + x47) - x93), ((0x3ffffe + x45) - x91), ((0x3ffffe + x43) - x89), ((0x7ffffe + x41) - x87), ((0x3ffffe + x39) - x85), ((0x3ffffe + x37) - x83), ((0x7ffffe + x35) - x81), ((0x3ffffe + x33) - x79), ((0x3ffffe + x31) - x77), ((0x7ffffe + x29) - x75), ((0x3ffffe + x27) - x73), ((0x3ffffe + x25) - x71), ((0x7ffffe + x23) - x69), ((0x3ffffe + x21) - x67), ((0x3ffffe + x19) - x65), ((0x7ffffe + x17) - x63), ((0x3ffffe + x15) - x61), ((0x3ffffe + x13) - x59), ((0x7ffffe + x11) - x57), ((0x3ffffe + x9) - x55), ((0x3ffffe + x7) - x53), ((0x7ffffe + x5) - x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.v b/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.v
deleted file mode 100644
index b9336857e..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freeze.c b/src/Specific/solinas32_2e512m491x2e496m1/freeze.c
deleted file mode 100644
index fe6196972..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/freeze.c
+++ /dev/null
@@ -1,124 +0,0 @@
-static void freeze(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x1fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x3fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x1fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x3fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x3fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x1fffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x3fffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fc29f);
- { uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- { uint32_t x120 = (x119 & 0x3fffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- { uint32_t x124 = (x119 & 0x1fffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- { uint32_t x128 = (x119 & 0x1fffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- { uint32_t x132 = (x119 & 0x3fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- { uint32_t x136 = (x119 & 0x1fffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- { uint32_t x140 = (x119 & 0x1fffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- { uint32_t x144 = (x119 & 0x3fffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- { uint32_t x148 = (x119 & 0x1fffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- { uint32_t x152 = (x119 & 0x1fffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- { uint32_t x156 = (x119 & 0x3fffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- { uint32_t x160 = (x119 & 0x1fffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- { uint32_t x164 = (x119 & 0x1fffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- { uint32_t x168 = (x119 & 0x3fffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- { uint32_t x172 = (x119 & 0x1fffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- { uint32_t x176 = (x119 & 0x1fffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- { uint32_t x180 = (x119 & 0x3fffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- { uint32_t x184 = (x119 & 0x1fffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- { uint32_t x188 = (x119 & 0x1fffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- { uint32_t x192 = (x119 & 0x3fffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- { uint32_t x196 = (x119 & 0x1fffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- { uint32_t x200 = (x119 & 0x1fffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- { uint32_t x204 = (x119 & 0x3fffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- { uint32_t x208 = (x119 & 0x1fffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- { uint32_t x212 = (x119 & 0x1fc29f);
- { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- out[0] = x122;
- out[1] = x126;
- out[2] = x130;
- out[3] = x134;
- out[4] = x138;
- out[5] = x142;
- out[6] = x146;
- out[7] = x150;
- out[8] = x154;
- out[9] = x158;
- out[10] = x162;
- out[11] = x166;
- out[12] = x170;
- out[13] = x174;
- out[14] = x178;
- out[15] = x182;
- out[16] = x186;
- out[17] = x190;
- out[18] = x194;
- out[19] = x198;
- out[20] = x202;
- out[21] = x206;
- out[22] = x210;
- out[23] = x214;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freeze.v b/src/Specific/solinas32_2e512m491x2e496m1/freeze.v
deleted file mode 100644
index 09931ac84..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log b/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log
deleted file mode 100644
index 147f52faa..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log
+++ /dev/null
@@ -1,80 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x1fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x3fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x1fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x3fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x3fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x1fffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x3fffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fc29f);
- uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- uint32_t x120 = (x119 & 0x3fffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- uint32_t x124 = (x119 & 0x1fffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- uint32_t x128 = (x119 & 0x1fffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- uint32_t x132 = (x119 & 0x3fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- uint32_t x136 = (x119 & 0x1fffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- uint32_t x140 = (x119 & 0x1fffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- uint32_t x144 = (x119 & 0x3fffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- uint32_t x148 = (x119 & 0x1fffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- uint32_t x152 = (x119 & 0x1fffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- uint32_t x156 = (x119 & 0x3fffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- uint32_t x160 = (x119 & 0x1fffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- uint32_t x164 = (x119 & 0x1fffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- uint32_t x168 = (x119 & 0x3fffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- uint32_t x172 = (x119 & 0x1fffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- uint32_t x176 = (x119 & 0x1fffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- uint32_t x180 = (x119 & 0x3fffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- uint32_t x184 = (x119 & 0x1fffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- uint32_t x188 = (x119 & 0x1fffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- uint32_t x192 = (x119 & 0x3fffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- uint32_t x196 = (x119 & 0x1fffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- uint32_t x200 = (x119 & 0x1fffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- uint32_t x204 = (x119 & 0x3fffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- uint32_t x208 = (x119 & 0x1fffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & 0x1fc29f);
- uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- (Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.v b/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.v
deleted file mode 100644
index 9d681d7cf..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m491x2e496m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/py_interpreter.sh b/src/Specific/solinas32_2e512m491x2e496m1/py_interpreter.sh
deleted file mode 100755
index 84af7e025..000000000
--- a/src/Specific/solinas32_2e512m491x2e496m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**512 - 491*2**496 - 1' -Dmodulus_bytes='21 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas32_2e512m569/Synthesis.v b/src/Specific/solinas32_2e512m569/Synthesis.v
deleted file mode 100644
index 507054fc7..000000000
--- a/src/Specific/solinas32_2e512m569/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e512m569.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e512m569/feadd.c b/src/Specific/solinas32_2e512m569/feadd.c
deleted file mode 100644
index 115132981..000000000
--- a/src/Specific/solinas32_2e512m569/feadd.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void feadd(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = (x5 + x51);
- out[1] = (x7 + x53);
- out[2] = (x9 + x55);
- out[3] = (x11 + x57);
- out[4] = (x13 + x59);
- out[5] = (x15 + x61);
- out[6] = (x17 + x63);
- out[7] = (x19 + x65);
- out[8] = (x21 + x67);
- out[9] = (x23 + x69);
- out[10] = (x25 + x71);
- out[11] = (x27 + x73);
- out[12] = (x29 + x75);
- out[13] = (x31 + x77);
- out[14] = (x33 + x79);
- out[15] = (x35 + x81);
- out[16] = (x37 + x83);
- out[17] = (x39 + x85);
- out[18] = (x41 + x87);
- out[19] = (x43 + x89);
- out[20] = (x45 + x91);
- out[21] = (x47 + x93);
- out[22] = (x49 + x95);
- out[23] = (x48 + x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m569/feadd.v b/src/Specific/solinas32_2e512m569/feadd.v
deleted file mode 100644
index b2b1b772a..000000000
--- a/src/Specific/solinas32_2e512m569/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e512m569/feaddDisplay.log b/src/Specific/solinas32_2e512m569/feaddDisplay.log
deleted file mode 100644
index 8ec776f44..000000000
--- a/src/Specific/solinas32_2e512m569/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- ((x48 + x94), (x49 + x95), (x47 + x93), (x45 + x91), (x43 + x89), (x41 + x87), (x39 + x85), (x37 + x83), (x35 + x81), (x33 + x79), (x31 + x77), (x29 + x75), (x27 + x73), (x25 + x71), (x23 + x69), (x21 + x67), (x19 + x65), (x17 + x63), (x15 + x61), (x13 + x59), (x11 + x57), (x9 + x55), (x7 + x53), (x5 + x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m569/feaddDisplay.v b/src/Specific/solinas32_2e512m569/feaddDisplay.v
deleted file mode 100644
index 4c3c20be0..000000000
--- a/src/Specific/solinas32_2e512m569/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m569.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e512m569/femul.v b/src/Specific/solinas32_2e512m569/femul.v
deleted file mode 100644
index edcf687e9..000000000
--- a/src/Specific/solinas32_2e512m569/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e512m569/femulDisplay.v b/src/Specific/solinas32_2e512m569/femulDisplay.v
deleted file mode 100644
index 5d0671727..000000000
--- a/src/Specific/solinas32_2e512m569/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m569.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e512m569/fesquare.c b/src/Specific/solinas32_2e512m569/fesquare.c
deleted file mode 100644
index e1d0ea01d..000000000
--- a/src/Specific/solinas32_2e512m569/fesquare.c
+++ /dev/null
@@ -1,152 +0,0 @@
-static void fesquare(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x239 * ((uint64_t)x45 * x45)));
- { uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
- { uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x239 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
- { uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x239 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
- { uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
- { uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x239 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
- { uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x239 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
- { uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
- { uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x239 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
- { uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x239 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
- { uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
- { uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x239 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
- { uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x239 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
- { uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x239 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
- { uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x239 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
- { uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x239 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
- { uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x239 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
- { uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x239 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
- { uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x239 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
- { uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x239 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
- { uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x239 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
- { uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x239 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
- { uint64_t x70 = (((uint64_t)x2 * x2) + (0x239 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
- { uint64_t x71 = (x70 >> 0x16);
- { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- { uint64_t x73 = (x71 + x69);
- { uint64_t x74 = (x73 >> 0x15);
- { uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- { uint64_t x76 = (x74 + x68);
- { uint64_t x77 = (x76 >> 0x15);
- { uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- { uint64_t x79 = (x77 + x67);
- { uint64_t x80 = (x79 >> 0x16);
- { uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- { uint64_t x82 = (x80 + x66);
- { uint64_t x83 = (x82 >> 0x15);
- { uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- { uint64_t x85 = (x83 + x65);
- { uint64_t x86 = (x85 >> 0x15);
- { uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- { uint64_t x88 = (x86 + x64);
- { uint64_t x89 = (x88 >> 0x16);
- { uint32_t x90 = ((uint32_t)x88 & 0x3fffff);
- { uint64_t x91 = (x89 + x63);
- { uint64_t x92 = (x91 >> 0x15);
- { uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- { uint64_t x94 = (x92 + x62);
- { uint64_t x95 = (x94 >> 0x15);
- { uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- { uint64_t x97 = (x95 + x61);
- { uint64_t x98 = (x97 >> 0x16);
- { uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- { uint64_t x100 = (x98 + x60);
- { uint64_t x101 = (x100 >> 0x15);
- { uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- { uint64_t x103 = (x101 + x59);
- { uint64_t x104 = (x103 >> 0x15);
- { uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- { uint64_t x106 = (x104 + x58);
- { uint64_t x107 = (x106 >> 0x16);
- { uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- { uint64_t x109 = (x107 + x57);
- { uint64_t x110 = (x109 >> 0x15);
- { uint32_t x111 = ((uint32_t)x109 & 0x1fffff);
- { uint64_t x112 = (x110 + x56);
- { uint64_t x113 = (x112 >> 0x15);
- { uint32_t x114 = ((uint32_t)x112 & 0x1fffff);
- { uint64_t x115 = (x113 + x55);
- { uint64_t x116 = (x115 >> 0x16);
- { uint32_t x117 = ((uint32_t)x115 & 0x3fffff);
- { uint64_t x118 = (x116 + x54);
- { uint64_t x119 = (x118 >> 0x15);
- { uint32_t x120 = ((uint32_t)x118 & 0x1fffff);
- { uint64_t x121 = (x119 + x53);
- { uint64_t x122 = (x121 >> 0x15);
- { uint32_t x123 = ((uint32_t)x121 & 0x1fffff);
- { uint64_t x124 = (x122 + x52);
- { uint64_t x125 = (x124 >> 0x16);
- { uint32_t x126 = ((uint32_t)x124 & 0x3fffff);
- { uint64_t x127 = (x125 + x51);
- { uint64_t x128 = (x127 >> 0x15);
- { uint32_t x129 = ((uint32_t)x127 & 0x1fffff);
- { uint64_t x130 = (x128 + x50);
- { uint64_t x131 = (x130 >> 0x15);
- { uint32_t x132 = ((uint32_t)x130 & 0x1fffff);
- { uint64_t x133 = (x131 + x49);
- { uint64_t x134 = (x133 >> 0x16);
- { uint32_t x135 = ((uint32_t)x133 & 0x3fffff);
- { uint64_t x136 = (x134 + x48);
- { uint64_t x137 = (x136 >> 0x15);
- { uint32_t x138 = ((uint32_t)x136 & 0x1fffff);
- { uint64_t x139 = (x137 + x47);
- { uint32_t x140 = (uint32_t) (x139 >> 0x15);
- { uint32_t x141 = ((uint32_t)x139 & 0x1fffff);
- { uint64_t x142 = (x72 + ((uint64_t)0x239 * x140));
- { uint32_t x143 = (uint32_t) (x142 >> 0x16);
- { uint32_t x144 = ((uint32_t)x142 & 0x3fffff);
- { uint32_t x145 = (x143 + x75);
- { uint32_t x146 = (x145 >> 0x15);
- { uint32_t x147 = (x145 & 0x1fffff);
- out[0] = x144;
- out[1] = x147;
- out[2] = (x146 + x78);
- out[3] = x81;
- out[4] = x84;
- out[5] = x87;
- out[6] = x90;
- out[7] = x93;
- out[8] = x96;
- out[9] = x99;
- out[10] = x102;
- out[11] = x105;
- out[12] = x108;
- out[13] = x111;
- out[14] = x114;
- out[15] = x117;
- out[16] = x120;
- out[17] = x123;
- out[18] = x126;
- out[19] = x129;
- out[20] = x132;
- out[21] = x135;
- out[22] = x138;
- out[23] = x141;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m569/fesquare.v b/src/Specific/solinas32_2e512m569/fesquare.v
deleted file mode 100644
index be10c8011..000000000
--- a/src/Specific/solinas32_2e512m569/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e512m569/fesquareDisplay.log b/src/Specific/solinas32_2e512m569/fesquareDisplay.log
deleted file mode 100644
index a942ed88f..000000000
--- a/src/Specific/solinas32_2e512m569/fesquareDisplay.log
+++ /dev/null
@@ -1,108 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
- uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x239 * ((uint64_t)x45 * x45)));
- uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
- uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x239 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
- uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x239 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
- uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
- uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x239 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
- uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x239 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
- uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
- uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x239 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
- uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x239 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
- uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
- uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x239 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
- uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x239 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
- uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x239 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
- uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x239 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
- uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x239 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
- uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x239 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
- uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x239 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
- uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x239 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
- uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x239 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
- uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x239 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
- uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x239 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
- uint64_t x70 = (((uint64_t)x2 * x2) + (0x239 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
- uint64_t x71 = (x70 >> 0x16);
- uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
- uint64_t x73 = (x71 + x69);
- uint64_t x74 = (x73 >> 0x15);
- uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
- uint64_t x76 = (x74 + x68);
- uint64_t x77 = (x76 >> 0x15);
- uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
- uint64_t x79 = (x77 + x67);
- uint64_t x80 = (x79 >> 0x16);
- uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
- uint64_t x82 = (x80 + x66);
- uint64_t x83 = (x82 >> 0x15);
- uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
- uint64_t x85 = (x83 + x65);
- uint64_t x86 = (x85 >> 0x15);
- uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
- uint64_t x88 = (x86 + x64);
- uint64_t x89 = (x88 >> 0x16);
- uint32_t x90 = ((uint32_t)x88 & 0x3fffff);
- uint64_t x91 = (x89 + x63);
- uint64_t x92 = (x91 >> 0x15);
- uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
- uint64_t x94 = (x92 + x62);
- uint64_t x95 = (x94 >> 0x15);
- uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
- uint64_t x97 = (x95 + x61);
- uint64_t x98 = (x97 >> 0x16);
- uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
- uint64_t x100 = (x98 + x60);
- uint64_t x101 = (x100 >> 0x15);
- uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
- uint64_t x103 = (x101 + x59);
- uint64_t x104 = (x103 >> 0x15);
- uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
- uint64_t x106 = (x104 + x58);
- uint64_t x107 = (x106 >> 0x16);
- uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
- uint64_t x109 = (x107 + x57);
- uint64_t x110 = (x109 >> 0x15);
- uint32_t x111 = ((uint32_t)x109 & 0x1fffff);
- uint64_t x112 = (x110 + x56);
- uint64_t x113 = (x112 >> 0x15);
- uint32_t x114 = ((uint32_t)x112 & 0x1fffff);
- uint64_t x115 = (x113 + x55);
- uint64_t x116 = (x115 >> 0x16);
- uint32_t x117 = ((uint32_t)x115 & 0x3fffff);
- uint64_t x118 = (x116 + x54);
- uint64_t x119 = (x118 >> 0x15);
- uint32_t x120 = ((uint32_t)x118 & 0x1fffff);
- uint64_t x121 = (x119 + x53);
- uint64_t x122 = (x121 >> 0x15);
- uint32_t x123 = ((uint32_t)x121 & 0x1fffff);
- uint64_t x124 = (x122 + x52);
- uint64_t x125 = (x124 >> 0x16);
- uint32_t x126 = ((uint32_t)x124 & 0x3fffff);
- uint64_t x127 = (x125 + x51);
- uint64_t x128 = (x127 >> 0x15);
- uint32_t x129 = ((uint32_t)x127 & 0x1fffff);
- uint64_t x130 = (x128 + x50);
- uint64_t x131 = (x130 >> 0x15);
- uint32_t x132 = ((uint32_t)x130 & 0x1fffff);
- uint64_t x133 = (x131 + x49);
- uint64_t x134 = (x133 >> 0x16);
- uint32_t x135 = ((uint32_t)x133 & 0x3fffff);
- uint64_t x136 = (x134 + x48);
- uint64_t x137 = (x136 >> 0x15);
- uint32_t x138 = ((uint32_t)x136 & 0x1fffff);
- uint64_t x139 = (x137 + x47);
- uint32_t x140 = (uint32_t) (x139 >> 0x15);
- uint32_t x141 = ((uint32_t)x139 & 0x1fffff);
- uint64_t x142 = (x72 + ((uint64_t)0x239 * x140));
- uint32_t x143 = (uint32_t) (x142 >> 0x16);
- uint32_t x144 = ((uint32_t)x142 & 0x3fffff);
- uint32_t x145 = (x143 + x75);
- uint32_t x146 = (x145 >> 0x15);
- uint32_t x147 = (x145 & 0x1fffff);
- return (Return x141, Return x138, Return x135, Return x132, Return x129, Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, (x146 + x78), Return x147, Return x144))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m569/fesquareDisplay.v b/src/Specific/solinas32_2e512m569/fesquareDisplay.v
deleted file mode 100644
index 548291d5b..000000000
--- a/src/Specific/solinas32_2e512m569/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m569.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e512m569/fesub.c b/src/Specific/solinas32_2e512m569/fesub.c
deleted file mode 100644
index 3acb523c0..000000000
--- a/src/Specific/solinas32_2e512m569/fesub.c
+++ /dev/null
@@ -1,75 +0,0 @@
-static void fesub(uint32_t out[24], const uint32_t in1[24], const uint32_t in2[24]) {
- { const uint32_t x48 = in1[23];
- { const uint32_t x49 = in1[22];
- { const uint32_t x47 = in1[21];
- { const uint32_t x45 = in1[20];
- { const uint32_t x43 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x94 = in2[23];
- { const uint32_t x95 = in2[22];
- { const uint32_t x93 = in2[21];
- { const uint32_t x91 = in2[20];
- { const uint32_t x89 = in2[19];
- { const uint32_t x87 = in2[18];
- { const uint32_t x85 = in2[17];
- { const uint32_t x83 = in2[16];
- { const uint32_t x81 = in2[15];
- { const uint32_t x79 = in2[14];
- { const uint32_t x77 = in2[13];
- { const uint32_t x75 = in2[12];
- { const uint32_t x73 = in2[11];
- { const uint32_t x71 = in2[10];
- { const uint32_t x69 = in2[9];
- { const uint32_t x67 = in2[8];
- { const uint32_t x65 = in2[7];
- { const uint32_t x63 = in2[6];
- { const uint32_t x61 = in2[5];
- { const uint32_t x59 = in2[4];
- { const uint32_t x57 = in2[3];
- { const uint32_t x55 = in2[2];
- { const uint32_t x53 = in2[1];
- { const uint32_t x51 = in2[0];
- out[0] = ((0x7ffb8e + x5) - x51);
- out[1] = ((0x3ffffe + x7) - x53);
- out[2] = ((0x3ffffe + x9) - x55);
- out[3] = ((0x7ffffe + x11) - x57);
- out[4] = ((0x3ffffe + x13) - x59);
- out[5] = ((0x3ffffe + x15) - x61);
- out[6] = ((0x7ffffe + x17) - x63);
- out[7] = ((0x3ffffe + x19) - x65);
- out[8] = ((0x3ffffe + x21) - x67);
- out[9] = ((0x7ffffe + x23) - x69);
- out[10] = ((0x3ffffe + x25) - x71);
- out[11] = ((0x3ffffe + x27) - x73);
- out[12] = ((0x7ffffe + x29) - x75);
- out[13] = ((0x3ffffe + x31) - x77);
- out[14] = ((0x3ffffe + x33) - x79);
- out[15] = ((0x7ffffe + x35) - x81);
- out[16] = ((0x3ffffe + x37) - x83);
- out[17] = ((0x3ffffe + x39) - x85);
- out[18] = ((0x7ffffe + x41) - x87);
- out[19] = ((0x3ffffe + x43) - x89);
- out[20] = ((0x3ffffe + x45) - x91);
- out[21] = ((0x7ffffe + x47) - x93);
- out[22] = ((0x3ffffe + x49) - x95);
- out[23] = ((0x3ffffe + x48) - x94);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m569/fesub.v b/src/Specific/solinas32_2e512m569/fesub.v
deleted file mode 100644
index ca03b6a92..000000000
--- a/src/Specific/solinas32_2e512m569/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e512m569/fesubDisplay.log b/src/Specific/solinas32_2e512m569/fesubDisplay.log
deleted file mode 100644
index a92e47200..000000000
--- a/src/Specific/solinas32_2e512m569/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x48, x49, x47, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x94, x95, x93, x91, x89, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51))%core,
- (((0x3ffffe + x48) - x94), ((0x3ffffe + x49) - x95), ((0x7ffffe + x47) - x93), ((0x3ffffe + x45) - x91), ((0x3ffffe + x43) - x89), ((0x7ffffe + x41) - x87), ((0x3ffffe + x39) - x85), ((0x3ffffe + x37) - x83), ((0x7ffffe + x35) - x81), ((0x3ffffe + x33) - x79), ((0x3ffffe + x31) - x77), ((0x7ffffe + x29) - x75), ((0x3ffffe + x27) - x73), ((0x3ffffe + x25) - x71), ((0x7ffffe + x23) - x69), ((0x3ffffe + x21) - x67), ((0x3ffffe + x19) - x65), ((0x7ffffe + x17) - x63), ((0x3ffffe + x15) - x61), ((0x3ffffe + x13) - x59), ((0x7ffffe + x11) - x57), ((0x3ffffe + x9) - x55), ((0x3ffffe + x7) - x53), ((0x7ffb8e + x5) - x51)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m569/fesubDisplay.v b/src/Specific/solinas32_2e512m569/fesubDisplay.v
deleted file mode 100644
index 94e173fb5..000000000
--- a/src/Specific/solinas32_2e512m569/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m569.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e512m569/freeze.c b/src/Specific/solinas32_2e512m569/freeze.c
deleted file mode 100644
index a06bca255..000000000
--- a/src/Specific/solinas32_2e512m569/freeze.c
+++ /dev/null
@@ -1,124 +0,0 @@
-static void freeze(uint32_t out[24], const uint32_t in1[24]) {
- { const uint32_t x45 = in1[23];
- { const uint32_t x46 = in1[22];
- { const uint32_t x44 = in1[21];
- { const uint32_t x42 = in1[20];
- { const uint32_t x40 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffdc7);
- { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
- { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x1fffff);
- { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x3fffff);
- { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x1fffff);
- { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x3fffff);
- { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x3fffff);
- { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x1fffff);
- { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x3fffff);
- { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
- { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fffff);
- { uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- { uint32_t x120 = (x119 & 0x3ffdc7);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- { uint32_t x124 = (x119 & 0x1fffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- { uint32_t x128 = (x119 & 0x1fffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- { uint32_t x132 = (x119 & 0x3fffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- { uint32_t x136 = (x119 & 0x1fffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- { uint32_t x140 = (x119 & 0x1fffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- { uint32_t x144 = (x119 & 0x3fffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- { uint32_t x148 = (x119 & 0x1fffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- { uint32_t x152 = (x119 & 0x1fffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- { uint32_t x156 = (x119 & 0x3fffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- { uint32_t x160 = (x119 & 0x1fffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- { uint32_t x164 = (x119 & 0x1fffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- { uint32_t x168 = (x119 & 0x3fffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- { uint32_t x172 = (x119 & 0x1fffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- { uint32_t x176 = (x119 & 0x1fffff);
- { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- { uint32_t x180 = (x119 & 0x3fffff);
- { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- { uint32_t x184 = (x119 & 0x1fffff);
- { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- { uint32_t x188 = (x119 & 0x1fffff);
- { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- { uint32_t x192 = (x119 & 0x3fffff);
- { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- { uint32_t x196 = (x119 & 0x1fffff);
- { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- { uint32_t x200 = (x119 & 0x1fffff);
- { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- { uint32_t x204 = (x119 & 0x3fffff);
- { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- { uint32_t x208 = (x119 & 0x1fffff);
- { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- { uint32_t x212 = (x119 & 0x1fffff);
- { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- out[0] = x122;
- out[1] = x126;
- out[2] = x130;
- out[3] = x134;
- out[4] = x138;
- out[5] = x142;
- out[6] = x146;
- out[7] = x150;
- out[8] = x154;
- out[9] = x158;
- out[10] = x162;
- out[11] = x166;
- out[12] = x170;
- out[13] = x174;
- out[14] = x178;
- out[15] = x182;
- out[16] = x186;
- out[17] = x190;
- out[18] = x194;
- out[19] = x198;
- out[20] = x202;
- out[21] = x206;
- out[22] = x210;
- out[23] = x214;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e512m569/freeze.v b/src/Specific/solinas32_2e512m569/freeze.v
deleted file mode 100644
index 5dee7fae3..000000000
--- a/src/Specific/solinas32_2e512m569/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e512m569/freezeDisplay.log b/src/Specific/solinas32_2e512m569/freezeDisplay.log
deleted file mode 100644
index d3f60da16..000000000
--- a/src/Specific/solinas32_2e512m569/freezeDisplay.log
+++ /dev/null
@@ -1,80 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffdc7);
- uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
- uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
- uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x1fffff);
- uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
- uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x3fffff);
- uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
- uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x1fffff);
- uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x3fffff);
- uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
- uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
- uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
- uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
- uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
- uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x3fffff);
- uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x1fffff);
- uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x3fffff);
- uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
- uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
- uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fffff);
- uint32_t x119 = cmovznz32(x118, 0x0, 0xffffffff);
- uint32_t x120 = (x119 & 0x3ffdc7);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
- uint32_t x124 = (x119 & 0x1fffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
- uint32_t x128 = (x119 & 0x1fffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
- uint32_t x132 = (x119 & 0x3fffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
- uint32_t x136 = (x119 & 0x1fffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
- uint32_t x140 = (x119 & 0x1fffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
- uint32_t x144 = (x119 & 0x3fffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
- uint32_t x148 = (x119 & 0x1fffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
- uint32_t x152 = (x119 & 0x1fffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
- uint32_t x156 = (x119 & 0x3fffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
- uint32_t x160 = (x119 & 0x1fffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
- uint32_t x164 = (x119 & 0x1fffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
- uint32_t x168 = (x119 & 0x3fffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
- uint32_t x172 = (x119 & 0x1fffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
- uint32_t x176 = (x119 & 0x1fffff);
- uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
- uint32_t x180 = (x119 & 0x3fffff);
- uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
- uint32_t x184 = (x119 & 0x1fffff);
- uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
- uint32_t x188 = (x119 & 0x1fffff);
- uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
- uint32_t x192 = (x119 & 0x3fffff);
- uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
- uint32_t x196 = (x119 & 0x1fffff);
- uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
- uint32_t x200 = (x119 & 0x1fffff);
- uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
- uint32_t x204 = (x119 & 0x3fffff);
- uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
- uint32_t x208 = (x119 & 0x1fffff);
- uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & 0x1fffff);
- uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
- (Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e512m569/freezeDisplay.v b/src/Specific/solinas32_2e512m569/freezeDisplay.v
deleted file mode 100644
index b8af3964d..000000000
--- a/src/Specific/solinas32_2e512m569/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e512m569.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e512m569/CurveParameters.v b/src/Specific/solinas32_2e512m569_24limbs/CurveParameters.v
index e97a2dd47..e97a2dd47 100644
--- a/src/Specific/solinas32_2e512m569/CurveParameters.v
+++ b/src/Specific/solinas32_2e512m569_24limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e512m569_24limbs/Synthesis.v b/src/Specific/solinas32_2e512m569_24limbs/Synthesis.v
new file mode 100644
index 000000000..03a60089a
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e512m569/compiler.sh b/src/Specific/solinas32_2e512m569_24limbs/compiler.sh
index 348a0be4d..348a0be4d 100755
--- a/src/Specific/solinas32_2e512m569/compiler.sh
+++ b/src/Specific/solinas32_2e512m569_24limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e512m569/compilerxx.sh b/src/Specific/solinas32_2e512m569_24limbs/compilerxx.sh
index d1f0e6388..d1f0e6388 100755
--- a/src/Specific/solinas32_2e512m569/compilerxx.sh
+++ b/src/Specific/solinas32_2e512m569_24limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e512m569_24limbs/feadd.v b/src/Specific/solinas32_2e512m569_24limbs/feadd.v
new file mode 100644
index 000000000..8cf349ebb
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/feaddDisplay.v b/src/Specific/solinas32_2e512m569_24limbs/feaddDisplay.v
new file mode 100644
index 000000000..96a51c522
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/femul.v b/src/Specific/solinas32_2e512m569_24limbs/femul.v
new file mode 100644
index 000000000..f4cb7be21
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/femulDisplay.v b/src/Specific/solinas32_2e512m569_24limbs/femulDisplay.v
new file mode 100644
index 000000000..36849c5d1
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/fesquare.v b/src/Specific/solinas32_2e512m569_24limbs/fesquare.v
new file mode 100644
index 000000000..39f6a4725
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/fesquareDisplay.v b/src/Specific/solinas32_2e512m569_24limbs/fesquareDisplay.v
new file mode 100644
index 000000000..953b95d45
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/fesub.v b/src/Specific/solinas32_2e512m569_24limbs/fesub.v
new file mode 100644
index 000000000..88f45d410
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/fesubDisplay.v b/src/Specific/solinas32_2e512m569_24limbs/fesubDisplay.v
new file mode 100644
index 000000000..ee1d6df8b
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/freeze.v b/src/Specific/solinas32_2e512m569_24limbs/freeze.v
new file mode 100644
index 000000000..c717f8691
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e512m569_24limbs/freezeDisplay.v b/src/Specific/solinas32_2e512m569_24limbs/freezeDisplay.v
new file mode 100644
index 000000000..6708f2099
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_24limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_24limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e512m569/py_interpreter.sh b/src/Specific/solinas32_2e512m569_24limbs/py_interpreter.sh
index b9714844c..b9714844c 100755
--- a/src/Specific/solinas32_2e512m569/py_interpreter.sh
+++ b/src/Specific/solinas32_2e512m569_24limbs/py_interpreter.sh
diff --git a/src/Specific/solinas32_2e512m569_25limbs/CurveParameters.v b/src/Specific/solinas32_2e512m569_25limbs/CurveParameters.v
new file mode 100644
index 000000000..d3f7a5042
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^512 - 569
+Base: 20 + 12/25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 25%nat;
+ base := 20 + 12/25;
+ bitwidth := 32;
+ s := 2^512;
+ c := [(1, 569)];
+ carry_chains := Some [seq 0 (pred 25); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/Synthesis.v b/src/Specific/solinas32_2e512m569_25limbs/Synthesis.v
new file mode 100644
index 000000000..00691ffb7
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/compiler.sh b/src/Specific/solinas32_2e512m569_25limbs/compiler.sh
new file mode 100755
index 000000000..8e429c7ac
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='25' -Dq_mpz='(1_mpz<<512) - 569' "$@"
diff --git a/src/Specific/solinas32_2e512m569_25limbs/compilerxx.sh b/src/Specific/solinas32_2e512m569_25limbs/compilerxx.sh
new file mode 100755
index 000000000..a226a0e3f
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,21,20,20}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='25' -Dq_mpz='(1_mpz<<512) - 569' "$@"
diff --git a/src/Specific/solinas32_2e512m569_25limbs/feadd.v b/src/Specific/solinas32_2e512m569_25limbs/feadd.v
new file mode 100644
index 000000000..888acda1e
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/feaddDisplay.v b/src/Specific/solinas32_2e512m569_25limbs/feaddDisplay.v
new file mode 100644
index 000000000..a0377aadf
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/femul.v b/src/Specific/solinas32_2e512m569_25limbs/femul.v
new file mode 100644
index 000000000..54090d4de
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/femulDisplay.v b/src/Specific/solinas32_2e512m569_25limbs/femulDisplay.v
new file mode 100644
index 000000000..1f2a84bc8
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/fesquare.v b/src/Specific/solinas32_2e512m569_25limbs/fesquare.v
new file mode 100644
index 000000000..1bd784456
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/fesquareDisplay.v b/src/Specific/solinas32_2e512m569_25limbs/fesquareDisplay.v
new file mode 100644
index 000000000..603896064
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/fesub.v b/src/Specific/solinas32_2e512m569_25limbs/fesub.v
new file mode 100644
index 000000000..4b1c1bc8d
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/fesubDisplay.v b/src/Specific/solinas32_2e512m569_25limbs/fesubDisplay.v
new file mode 100644
index 000000000..310043be0
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/freeze.v b/src/Specific/solinas32_2e512m569_25limbs/freeze.v
new file mode 100644
index 000000000..6e0180849
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/freezeDisplay.v b/src/Specific/solinas32_2e512m569_25limbs/freezeDisplay.v
new file mode 100644
index 000000000..38122eaa7
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e512m569_25limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e512m569_25limbs/py_interpreter.sh b/src/Specific/solinas32_2e512m569_25limbs/py_interpreter.sh
new file mode 100755
index 000000000..9ad22d5c1
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569_25limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**512 - 569' -Dmodulus_bytes='20 + 12/25' -Da24='121665'
diff --git a/src/Specific/solinas32_2e521m1/Synthesis.v b/src/Specific/solinas32_2e521m1/Synthesis.v
deleted file mode 100644
index a18d4ba65..000000000
--- a/src/Specific/solinas32_2e521m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas32_2e521m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e521m1/feadd.c b/src/Specific/solinas32_2e521m1/feadd.c
deleted file mode 100644
index 28ee6f665..000000000
--- a/src/Specific/solinas32_2e521m1/feadd.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void feadd(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = (x5 + x43);
- out[1] = (x7 + x45);
- out[2] = (x9 + x47);
- out[3] = (x11 + x49);
- out[4] = (x13 + x51);
- out[5] = (x15 + x53);
- out[6] = (x17 + x55);
- out[7] = (x19 + x57);
- out[8] = (x21 + x59);
- out[9] = (x23 + x61);
- out[10] = (x25 + x63);
- out[11] = (x27 + x65);
- out[12] = (x29 + x67);
- out[13] = (x31 + x69);
- out[14] = (x33 + x71);
- out[15] = (x35 + x73);
- out[16] = (x37 + x75);
- out[17] = (x39 + x77);
- out[18] = (x41 + x79);
- out[19] = (x40 + x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e521m1/feadd.v b/src/Specific/solinas32_2e521m1/feadd.v
deleted file mode 100644
index 921862574..000000000
--- a/src/Specific/solinas32_2e521m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas32_2e521m1/feaddDisplay.log b/src/Specific/solinas32_2e521m1/feaddDisplay.log
deleted file mode 100644
index eebe17777..000000000
--- a/src/Specific/solinas32_2e521m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- ((x40 + x78), (x41 + x79), (x39 + x77), (x37 + x75), (x35 + x73), (x33 + x71), (x31 + x69), (x29 + x67), (x27 + x65), (x25 + x63), (x23 + x61), (x21 + x59), (x19 + x57), (x17 + x55), (x15 + x53), (x13 + x51), (x11 + x49), (x9 + x47), (x7 + x45), (x5 + x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1/feaddDisplay.v b/src/Specific/solinas32_2e521m1/feaddDisplay.v
deleted file mode 100644
index 2346ae523..000000000
--- a/src/Specific/solinas32_2e521m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e521m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas32_2e521m1/femul.c b/src/Specific/solinas32_2e521m1/femul.c
deleted file mode 100644
index 5d3dd9fd8..000000000
--- a/src/Specific/solinas32_2e521m1/femul.c
+++ /dev/null
@@ -1,148 +0,0 @@
-static void femul(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- { uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + ((0x2 * ((uint64_t)x13 * x73)) + ((0x2 * ((uint64_t)x15 * x71)) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + ((0x2 * ((uint64_t)x23 * x63)) + ((0x2 * ((uint64_t)x25 * x61)) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- { uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + ((uint64_t)x40 * x78));
- { uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + ((0x2 * ((uint64_t)x19 * x63)) + ((0x2 * ((uint64_t)x21 * x61)) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79)));
- { uint64_t x83 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((uint64_t)x37 * x43))))))))))))))))) + (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77))));
- { uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (((uint64_t)x37 * x78) + (((uint64_t)x39 * x79) + (((uint64_t)x41 * x77) + ((uint64_t)x40 * x75)))));
- { uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (((uint64_t)x35 * x78) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + (((uint64_t)x41 * x75) + ((uint64_t)x40 * x73))))));
- { uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71)))))));
- { uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69))))))));
- { uint64_t x88 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x27 * x43)))))))))))) + (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67)))))))));
- { uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (((uint64_t)x27 * x78) + (((uint64_t)x29 * x79) + (((uint64_t)x31 * x77) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + (((uint64_t)x41 * x67) + ((uint64_t)x40 * x65))))))))));
- { uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (((uint64_t)x25 * x78) + (((uint64_t)x27 * x79) + (((uint64_t)x29 * x77) + (((uint64_t)x31 * x75) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + (((uint64_t)x39 * x67) + (((uint64_t)x41 * x65) + ((uint64_t)x40 * x63)))))))))));
- { uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + (((uint64_t)x27 * x77) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + (((uint64_t)x39 * x65) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61))))))))))));
- { uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + (((uint64_t)x27 * x75) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59)))))))))))));
- { uint64_t x93 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((uint64_t)x17 * x43))))))) + (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57))))))))))))));
- { uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (((uint64_t)x17 * x78) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + (((uint64_t)x41 * x57) + ((uint64_t)x40 * x55)))))))))))))));
- { uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (((uint64_t)x15 * x78) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + ((uint64_t)x40 * x53))))))))))))))));
- { uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + (((uint64_t)x17 * x77) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51)))))))))))))))));
- { uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49))))))))))))))))));
- { uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47)))))))))))))))))));
- { uint64_t x99 = (((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45)))))))))))))))))))));
- { uint64_t x100 = (x99 >> 0x1b);
- { uint32_t x101 = ((uint32_t)x99 & 0x7ffffff);
- { uint64_t x102 = (x100 + x98);
- { uint64_t x103 = (x102 >> 0x1a);
- { uint32_t x104 = ((uint32_t)x102 & 0x3ffffff);
- { uint64_t x105 = (x103 + x97);
- { uint64_t x106 = (x105 >> 0x1a);
- { uint32_t x107 = ((uint32_t)x105 & 0x3ffffff);
- { uint64_t x108 = (x106 + x96);
- { uint64_t x109 = (x108 >> 0x1a);
- { uint32_t x110 = ((uint32_t)x108 & 0x3ffffff);
- { uint64_t x111 = (x109 + x95);
- { uint64_t x112 = (x111 >> 0x1a);
- { uint32_t x113 = ((uint32_t)x111 & 0x3ffffff);
- { uint64_t x114 = (x112 + x94);
- { uint64_t x115 = (x114 >> 0x1a);
- { uint32_t x116 = ((uint32_t)x114 & 0x3ffffff);
- { uint64_t x117 = (x115 + x93);
- { uint64_t x118 = (x117 >> 0x1a);
- { uint32_t x119 = ((uint32_t)x117 & 0x3ffffff);
- { uint64_t x120 = (x118 + x92);
- { uint64_t x121 = (x120 >> 0x1a);
- { uint32_t x122 = ((uint32_t)x120 & 0x3ffffff);
- { uint64_t x123 = (x121 + x91);
- { uint64_t x124 = (x123 >> 0x1a);
- { uint32_t x125 = ((uint32_t)x123 & 0x3ffffff);
- { uint64_t x126 = (x124 + x90);
- { uint64_t x127 = (x126 >> 0x1a);
- { uint32_t x128 = ((uint32_t)x126 & 0x3ffffff);
- { uint64_t x129 = (x127 + x89);
- { uint64_t x130 = (x129 >> 0x1a);
- { uint32_t x131 = ((uint32_t)x129 & 0x3ffffff);
- { uint64_t x132 = (x130 + x88);
- { uint64_t x133 = (x132 >> 0x1a);
- { uint32_t x134 = ((uint32_t)x132 & 0x3ffffff);
- { uint64_t x135 = (x133 + x87);
- { uint64_t x136 = (x135 >> 0x1a);
- { uint32_t x137 = ((uint32_t)x135 & 0x3ffffff);
- { uint64_t x138 = (x136 + x86);
- { uint64_t x139 = (x138 >> 0x1a);
- { uint32_t x140 = ((uint32_t)x138 & 0x3ffffff);
- { uint64_t x141 = (x139 + x85);
- { uint64_t x142 = (x141 >> 0x1a);
- { uint32_t x143 = ((uint32_t)x141 & 0x3ffffff);
- { uint64_t x144 = (x142 + x84);
- { uint64_t x145 = (x144 >> 0x1a);
- { uint32_t x146 = ((uint32_t)x144 & 0x3ffffff);
- { uint64_t x147 = (x145 + x83);
- { uint64_t x148 = (x147 >> 0x1a);
- { uint32_t x149 = ((uint32_t)x147 & 0x3ffffff);
- { uint64_t x150 = (x148 + x82);
- { uint64_t x151 = (x150 >> 0x1a);
- { uint32_t x152 = ((uint32_t)x150 & 0x3ffffff);
- { uint64_t x153 = (x151 + x81);
- { uint64_t x154 = (x153 >> 0x1a);
- { uint32_t x155 = ((uint32_t)x153 & 0x3ffffff);
- { uint64_t x156 = (x154 + x80);
- { uint64_t x157 = (x156 >> 0x1a);
- { uint32_t x158 = ((uint32_t)x156 & 0x3ffffff);
- { uint64_t x159 = (x101 + x157);
- { uint32_t x160 = (uint32_t) (x159 >> 0x1b);
- { uint32_t x161 = ((uint32_t)x159 & 0x7ffffff);
- { uint32_t x162 = (x160 + x104);
- { uint32_t x163 = (x162 >> 0x1a);
- { uint32_t x164 = (x162 & 0x3ffffff);
- out[0] = x161;
- out[1] = x164;
- out[2] = (x163 + x107);
- out[3] = x110;
- out[4] = x113;
- out[5] = x116;
- out[6] = x119;
- out[7] = x122;
- out[8] = x125;
- out[9] = x128;
- out[10] = x131;
- out[11] = x134;
- out[12] = x137;
- out[13] = x140;
- out[14] = x143;
- out[15] = x146;
- out[16] = x149;
- out[17] = x152;
- out[18] = x155;
- out[19] = x158;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e521m1/femul.v b/src/Specific/solinas32_2e521m1/femul.v
deleted file mode 100644
index 0111407c9..000000000
--- a/src/Specific/solinas32_2e521m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e521m1/femulDisplay.log b/src/Specific/solinas32_2e521m1/femulDisplay.log
deleted file mode 100644
index ef4833993..000000000
--- a/src/Specific/solinas32_2e521m1/femulDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + ((0x2 * ((uint64_t)x13 * x73)) + ((0x2 * ((uint64_t)x15 * x71)) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + ((0x2 * ((uint64_t)x23 * x63)) + ((0x2 * ((uint64_t)x25 * x61)) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
- uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + ((uint64_t)x41 * x43))))))))))))))))))) + ((uint64_t)x40 * x78));
- uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + ((0x2 * ((uint64_t)x19 * x63)) + ((0x2 * ((uint64_t)x21 * x61)) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79)));
- uint64_t x83 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((uint64_t)x37 * x43))))))))))))))))) + (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77))));
- uint64_t x84 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + ((0x2 * ((uint64_t)x19 * x59)) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (((uint64_t)x37 * x78) + (((uint64_t)x39 * x79) + (((uint64_t)x41 * x77) + ((uint64_t)x40 * x75)))));
- uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (((uint64_t)x35 * x78) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + (((uint64_t)x41 * x75) + ((uint64_t)x40 * x73))))));
- uint64_t x86 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + ((0x2 * ((uint64_t)x19 * x55)) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((uint64_t)x31 * x43)))))))))))))) + (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71)))))));
- uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69))))))));
- uint64_t x88 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x27 * x43)))))))))))) + (((uint64_t)x29 * x78) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + ((uint64_t)x40 * x67)))))))));
- uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (((uint64_t)x27 * x78) + (((uint64_t)x29 * x79) + (((uint64_t)x31 * x77) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + (((uint64_t)x41 * x67) + ((uint64_t)x40 * x65))))))))));
- uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (((uint64_t)x25 * x78) + (((uint64_t)x27 * x79) + (((uint64_t)x29 * x77) + (((uint64_t)x31 * x75) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + (((uint64_t)x39 * x67) + (((uint64_t)x41 * x65) + ((uint64_t)x40 * x63)))))))))));
- uint64_t x91 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + (((uint64_t)x27 * x77) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + (((uint64_t)x39 * x65) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61))))))))))));
- uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + (((uint64_t)x27 * x75) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59)))))))))))));
- uint64_t x93 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((uint64_t)x17 * x43))))))) + (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((uint64_t)x23 * x77) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57))))))))))))));
- uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (((uint64_t)x17 * x78) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + (((uint64_t)x41 * x57) + ((uint64_t)x40 * x55)))))))))))))));
- uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (((uint64_t)x15 * x78) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + ((uint64_t)x40 * x53))))))))))))))));
- uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + (((uint64_t)x17 * x77) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((uint64_t)x29 * x65) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + (((uint64_t)x41 * x53) + ((uint64_t)x40 * x51)))))))))))))))));
- uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49))))))))))))))))));
- uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47)))))))))))))))))));
- uint64_t x99 = (((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((uint64_t)x19 * x69)) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + ((0x2 * ((uint64_t)x33 * x55)) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45)))))))))))))))))))));
- uint64_t x100 = (x99 >> 0x1b);
- uint32_t x101 = ((uint32_t)x99 & 0x7ffffff);
- uint64_t x102 = (x100 + x98);
- uint64_t x103 = (x102 >> 0x1a);
- uint32_t x104 = ((uint32_t)x102 & 0x3ffffff);
- uint64_t x105 = (x103 + x97);
- uint64_t x106 = (x105 >> 0x1a);
- uint32_t x107 = ((uint32_t)x105 & 0x3ffffff);
- uint64_t x108 = (x106 + x96);
- uint64_t x109 = (x108 >> 0x1a);
- uint32_t x110 = ((uint32_t)x108 & 0x3ffffff);
- uint64_t x111 = (x109 + x95);
- uint64_t x112 = (x111 >> 0x1a);
- uint32_t x113 = ((uint32_t)x111 & 0x3ffffff);
- uint64_t x114 = (x112 + x94);
- uint64_t x115 = (x114 >> 0x1a);
- uint32_t x116 = ((uint32_t)x114 & 0x3ffffff);
- uint64_t x117 = (x115 + x93);
- uint64_t x118 = (x117 >> 0x1a);
- uint32_t x119 = ((uint32_t)x117 & 0x3ffffff);
- uint64_t x120 = (x118 + x92);
- uint64_t x121 = (x120 >> 0x1a);
- uint32_t x122 = ((uint32_t)x120 & 0x3ffffff);
- uint64_t x123 = (x121 + x91);
- uint64_t x124 = (x123 >> 0x1a);
- uint32_t x125 = ((uint32_t)x123 & 0x3ffffff);
- uint64_t x126 = (x124 + x90);
- uint64_t x127 = (x126 >> 0x1a);
- uint32_t x128 = ((uint32_t)x126 & 0x3ffffff);
- uint64_t x129 = (x127 + x89);
- uint64_t x130 = (x129 >> 0x1a);
- uint32_t x131 = ((uint32_t)x129 & 0x3ffffff);
- uint64_t x132 = (x130 + x88);
- uint64_t x133 = (x132 >> 0x1a);
- uint32_t x134 = ((uint32_t)x132 & 0x3ffffff);
- uint64_t x135 = (x133 + x87);
- uint64_t x136 = (x135 >> 0x1a);
- uint32_t x137 = ((uint32_t)x135 & 0x3ffffff);
- uint64_t x138 = (x136 + x86);
- uint64_t x139 = (x138 >> 0x1a);
- uint32_t x140 = ((uint32_t)x138 & 0x3ffffff);
- uint64_t x141 = (x139 + x85);
- uint64_t x142 = (x141 >> 0x1a);
- uint32_t x143 = ((uint32_t)x141 & 0x3ffffff);
- uint64_t x144 = (x142 + x84);
- uint64_t x145 = (x144 >> 0x1a);
- uint32_t x146 = ((uint32_t)x144 & 0x3ffffff);
- uint64_t x147 = (x145 + x83);
- uint64_t x148 = (x147 >> 0x1a);
- uint32_t x149 = ((uint32_t)x147 & 0x3ffffff);
- uint64_t x150 = (x148 + x82);
- uint64_t x151 = (x150 >> 0x1a);
- uint32_t x152 = ((uint32_t)x150 & 0x3ffffff);
- uint64_t x153 = (x151 + x81);
- uint64_t x154 = (x153 >> 0x1a);
- uint32_t x155 = ((uint32_t)x153 & 0x3ffffff);
- uint64_t x156 = (x154 + x80);
- uint64_t x157 = (x156 >> 0x1a);
- uint32_t x158 = ((uint32_t)x156 & 0x3ffffff);
- uint64_t x159 = (x101 + x157);
- uint32_t x160 = (uint32_t) (x159 >> 0x1b);
- uint32_t x161 = ((uint32_t)x159 & 0x7ffffff);
- uint32_t x162 = (x160 + x104);
- uint32_t x163 = (x162 >> 0x1a);
- uint32_t x164 = (x162 & 0x3ffffff);
- return (Return x158, Return x155, Return x152, Return x149, Return x146, Return x143, Return x140, Return x137, Return x134, Return x131, Return x128, Return x125, Return x122, Return x119, Return x116, Return x113, Return x110, (x163 + x107), Return x164, Return x161))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1/femulDisplay.v b/src/Specific/solinas32_2e521m1/femulDisplay.v
deleted file mode 100644
index 717ee5a0a..000000000
--- a/src/Specific/solinas32_2e521m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e521m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas32_2e521m1/fesquare.c b/src/Specific/solinas32_2e521m1/fesquare.c
deleted file mode 100644
index fc2e62bc4..000000000
--- a/src/Specific/solinas32_2e521m1/fesquare.c
+++ /dev/null
@@ -1,128 +0,0 @@
-static void fesquare(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- { uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + ((uint64_t)x37 * x37));
- { uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38)));
- { uint64_t x42 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36))));
- { uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (((uint64_t)x34 * x37) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((uint64_t)x37 * x34)))));
- { uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (((uint64_t)x32 * x37) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + ((uint64_t)x37 * x32))))));
- { uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30)))))));
- { uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28))))))));
- { uint64_t x47 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26)))))))));
- { uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (((uint64_t)x24 * x37) + (((uint64_t)x26 * x38) + (((uint64_t)x28 * x36) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + (((uint64_t)x36 * x28) + (((uint64_t)x38 * x26) + ((uint64_t)x37 * x24))))))))));
- { uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (((uint64_t)x22 * x37) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((uint64_t)x37 * x22)))))))))));
- { uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20))))))))))));
- { uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18)))))))))))));
- { uint64_t x52 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16))))))))))))));
- { uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x37) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + ((uint64_t)x37 * x14)))))))))))))));
- { uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (((uint64_t)x12 * x37) + (((uint64_t)x14 * x38) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + (((uint64_t)x38 * x14) + ((uint64_t)x37 * x12))))))))))))))));
- { uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10)))))))))))))))));
- { uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8))))))))))))))))));
- { uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6)))))))))))))))))));
- { uint64_t x58 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4)))))))))))))))))))));
- { uint64_t x59 = (x58 >> 0x1b);
- { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
- { uint64_t x61 = (x59 + x57);
- { uint64_t x62 = (x61 >> 0x1a);
- { uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- { uint64_t x64 = (x62 + x56);
- { uint64_t x65 = (x64 >> 0x1a);
- { uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- { uint64_t x67 = (x65 + x55);
- { uint64_t x68 = (x67 >> 0x1a);
- { uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- { uint64_t x70 = (x68 + x54);
- { uint64_t x71 = (x70 >> 0x1a);
- { uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- { uint64_t x73 = (x71 + x53);
- { uint64_t x74 = (x73 >> 0x1a);
- { uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- { uint64_t x76 = (x74 + x52);
- { uint64_t x77 = (x76 >> 0x1a);
- { uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- { uint64_t x79 = (x77 + x51);
- { uint64_t x80 = (x79 >> 0x1a);
- { uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- { uint64_t x82 = (x80 + x50);
- { uint64_t x83 = (x82 >> 0x1a);
- { uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- { uint64_t x85 = (x83 + x49);
- { uint64_t x86 = (x85 >> 0x1a);
- { uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- { uint64_t x88 = (x86 + x48);
- { uint64_t x89 = (x88 >> 0x1a);
- { uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- { uint64_t x91 = (x89 + x47);
- { uint64_t x92 = (x91 >> 0x1a);
- { uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- { uint64_t x94 = (x92 + x46);
- { uint64_t x95 = (x94 >> 0x1a);
- { uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- { uint64_t x97 = (x95 + x45);
- { uint64_t x98 = (x97 >> 0x1a);
- { uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- { uint64_t x100 = (x98 + x44);
- { uint64_t x101 = (x100 >> 0x1a);
- { uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- { uint64_t x103 = (x101 + x43);
- { uint64_t x104 = (x103 >> 0x1a);
- { uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- { uint64_t x106 = (x104 + x42);
- { uint64_t x107 = (x106 >> 0x1a);
- { uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- { uint64_t x109 = (x107 + x41);
- { uint64_t x110 = (x109 >> 0x1a);
- { uint32_t x111 = ((uint32_t)x109 & 0x3ffffff);
- { uint64_t x112 = (x110 + x40);
- { uint64_t x113 = (x112 >> 0x1a);
- { uint32_t x114 = ((uint32_t)x112 & 0x3ffffff);
- { uint64_t x115 = (x113 + x39);
- { uint64_t x116 = (x115 >> 0x1a);
- { uint32_t x117 = ((uint32_t)x115 & 0x3ffffff);
- { uint64_t x118 = (x60 + x116);
- { uint32_t x119 = (uint32_t) (x118 >> 0x1b);
- { uint32_t x120 = ((uint32_t)x118 & 0x7ffffff);
- { uint32_t x121 = (x119 + x63);
- { uint32_t x122 = (x121 >> 0x1a);
- { uint32_t x123 = (x121 & 0x3ffffff);
- out[0] = x120;
- out[1] = x123;
- out[2] = (x122 + x66);
- out[3] = x69;
- out[4] = x72;
- out[5] = x75;
- out[6] = x78;
- out[7] = x81;
- out[8] = x84;
- out[9] = x87;
- out[10] = x90;
- out[11] = x93;
- out[12] = x96;
- out[13] = x99;
- out[14] = x102;
- out[15] = x105;
- out[16] = x108;
- out[17] = x111;
- out[18] = x114;
- out[19] = x117;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e521m1/fesquare.v b/src/Specific/solinas32_2e521m1/fesquare.v
deleted file mode 100644
index 066d5138f..000000000
--- a/src/Specific/solinas32_2e521m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas32_2e521m1/fesquareDisplay.log b/src/Specific/solinas32_2e521m1/fesquareDisplay.log
deleted file mode 100644
index eeef1dab4..000000000
--- a/src/Specific/solinas32_2e521m1/fesquareDisplay.log
+++ /dev/null
@@ -1,92 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x39 = (((uint64_t)x2 * x37) + ((0x2 * ((uint64_t)x4 * x38)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x37 * x2))))))))))))))))))));
- uint64_t x40 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + ((0x2 * ((uint64_t)x8 * x32)) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + ((0x2 * ((uint64_t)x20 * x20)) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + ((0x2 * ((uint64_t)x32 * x8)) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + ((uint64_t)x37 * x37));
- uint64_t x41 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + ((0x2 * ((uint64_t)x10 * x28)) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + ((0x2 * ((uint64_t)x28 * x10)) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (((uint64_t)x38 * x37) + ((uint64_t)x37 * x38)));
- uint64_t x42 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + ((0x2 * ((uint64_t)x18 * x18)) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (((uint64_t)x36 * x37) + (((uint64_t)x38 * x38) + ((uint64_t)x37 * x36))));
- uint64_t x43 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + ((0x2 * ((uint64_t)x8 * x26)) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + ((0x2 * ((uint64_t)x26 * x8)) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (((uint64_t)x34 * x37) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((uint64_t)x37 * x34)))));
- uint64_t x44 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + ((0x2 * ((uint64_t)x16 * x16)) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (((uint64_t)x32 * x37) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + ((uint64_t)x37 * x32))))));
- uint64_t x45 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (((uint64_t)x30 * x37) + (((uint64_t)x32 * x38) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + (((uint64_t)x38 * x32) + ((uint64_t)x37 * x30)))))));
- uint64_t x46 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (((uint64_t)x28 * x37) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((uint64_t)x37 * x28))))))));
- uint64_t x47 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + ((0x2 * ((uint64_t)x8 * x18)) + ((0x2 * ((uint64_t)x10 * x16)) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + ((0x2 * ((uint64_t)x16 * x10)) + ((0x2 * ((uint64_t)x18 * x8)) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (((uint64_t)x26 * x37) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + ((uint64_t)x37 * x26)))))))));
- uint64_t x48 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + ((0x2 * ((uint64_t)x6 * x18)) + ((0x2 * ((uint64_t)x8 * x16)) + ((0x2 * ((uint64_t)x10 * x14)) + ((0x2 * ((uint64_t)x12 * x12)) + ((0x2 * ((uint64_t)x14 * x10)) + ((0x2 * ((uint64_t)x16 * x8)) + ((0x2 * ((uint64_t)x18 * x6)) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (((uint64_t)x24 * x37) + (((uint64_t)x26 * x38) + (((uint64_t)x28 * x36) + (((uint64_t)x30 * x34) + (((uint64_t)x32 * x32) + (((uint64_t)x34 * x30) + (((uint64_t)x36 * x28) + (((uint64_t)x38 * x26) + ((uint64_t)x37 * x24))))))))));
- uint64_t x49 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (((uint64_t)x22 * x37) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((uint64_t)x37 * x22)))))))))));
- uint64_t x50 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + ((0x2 * ((uint64_t)x10 * x10)) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (((uint64_t)x20 * x37) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + ((uint64_t)x37 * x20))))))))))));
- uint64_t x51 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (((uint64_t)x18 * x37) + (((uint64_t)x20 * x38) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + (((uint64_t)x38 * x20) + ((uint64_t)x37 * x18)))))))))))));
- uint64_t x52 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x37) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + (((uint64_t)x22 * x34) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + (((uint64_t)x28 * x28) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + (((uint64_t)x34 * x22) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((uint64_t)x37 * x16))))))))))))));
- uint64_t x53 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x37) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + ((uint64_t)x37 * x14)))))))))))))));
- uint64_t x54 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (((uint64_t)x12 * x37) + (((uint64_t)x14 * x38) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + (((uint64_t)x38 * x14) + ((uint64_t)x37 * x12))))))))))))))));
- uint64_t x55 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x37) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((uint64_t)x37 * x10)))))))))))))))));
- uint64_t x56 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (((uint64_t)x8 * x37) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + ((uint64_t)x37 * x8))))))))))))))))));
- uint64_t x57 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x37) + (((uint64_t)x8 * x38) + (((uint64_t)x10 * x36) + (((uint64_t)x12 * x34) + (((uint64_t)x14 * x32) + (((uint64_t)x16 * x30) + (((uint64_t)x18 * x28) + (((uint64_t)x20 * x26) + (((uint64_t)x22 * x24) + (((uint64_t)x24 * x22) + (((uint64_t)x26 * x20) + (((uint64_t)x28 * x18) + (((uint64_t)x30 * x16) + (((uint64_t)x32 * x14) + (((uint64_t)x34 * x12) + (((uint64_t)x36 * x10) + (((uint64_t)x38 * x8) + ((uint64_t)x37 * x6)))))))))))))))))));
- uint64_t x58 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x37)) + ((0x2 * ((uint64_t)x6 * x38)) + ((0x2 * ((uint64_t)x8 * x36)) + ((0x2 * ((uint64_t)x10 * x34)) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + ((0x2 * ((uint64_t)x16 * x28)) + ((0x2 * ((uint64_t)x18 * x26)) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + ((0x2 * ((uint64_t)x26 * x18)) + ((0x2 * ((uint64_t)x28 * x16)) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + ((0x2 * ((uint64_t)x34 * x10)) + ((0x2 * ((uint64_t)x36 * x8)) + ((0x2 * ((uint64_t)x38 * x6)) + (0x2 * ((uint64_t)x37 * x4)))))))))))))))))))));
- uint64_t x59 = (x58 >> 0x1b);
- uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
- uint64_t x61 = (x59 + x57);
- uint64_t x62 = (x61 >> 0x1a);
- uint32_t x63 = ((uint32_t)x61 & 0x3ffffff);
- uint64_t x64 = (x62 + x56);
- uint64_t x65 = (x64 >> 0x1a);
- uint32_t x66 = ((uint32_t)x64 & 0x3ffffff);
- uint64_t x67 = (x65 + x55);
- uint64_t x68 = (x67 >> 0x1a);
- uint32_t x69 = ((uint32_t)x67 & 0x3ffffff);
- uint64_t x70 = (x68 + x54);
- uint64_t x71 = (x70 >> 0x1a);
- uint32_t x72 = ((uint32_t)x70 & 0x3ffffff);
- uint64_t x73 = (x71 + x53);
- uint64_t x74 = (x73 >> 0x1a);
- uint32_t x75 = ((uint32_t)x73 & 0x3ffffff);
- uint64_t x76 = (x74 + x52);
- uint64_t x77 = (x76 >> 0x1a);
- uint32_t x78 = ((uint32_t)x76 & 0x3ffffff);
- uint64_t x79 = (x77 + x51);
- uint64_t x80 = (x79 >> 0x1a);
- uint32_t x81 = ((uint32_t)x79 & 0x3ffffff);
- uint64_t x82 = (x80 + x50);
- uint64_t x83 = (x82 >> 0x1a);
- uint32_t x84 = ((uint32_t)x82 & 0x3ffffff);
- uint64_t x85 = (x83 + x49);
- uint64_t x86 = (x85 >> 0x1a);
- uint32_t x87 = ((uint32_t)x85 & 0x3ffffff);
- uint64_t x88 = (x86 + x48);
- uint64_t x89 = (x88 >> 0x1a);
- uint32_t x90 = ((uint32_t)x88 & 0x3ffffff);
- uint64_t x91 = (x89 + x47);
- uint64_t x92 = (x91 >> 0x1a);
- uint32_t x93 = ((uint32_t)x91 & 0x3ffffff);
- uint64_t x94 = (x92 + x46);
- uint64_t x95 = (x94 >> 0x1a);
- uint32_t x96 = ((uint32_t)x94 & 0x3ffffff);
- uint64_t x97 = (x95 + x45);
- uint64_t x98 = (x97 >> 0x1a);
- uint32_t x99 = ((uint32_t)x97 & 0x3ffffff);
- uint64_t x100 = (x98 + x44);
- uint64_t x101 = (x100 >> 0x1a);
- uint32_t x102 = ((uint32_t)x100 & 0x3ffffff);
- uint64_t x103 = (x101 + x43);
- uint64_t x104 = (x103 >> 0x1a);
- uint32_t x105 = ((uint32_t)x103 & 0x3ffffff);
- uint64_t x106 = (x104 + x42);
- uint64_t x107 = (x106 >> 0x1a);
- uint32_t x108 = ((uint32_t)x106 & 0x3ffffff);
- uint64_t x109 = (x107 + x41);
- uint64_t x110 = (x109 >> 0x1a);
- uint32_t x111 = ((uint32_t)x109 & 0x3ffffff);
- uint64_t x112 = (x110 + x40);
- uint64_t x113 = (x112 >> 0x1a);
- uint32_t x114 = ((uint32_t)x112 & 0x3ffffff);
- uint64_t x115 = (x113 + x39);
- uint64_t x116 = (x115 >> 0x1a);
- uint32_t x117 = ((uint32_t)x115 & 0x3ffffff);
- uint64_t x118 = (x60 + x116);
- uint32_t x119 = (uint32_t) (x118 >> 0x1b);
- uint32_t x120 = ((uint32_t)x118 & 0x7ffffff);
- uint32_t x121 = (x119 + x63);
- uint32_t x122 = (x121 >> 0x1a);
- uint32_t x123 = (x121 & 0x3ffffff);
- return (Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, (x122 + x66), Return x123, Return x120))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1/fesquareDisplay.v b/src/Specific/solinas32_2e521m1/fesquareDisplay.v
deleted file mode 100644
index a9354494c..000000000
--- a/src/Specific/solinas32_2e521m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e521m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas32_2e521m1/fesub.c b/src/Specific/solinas32_2e521m1/fesub.c
deleted file mode 100644
index 5fa57aceb..000000000
--- a/src/Specific/solinas32_2e521m1/fesub.c
+++ /dev/null
@@ -1,63 +0,0 @@
-static void fesub(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
- { const uint32_t x40 = in1[19];
- { const uint32_t x41 = in1[18];
- { const uint32_t x39 = in1[17];
- { const uint32_t x37 = in1[16];
- { const uint32_t x35 = in1[15];
- { const uint32_t x33 = in1[14];
- { const uint32_t x31 = in1[13];
- { const uint32_t x29 = in1[12];
- { const uint32_t x27 = in1[11];
- { const uint32_t x25 = in1[10];
- { const uint32_t x23 = in1[9];
- { const uint32_t x21 = in1[8];
- { const uint32_t x19 = in1[7];
- { const uint32_t x17 = in1[6];
- { const uint32_t x15 = in1[5];
- { const uint32_t x13 = in1[4];
- { const uint32_t x11 = in1[3];
- { const uint32_t x9 = in1[2];
- { const uint32_t x7 = in1[1];
- { const uint32_t x5 = in1[0];
- { const uint32_t x78 = in2[19];
- { const uint32_t x79 = in2[18];
- { const uint32_t x77 = in2[17];
- { const uint32_t x75 = in2[16];
- { const uint32_t x73 = in2[15];
- { const uint32_t x71 = in2[14];
- { const uint32_t x69 = in2[13];
- { const uint32_t x67 = in2[12];
- { const uint32_t x65 = in2[11];
- { const uint32_t x63 = in2[10];
- { const uint32_t x61 = in2[9];
- { const uint32_t x59 = in2[8];
- { const uint32_t x57 = in2[7];
- { const uint32_t x55 = in2[6];
- { const uint32_t x53 = in2[5];
- { const uint32_t x51 = in2[4];
- { const uint32_t x49 = in2[3];
- { const uint32_t x47 = in2[2];
- { const uint32_t x45 = in2[1];
- { const uint32_t x43 = in2[0];
- out[0] = ((0xffffffe + x5) - x43);
- out[1] = ((0x7fffffe + x7) - x45);
- out[2] = ((0x7fffffe + x9) - x47);
- out[3] = ((0x7fffffe + x11) - x49);
- out[4] = ((0x7fffffe + x13) - x51);
- out[5] = ((0x7fffffe + x15) - x53);
- out[6] = ((0x7fffffe + x17) - x55);
- out[7] = ((0x7fffffe + x19) - x57);
- out[8] = ((0x7fffffe + x21) - x59);
- out[9] = ((0x7fffffe + x23) - x61);
- out[10] = ((0x7fffffe + x25) - x63);
- out[11] = ((0x7fffffe + x27) - x65);
- out[12] = ((0x7fffffe + x29) - x67);
- out[13] = ((0x7fffffe + x31) - x69);
- out[14] = ((0x7fffffe + x33) - x71);
- out[15] = ((0x7fffffe + x35) - x73);
- out[16] = ((0x7fffffe + x37) - x75);
- out[17] = ((0x7fffffe + x39) - x77);
- out[18] = ((0x7fffffe + x41) - x79);
- out[19] = ((0x7fffffe + x40) - x78);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e521m1/fesub.v b/src/Specific/solinas32_2e521m1/fesub.v
deleted file mode 100644
index 1dd0a6da1..000000000
--- a/src/Specific/solinas32_2e521m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e521m1/fesubDisplay.log b/src/Specific/solinas32_2e521m1/fesubDisplay.log
deleted file mode 100644
index 4baaf158b..000000000
--- a/src/Specific/solinas32_2e521m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x40, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x78, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43))%core,
- (((0x7fffffe + x40) - x78), ((0x7fffffe + x41) - x79), ((0x7fffffe + x39) - x77), ((0x7fffffe + x37) - x75), ((0x7fffffe + x35) - x73), ((0x7fffffe + x33) - x71), ((0x7fffffe + x31) - x69), ((0x7fffffe + x29) - x67), ((0x7fffffe + x27) - x65), ((0x7fffffe + x25) - x63), ((0x7fffffe + x23) - x61), ((0x7fffffe + x21) - x59), ((0x7fffffe + x19) - x57), ((0x7fffffe + x17) - x55), ((0x7fffffe + x15) - x53), ((0x7fffffe + x13) - x51), ((0x7fffffe + x11) - x49), ((0x7fffffe + x9) - x47), ((0x7fffffe + x7) - x45), ((0xffffffe + x5) - x43)))
-(x, x0)%core
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1/fesubDisplay.v b/src/Specific/solinas32_2e521m1/fesubDisplay.v
deleted file mode 100644
index 2ad2037b9..000000000
--- a/src/Specific/solinas32_2e521m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e521m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas32_2e521m1/freeze.c b/src/Specific/solinas32_2e521m1/freeze.c
deleted file mode 100644
index aa2e4e36c..000000000
--- a/src/Specific/solinas32_2e521m1/freeze.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void freeze(uint32_t out[20], const uint32_t in1[20]) {
- { const uint32_t x37 = in1[19];
- { const uint32_t x38 = in1[18];
- { const uint32_t x36 = in1[17];
- { const uint32_t x34 = in1[16];
- { const uint32_t x32 = in1[15];
- { const uint32_t x30 = in1[14];
- { const uint32_t x28 = in1[13];
- { const uint32_t x26 = in1[12];
- { const uint32_t x24 = in1[11];
- { const uint32_t x22 = in1[10];
- { const uint32_t x20 = in1[9];
- { const uint32_t x18 = in1[8];
- { const uint32_t x16 = in1[7];
- { const uint32_t x14 = in1[6];
- { const uint32_t x12 = in1[5];
- { const uint32_t x10 = in1[4];
- { const uint32_t x8 = in1[3];
- { const uint32_t x6 = in1[2];
- { const uint32_t x4 = in1[1];
- { const uint32_t x2 = in1[0];
- { uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
- { uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x3ffffff);
- { uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x3ffffff);
- { uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x3ffffff);
- { uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x3ffffff);
- { uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x3ffffff);
- { uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x3ffffff);
- { uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x3ffffff);
- { uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x3ffffff);
- { uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x3ffffff);
- { uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0x3ffffff);
- { uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x3ffffff);
- { uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x3ffffff);
- { uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x3ffffff);
- { uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x3ffffff);
- { uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x3ffffff);
- { uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x3ffffff);
- { uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x3ffffff);
- { uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x3ffffff);
- { uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x3ffffff);
- { uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- { uint32_t x100 = (x99 & 0x7ffffff);
- { uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- { uint32_t x104 = (x99 & 0x3ffffff);
- { uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- { uint32_t x108 = (x99 & 0x3ffffff);
- { uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- { uint32_t x112 = (x99 & 0x3ffffff);
- { uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- { uint32_t x116 = (x99 & 0x3ffffff);
- { uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- { uint32_t x120 = (x99 & 0x3ffffff);
- { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- { uint32_t x124 = (x99 & 0x3ffffff);
- { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- { uint32_t x128 = (x99 & 0x3ffffff);
- { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- { uint32_t x132 = (x99 & 0x3ffffff);
- { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- { uint32_t x136 = (x99 & 0x3ffffff);
- { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- { uint32_t x140 = (x99 & 0x3ffffff);
- { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- { uint32_t x144 = (x99 & 0x3ffffff);
- { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- { uint32_t x148 = (x99 & 0x3ffffff);
- { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- { uint32_t x152 = (x99 & 0x3ffffff);
- { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- { uint32_t x156 = (x99 & 0x3ffffff);
- { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- { uint32_t x160 = (x99 & 0x3ffffff);
- { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- { uint32_t x164 = (x99 & 0x3ffffff);
- { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- { uint32_t x168 = (x99 & 0x3ffffff);
- { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- { uint32_t x172 = (x99 & 0x3ffffff);
- { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- { uint32_t x176 = (x99 & 0x3ffffff);
- { uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- out[0] = x102;
- out[1] = x106;
- out[2] = x110;
- out[3] = x114;
- out[4] = x118;
- out[5] = x122;
- out[6] = x126;
- out[7] = x130;
- out[8] = x134;
- out[9] = x138;
- out[10] = x142;
- out[11] = x146;
- out[12] = x150;
- out[13] = x154;
- out[14] = x158;
- out[15] = x162;
- out[16] = x166;
- out[17] = x170;
- out[18] = x174;
- out[19] = x178;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas32_2e521m1/freeze.v b/src/Specific/solinas32_2e521m1/freeze.v
deleted file mode 100644
index 620427c85..000000000
--- a/src/Specific/solinas32_2e521m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas32_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e521m1/freezeDisplay.log b/src/Specific/solinas32_2e521m1/freezeDisplay.log
deleted file mode 100644
index 6abf83604..000000000
--- a/src/Specific/solinas32_2e521m1/freezeDisplay.log
+++ /dev/null
@@ -1,68 +0,0 @@
-λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x37, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x40, uint8_t x41 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffff);
- uint32_t x43, uint8_t x44 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x4, 0x3ffffff);
- uint32_t x46, uint8_t x47 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x44, Return x6, 0x3ffffff);
- uint32_t x49, uint8_t x50 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x47, Return x8, 0x3ffffff);
- uint32_t x52, uint8_t x53 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x10, 0x3ffffff);
- uint32_t x55, uint8_t x56 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x53, Return x12, 0x3ffffff);
- uint32_t x58, uint8_t x59 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x56, Return x14, 0x3ffffff);
- uint32_t x61, uint8_t x62 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x59, Return x16, 0x3ffffff);
- uint32_t x64, uint8_t x65 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x62, Return x18, 0x3ffffff);
- uint32_t x67, uint8_t x68 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x65, Return x20, 0x3ffffff);
- uint32_t x70, uint8_t x71 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x68, Return x22, 0x3ffffff);
- uint32_t x73, uint8_t x74 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x71, Return x24, 0x3ffffff);
- uint32_t x76, uint8_t x77 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x74, Return x26, 0x3ffffff);
- uint32_t x79, uint8_t x80 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x77, Return x28, 0x3ffffff);
- uint32_t x82, uint8_t x83 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x80, Return x30, 0x3ffffff);
- uint32_t x85, uint8_t x86 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x83, Return x32, 0x3ffffff);
- uint32_t x88, uint8_t x89 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x86, Return x34, 0x3ffffff);
- uint32_t x91, uint8_t x92 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x89, Return x36, 0x3ffffff);
- uint32_t x94, uint8_t x95 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x92, Return x38, 0x3ffffff);
- uint32_t x97, uint8_t x98 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x95, Return x37, 0x3ffffff);
- uint32_t x99 = cmovznz32(x98, 0x0, 0xffffffff);
- uint32_t x100 = (x99 & 0x7ffffff);
- uint32_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x40, Return x100);
- uint32_t x104 = (x99 & 0x3ffffff);
- uint32_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x43, Return x104);
- uint32_t x108 = (x99 & 0x3ffffff);
- uint32_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x107, Return x46, Return x108);
- uint32_t x112 = (x99 & 0x3ffffff);
- uint32_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x49, Return x112);
- uint32_t x116 = (x99 & 0x3ffffff);
- uint32_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x52, Return x116);
- uint32_t x120 = (x99 & 0x3ffffff);
- uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x119, Return x55, Return x120);
- uint32_t x124 = (x99 & 0x3ffffff);
- uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x58, Return x124);
- uint32_t x128 = (x99 & 0x3ffffff);
- uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x61, Return x128);
- uint32_t x132 = (x99 & 0x3ffffff);
- uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x64, Return x132);
- uint32_t x136 = (x99 & 0x3ffffff);
- uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x67, Return x136);
- uint32_t x140 = (x99 & 0x3ffffff);
- uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x70, Return x140);
- uint32_t x144 = (x99 & 0x3ffffff);
- uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x73, Return x144);
- uint32_t x148 = (x99 & 0x3ffffff);
- uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x76, Return x148);
- uint32_t x152 = (x99 & 0x3ffffff);
- uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x79, Return x152);
- uint32_t x156 = (x99 & 0x3ffffff);
- uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x82, Return x156);
- uint32_t x160 = (x99 & 0x3ffffff);
- uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x85, Return x160);
- uint32_t x164 = (x99 & 0x3ffffff);
- uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x88, Return x164);
- uint32_t x168 = (x99 & 0x3ffffff);
- uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x91, Return x168);
- uint32_t x172 = (x99 & 0x3ffffff);
- uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x94, Return x172);
- uint32_t x176 = (x99 & 0x3ffffff);
- uint32_t x178, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x97, Return x176);
- (Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102))
-x
- : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1/freezeDisplay.v b/src/Specific/solinas32_2e521m1/freezeDisplay.v
deleted file mode 100644
index b5befd5e6..000000000
--- a/src/Specific/solinas32_2e521m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas32_2e521m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/CurveParameters.v b/src/Specific/solinas32_2e521m1_19limbs/CurveParameters.v
new file mode 100644
index 000000000..cd138bbe2
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^521 - 1
+Base: 27 + 8/19
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 19%nat;
+ base := 27 + 8/19;
+ bitwidth := 32;
+ s := 2^521;
+ c := [(1, 1)];
+ carry_chains := Some [seq 0 (pred 19); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/Synthesis.v b/src/Specific/solinas32_2e521m1_19limbs/Synthesis.v
new file mode 100644
index 000000000..a1acc3dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/compiler.sh b/src/Specific/solinas32_2e521m1_19limbs/compiler.sh
new file mode 100755
index 000000000..694674860
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,28,27,27,28,27,28,27,28,27,27,28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<521) - 1' "$@"
diff --git a/src/Specific/solinas32_2e521m1_19limbs/compilerxx.sh b/src/Specific/solinas32_2e521m1_19limbs/compilerxx.sh
new file mode 100755
index 000000000..1a1ea118a
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='32' -Dlimb_weight_gaps_array='{28,27,28,27,28,27,27,28,27,28,27,28,27,27,28,27,28,27,27}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='19' -Dq_mpz='(1_mpz<<521) - 1' "$@"
diff --git a/src/Specific/solinas32_2e521m1_19limbs/feadd.v b/src/Specific/solinas32_2e521m1_19limbs/feadd.v
new file mode 100644
index 000000000..b563d4375
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/feaddDisplay.v b/src/Specific/solinas32_2e521m1_19limbs/feaddDisplay.v
new file mode 100644
index 000000000..e39988842
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/femul.v b/src/Specific/solinas32_2e521m1_19limbs/femul.v
new file mode 100644
index 000000000..031588cb6
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.v b/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.v
new file mode 100644
index 000000000..766d89955
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesquare.v b/src/Specific/solinas32_2e521m1_19limbs/fesquare.v
new file mode 100644
index 000000000..7720acd6b
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.v b/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c674f75ac
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesub.v b/src/Specific/solinas32_2e521m1_19limbs/fesub.v
new file mode 100644
index 000000000..eeb077b7e
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesubDisplay.v b/src/Specific/solinas32_2e521m1_19limbs/fesubDisplay.v
new file mode 100644
index 000000000..9b523f348
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/freeze.v b/src/Specific/solinas32_2e521m1_19limbs/freeze.v
new file mode 100644
index 000000000..b052a4885
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/freezeDisplay.v b/src/Specific/solinas32_2e521m1_19limbs/freezeDisplay.v
new file mode 100644
index 000000000..b6580d7f9
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_19limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e521m1_19limbs/py_interpreter.sh b/src/Specific/solinas32_2e521m1_19limbs/py_interpreter.sh
new file mode 100755
index 000000000..a8cdd7045
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**521 - 1' -Dmodulus_bytes='27 + 8/19' -Da24='121665'
diff --git a/src/Specific/solinas32_2e521m1/CurveParameters.v b/src/Specific/solinas32_2e521m1_20limbs/CurveParameters.v
index 14fb480f7..14fb480f7 100644
--- a/src/Specific/solinas32_2e521m1/CurveParameters.v
+++ b/src/Specific/solinas32_2e521m1_20limbs/CurveParameters.v
diff --git a/src/Specific/solinas32_2e521m1_20limbs/Synthesis.v b/src/Specific/solinas32_2e521m1_20limbs/Synthesis.v
new file mode 100644
index 000000000..e9da27249
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas32_2e521m1/compiler.sh b/src/Specific/solinas32_2e521m1_20limbs/compiler.sh
index 3cd23643e..3cd23643e 100755
--- a/src/Specific/solinas32_2e521m1/compiler.sh
+++ b/src/Specific/solinas32_2e521m1_20limbs/compiler.sh
diff --git a/src/Specific/solinas32_2e521m1/compilerxx.sh b/src/Specific/solinas32_2e521m1_20limbs/compilerxx.sh
index ade3cf0c1..ade3cf0c1 100755
--- a/src/Specific/solinas32_2e521m1/compilerxx.sh
+++ b/src/Specific/solinas32_2e521m1_20limbs/compilerxx.sh
diff --git a/src/Specific/solinas32_2e521m1_20limbs/feadd.v b/src/Specific/solinas32_2e521m1_20limbs/feadd.v
new file mode 100644
index 000000000..4eefbedde
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/feaddDisplay.v b/src/Specific/solinas32_2e521m1_20limbs/feaddDisplay.v
new file mode 100644
index 000000000..2e30dba4e
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/femul.v b/src/Specific/solinas32_2e521m1_20limbs/femul.v
new file mode 100644
index 000000000..e900766cd
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/femulDisplay.v b/src/Specific/solinas32_2e521m1_20limbs/femulDisplay.v
new file mode 100644
index 000000000..be8d9b30e
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/fesquare.v b/src/Specific/solinas32_2e521m1_20limbs/fesquare.v
new file mode 100644
index 000000000..39838ab15
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/fesquareDisplay.v b/src/Specific/solinas32_2e521m1_20limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e28c6343c
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/fesub.v b/src/Specific/solinas32_2e521m1_20limbs/fesub.v
new file mode 100644
index 000000000..ee4c31d1c
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/fesubDisplay.v b/src/Specific/solinas32_2e521m1_20limbs/fesubDisplay.v
new file mode 100644
index 000000000..be9fa4936
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/freeze.v b/src/Specific/solinas32_2e521m1_20limbs/freeze.v
new file mode 100644
index 000000000..575c7c0ed
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas32_2e521m1_20limbs/freezeDisplay.v b/src/Specific/solinas32_2e521m1_20limbs/freezeDisplay.v
new file mode 100644
index 000000000..bf02767b0
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_20limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas32_2e521m1_20limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas32_2e521m1/py_interpreter.sh b/src/Specific/solinas32_2e521m1_20limbs/py_interpreter.sh
index 597b2ad8f..597b2ad8f 100755
--- a/src/Specific/solinas32_2e521m1/py_interpreter.sh
+++ b/src/Specific/solinas32_2e521m1_20limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e127m1/Synthesis.v b/src/Specific/solinas64_2e127m1/Synthesis.v
deleted file mode 100644
index 60a01497a..000000000
--- a/src/Specific/solinas64_2e127m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e127m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e127m1/feadd.c b/src/Specific/solinas64_2e127m1/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e127m1/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e127m1/feadd.v b/src/Specific/solinas64_2e127m1/feadd.v
deleted file mode 100644
index a1b29bcc7..000000000
--- a/src/Specific/solinas64_2e127m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e127m1/feaddDisplay.log b/src/Specific/solinas64_2e127m1/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e127m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/feaddDisplay.v b/src/Specific/solinas64_2e127m1/feaddDisplay.v
deleted file mode 100644
index 885e9a765..000000000
--- a/src/Specific/solinas64_2e127m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e127m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e127m1/femul.c b/src/Specific/solinas64_2e127m1/femul.c
deleted file mode 100644
index 4d53c606f..000000000
--- a/src/Specific/solinas64_2e127m1/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + ((uint128_t)x6 * x10));
- { uint128_t x14 = (((uint128_t)x5 * x9) + ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x2b);
- { uint64_t x16 = ((uint64_t)x14 & 0x7ffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x2a);
- { uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x2a);
- { uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffff);
- { uint64_t x23 = (x16 + x21);
- { uint64_t x24 = (x23 >> 0x2b);
- { uint64_t x25 = (x23 & 0x7ffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x2a);
- { uint64_t x28 = (x26 & 0x3ffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e127m1/femul.v b/src/Specific/solinas64_2e127m1/femul.v
deleted file mode 100644
index b2c0799b4..000000000
--- a/src/Specific/solinas64_2e127m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e127m1/femulDisplay.log b/src/Specific/solinas64_2e127m1/femulDisplay.log
deleted file mode 100644
index c36e46960..000000000
--- a/src/Specific/solinas64_2e127m1/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + ((uint128_t)x6 * x10));
- uint128_t x14 = (((uint128_t)x5 * x9) + ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11))));
- uint64_t x15 = (uint64_t) (x14 >> 0x2b);
- uint64_t x16 = ((uint64_t)x14 & 0x7ffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x2a);
- uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x2a);
- uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffff);
- uint64_t x23 = (x16 + x21);
- uint64_t x24 = (x23 >> 0x2b);
- uint64_t x25 = (x23 & 0x7ffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x2a);
- uint64_t x28 = (x26 & 0x3ffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/femulDisplay.v b/src/Specific/solinas64_2e127m1/femulDisplay.v
deleted file mode 100644
index 2be44b491..000000000
--- a/src/Specific/solinas64_2e127m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e127m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e127m1/fesquare.c b/src/Specific/solinas64_2e127m1/fesquare.c
deleted file mode 100644
index 3c6dcc648..000000000
--- a/src/Specific/solinas64_2e127m1/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((uint128_t)x3 * x3));
- { uint128_t x7 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x2b);
- { uint64_t x9 = ((uint64_t)x7 & 0x7ffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x2a);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2a);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffff);
- { uint64_t x16 = (x9 + x14);
- { uint64_t x17 = (x16 >> 0x2b);
- { uint64_t x18 = (x16 & 0x7ffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x2a);
- { uint64_t x21 = (x19 & 0x3ffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e127m1/fesquare.v b/src/Specific/solinas64_2e127m1/fesquare.v
deleted file mode 100644
index 014f312c8..000000000
--- a/src/Specific/solinas64_2e127m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e127m1/fesquareDisplay.log b/src/Specific/solinas64_2e127m1/fesquareDisplay.log
deleted file mode 100644
index 8fb8df2f4..000000000
--- a/src/Specific/solinas64_2e127m1/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((uint128_t)x3 * x3));
- uint128_t x7 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4))));
- uint64_t x8 = (uint64_t) (x7 >> 0x2b);
- uint64_t x9 = ((uint64_t)x7 & 0x7ffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x2a);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x2a);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffff);
- uint64_t x16 = (x9 + x14);
- uint64_t x17 = (x16 >> 0x2b);
- uint64_t x18 = (x16 & 0x7ffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x2a);
- uint64_t x21 = (x19 & 0x3ffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/fesquareDisplay.v b/src/Specific/solinas64_2e127m1/fesquareDisplay.v
deleted file mode 100644
index 6dbed64df..000000000
--- a/src/Specific/solinas64_2e127m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e127m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e127m1/fesub.c b/src/Specific/solinas64_2e127m1/fesub.c
deleted file mode 100644
index c2fd208d1..000000000
--- a/src/Specific/solinas64_2e127m1/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0xffffffffffe + x5) - x9);
- out[1] = ((0x7fffffffffe + x7) - x11);
- out[2] = ((0x7fffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e127m1/fesub.v b/src/Specific/solinas64_2e127m1/fesub.v
deleted file mode 100644
index 07d2da987..000000000
--- a/src/Specific/solinas64_2e127m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e127m1/fesubDisplay.log b/src/Specific/solinas64_2e127m1/fesubDisplay.log
deleted file mode 100644
index f9746a1ad..000000000
--- a/src/Specific/solinas64_2e127m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffe + x6) - x10), ((0x7fffffffffe + x7) - x11), ((0xffffffffffe + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/fesubDisplay.v b/src/Specific/solinas64_2e127m1/fesubDisplay.v
deleted file mode 100644
index 9490ba466..000000000
--- a/src/Specific/solinas64_2e127m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e127m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e127m1/freeze.c b/src/Specific/solinas64_2e127m1/freeze.c
deleted file mode 100644
index c032d35b1..000000000
--- a/src/Specific/solinas64_2e127m1/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x7ffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x3ffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x3ffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e127m1/freeze.v b/src/Specific/solinas64_2e127m1/freeze.v
deleted file mode 100644
index 8b713351e..000000000
--- a/src/Specific/solinas64_2e127m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e127m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e127m1/freezeDisplay.log b/src/Specific/solinas64_2e127m1/freezeDisplay.log
deleted file mode 100644
index 48a026179..000000000
--- a/src/Specific/solinas64_2e127m1/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x7ffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x3ffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x3ffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/freezeDisplay.v b/src/Specific/solinas64_2e127m1/freezeDisplay.v
deleted file mode 100644
index 93b331e46..000000000
--- a/src/Specific/solinas64_2e127m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e127m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e127m1/CurveParameters.v b/src/Specific/solinas64_2e127m1_3limbs/CurveParameters.v
index 3cbb46ff2..3cbb46ff2 100644
--- a/src/Specific/solinas64_2e127m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e127m1_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e127m1_3limbs/Synthesis.v b/src/Specific/solinas64_2e127m1_3limbs/Synthesis.v
new file mode 100644
index 000000000..c4147a476
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e127m1/compiler.sh b/src/Specific/solinas64_2e127m1_3limbs/compiler.sh
index 9631a259d..9631a259d 100755
--- a/src/Specific/solinas64_2e127m1/compiler.sh
+++ b/src/Specific/solinas64_2e127m1_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e127m1/compilerxx.sh b/src/Specific/solinas64_2e127m1_3limbs/compilerxx.sh
index 9476e2d34..9476e2d34 100755
--- a/src/Specific/solinas64_2e127m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e127m1_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e127m1_3limbs/feadd.v b/src/Specific/solinas64_2e127m1_3limbs/feadd.v
new file mode 100644
index 000000000..667129b7c
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e127m1_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..a761ac93d
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/femul.v b/src/Specific/solinas64_2e127m1_3limbs/femul.v
new file mode 100644
index 000000000..8f0417dfd
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/femulDisplay.v b/src/Specific/solinas64_2e127m1_3limbs/femulDisplay.v
new file mode 100644
index 000000000..59b7ec763
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/fesquare.v b/src/Specific/solinas64_2e127m1_3limbs/fesquare.v
new file mode 100644
index 000000000..0ddf612d3
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e127m1_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9d8a97bc6
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/fesub.v b/src/Specific/solinas64_2e127m1_3limbs/fesub.v
new file mode 100644
index 000000000..bdf39d9e7
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e127m1_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..5ca534c97
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/freeze.v b/src/Specific/solinas64_2e127m1_3limbs/freeze.v
new file mode 100644
index 000000000..18bdc86b6
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e127m1_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e127m1_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..43bf47cf3
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e127m1_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e127m1/py_interpreter.sh b/src/Specific/solinas64_2e127m1_3limbs/py_interpreter.sh
index 80126e541..80126e541 100755
--- a/src/Specific/solinas64_2e127m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e127m1_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e129m25/Synthesis.v b/src/Specific/solinas64_2e129m25/Synthesis.v
deleted file mode 100644
index c789fba2e..000000000
--- a/src/Specific/solinas64_2e129m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e129m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e129m25/feadd.c b/src/Specific/solinas64_2e129m25/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e129m25/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e129m25/feadd.v b/src/Specific/solinas64_2e129m25/feadd.v
deleted file mode 100644
index f9e8bb548..000000000
--- a/src/Specific/solinas64_2e129m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e129m25/feaddDisplay.log b/src/Specific/solinas64_2e129m25/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e129m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/feaddDisplay.v b/src/Specific/solinas64_2e129m25/feaddDisplay.v
deleted file mode 100644
index cfe379d17..000000000
--- a/src/Specific/solinas64_2e129m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e129m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e129m25/femul.c b/src/Specific/solinas64_2e129m25/femul.c
deleted file mode 100644
index f4d7f2f96..000000000
--- a/src/Specific/solinas64_2e129m25/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x19 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x19 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x2b);
- { uint64_t x16 = ((uint64_t)x14 & 0x7ffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x2b);
- { uint64_t x19 = ((uint64_t)x17 & 0x7ffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x2b);
- { uint64_t x22 = ((uint64_t)x20 & 0x7ffffffffff);
- { uint64_t x23 = (x16 + (0x19 * x21));
- { uint64_t x24 = (x23 >> 0x2b);
- { uint64_t x25 = (x23 & 0x7ffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x2b);
- { uint64_t x28 = (x26 & 0x7ffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e129m25/femul.v b/src/Specific/solinas64_2e129m25/femul.v
deleted file mode 100644
index ffc0bc3bf..000000000
--- a/src/Specific/solinas64_2e129m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e129m25/femulDisplay.log b/src/Specific/solinas64_2e129m25/femulDisplay.log
deleted file mode 100644
index 4e21c36ee..000000000
--- a/src/Specific/solinas64_2e129m25/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x19 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x19 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint64_t x15 = (uint64_t) (x14 >> 0x2b);
- uint64_t x16 = ((uint64_t)x14 & 0x7ffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x2b);
- uint64_t x19 = ((uint64_t)x17 & 0x7ffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x2b);
- uint64_t x22 = ((uint64_t)x20 & 0x7ffffffffff);
- uint64_t x23 = (x16 + (0x19 * x21));
- uint64_t x24 = (x23 >> 0x2b);
- uint64_t x25 = (x23 & 0x7ffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x2b);
- uint64_t x28 = (x26 & 0x7ffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/femulDisplay.v b/src/Specific/solinas64_2e129m25/femulDisplay.v
deleted file mode 100644
index 9e19e4bb7..000000000
--- a/src/Specific/solinas64_2e129m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e129m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e129m25/fesquare.c b/src/Specific/solinas64_2e129m25/fesquare.c
deleted file mode 100644
index e46051319..000000000
--- a/src/Specific/solinas64_2e129m25/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x19 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x2b);
- { uint64_t x9 = ((uint64_t)x7 & 0x7ffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x2b);
- { uint64_t x12 = ((uint64_t)x10 & 0x7ffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2b);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffff);
- { uint64_t x16 = (x9 + (0x19 * x14));
- { uint64_t x17 = (x16 >> 0x2b);
- { uint64_t x18 = (x16 & 0x7ffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x2b);
- { uint64_t x21 = (x19 & 0x7ffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e129m25/fesquare.v b/src/Specific/solinas64_2e129m25/fesquare.v
deleted file mode 100644
index 40d0bd506..000000000
--- a/src/Specific/solinas64_2e129m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e129m25/fesquareDisplay.log b/src/Specific/solinas64_2e129m25/fesquareDisplay.log
deleted file mode 100644
index 9aec8330b..000000000
--- a/src/Specific/solinas64_2e129m25/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x19 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint64_t x8 = (uint64_t) (x7 >> 0x2b);
- uint64_t x9 = ((uint64_t)x7 & 0x7ffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x2b);
- uint64_t x12 = ((uint64_t)x10 & 0x7ffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x2b);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffff);
- uint64_t x16 = (x9 + (0x19 * x14));
- uint64_t x17 = (x16 >> 0x2b);
- uint64_t x18 = (x16 & 0x7ffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x2b);
- uint64_t x21 = (x19 & 0x7ffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/fesquareDisplay.v b/src/Specific/solinas64_2e129m25/fesquareDisplay.v
deleted file mode 100644
index 0421e33cd..000000000
--- a/src/Specific/solinas64_2e129m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e129m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e129m25/fesub.c b/src/Specific/solinas64_2e129m25/fesub.c
deleted file mode 100644
index 3b568ec45..000000000
--- a/src/Specific/solinas64_2e129m25/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0xfffffffffce + x5) - x9);
- out[1] = ((0xffffffffffe + x7) - x11);
- out[2] = ((0xffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e129m25/fesub.v b/src/Specific/solinas64_2e129m25/fesub.v
deleted file mode 100644
index cc918c797..000000000
--- a/src/Specific/solinas64_2e129m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e129m25/fesubDisplay.log b/src/Specific/solinas64_2e129m25/fesubDisplay.log
deleted file mode 100644
index d5762eae8..000000000
--- a/src/Specific/solinas64_2e129m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0xffffffffffe + x6) - x10), ((0xffffffffffe + x7) - x11), ((0xfffffffffce + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/fesubDisplay.v b/src/Specific/solinas64_2e129m25/fesubDisplay.v
deleted file mode 100644
index 57756b44d..000000000
--- a/src/Specific/solinas64_2e129m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e129m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e129m25/freeze.c b/src/Specific/solinas64_2e129m25/freeze.c
deleted file mode 100644
index a0c83f37d..000000000
--- a/src/Specific/solinas64_2e129m25/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe7);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7ffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7ffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x7ffffffffe7);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x7ffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x7ffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e129m25/freeze.v b/src/Specific/solinas64_2e129m25/freeze.v
deleted file mode 100644
index 0113e8d90..000000000
--- a/src/Specific/solinas64_2e129m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e129m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e129m25/freezeDisplay.log b/src/Specific/solinas64_2e129m25/freezeDisplay.log
deleted file mode 100644
index d45479954..000000000
--- a/src/Specific/solinas64_2e129m25/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe7);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7ffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7ffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x7ffffffffe7);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x7ffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x7ffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/freezeDisplay.v b/src/Specific/solinas64_2e129m25/freezeDisplay.v
deleted file mode 100644
index eb16da649..000000000
--- a/src/Specific/solinas64_2e129m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e129m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e129m25/CurveParameters.v b/src/Specific/solinas64_2e129m25_3limbs/CurveParameters.v
index df897a547..df897a547 100644
--- a/src/Specific/solinas64_2e129m25/CurveParameters.v
+++ b/src/Specific/solinas64_2e129m25_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e129m25_3limbs/Synthesis.v b/src/Specific/solinas64_2e129m25_3limbs/Synthesis.v
new file mode 100644
index 000000000..1abfe164d
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e129m25/compiler.sh b/src/Specific/solinas64_2e129m25_3limbs/compiler.sh
index 760c97547..760c97547 100755
--- a/src/Specific/solinas64_2e129m25/compiler.sh
+++ b/src/Specific/solinas64_2e129m25_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e129m25/compilerxx.sh b/src/Specific/solinas64_2e129m25_3limbs/compilerxx.sh
index ca2336211..ca2336211 100755
--- a/src/Specific/solinas64_2e129m25/compilerxx.sh
+++ b/src/Specific/solinas64_2e129m25_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e129m25_3limbs/feadd.v b/src/Specific/solinas64_2e129m25_3limbs/feadd.v
new file mode 100644
index 000000000..b94a5449f
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e129m25_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..42cf38995
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/femul.v b/src/Specific/solinas64_2e129m25_3limbs/femul.v
new file mode 100644
index 000000000..9056599d4
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/femulDisplay.v b/src/Specific/solinas64_2e129m25_3limbs/femulDisplay.v
new file mode 100644
index 000000000..9465514bf
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/fesquare.v b/src/Specific/solinas64_2e129m25_3limbs/fesquare.v
new file mode 100644
index 000000000..a0ec619fe
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e129m25_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d67c7d693
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/fesub.v b/src/Specific/solinas64_2e129m25_3limbs/fesub.v
new file mode 100644
index 000000000..38dc55a8a
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e129m25_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..ce7a4fa8e
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/freeze.v b/src/Specific/solinas64_2e129m25_3limbs/freeze.v
new file mode 100644
index 000000000..fdbf2d759
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e129m25_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e129m25_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..b76491141
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e129m25/py_interpreter.sh b/src/Specific/solinas64_2e129m25_3limbs/py_interpreter.sh
index 9b3975489..9b3975489 100755
--- a/src/Specific/solinas64_2e129m25/py_interpreter.sh
+++ b/src/Specific/solinas64_2e129m25_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e129m25_4limbs/CurveParameters.v b/src/Specific/solinas64_2e129m25_4limbs/CurveParameters.v
new file mode 100644
index 000000000..bc07cd21a
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^129 - 25
+Base: 32.25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 32 + 1/4;
+ bitwidth := 64;
+ s := 2^129;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/Synthesis.v b/src/Specific/solinas64_2e129m25_4limbs/Synthesis.v
new file mode 100644
index 000000000..5b2cf6def
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/compiler.sh b/src/Specific/solinas64_2e129m25_4limbs/compiler.sh
new file mode 100755
index 000000000..1ca649a48
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<129) - 25' "$@"
diff --git a/src/Specific/solinas64_2e129m25_4limbs/compilerxx.sh b/src/Specific/solinas64_2e129m25_4limbs/compilerxx.sh
new file mode 100755
index 000000000..f3e11ace3
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,32,32}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<129) - 25' "$@"
diff --git a/src/Specific/solinas64_2e129m25_4limbs/feadd.v b/src/Specific/solinas64_2e129m25_4limbs/feadd.v
new file mode 100644
index 000000000..b041a05ce
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e129m25_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..68a5422a6
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/femul.v b/src/Specific/solinas64_2e129m25_4limbs/femul.v
new file mode 100644
index 000000000..07526d7b5
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/femulDisplay.v b/src/Specific/solinas64_2e129m25_4limbs/femulDisplay.v
new file mode 100644
index 000000000..9857bba98
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesquare.v b/src/Specific/solinas64_2e129m25_4limbs/fesquare.v
new file mode 100644
index 000000000..98a477edf
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e129m25_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..07e1f6079
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesub.v b/src/Specific/solinas64_2e129m25_4limbs/fesub.v
new file mode 100644
index 000000000..95c81205b
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..68a01010a
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/freeze.v b/src/Specific/solinas64_2e129m25_4limbs/freeze.v
new file mode 100644
index 000000000..61a0a105b
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e129m25_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..cd66ba01e
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e129m25_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e129m25_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e129m25_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..d89efd522
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**129 - 25' -Dmodulus_bytes='32.25' -Da24='121665'
diff --git a/src/Specific/solinas64_2e130m5/Synthesis.v b/src/Specific/solinas64_2e130m5/Synthesis.v
deleted file mode 100644
index 373f46625..000000000
--- a/src/Specific/solinas64_2e130m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e130m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e130m5/feadd.c b/src/Specific/solinas64_2e130m5/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e130m5/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e130m5/feadd.v b/src/Specific/solinas64_2e130m5/feadd.v
deleted file mode 100644
index 05da6baf1..000000000
--- a/src/Specific/solinas64_2e130m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e130m5/feaddDisplay.log b/src/Specific/solinas64_2e130m5/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e130m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/feaddDisplay.v b/src/Specific/solinas64_2e130m5/feaddDisplay.v
deleted file mode 100644
index 11b5faac6..000000000
--- a/src/Specific/solinas64_2e130m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e130m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e130m5/femul.c b/src/Specific/solinas64_2e130m5/femul.c
deleted file mode 100644
index a14294d6d..000000000
--- a/src/Specific/solinas64_2e130m5/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11)))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x2c);
- { uint64_t x16 = ((uint64_t)x14 & 0xfffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x2b);
- { uint64_t x19 = ((uint64_t)x17 & 0x7ffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x2b);
- { uint64_t x22 = ((uint64_t)x20 & 0x7ffffffffff);
- { uint64_t x23 = (x16 + (0x5 * x21));
- { uint64_t x24 = (x23 >> 0x2c);
- { uint64_t x25 = (x23 & 0xfffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x2b);
- { uint64_t x28 = (x26 & 0x7ffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e130m5/femul.v b/src/Specific/solinas64_2e130m5/femul.v
deleted file mode 100644
index eefd008e4..000000000
--- a/src/Specific/solinas64_2e130m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e130m5/femulDisplay.log b/src/Specific/solinas64_2e130m5/femulDisplay.log
deleted file mode 100644
index c514c0886..000000000
--- a/src/Specific/solinas64_2e130m5/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11)))));
- uint64_t x15 = (uint64_t) (x14 >> 0x2c);
- uint64_t x16 = ((uint64_t)x14 & 0xfffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x2b);
- uint64_t x19 = ((uint64_t)x17 & 0x7ffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x2b);
- uint64_t x22 = ((uint64_t)x20 & 0x7ffffffffff);
- uint64_t x23 = (x16 + (0x5 * x21));
- uint64_t x24 = (x23 >> 0x2c);
- uint64_t x25 = (x23 & 0xfffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x2b);
- uint64_t x28 = (x26 & 0x7ffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/femulDisplay.v b/src/Specific/solinas64_2e130m5/femulDisplay.v
deleted file mode 100644
index c7952bff0..000000000
--- a/src/Specific/solinas64_2e130m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e130m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e130m5/fesquare.c b/src/Specific/solinas64_2e130m5/fesquare.c
deleted file mode 100644
index 499c28d6d..000000000
--- a/src/Specific/solinas64_2e130m5/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4)))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x2c);
- { uint64_t x9 = ((uint64_t)x7 & 0xfffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x2b);
- { uint64_t x12 = ((uint64_t)x10 & 0x7ffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2b);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffff);
- { uint64_t x16 = (x9 + (0x5 * x14));
- { uint64_t x17 = (x16 >> 0x2c);
- { uint64_t x18 = (x16 & 0xfffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x2b);
- { uint64_t x21 = (x19 & 0x7ffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e130m5/fesquare.v b/src/Specific/solinas64_2e130m5/fesquare.v
deleted file mode 100644
index b4b62657b..000000000
--- a/src/Specific/solinas64_2e130m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e130m5/fesquareDisplay.log b/src/Specific/solinas64_2e130m5/fesquareDisplay.log
deleted file mode 100644
index f60cdd005..000000000
--- a/src/Specific/solinas64_2e130m5/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4)))));
- uint64_t x8 = (uint64_t) (x7 >> 0x2c);
- uint64_t x9 = ((uint64_t)x7 & 0xfffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x2b);
- uint64_t x12 = ((uint64_t)x10 & 0x7ffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x2b);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffff);
- uint64_t x16 = (x9 + (0x5 * x14));
- uint64_t x17 = (x16 >> 0x2c);
- uint64_t x18 = (x16 & 0xfffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x2b);
- uint64_t x21 = (x19 & 0x7ffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/fesquareDisplay.v b/src/Specific/solinas64_2e130m5/fesquareDisplay.v
deleted file mode 100644
index 8b9f10023..000000000
--- a/src/Specific/solinas64_2e130m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e130m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e130m5/fesub.c b/src/Specific/solinas64_2e130m5/fesub.c
deleted file mode 100644
index cde6ead7d..000000000
--- a/src/Specific/solinas64_2e130m5/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x1ffffffffff6 + x5) - x9);
- out[1] = ((0xffffffffffe + x7) - x11);
- out[2] = ((0xffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e130m5/fesub.v b/src/Specific/solinas64_2e130m5/fesub.v
deleted file mode 100644
index bdb731d3a..000000000
--- a/src/Specific/solinas64_2e130m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e130m5/fesubDisplay.log b/src/Specific/solinas64_2e130m5/fesubDisplay.log
deleted file mode 100644
index 3496fca22..000000000
--- a/src/Specific/solinas64_2e130m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0xffffffffffe + x6) - x10), ((0xffffffffffe + x7) - x11), ((0x1ffffffffff6 + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/fesubDisplay.v b/src/Specific/solinas64_2e130m5/fesubDisplay.v
deleted file mode 100644
index 46f9de2d9..000000000
--- a/src/Specific/solinas64_2e130m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e130m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e130m5/freeze.c b/src/Specific/solinas64_2e130m5/freeze.c
deleted file mode 100644
index 442eefaf1..000000000
--- a/src/Specific/solinas64_2e130m5/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffb);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7ffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7ffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xffffffffffb);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x7ffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x7ffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e130m5/freeze.v b/src/Specific/solinas64_2e130m5/freeze.v
deleted file mode 100644
index e6aec5b0b..000000000
--- a/src/Specific/solinas64_2e130m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e130m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e130m5/freezeDisplay.log b/src/Specific/solinas64_2e130m5/freezeDisplay.log
deleted file mode 100644
index ef7c05558..000000000
--- a/src/Specific/solinas64_2e130m5/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffb);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7ffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7ffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xffffffffffb);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x7ffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x7ffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/freezeDisplay.v b/src/Specific/solinas64_2e130m5/freezeDisplay.v
deleted file mode 100644
index e6268545b..000000000
--- a/src/Specific/solinas64_2e130m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e130m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e130m5/CurveParameters.v b/src/Specific/solinas64_2e130m5_3limbs/CurveParameters.v
index 16175f52a..16175f52a 100644
--- a/src/Specific/solinas64_2e130m5/CurveParameters.v
+++ b/src/Specific/solinas64_2e130m5_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e130m5_3limbs/Synthesis.v b/src/Specific/solinas64_2e130m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..63d8e67c5
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e130m5/compiler.sh b/src/Specific/solinas64_2e130m5_3limbs/compiler.sh
index e666804e9..e666804e9 100755
--- a/src/Specific/solinas64_2e130m5/compiler.sh
+++ b/src/Specific/solinas64_2e130m5_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e130m5/compilerxx.sh b/src/Specific/solinas64_2e130m5_3limbs/compilerxx.sh
index 1b84023fb..1b84023fb 100755
--- a/src/Specific/solinas64_2e130m5/compilerxx.sh
+++ b/src/Specific/solinas64_2e130m5_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e130m5_3limbs/feadd.v b/src/Specific/solinas64_2e130m5_3limbs/feadd.v
new file mode 100644
index 000000000..ba2a6b3dd
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e130m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..8efafb0f8
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/femul.v b/src/Specific/solinas64_2e130m5_3limbs/femul.v
new file mode 100644
index 000000000..40dc803fe
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/femulDisplay.v b/src/Specific/solinas64_2e130m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..1f2969c32
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/fesquare.v b/src/Specific/solinas64_2e130m5_3limbs/fesquare.v
new file mode 100644
index 000000000..a770401a9
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e130m5_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..57c4b5070
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/fesub.v b/src/Specific/solinas64_2e130m5_3limbs/fesub.v
new file mode 100644
index 000000000..2cb067582
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e130m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..b3f3560a5
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/freeze.v b/src/Specific/solinas64_2e130m5_3limbs/freeze.v
new file mode 100644
index 000000000..e30f6825e
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e130m5_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e130m5_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..1d001d822
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e130m5/py_interpreter.sh b/src/Specific/solinas64_2e130m5_3limbs/py_interpreter.sh
index 258d27d68..258d27d68 100755
--- a/src/Specific/solinas64_2e130m5/py_interpreter.sh
+++ b/src/Specific/solinas64_2e130m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e130m5_4limbs/CurveParameters.v b/src/Specific/solinas64_2e130m5_4limbs/CurveParameters.v
new file mode 100644
index 000000000..adaffc7a8
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^130 - 5
+Base: 32.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 32 + 1/2;
+ bitwidth := 64;
+ s := 2^130;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/Synthesis.v b/src/Specific/solinas64_2e130m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..717392fbf
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/compiler.sh b/src/Specific/solinas64_2e130m5_4limbs/compiler.sh
new file mode 100755
index 000000000..70f922c3d
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,33,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<130) - 5' "$@"
diff --git a/src/Specific/solinas64_2e130m5_4limbs/compilerxx.sh b/src/Specific/solinas64_2e130m5_4limbs/compilerxx.sh
new file mode 100755
index 000000000..7c338817d
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{33,32,33,32}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='17' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<130) - 5' "$@"
diff --git a/src/Specific/solinas64_2e130m5_4limbs/feadd.v b/src/Specific/solinas64_2e130m5_4limbs/feadd.v
new file mode 100644
index 000000000..a9a0bacc2
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e130m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..f0a528c8e
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/femul.v b/src/Specific/solinas64_2e130m5_4limbs/femul.v
new file mode 100644
index 000000000..4fc8faddf
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/femulDisplay.v b/src/Specific/solinas64_2e130m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..2495d29b5
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesquare.v b/src/Specific/solinas64_2e130m5_4limbs/fesquare.v
new file mode 100644
index 000000000..6c3254087
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e130m5_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3a5d9f650
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesub.v b/src/Specific/solinas64_2e130m5_4limbs/fesub.v
new file mode 100644
index 000000000..7527a86f8
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..ba6988d5d
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/freeze.v b/src/Specific/solinas64_2e130m5_4limbs/freeze.v
new file mode 100644
index 000000000..73bb65405
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e130m5_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..ef8912fdf
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e130m5_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e130m5_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e130m5_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..26a1c3f1a
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**130 - 5' -Dmodulus_bytes='32.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e137m13/Synthesis.v b/src/Specific/solinas64_2e137m13/Synthesis.v
deleted file mode 100644
index f730d0502..000000000
--- a/src/Specific/solinas64_2e137m13/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e137m13.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e137m13/feadd.c b/src/Specific/solinas64_2e137m13/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e137m13/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e137m13/feadd.v b/src/Specific/solinas64_2e137m13/feadd.v
deleted file mode 100644
index 5f0a9e3f7..000000000
--- a/src/Specific/solinas64_2e137m13/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e137m13/feaddDisplay.log b/src/Specific/solinas64_2e137m13/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e137m13/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/feaddDisplay.v b/src/Specific/solinas64_2e137m13/feaddDisplay.v
deleted file mode 100644
index 0a9f45458..000000000
--- a/src/Specific/solinas64_2e137m13/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e137m13.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e137m13/femul.c b/src/Specific/solinas64_2e137m13/femul.c
deleted file mode 100644
index d68990736..000000000
--- a/src/Specific/solinas64_2e137m13/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xd * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xd * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0xd * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x23);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x22);
- { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x22);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x22);
- { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffff);
- { uint64_t x31 = (x21 + (0xd * x29));
- { uint64_t x32 = (x31 >> 0x23);
- { uint64_t x33 = (x31 & 0x7ffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x22);
- { uint64_t x36 = (x34 & 0x3ffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e137m13/femul.v b/src/Specific/solinas64_2e137m13/femul.v
deleted file mode 100644
index e0efc049b..000000000
--- a/src/Specific/solinas64_2e137m13/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e137m13/femulDisplay.log b/src/Specific/solinas64_2e137m13/femulDisplay.log
deleted file mode 100644
index 403577545..000000000
--- a/src/Specific/solinas64_2e137m13/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xd * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xd * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0xd * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x23);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x22);
- uint64_t x24 = ((uint64_t)x22 & 0x3ffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x22);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x22);
- uint64_t x30 = ((uint64_t)x28 & 0x3ffffffff);
- uint64_t x31 = (x21 + (0xd * x29));
- uint64_t x32 = (x31 >> 0x23);
- uint64_t x33 = (x31 & 0x7ffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x22);
- uint64_t x36 = (x34 & 0x3ffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/femulDisplay.v b/src/Specific/solinas64_2e137m13/femulDisplay.v
deleted file mode 100644
index 740a92ac7..000000000
--- a/src/Specific/solinas64_2e137m13/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e137m13.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e137m13/fesquare.c b/src/Specific/solinas64_2e137m13/fesquare.c
deleted file mode 100644
index ea414891a..000000000
--- a/src/Specific/solinas64_2e137m13/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xd * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xd * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0xd * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x23);
- { uint64_t x12 = ((uint64_t)x10 & 0x7ffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x22);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x22);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x22);
- { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffff);
- { uint64_t x22 = (x12 + (0xd * x20));
- { uint64_t x23 = (x22 >> 0x23);
- { uint64_t x24 = (x22 & 0x7ffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x22);
- { uint64_t x27 = (x25 & 0x3ffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e137m13/fesquare.v b/src/Specific/solinas64_2e137m13/fesquare.v
deleted file mode 100644
index 546a6126c..000000000
--- a/src/Specific/solinas64_2e137m13/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e137m13/fesquareDisplay.log b/src/Specific/solinas64_2e137m13/fesquareDisplay.log
deleted file mode 100644
index dce7d48c9..000000000
--- a/src/Specific/solinas64_2e137m13/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xd * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xd * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0xd * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x23);
- uint64_t x12 = ((uint64_t)x10 & 0x7ffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x22);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x22);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x22);
- uint64_t x21 = ((uint64_t)x19 & 0x3ffffffff);
- uint64_t x22 = (x12 + (0xd * x20));
- uint64_t x23 = (x22 >> 0x23);
- uint64_t x24 = (x22 & 0x7ffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x22);
- uint64_t x27 = (x25 & 0x3ffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/fesquareDisplay.v b/src/Specific/solinas64_2e137m13/fesquareDisplay.v
deleted file mode 100644
index dffec2348..000000000
--- a/src/Specific/solinas64_2e137m13/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e137m13.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e137m13/fesub.c b/src/Specific/solinas64_2e137m13/fesub.c
deleted file mode 100644
index a4ecc2809..000000000
--- a/src/Specific/solinas64_2e137m13/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0xfffffffe6 + x5) - x11);
- out[1] = ((0x7fffffffe + x7) - x13);
- out[2] = ((0x7fffffffe + x9) - x15);
- out[3] = ((0x7fffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e137m13/fesub.v b/src/Specific/solinas64_2e137m13/fesub.v
deleted file mode 100644
index 913f8b91d..000000000
--- a/src/Specific/solinas64_2e137m13/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e137m13/fesubDisplay.log b/src/Specific/solinas64_2e137m13/fesubDisplay.log
deleted file mode 100644
index c007b2271..000000000
--- a/src/Specific/solinas64_2e137m13/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x7fffffffe + x8) - x14), ((0x7fffffffe + x9) - x15), ((0x7fffffffe + x7) - x13), ((0xfffffffe6 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/fesubDisplay.v b/src/Specific/solinas64_2e137m13/fesubDisplay.v
deleted file mode 100644
index c4742e4dd..000000000
--- a/src/Specific/solinas64_2e137m13/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e137m13.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e137m13/freeze.c b/src/Specific/solinas64_2e137m13/freeze.c
deleted file mode 100644
index 0ff635111..000000000
--- a/src/Specific/solinas64_2e137m13/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffff3);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3ffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x7fffffff3);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x3ffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x3ffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x3ffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e137m13/freeze.v b/src/Specific/solinas64_2e137m13/freeze.v
deleted file mode 100644
index f6f81845a..000000000
--- a/src/Specific/solinas64_2e137m13/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e137m13.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e137m13/freezeDisplay.log b/src/Specific/solinas64_2e137m13/freezeDisplay.log
deleted file mode 100644
index ca2db3c69..000000000
--- a/src/Specific/solinas64_2e137m13/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffff3);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3ffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x7fffffff3);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x3ffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x3ffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x3ffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 34 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/freezeDisplay.v b/src/Specific/solinas64_2e137m13/freezeDisplay.v
deleted file mode 100644
index b8cd20fdb..000000000
--- a/src/Specific/solinas64_2e137m13/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e137m13.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/CurveParameters.v b/src/Specific/solinas64_2e137m13_3limbs/CurveParameters.v
new file mode 100644
index 000000000..833f29658
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^137 - 13
+Base: 45 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 3%nat;
+ base := 45 + 2/3;
+ bitwidth := 64;
+ s := 2^137;
+ c := [(1, 13)];
+ carry_chains := Some [seq 0 (pred 3); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/Synthesis.v b/src/Specific/solinas64_2e137m13_3limbs/Synthesis.v
new file mode 100644
index 000000000..ccc38845d
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/compiler.sh b/src/Specific/solinas64_2e137m13_3limbs/compiler.sh
new file mode 100755
index 000000000..af94d02c4
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas64_2e137m13_3limbs/compilerxx.sh b/src/Specific/solinas64_2e137m13_3limbs/compilerxx.sh
new file mode 100755
index 000000000..6f0194f23
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<137) - 13' "$@"
diff --git a/src/Specific/solinas64_2e137m13_3limbs/feadd.v b/src/Specific/solinas64_2e137m13_3limbs/feadd.v
new file mode 100644
index 000000000..d9edce574
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e137m13_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..adfa01f08
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/femul.v b/src/Specific/solinas64_2e137m13_3limbs/femul.v
new file mode 100644
index 000000000..23ba24967
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/femulDisplay.v b/src/Specific/solinas64_2e137m13_3limbs/femulDisplay.v
new file mode 100644
index 000000000..8d98c1340
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesquare.v b/src/Specific/solinas64_2e137m13_3limbs/fesquare.v
new file mode 100644
index 000000000..0646821cc
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e137m13_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9bda8f18c
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesub.v b/src/Specific/solinas64_2e137m13_3limbs/fesub.v
new file mode 100644
index 000000000..72eddbe0a
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..327e3bff9
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/freeze.v b/src/Specific/solinas64_2e137m13_3limbs/freeze.v
new file mode 100644
index 000000000..c8293ae87
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..55810457e
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e137m13_3limbs/py_interpreter.sh b/src/Specific/solinas64_2e137m13_3limbs/py_interpreter.sh
new file mode 100755
index 000000000..e4f2ab231
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_3limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**137 - 13' -Dmodulus_bytes='45 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e137m13/CurveParameters.v b/src/Specific/solinas64_2e137m13_4limbs/CurveParameters.v
index e8e42dabb..e8e42dabb 100644
--- a/src/Specific/solinas64_2e137m13/CurveParameters.v
+++ b/src/Specific/solinas64_2e137m13_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e137m13_4limbs/Synthesis.v b/src/Specific/solinas64_2e137m13_4limbs/Synthesis.v
new file mode 100644
index 000000000..96bd75af8
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e137m13/compiler.sh b/src/Specific/solinas64_2e137m13_4limbs/compiler.sh
index b2d6e42c6..b2d6e42c6 100755
--- a/src/Specific/solinas64_2e137m13/compiler.sh
+++ b/src/Specific/solinas64_2e137m13_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e137m13/compilerxx.sh b/src/Specific/solinas64_2e137m13_4limbs/compilerxx.sh
index fcdc2f430..fcdc2f430 100755
--- a/src/Specific/solinas64_2e137m13/compilerxx.sh
+++ b/src/Specific/solinas64_2e137m13_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e137m13_4limbs/feadd.v b/src/Specific/solinas64_2e137m13_4limbs/feadd.v
new file mode 100644
index 000000000..017b0023d
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e137m13_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..7ebd7b26c
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/femul.v b/src/Specific/solinas64_2e137m13_4limbs/femul.v
new file mode 100644
index 000000000..850b68176
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/femulDisplay.v b/src/Specific/solinas64_2e137m13_4limbs/femulDisplay.v
new file mode 100644
index 000000000..5406d3dfe
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/fesquare.v b/src/Specific/solinas64_2e137m13_4limbs/fesquare.v
new file mode 100644
index 000000000..5fc502cad
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e137m13_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..108f197bd
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/fesub.v b/src/Specific/solinas64_2e137m13_4limbs/fesub.v
new file mode 100644
index 000000000..5a5687f1a
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e137m13_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..a456e44f2
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/freeze.v b/src/Specific/solinas64_2e137m13_4limbs/freeze.v
new file mode 100644
index 000000000..6f26d425f
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e137m13_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e137m13_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..c46bc4b12
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e137m13_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e137m13/py_interpreter.sh b/src/Specific/solinas64_2e137m13_4limbs/py_interpreter.sh
index 40f7c141c..40f7c141c 100755
--- a/src/Specific/solinas64_2e137m13/py_interpreter.sh
+++ b/src/Specific/solinas64_2e137m13_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e140m27/Synthesis.v b/src/Specific/solinas64_2e140m27/Synthesis.v
deleted file mode 100644
index c121fa6b2..000000000
--- a/src/Specific/solinas64_2e140m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e140m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e140m27/feadd.c b/src/Specific/solinas64_2e140m27/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e140m27/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e140m27/feadd.v b/src/Specific/solinas64_2e140m27/feadd.v
deleted file mode 100644
index c99651f9a..000000000
--- a/src/Specific/solinas64_2e140m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e140m27/feaddDisplay.log b/src/Specific/solinas64_2e140m27/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e140m27/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/feaddDisplay.v b/src/Specific/solinas64_2e140m27/feaddDisplay.v
deleted file mode 100644
index 9521f1367..000000000
--- a/src/Specific/solinas64_2e140m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e140m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e140m27/femul.c b/src/Specific/solinas64_2e140m27/femul.c
deleted file mode 100644
index 60bd565a7..000000000
--- a/src/Specific/solinas64_2e140m27/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x1b * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1b * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x1b * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x23);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x23);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x23);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x23);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffff);
- { uint64_t x31 = (x21 + (0x1b * x29));
- { uint64_t x32 = (x31 >> 0x23);
- { uint64_t x33 = (x31 & 0x7ffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x23);
- { uint64_t x36 = (x34 & 0x7ffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e140m27/femul.v b/src/Specific/solinas64_2e140m27/femul.v
deleted file mode 100644
index 904fdb4db..000000000
--- a/src/Specific/solinas64_2e140m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e140m27/femulDisplay.log b/src/Specific/solinas64_2e140m27/femulDisplay.log
deleted file mode 100644
index 1d8b8a24b..000000000
--- a/src/Specific/solinas64_2e140m27/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x1b * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1b * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x1b * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- uint64_t x20 = (uint64_t) (x19 >> 0x23);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x23);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x23);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x23);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffff);
- uint64_t x31 = (x21 + (0x1b * x29));
- uint64_t x32 = (x31 >> 0x23);
- uint64_t x33 = (x31 & 0x7ffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x23);
- uint64_t x36 = (x34 & 0x7ffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/femulDisplay.v b/src/Specific/solinas64_2e140m27/femulDisplay.v
deleted file mode 100644
index e298ddcdf..000000000
--- a/src/Specific/solinas64_2e140m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e140m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e140m27/fesquare.c b/src/Specific/solinas64_2e140m27/fesquare.c
deleted file mode 100644
index d99bc0584..000000000
--- a/src/Specific/solinas64_2e140m27/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1b * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1b * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x1b * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x23);
- { uint64_t x12 = ((uint64_t)x10 & 0x7ffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x23);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x23);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x23);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- { uint64_t x22 = (x12 + (0x1b * x20));
- { uint64_t x23 = (x22 >> 0x23);
- { uint64_t x24 = (x22 & 0x7ffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x23);
- { uint64_t x27 = (x25 & 0x7ffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e140m27/fesquare.v b/src/Specific/solinas64_2e140m27/fesquare.v
deleted file mode 100644
index 29e6e17d5..000000000
--- a/src/Specific/solinas64_2e140m27/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e140m27/fesquareDisplay.log b/src/Specific/solinas64_2e140m27/fesquareDisplay.log
deleted file mode 100644
index 102460441..000000000
--- a/src/Specific/solinas64_2e140m27/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1b * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1b * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x1b * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- uint64_t x11 = (uint64_t) (x10 >> 0x23);
- uint64_t x12 = ((uint64_t)x10 & 0x7ffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x23);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x23);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x23);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffff);
- uint64_t x22 = (x12 + (0x1b * x20));
- uint64_t x23 = (x22 >> 0x23);
- uint64_t x24 = (x22 & 0x7ffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x23);
- uint64_t x27 = (x25 & 0x7ffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/fesquareDisplay.v b/src/Specific/solinas64_2e140m27/fesquareDisplay.v
deleted file mode 100644
index 1d6a6d968..000000000
--- a/src/Specific/solinas64_2e140m27/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e140m27.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e140m27/fesub.c b/src/Specific/solinas64_2e140m27/fesub.c
deleted file mode 100644
index b8cc9ed0d..000000000
--- a/src/Specific/solinas64_2e140m27/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0xfffffffca + x5) - x11);
- out[1] = ((0xffffffffe + x7) - x13);
- out[2] = ((0xffffffffe + x9) - x15);
- out[3] = ((0xffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e140m27/fesub.v b/src/Specific/solinas64_2e140m27/fesub.v
deleted file mode 100644
index 6b8e0a6ff..000000000
--- a/src/Specific/solinas64_2e140m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e140m27/fesubDisplay.log b/src/Specific/solinas64_2e140m27/fesubDisplay.log
deleted file mode 100644
index a4d489ec2..000000000
--- a/src/Specific/solinas64_2e140m27/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xffffffffe + x8) - x14), ((0xffffffffe + x9) - x15), ((0xffffffffe + x7) - x13), ((0xfffffffca + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/fesubDisplay.v b/src/Specific/solinas64_2e140m27/fesubDisplay.v
deleted file mode 100644
index 7bc758ccf..000000000
--- a/src/Specific/solinas64_2e140m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e140m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e140m27/freeze.c b/src/Specific/solinas64_2e140m27/freeze.c
deleted file mode 100644
index 2d8379135..000000000
--- a/src/Specific/solinas64_2e140m27/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffe5);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7ffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7ffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x7ffffffe5);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7ffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x7ffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7ffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e140m27/freeze.v b/src/Specific/solinas64_2e140m27/freeze.v
deleted file mode 100644
index 6e370ad30..000000000
--- a/src/Specific/solinas64_2e140m27/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e140m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e140m27/freezeDisplay.log b/src/Specific/solinas64_2e140m27/freezeDisplay.log
deleted file mode 100644
index d3fcf0a5d..000000000
--- a/src/Specific/solinas64_2e140m27/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffe5);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7ffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7ffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x7ffffffe5);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7ffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x7ffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7ffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 35 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/freezeDisplay.v b/src/Specific/solinas64_2e140m27/freezeDisplay.v
deleted file mode 100644
index 33a23db46..000000000
--- a/src/Specific/solinas64_2e140m27/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e140m27.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/CurveParameters.v b/src/Specific/solinas64_2e140m27_3limbs/CurveParameters.v
new file mode 100644
index 000000000..9b148920f
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^140 - 27
+Base: 46 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 3%nat;
+ base := 46 + 2/3;
+ bitwidth := 64;
+ s := 2^140;
+ c := [(1, 27)];
+ carry_chains := Some [seq 0 (pred 3); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/Synthesis.v b/src/Specific/solinas64_2e140m27_3limbs/Synthesis.v
new file mode 100644
index 000000000..3b4b7d404
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/compiler.sh b/src/Specific/solinas64_2e140m27_3limbs/compiler.sh
new file mode 100755
index 000000000..58fb2fe64
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27' "$@"
diff --git a/src/Specific/solinas64_2e140m27_3limbs/compilerxx.sh b/src/Specific/solinas64_2e140m27_3limbs/compilerxx.sh
new file mode 100755
index 000000000..f0a58218e
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<140) - 27' "$@"
diff --git a/src/Specific/solinas64_2e140m27_3limbs/feadd.v b/src/Specific/solinas64_2e140m27_3limbs/feadd.v
new file mode 100644
index 000000000..621ba1fed
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e140m27_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..3b012f996
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/femul.v b/src/Specific/solinas64_2e140m27_3limbs/femul.v
new file mode 100644
index 000000000..17887e83e
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/femulDisplay.v b/src/Specific/solinas64_2e140m27_3limbs/femulDisplay.v
new file mode 100644
index 000000000..4a2b03d05
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesquare.v b/src/Specific/solinas64_2e140m27_3limbs/fesquare.v
new file mode 100644
index 000000000..7420c1c30
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e140m27_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..07e281cda
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesub.v b/src/Specific/solinas64_2e140m27_3limbs/fesub.v
new file mode 100644
index 000000000..43bad3c04
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..541d1c9c9
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/freeze.v b/src/Specific/solinas64_2e140m27_3limbs/freeze.v
new file mode 100644
index 000000000..555bbf38a
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..fbf49ef23
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e140m27_3limbs/py_interpreter.sh b/src/Specific/solinas64_2e140m27_3limbs/py_interpreter.sh
new file mode 100755
index 000000000..8a60a873c
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_3limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**140 - 27' -Dmodulus_bytes='46 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e140m27/CurveParameters.v b/src/Specific/solinas64_2e140m27_4limbs/CurveParameters.v
index 8b2d58b07..8b2d58b07 100644
--- a/src/Specific/solinas64_2e140m27/CurveParameters.v
+++ b/src/Specific/solinas64_2e140m27_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e140m27_4limbs/Synthesis.v b/src/Specific/solinas64_2e140m27_4limbs/Synthesis.v
new file mode 100644
index 000000000..9c03e6275
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e140m27/compiler.sh b/src/Specific/solinas64_2e140m27_4limbs/compiler.sh
index b99df6b0e..b99df6b0e 100755
--- a/src/Specific/solinas64_2e140m27/compiler.sh
+++ b/src/Specific/solinas64_2e140m27_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e140m27/compilerxx.sh b/src/Specific/solinas64_2e140m27_4limbs/compilerxx.sh
index 6a8502a67..6a8502a67 100755
--- a/src/Specific/solinas64_2e140m27/compilerxx.sh
+++ b/src/Specific/solinas64_2e140m27_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e140m27_4limbs/feadd.v b/src/Specific/solinas64_2e140m27_4limbs/feadd.v
new file mode 100644
index 000000000..bf89a167e
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e140m27_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..964cc1072
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/femul.v b/src/Specific/solinas64_2e140m27_4limbs/femul.v
new file mode 100644
index 000000000..15105fced
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/femulDisplay.v b/src/Specific/solinas64_2e140m27_4limbs/femulDisplay.v
new file mode 100644
index 000000000..92dc15b2e
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/fesquare.v b/src/Specific/solinas64_2e140m27_4limbs/fesquare.v
new file mode 100644
index 000000000..5ecb99f83
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e140m27_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c2077c945
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/fesub.v b/src/Specific/solinas64_2e140m27_4limbs/fesub.v
new file mode 100644
index 000000000..e783015db
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e140m27_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..303d1708d
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/freeze.v b/src/Specific/solinas64_2e140m27_4limbs/freeze.v
new file mode 100644
index 000000000..c09ee7705
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e140m27_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e140m27_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..fbf1f5332
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e140m27_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e140m27/py_interpreter.sh b/src/Specific/solinas64_2e140m27_4limbs/py_interpreter.sh
index 70367901d..70367901d 100755
--- a/src/Specific/solinas64_2e140m27/py_interpreter.sh
+++ b/src/Specific/solinas64_2e140m27_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e141m9/Synthesis.v b/src/Specific/solinas64_2e141m9/Synthesis.v
deleted file mode 100644
index a2a6f2318..000000000
--- a/src/Specific/solinas64_2e141m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e141m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e141m9/feadd.c b/src/Specific/solinas64_2e141m9/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e141m9/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e141m9/feadd.v b/src/Specific/solinas64_2e141m9/feadd.v
deleted file mode 100644
index f3e7f7f06..000000000
--- a/src/Specific/solinas64_2e141m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e141m9/feaddDisplay.log b/src/Specific/solinas64_2e141m9/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e141m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/feaddDisplay.v b/src/Specific/solinas64_2e141m9/feaddDisplay.v
deleted file mode 100644
index 453331cbb..000000000
--- a/src/Specific/solinas64_2e141m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e141m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e141m9/femul.c b/src/Specific/solinas64_2e141m9/femul.c
deleted file mode 100644
index adfd592ca..000000000
--- a/src/Specific/solinas64_2e141m9/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x9 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x9 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x2f);
- { uint64_t x16 = ((uint64_t)x14 & 0x7fffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x2f);
- { uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x2f);
- { uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffff);
- { uint64_t x23 = (x16 + (0x9 * x21));
- { uint64_t x24 = (x23 >> 0x2f);
- { uint64_t x25 = (x23 & 0x7fffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x2f);
- { uint64_t x28 = (x26 & 0x7fffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e141m9/femul.v b/src/Specific/solinas64_2e141m9/femul.v
deleted file mode 100644
index a470f163a..000000000
--- a/src/Specific/solinas64_2e141m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e141m9/femulDisplay.log b/src/Specific/solinas64_2e141m9/femulDisplay.log
deleted file mode 100644
index 178fcdec6..000000000
--- a/src/Specific/solinas64_2e141m9/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x9 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x9 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint64_t x15 = (uint64_t) (x14 >> 0x2f);
- uint64_t x16 = ((uint64_t)x14 & 0x7fffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x2f);
- uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x2f);
- uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffff);
- uint64_t x23 = (x16 + (0x9 * x21));
- uint64_t x24 = (x23 >> 0x2f);
- uint64_t x25 = (x23 & 0x7fffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x2f);
- uint64_t x28 = (x26 & 0x7fffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/femulDisplay.v b/src/Specific/solinas64_2e141m9/femulDisplay.v
deleted file mode 100644
index e6ea27b80..000000000
--- a/src/Specific/solinas64_2e141m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e141m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e141m9/fesquare.c b/src/Specific/solinas64_2e141m9/fesquare.c
deleted file mode 100644
index ddcbf6334..000000000
--- a/src/Specific/solinas64_2e141m9/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x9 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x2f);
- { uint64_t x9 = ((uint64_t)x7 & 0x7fffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x2f);
- { uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- { uint64_t x16 = (x9 + (0x9 * x14));
- { uint64_t x17 = (x16 >> 0x2f);
- { uint64_t x18 = (x16 & 0x7fffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x2f);
- { uint64_t x21 = (x19 & 0x7fffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e141m9/fesquare.v b/src/Specific/solinas64_2e141m9/fesquare.v
deleted file mode 100644
index e79fb6550..000000000
--- a/src/Specific/solinas64_2e141m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e141m9/fesquareDisplay.log b/src/Specific/solinas64_2e141m9/fesquareDisplay.log
deleted file mode 100644
index 33bde0fba..000000000
--- a/src/Specific/solinas64_2e141m9/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x9 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint64_t x8 = (uint64_t) (x7 >> 0x2f);
- uint64_t x9 = ((uint64_t)x7 & 0x7fffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x2f);
- uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- uint64_t x16 = (x9 + (0x9 * x14));
- uint64_t x17 = (x16 >> 0x2f);
- uint64_t x18 = (x16 & 0x7fffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x2f);
- uint64_t x21 = (x19 & 0x7fffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/fesquareDisplay.v b/src/Specific/solinas64_2e141m9/fesquareDisplay.v
deleted file mode 100644
index 7ada9803a..000000000
--- a/src/Specific/solinas64_2e141m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e141m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e141m9/fesub.c b/src/Specific/solinas64_2e141m9/fesub.c
deleted file mode 100644
index 318c34358..000000000
--- a/src/Specific/solinas64_2e141m9/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0xffffffffffee + x5) - x9);
- out[1] = ((0xfffffffffffe + x7) - x11);
- out[2] = ((0xfffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e141m9/fesub.v b/src/Specific/solinas64_2e141m9/fesub.v
deleted file mode 100644
index 0be84ee6b..000000000
--- a/src/Specific/solinas64_2e141m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e141m9/fesubDisplay.log b/src/Specific/solinas64_2e141m9/fesubDisplay.log
deleted file mode 100644
index 18bf8250e..000000000
--- a/src/Specific/solinas64_2e141m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0xfffffffffffe + x6) - x10), ((0xfffffffffffe + x7) - x11), ((0xffffffffffee + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/fesubDisplay.v b/src/Specific/solinas64_2e141m9/fesubDisplay.v
deleted file mode 100644
index a1b3f1571..000000000
--- a/src/Specific/solinas64_2e141m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e141m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e141m9/freeze.c b/src/Specific/solinas64_2e141m9/freeze.c
deleted file mode 100644
index d1a0d57f5..000000000
--- a/src/Specific/solinas64_2e141m9/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff7);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x7ffffffffff7);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x7fffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x7fffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e141m9/freeze.v b/src/Specific/solinas64_2e141m9/freeze.v
deleted file mode 100644
index 28ab550d2..000000000
--- a/src/Specific/solinas64_2e141m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e141m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e141m9/freezeDisplay.log b/src/Specific/solinas64_2e141m9/freezeDisplay.log
deleted file mode 100644
index 6bcb50b66..000000000
--- a/src/Specific/solinas64_2e141m9/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff7);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x7ffffffffff7);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x7fffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x7fffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/freezeDisplay.v b/src/Specific/solinas64_2e141m9/freezeDisplay.v
deleted file mode 100644
index efafb2746..000000000
--- a/src/Specific/solinas64_2e141m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e141m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e141m9/CurveParameters.v b/src/Specific/solinas64_2e141m9_3limbs/CurveParameters.v
index 0ad50a39e..0ad50a39e 100644
--- a/src/Specific/solinas64_2e141m9/CurveParameters.v
+++ b/src/Specific/solinas64_2e141m9_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e141m9_3limbs/Synthesis.v b/src/Specific/solinas64_2e141m9_3limbs/Synthesis.v
new file mode 100644
index 000000000..30a2c556b
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e141m9/compiler.sh b/src/Specific/solinas64_2e141m9_3limbs/compiler.sh
index 6e79ba60e..6e79ba60e 100755
--- a/src/Specific/solinas64_2e141m9/compiler.sh
+++ b/src/Specific/solinas64_2e141m9_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e141m9/compilerxx.sh b/src/Specific/solinas64_2e141m9_3limbs/compilerxx.sh
index 84bc671f8..84bc671f8 100755
--- a/src/Specific/solinas64_2e141m9/compilerxx.sh
+++ b/src/Specific/solinas64_2e141m9_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e141m9_3limbs/feadd.v b/src/Specific/solinas64_2e141m9_3limbs/feadd.v
new file mode 100644
index 000000000..c4d0e53e2
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e141m9_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..e7cd8054f
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/femul.v b/src/Specific/solinas64_2e141m9_3limbs/femul.v
new file mode 100644
index 000000000..b931028c5
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/femulDisplay.v b/src/Specific/solinas64_2e141m9_3limbs/femulDisplay.v
new file mode 100644
index 000000000..4d5caf488
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/fesquare.v b/src/Specific/solinas64_2e141m9_3limbs/fesquare.v
new file mode 100644
index 000000000..cec7c148b
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e141m9_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..34f7212e1
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/fesub.v b/src/Specific/solinas64_2e141m9_3limbs/fesub.v
new file mode 100644
index 000000000..a33b42b6c
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e141m9_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..57a6ea133
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/freeze.v b/src/Specific/solinas64_2e141m9_3limbs/freeze.v
new file mode 100644
index 000000000..deee7372b
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e141m9_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e141m9_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..769986182
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e141m9/py_interpreter.sh b/src/Specific/solinas64_2e141m9_3limbs/py_interpreter.sh
index 4aea01032..4aea01032 100755
--- a/src/Specific/solinas64_2e141m9/py_interpreter.sh
+++ b/src/Specific/solinas64_2e141m9_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e141m9_4limbs/CurveParameters.v b/src/Specific/solinas64_2e141m9_4limbs/CurveParameters.v
new file mode 100644
index 000000000..ad669482f
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^141 - 9
+Base: 35.25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 35 + 1/4;
+ bitwidth := 64;
+ s := 2^141;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/Synthesis.v b/src/Specific/solinas64_2e141m9_4limbs/Synthesis.v
new file mode 100644
index 000000000..53642d651
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/compiler.sh b/src/Specific/solinas64_2e141m9_4limbs/compiler.sh
new file mode 100755
index 000000000..ed63110e4
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{36,35,35,35}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<141) - 9' "$@"
diff --git a/src/Specific/solinas64_2e141m9_4limbs/compilerxx.sh b/src/Specific/solinas64_2e141m9_4limbs/compilerxx.sh
new file mode 100755
index 000000000..32f6c7a27
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{36,35,35,35}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='18' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<141) - 9' "$@"
diff --git a/src/Specific/solinas64_2e141m9_4limbs/feadd.v b/src/Specific/solinas64_2e141m9_4limbs/feadd.v
new file mode 100644
index 000000000..19966419e
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e141m9_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..5c1b90dcd
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/femul.v b/src/Specific/solinas64_2e141m9_4limbs/femul.v
new file mode 100644
index 000000000..dfc443ba1
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/femulDisplay.v b/src/Specific/solinas64_2e141m9_4limbs/femulDisplay.v
new file mode 100644
index 000000000..52980dfa2
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesquare.v b/src/Specific/solinas64_2e141m9_4limbs/fesquare.v
new file mode 100644
index 000000000..2d570b68c
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e141m9_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..24ce02322
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesub.v b/src/Specific/solinas64_2e141m9_4limbs/fesub.v
new file mode 100644
index 000000000..aff4b4221
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..a9c2e1546
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/freeze.v b/src/Specific/solinas64_2e141m9_4limbs/freeze.v
new file mode 100644
index 000000000..cc0b9f05f
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e141m9_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..57f52ed46
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e141m9_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e141m9_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e141m9_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..f38e696b6
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**141 - 9' -Dmodulus_bytes='35.25' -Da24='121665'
diff --git a/src/Specific/solinas64_2e150m3/Synthesis.v b/src/Specific/solinas64_2e150m3/Synthesis.v
deleted file mode 100644
index 61c60fc06..000000000
--- a/src/Specific/solinas64_2e150m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e150m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m3/feadd.c b/src/Specific/solinas64_2e150m3/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e150m3/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m3/feadd.v b/src/Specific/solinas64_2e150m3/feadd.v
deleted file mode 100644
index 72d80b03a..000000000
--- a/src/Specific/solinas64_2e150m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m3/feaddDisplay.log b/src/Specific/solinas64_2e150m3/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e150m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/feaddDisplay.v b/src/Specific/solinas64_2e150m3/feaddDisplay.v
deleted file mode 100644
index 61213f07a..000000000
--- a/src/Specific/solinas64_2e150m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e150m3/femul.c b/src/Specific/solinas64_2e150m3/femul.c
deleted file mode 100644
index 667c4cdea..000000000
--- a/src/Specific/solinas64_2e150m3/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x3 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x3 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x32);
- { uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x32);
- { uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x32);
- { uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffff);
- { uint64_t x23 = (x16 + (0x3 * x21));
- { uint64_t x24 = (x23 >> 0x32);
- { uint64_t x25 = (x23 & 0x3ffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x32);
- { uint64_t x28 = (x26 & 0x3ffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m3/femul.v b/src/Specific/solinas64_2e150m3/femul.v
deleted file mode 100644
index 78ea2def5..000000000
--- a/src/Specific/solinas64_2e150m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m3/femulDisplay.log b/src/Specific/solinas64_2e150m3/femulDisplay.log
deleted file mode 100644
index 3940c0dd0..000000000
--- a/src/Specific/solinas64_2e150m3/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x3 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x3 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint64_t x15 = (uint64_t) (x14 >> 0x32);
- uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x32);
- uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x32);
- uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffff);
- uint64_t x23 = (x16 + (0x3 * x21));
- uint64_t x24 = (x23 >> 0x32);
- uint64_t x25 = (x23 & 0x3ffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x32);
- uint64_t x28 = (x26 & 0x3ffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/femulDisplay.v b/src/Specific/solinas64_2e150m3/femulDisplay.v
deleted file mode 100644
index 1bf41c9e3..000000000
--- a/src/Specific/solinas64_2e150m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e150m3/fesquare.c b/src/Specific/solinas64_2e150m3/fesquare.c
deleted file mode 100644
index 1124db94f..000000000
--- a/src/Specific/solinas64_2e150m3/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x32);
- { uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x32);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x32);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffff);
- { uint64_t x16 = (x9 + (0x3 * x14));
- { uint64_t x17 = (x16 >> 0x32);
- { uint64_t x18 = (x16 & 0x3ffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x32);
- { uint64_t x21 = (x19 & 0x3ffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m3/fesquare.v b/src/Specific/solinas64_2e150m3/fesquare.v
deleted file mode 100644
index 1dff45ec2..000000000
--- a/src/Specific/solinas64_2e150m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m3/fesquareDisplay.log b/src/Specific/solinas64_2e150m3/fesquareDisplay.log
deleted file mode 100644
index 67dcd761e..000000000
--- a/src/Specific/solinas64_2e150m3/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint64_t x8 = (uint64_t) (x7 >> 0x32);
- uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x32);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x32);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffff);
- uint64_t x16 = (x9 + (0x3 * x14));
- uint64_t x17 = (x16 >> 0x32);
- uint64_t x18 = (x16 & 0x3ffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x32);
- uint64_t x21 = (x19 & 0x3ffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/fesquareDisplay.v b/src/Specific/solinas64_2e150m3/fesquareDisplay.v
deleted file mode 100644
index 1c1fcce5a..000000000
--- a/src/Specific/solinas64_2e150m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e150m3/fesub.c b/src/Specific/solinas64_2e150m3/fesub.c
deleted file mode 100644
index ed1081ab3..000000000
--- a/src/Specific/solinas64_2e150m3/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x7fffffffffffa + x5) - x9);
- out[1] = ((0x7fffffffffffe + x7) - x11);
- out[2] = ((0x7fffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m3/fesub.v b/src/Specific/solinas64_2e150m3/fesub.v
deleted file mode 100644
index 60798da1a..000000000
--- a/src/Specific/solinas64_2e150m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m3/fesubDisplay.log b/src/Specific/solinas64_2e150m3/fesubDisplay.log
deleted file mode 100644
index 5506e17af..000000000
--- a/src/Specific/solinas64_2e150m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffffe + x6) - x10), ((0x7fffffffffffe + x7) - x11), ((0x7fffffffffffa + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/fesubDisplay.v b/src/Specific/solinas64_2e150m3/fesubDisplay.v
deleted file mode 100644
index 9140877a0..000000000
--- a/src/Specific/solinas64_2e150m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e150m3/freeze.c b/src/Specific/solinas64_2e150m3/freeze.c
deleted file mode 100644
index e69cfbeeb..000000000
--- a/src/Specific/solinas64_2e150m3/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffd);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x3fffffffffffd);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x3ffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x3ffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m3/freeze.v b/src/Specific/solinas64_2e150m3/freeze.v
deleted file mode 100644
index cf4aab1df..000000000
--- a/src/Specific/solinas64_2e150m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m3/freezeDisplay.log b/src/Specific/solinas64_2e150m3/freezeDisplay.log
deleted file mode 100644
index 3a7a67072..000000000
--- a/src/Specific/solinas64_2e150m3/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffd);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x3fffffffffffd);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x3ffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x3ffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/freezeDisplay.v b/src/Specific/solinas64_2e150m3/freezeDisplay.v
deleted file mode 100644
index f7008b0c4..000000000
--- a/src/Specific/solinas64_2e150m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e150m3/CurveParameters.v b/src/Specific/solinas64_2e150m3_3limbs/CurveParameters.v
index e451620f4..e451620f4 100644
--- a/src/Specific/solinas64_2e150m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e150m3_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e150m3_3limbs/Synthesis.v b/src/Specific/solinas64_2e150m3_3limbs/Synthesis.v
new file mode 100644
index 000000000..e0fe202d1
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m3/compiler.sh b/src/Specific/solinas64_2e150m3_3limbs/compiler.sh
index 81d013a2f..81d013a2f 100755
--- a/src/Specific/solinas64_2e150m3/compiler.sh
+++ b/src/Specific/solinas64_2e150m3_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e150m3/compilerxx.sh b/src/Specific/solinas64_2e150m3_3limbs/compilerxx.sh
index 5f1be6dc9..5f1be6dc9 100755
--- a/src/Specific/solinas64_2e150m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e150m3_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e150m3_3limbs/feadd.v b/src/Specific/solinas64_2e150m3_3limbs/feadd.v
new file mode 100644
index 000000000..f12c2649a
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e150m3_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..dd040ab81
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/femul.v b/src/Specific/solinas64_2e150m3_3limbs/femul.v
new file mode 100644
index 000000000..cfb393148
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/femulDisplay.v b/src/Specific/solinas64_2e150m3_3limbs/femulDisplay.v
new file mode 100644
index 000000000..b59bd80c3
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/fesquare.v b/src/Specific/solinas64_2e150m3_3limbs/fesquare.v
new file mode 100644
index 000000000..c2698290f
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e150m3_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2bdeb83c6
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/fesub.v b/src/Specific/solinas64_2e150m3_3limbs/fesub.v
new file mode 100644
index 000000000..4cbda3916
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e150m3_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..4df625baa
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/freeze.v b/src/Specific/solinas64_2e150m3_3limbs/freeze.v
new file mode 100644
index 000000000..ac2133824
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m3_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e150m3_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..3e444992e
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e150m3/py_interpreter.sh b/src/Specific/solinas64_2e150m3_3limbs/py_interpreter.sh
index 21d6ae317..21d6ae317 100755
--- a/src/Specific/solinas64_2e150m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e150m3_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e150m3_4limbs/CurveParameters.v b/src/Specific/solinas64_2e150m3_4limbs/CurveParameters.v
new file mode 100644
index 000000000..b83f82d65
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^150 - 3
+Base: 37.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 37 + 1/2;
+ bitwidth := 64;
+ s := 2^150;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/Synthesis.v b/src/Specific/solinas64_2e150m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..946e6194f
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/compiler.sh b/src/Specific/solinas64_2e150m3_4limbs/compiler.sh
new file mode 100755
index 000000000..c08fd5d23
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas64_2e150m3_4limbs/compilerxx.sh b/src/Specific/solinas64_2e150m3_4limbs/compilerxx.sh
new file mode 100755
index 000000000..7ded97ed4
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 3' "$@"
diff --git a/src/Specific/solinas64_2e150m3_4limbs/feadd.v b/src/Specific/solinas64_2e150m3_4limbs/feadd.v
new file mode 100644
index 000000000..1aba48cd4
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e150m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..1735f4734
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/femul.v b/src/Specific/solinas64_2e150m3_4limbs/femul.v
new file mode 100644
index 000000000..1ea902244
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/femulDisplay.v b/src/Specific/solinas64_2e150m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..ca87c66ee
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesquare.v b/src/Specific/solinas64_2e150m3_4limbs/fesquare.v
new file mode 100644
index 000000000..06a7805fb
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e150m3_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..cd84770c9
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesub.v b/src/Specific/solinas64_2e150m3_4limbs/fesub.v
new file mode 100644
index 000000000..3a962cf36
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..268189b79
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/freeze.v b/src/Specific/solinas64_2e150m3_4limbs/freeze.v
new file mode 100644
index 000000000..e7f941f9d
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e150m3_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..d97f5060b
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m3_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e150m3_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e150m3_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..a5b81aa61
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**150 - 3' -Dmodulus_bytes='37.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e150m5/Synthesis.v b/src/Specific/solinas64_2e150m5/Synthesis.v
deleted file mode 100644
index ee7ba7afe..000000000
--- a/src/Specific/solinas64_2e150m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e150m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m5/feadd.c b/src/Specific/solinas64_2e150m5/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e150m5/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m5/feadd.v b/src/Specific/solinas64_2e150m5/feadd.v
deleted file mode 100644
index f132e2bf6..000000000
--- a/src/Specific/solinas64_2e150m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m5/feaddDisplay.log b/src/Specific/solinas64_2e150m5/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e150m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/feaddDisplay.v b/src/Specific/solinas64_2e150m5/feaddDisplay.v
deleted file mode 100644
index ff15cd953..000000000
--- a/src/Specific/solinas64_2e150m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e150m5/femul.c b/src/Specific/solinas64_2e150m5/femul.c
deleted file mode 100644
index d79487ffe..000000000
--- a/src/Specific/solinas64_2e150m5/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x32);
- { uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x32);
- { uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x32);
- { uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffff);
- { uint64_t x23 = (x16 + (0x5 * x21));
- { uint64_t x24 = (x23 >> 0x32);
- { uint64_t x25 = (x23 & 0x3ffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x32);
- { uint64_t x28 = (x26 & 0x3ffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m5/femul.v b/src/Specific/solinas64_2e150m5/femul.v
deleted file mode 100644
index 5312aa8ea..000000000
--- a/src/Specific/solinas64_2e150m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m5/femulDisplay.log b/src/Specific/solinas64_2e150m5/femulDisplay.log
deleted file mode 100644
index 8596878ef..000000000
--- a/src/Specific/solinas64_2e150m5/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint64_t x15 = (uint64_t) (x14 >> 0x32);
- uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x32);
- uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x32);
- uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffff);
- uint64_t x23 = (x16 + (0x5 * x21));
- uint64_t x24 = (x23 >> 0x32);
- uint64_t x25 = (x23 & 0x3ffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x32);
- uint64_t x28 = (x26 & 0x3ffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/femulDisplay.v b/src/Specific/solinas64_2e150m5/femulDisplay.v
deleted file mode 100644
index ea44959a3..000000000
--- a/src/Specific/solinas64_2e150m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e150m5/fesquare.c b/src/Specific/solinas64_2e150m5/fesquare.c
deleted file mode 100644
index f3c699e60..000000000
--- a/src/Specific/solinas64_2e150m5/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x32);
- { uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x32);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x32);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffff);
- { uint64_t x16 = (x9 + (0x5 * x14));
- { uint64_t x17 = (x16 >> 0x32);
- { uint64_t x18 = (x16 & 0x3ffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x32);
- { uint64_t x21 = (x19 & 0x3ffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m5/fesquare.v b/src/Specific/solinas64_2e150m5/fesquare.v
deleted file mode 100644
index c8e0eac3d..000000000
--- a/src/Specific/solinas64_2e150m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m5/fesquareDisplay.log b/src/Specific/solinas64_2e150m5/fesquareDisplay.log
deleted file mode 100644
index 6d4126245..000000000
--- a/src/Specific/solinas64_2e150m5/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint64_t x8 = (uint64_t) (x7 >> 0x32);
- uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x32);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x32);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffff);
- uint64_t x16 = (x9 + (0x5 * x14));
- uint64_t x17 = (x16 >> 0x32);
- uint64_t x18 = (x16 & 0x3ffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x32);
- uint64_t x21 = (x19 & 0x3ffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/fesquareDisplay.v b/src/Specific/solinas64_2e150m5/fesquareDisplay.v
deleted file mode 100644
index d736ddbea..000000000
--- a/src/Specific/solinas64_2e150m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e150m5/fesub.c b/src/Specific/solinas64_2e150m5/fesub.c
deleted file mode 100644
index a50cce660..000000000
--- a/src/Specific/solinas64_2e150m5/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x7fffffffffff6 + x5) - x9);
- out[1] = ((0x7fffffffffffe + x7) - x11);
- out[2] = ((0x7fffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m5/fesub.v b/src/Specific/solinas64_2e150m5/fesub.v
deleted file mode 100644
index 50bad7bd2..000000000
--- a/src/Specific/solinas64_2e150m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m5/fesubDisplay.log b/src/Specific/solinas64_2e150m5/fesubDisplay.log
deleted file mode 100644
index d4a7f1c68..000000000
--- a/src/Specific/solinas64_2e150m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffffe + x6) - x10), ((0x7fffffffffffe + x7) - x11), ((0x7fffffffffff6 + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/fesubDisplay.v b/src/Specific/solinas64_2e150m5/fesubDisplay.v
deleted file mode 100644
index 74545d2c0..000000000
--- a/src/Specific/solinas64_2e150m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e150m5/freeze.c b/src/Specific/solinas64_2e150m5/freeze.c
deleted file mode 100644
index 0283f7ae1..000000000
--- a/src/Specific/solinas64_2e150m5/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffb);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x3fffffffffffb);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x3ffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x3ffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e150m5/freeze.v b/src/Specific/solinas64_2e150m5/freeze.v
deleted file mode 100644
index 5ec58495e..000000000
--- a/src/Specific/solinas64_2e150m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e150m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m5/freezeDisplay.log b/src/Specific/solinas64_2e150m5/freezeDisplay.log
deleted file mode 100644
index 90dc24017..000000000
--- a/src/Specific/solinas64_2e150m5/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffb);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x3fffffffffffb);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x3ffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x3ffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/freezeDisplay.v b/src/Specific/solinas64_2e150m5/freezeDisplay.v
deleted file mode 100644
index b91ff46bc..000000000
--- a/src/Specific/solinas64_2e150m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e150m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e150m5/CurveParameters.v b/src/Specific/solinas64_2e150m5_3limbs/CurveParameters.v
index 598e97b48..598e97b48 100644
--- a/src/Specific/solinas64_2e150m5/CurveParameters.v
+++ b/src/Specific/solinas64_2e150m5_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e150m5_3limbs/Synthesis.v b/src/Specific/solinas64_2e150m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..fbaaf99af
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m5/compiler.sh b/src/Specific/solinas64_2e150m5_3limbs/compiler.sh
index 5b5f7c5ef..5b5f7c5ef 100755
--- a/src/Specific/solinas64_2e150m5/compiler.sh
+++ b/src/Specific/solinas64_2e150m5_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e150m5/compilerxx.sh b/src/Specific/solinas64_2e150m5_3limbs/compilerxx.sh
index 6e169593d..6e169593d 100755
--- a/src/Specific/solinas64_2e150m5/compilerxx.sh
+++ b/src/Specific/solinas64_2e150m5_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e150m5_3limbs/feadd.v b/src/Specific/solinas64_2e150m5_3limbs/feadd.v
new file mode 100644
index 000000000..76a0ffe45
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e150m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..bab86dd3c
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/femul.v b/src/Specific/solinas64_2e150m5_3limbs/femul.v
new file mode 100644
index 000000000..c2e6a2133
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/femulDisplay.v b/src/Specific/solinas64_2e150m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..59119c0a9
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/fesquare.v b/src/Specific/solinas64_2e150m5_3limbs/fesquare.v
new file mode 100644
index 000000000..81223a6de
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e150m5_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..69dd74684
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/fesub.v b/src/Specific/solinas64_2e150m5_3limbs/fesub.v
new file mode 100644
index 000000000..d03e1eaa0
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e150m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..88bbcd9be
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/freeze.v b/src/Specific/solinas64_2e150m5_3limbs/freeze.v
new file mode 100644
index 000000000..47825531c
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m5_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e150m5_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..fa08bd8aa
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e150m5/py_interpreter.sh b/src/Specific/solinas64_2e150m5_3limbs/py_interpreter.sh
index a840c463b..a840c463b 100755
--- a/src/Specific/solinas64_2e150m5/py_interpreter.sh
+++ b/src/Specific/solinas64_2e150m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e150m5_4limbs/CurveParameters.v b/src/Specific/solinas64_2e150m5_4limbs/CurveParameters.v
new file mode 100644
index 000000000..390416b47
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^150 - 5
+Base: 37.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 37 + 1/2;
+ bitwidth := 64;
+ s := 2^150;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/Synthesis.v b/src/Specific/solinas64_2e150m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..c236d0737
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/compiler.sh b/src/Specific/solinas64_2e150m5_4limbs/compiler.sh
new file mode 100755
index 000000000..8d253539d
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 5' "$@"
diff --git a/src/Specific/solinas64_2e150m5_4limbs/compilerxx.sh b/src/Specific/solinas64_2e150m5_4limbs/compilerxx.sh
new file mode 100755
index 000000000..af81d0f0f
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,38,37}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<150) - 5' "$@"
diff --git a/src/Specific/solinas64_2e150m5_4limbs/feadd.v b/src/Specific/solinas64_2e150m5_4limbs/feadd.v
new file mode 100644
index 000000000..18aa60924
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e150m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..c7fb09285
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/femul.v b/src/Specific/solinas64_2e150m5_4limbs/femul.v
new file mode 100644
index 000000000..5ad0838be
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/femulDisplay.v b/src/Specific/solinas64_2e150m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..b62f96d9e
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesquare.v b/src/Specific/solinas64_2e150m5_4limbs/fesquare.v
new file mode 100644
index 000000000..2c05d1039
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e150m5_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..73d16719c
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesub.v b/src/Specific/solinas64_2e150m5_4limbs/fesub.v
new file mode 100644
index 000000000..e000c781b
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..4e223971d
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/freeze.v b/src/Specific/solinas64_2e150m5_4limbs/freeze.v
new file mode 100644
index 000000000..303c16604
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e150m5_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..6b2a38219
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e150m5_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e150m5_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e150m5_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..6d97e1865
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**150 - 5' -Dmodulus_bytes='37.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e152m17/Synthesis.v b/src/Specific/solinas64_2e152m17/Synthesis.v
deleted file mode 100644
index 488b23101..000000000
--- a/src/Specific/solinas64_2e152m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e152m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e152m17/feadd.c b/src/Specific/solinas64_2e152m17/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e152m17/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e152m17/feadd.v b/src/Specific/solinas64_2e152m17/feadd.v
deleted file mode 100644
index de16d04fd..000000000
--- a/src/Specific/solinas64_2e152m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e152m17/feaddDisplay.log b/src/Specific/solinas64_2e152m17/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e152m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/feaddDisplay.v b/src/Specific/solinas64_2e152m17/feaddDisplay.v
deleted file mode 100644
index 0e118ac7c..000000000
--- a/src/Specific/solinas64_2e152m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e152m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e152m17/femul.c b/src/Specific/solinas64_2e152m17/femul.c
deleted file mode 100644
index c351efd1e..000000000
--- a/src/Specific/solinas64_2e152m17/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x11 * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x11 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x11 * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x26);
- { uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x26);
- { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x26);
- { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x26);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffff);
- { uint64_t x31 = (x21 + (0x11 * x29));
- { uint64_t x32 = (x31 >> 0x26);
- { uint64_t x33 = (x31 & 0x3fffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x26);
- { uint64_t x36 = (x34 & 0x3fffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e152m17/femul.v b/src/Specific/solinas64_2e152m17/femul.v
deleted file mode 100644
index 84c089ca7..000000000
--- a/src/Specific/solinas64_2e152m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e152m17/femulDisplay.log b/src/Specific/solinas64_2e152m17/femulDisplay.log
deleted file mode 100644
index 10abf603b..000000000
--- a/src/Specific/solinas64_2e152m17/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x11 * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x11 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x11 * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- uint64_t x20 = (uint64_t) (x19 >> 0x26);
- uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x26);
- uint64_t x24 = ((uint64_t)x22 & 0x3fffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x26);
- uint64_t x27 = ((uint64_t)x25 & 0x3fffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x26);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffff);
- uint64_t x31 = (x21 + (0x11 * x29));
- uint64_t x32 = (x31 >> 0x26);
- uint64_t x33 = (x31 & 0x3fffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x26);
- uint64_t x36 = (x34 & 0x3fffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/femulDisplay.v b/src/Specific/solinas64_2e152m17/femulDisplay.v
deleted file mode 100644
index 1b71d1890..000000000
--- a/src/Specific/solinas64_2e152m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e152m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e152m17/fesquare.c b/src/Specific/solinas64_2e152m17/fesquare.c
deleted file mode 100644
index d8cf4dafa..000000000
--- a/src/Specific/solinas64_2e152m17/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x26);
- { uint64_t x12 = ((uint64_t)x10 & 0x3fffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x26);
- { uint64_t x15 = ((uint64_t)x13 & 0x3fffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x26);
- { uint64_t x18 = ((uint64_t)x16 & 0x3fffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x26);
- { uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- { uint64_t x22 = (x12 + (0x11 * x20));
- { uint64_t x23 = (x22 >> 0x26);
- { uint64_t x24 = (x22 & 0x3fffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x26);
- { uint64_t x27 = (x25 & 0x3fffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e152m17/fesquare.v b/src/Specific/solinas64_2e152m17/fesquare.v
deleted file mode 100644
index 134dcd936..000000000
--- a/src/Specific/solinas64_2e152m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e152m17/fesquareDisplay.log b/src/Specific/solinas64_2e152m17/fesquareDisplay.log
deleted file mode 100644
index c0a02bdce..000000000
--- a/src/Specific/solinas64_2e152m17/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- uint64_t x11 = (uint64_t) (x10 >> 0x26);
- uint64_t x12 = ((uint64_t)x10 & 0x3fffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x26);
- uint64_t x15 = ((uint64_t)x13 & 0x3fffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x26);
- uint64_t x18 = ((uint64_t)x16 & 0x3fffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x26);
- uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- uint64_t x22 = (x12 + (0x11 * x20));
- uint64_t x23 = (x22 >> 0x26);
- uint64_t x24 = (x22 & 0x3fffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x26);
- uint64_t x27 = (x25 & 0x3fffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/fesquareDisplay.v b/src/Specific/solinas64_2e152m17/fesquareDisplay.v
deleted file mode 100644
index 5893cb455..000000000
--- a/src/Specific/solinas64_2e152m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e152m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e152m17/fesub.c b/src/Specific/solinas64_2e152m17/fesub.c
deleted file mode 100644
index 1ceabd249..000000000
--- a/src/Specific/solinas64_2e152m17/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x7fffffffde + x5) - x11);
- out[1] = ((0x7ffffffffe + x7) - x13);
- out[2] = ((0x7ffffffffe + x9) - x15);
- out[3] = ((0x7ffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e152m17/fesub.v b/src/Specific/solinas64_2e152m17/fesub.v
deleted file mode 100644
index 7903d659a..000000000
--- a/src/Specific/solinas64_2e152m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e152m17/fesubDisplay.log b/src/Specific/solinas64_2e152m17/fesubDisplay.log
deleted file mode 100644
index 7ab073e38..000000000
--- a/src/Specific/solinas64_2e152m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x7ffffffffe + x8) - x14), ((0x7ffffffffe + x9) - x15), ((0x7ffffffffe + x7) - x13), ((0x7fffffffde + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/fesubDisplay.v b/src/Specific/solinas64_2e152m17/fesubDisplay.v
deleted file mode 100644
index 03ca43e26..000000000
--- a/src/Specific/solinas64_2e152m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e152m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e152m17/freeze.c b/src/Specific/solinas64_2e152m17/freeze.c
deleted file mode 100644
index 39ce4203c..000000000
--- a/src/Specific/solinas64_2e152m17/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffef);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3fffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3fffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3fffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x3fffffffef);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x3fffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x3fffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x3fffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e152m17/freeze.v b/src/Specific/solinas64_2e152m17/freeze.v
deleted file mode 100644
index 5a0a26e85..000000000
--- a/src/Specific/solinas64_2e152m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e152m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e152m17/freezeDisplay.log b/src/Specific/solinas64_2e152m17/freezeDisplay.log
deleted file mode 100644
index 9c337e131..000000000
--- a/src/Specific/solinas64_2e152m17/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffef);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3fffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3fffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3fffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x3fffffffef);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x3fffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x3fffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x3fffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/freezeDisplay.v b/src/Specific/solinas64_2e152m17/freezeDisplay.v
deleted file mode 100644
index 4ad427d5a..000000000
--- a/src/Specific/solinas64_2e152m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e152m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/CurveParameters.v b/src/Specific/solinas64_2e152m17_3limbs/CurveParameters.v
new file mode 100644
index 000000000..a8578fe7d
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^152 - 17
+Base: 50 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 3%nat;
+ base := 50 + 2/3;
+ bitwidth := 64;
+ s := 2^152;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 3); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/Synthesis.v b/src/Specific/solinas64_2e152m17_3limbs/Synthesis.v
new file mode 100644
index 000000000..124631633
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/compiler.sh b/src/Specific/solinas64_2e152m17_3limbs/compiler.sh
new file mode 100755
index 000000000..0890c9df4
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,50}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17' "$@"
diff --git a/src/Specific/solinas64_2e152m17_3limbs/compilerxx.sh b/src/Specific/solinas64_2e152m17_3limbs/compilerxx.sh
new file mode 100755
index 000000000..5c419da31
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,50}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='19' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<152) - 17' "$@"
diff --git a/src/Specific/solinas64_2e152m17_3limbs/feadd.v b/src/Specific/solinas64_2e152m17_3limbs/feadd.v
new file mode 100644
index 000000000..d184cf738
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e152m17_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..f4b95a3f2
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/femul.v b/src/Specific/solinas64_2e152m17_3limbs/femul.v
new file mode 100644
index 000000000..578a69cef
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/femulDisplay.v b/src/Specific/solinas64_2e152m17_3limbs/femulDisplay.v
new file mode 100644
index 000000000..e1b6854a5
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesquare.v b/src/Specific/solinas64_2e152m17_3limbs/fesquare.v
new file mode 100644
index 000000000..0e47f659e
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e152m17_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9698b3e75
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesub.v b/src/Specific/solinas64_2e152m17_3limbs/fesub.v
new file mode 100644
index 000000000..fc0a228bb
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..519258dda
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/freeze.v b/src/Specific/solinas64_2e152m17_3limbs/freeze.v
new file mode 100644
index 000000000..f3204e8a5
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..3dd2bb416
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e152m17_3limbs/py_interpreter.sh b/src/Specific/solinas64_2e152m17_3limbs/py_interpreter.sh
new file mode 100755
index 000000000..043bdf87f
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_3limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**152 - 17' -Dmodulus_bytes='50 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e152m17/CurveParameters.v b/src/Specific/solinas64_2e152m17_4limbs/CurveParameters.v
index e17acd9de..e17acd9de 100644
--- a/src/Specific/solinas64_2e152m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e152m17_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e152m17_4limbs/Synthesis.v b/src/Specific/solinas64_2e152m17_4limbs/Synthesis.v
new file mode 100644
index 000000000..f9678decc
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e152m17/compiler.sh b/src/Specific/solinas64_2e152m17_4limbs/compiler.sh
index 4954b7c7c..4954b7c7c 100755
--- a/src/Specific/solinas64_2e152m17/compiler.sh
+++ b/src/Specific/solinas64_2e152m17_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e152m17/compilerxx.sh b/src/Specific/solinas64_2e152m17_4limbs/compilerxx.sh
index 77da1ec4a..77da1ec4a 100755
--- a/src/Specific/solinas64_2e152m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e152m17_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e152m17_4limbs/feadd.v b/src/Specific/solinas64_2e152m17_4limbs/feadd.v
new file mode 100644
index 000000000..c5a96a493
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e152m17_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..f8d5ea1e3
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/femul.v b/src/Specific/solinas64_2e152m17_4limbs/femul.v
new file mode 100644
index 000000000..32cfb40b1
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/femulDisplay.v b/src/Specific/solinas64_2e152m17_4limbs/femulDisplay.v
new file mode 100644
index 000000000..5ff8ce46b
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/fesquare.v b/src/Specific/solinas64_2e152m17_4limbs/fesquare.v
new file mode 100644
index 000000000..120f3e72f
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e152m17_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7ccb3c574
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/fesub.v b/src/Specific/solinas64_2e152m17_4limbs/fesub.v
new file mode 100644
index 000000000..0b2bdf52a
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e152m17_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..47d448ca9
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/freeze.v b/src/Specific/solinas64_2e152m17_4limbs/freeze.v
new file mode 100644
index 000000000..7dc01409e
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e152m17_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e152m17_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..31fdf5579
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e152m17_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e152m17/py_interpreter.sh b/src/Specific/solinas64_2e152m17_4limbs/py_interpreter.sh
index a898be393..a898be393 100755
--- a/src/Specific/solinas64_2e152m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e152m17_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e158m15/Synthesis.v b/src/Specific/solinas64_2e158m15/Synthesis.v
deleted file mode 100644
index caf8b53c9..000000000
--- a/src/Specific/solinas64_2e158m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e158m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e158m15/feadd.c b/src/Specific/solinas64_2e158m15/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e158m15/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e158m15/feadd.v b/src/Specific/solinas64_2e158m15/feadd.v
deleted file mode 100644
index 0d462e0ab..000000000
--- a/src/Specific/solinas64_2e158m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e158m15/feaddDisplay.log b/src/Specific/solinas64_2e158m15/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e158m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/feaddDisplay.v b/src/Specific/solinas64_2e158m15/feaddDisplay.v
deleted file mode 100644
index 89895d832..000000000
--- a/src/Specific/solinas64_2e158m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e158m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e158m15/femul.c b/src/Specific/solinas64_2e158m15/femul.c
deleted file mode 100644
index 6511a391c..000000000
--- a/src/Specific/solinas64_2e158m15/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xf * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xf * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0xf * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x28);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x27);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x28);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x27);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffff);
- { uint64_t x31 = (x21 + (0xf * x29));
- { uint64_t x32 = (x31 >> 0x28);
- { uint64_t x33 = (x31 & 0xffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x27);
- { uint64_t x36 = (x34 & 0x7fffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e158m15/femul.v b/src/Specific/solinas64_2e158m15/femul.v
deleted file mode 100644
index a58059d70..000000000
--- a/src/Specific/solinas64_2e158m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e158m15/femulDisplay.log b/src/Specific/solinas64_2e158m15/femulDisplay.log
deleted file mode 100644
index 2f2b6fd68..000000000
--- a/src/Specific/solinas64_2e158m15/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xf * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xf * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0xf * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x28);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x27);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x28);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x27);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffff);
- uint64_t x31 = (x21 + (0xf * x29));
- uint64_t x32 = (x31 >> 0x28);
- uint64_t x33 = (x31 & 0xffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x27);
- uint64_t x36 = (x34 & 0x7fffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/femulDisplay.v b/src/Specific/solinas64_2e158m15/femulDisplay.v
deleted file mode 100644
index 591dc3c95..000000000
--- a/src/Specific/solinas64_2e158m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e158m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e158m15/fesquare.c b/src/Specific/solinas64_2e158m15/fesquare.c
deleted file mode 100644
index 7cce9e8d1..000000000
--- a/src/Specific/solinas64_2e158m15/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x28);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x27);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x28);
- { uint64_t x18 = ((uint64_t)x16 & 0xffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x27);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffff);
- { uint64_t x22 = (x12 + (0xf * x20));
- { uint64_t x23 = (x22 >> 0x28);
- { uint64_t x24 = (x22 & 0xffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x27);
- { uint64_t x27 = (x25 & 0x7fffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e158m15/fesquare.v b/src/Specific/solinas64_2e158m15/fesquare.v
deleted file mode 100644
index 14faabdc9..000000000
--- a/src/Specific/solinas64_2e158m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e158m15/fesquareDisplay.log b/src/Specific/solinas64_2e158m15/fesquareDisplay.log
deleted file mode 100644
index feb176a80..000000000
--- a/src/Specific/solinas64_2e158m15/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x28);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x27);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x28);
- uint64_t x18 = ((uint64_t)x16 & 0xffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x27);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffff);
- uint64_t x22 = (x12 + (0xf * x20));
- uint64_t x23 = (x22 >> 0x28);
- uint64_t x24 = (x22 & 0xffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x27);
- uint64_t x27 = (x25 & 0x7fffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/fesquareDisplay.v b/src/Specific/solinas64_2e158m15/fesquareDisplay.v
deleted file mode 100644
index 986616c7e..000000000
--- a/src/Specific/solinas64_2e158m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e158m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e158m15/fesub.c b/src/Specific/solinas64_2e158m15/fesub.c
deleted file mode 100644
index e1a505bac..000000000
--- a/src/Specific/solinas64_2e158m15/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffe2 + x5) - x11);
- out[1] = ((0xfffffffffe + x7) - x13);
- out[2] = ((0x1fffffffffe + x9) - x15);
- out[3] = ((0xfffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e158m15/fesub.v b/src/Specific/solinas64_2e158m15/fesub.v
deleted file mode 100644
index b366164a3..000000000
--- a/src/Specific/solinas64_2e158m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e158m15/fesubDisplay.log b/src/Specific/solinas64_2e158m15/fesubDisplay.log
deleted file mode 100644
index 3c4c7efb2..000000000
--- a/src/Specific/solinas64_2e158m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffe + x8) - x14), ((0x1fffffffffe + x9) - x15), ((0xfffffffffe + x7) - x13), ((0x1ffffffffe2 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/fesubDisplay.v b/src/Specific/solinas64_2e158m15/fesubDisplay.v
deleted file mode 100644
index e13bd9903..000000000
--- a/src/Specific/solinas64_2e158m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e158m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e158m15/freeze.c b/src/Specific/solinas64_2e158m15/freeze.c
deleted file mode 100644
index b93e29773..000000000
--- a/src/Specific/solinas64_2e158m15/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffff1);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffff1);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7fffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0xffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7fffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e158m15/freeze.v b/src/Specific/solinas64_2e158m15/freeze.v
deleted file mode 100644
index d00ac88fd..000000000
--- a/src/Specific/solinas64_2e158m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e158m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e158m15/freezeDisplay.log b/src/Specific/solinas64_2e158m15/freezeDisplay.log
deleted file mode 100644
index 2c532f3eb..000000000
--- a/src/Specific/solinas64_2e158m15/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffff1);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffff1);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7fffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0xffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7fffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/freezeDisplay.v b/src/Specific/solinas64_2e158m15/freezeDisplay.v
deleted file mode 100644
index 0284531c6..000000000
--- a/src/Specific/solinas64_2e158m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e158m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/CurveParameters.v b/src/Specific/solinas64_2e158m15_3limbs/CurveParameters.v
new file mode 100644
index 000000000..6c2984501
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^158 - 15
+Base: 52 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 3%nat;
+ base := 52 + 2/3;
+ bitwidth := 64;
+ s := 2^158;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 3); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/Synthesis.v b/src/Specific/solinas64_2e158m15_3limbs/Synthesis.v
new file mode 100644
index 000000000..f5a132fe0
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/compiler.sh b/src/Specific/solinas64_2e158m15_3limbs/compiler.sh
new file mode 100755
index 000000000..1a770c9c3
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,52}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15' "$@"
diff --git a/src/Specific/solinas64_2e158m15_3limbs/compilerxx.sh b/src/Specific/solinas64_2e158m15_3limbs/compilerxx.sh
new file mode 100755
index 000000000..0b7846121
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,52}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='20' -Dmodulus_limbs='3' -Dq_mpz='(1_mpz<<158) - 15' "$@"
diff --git a/src/Specific/solinas64_2e158m15_3limbs/feadd.v b/src/Specific/solinas64_2e158m15_3limbs/feadd.v
new file mode 100644
index 000000000..ff07bbc36
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e158m15_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..ff85c5dd9
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/femul.v b/src/Specific/solinas64_2e158m15_3limbs/femul.v
new file mode 100644
index 000000000..7f070ee75
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/femulDisplay.v b/src/Specific/solinas64_2e158m15_3limbs/femulDisplay.v
new file mode 100644
index 000000000..b6c590207
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesquare.v b/src/Specific/solinas64_2e158m15_3limbs/fesquare.v
new file mode 100644
index 000000000..776e4ba4c
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e158m15_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7e2b0aeed
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesub.v b/src/Specific/solinas64_2e158m15_3limbs/fesub.v
new file mode 100644
index 000000000..6df1c169a
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..81f92d6a8
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/freeze.v b/src/Specific/solinas64_2e158m15_3limbs/freeze.v
new file mode 100644
index 000000000..33ba9bb68
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..c5ffd962d
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e158m15_3limbs/py_interpreter.sh b/src/Specific/solinas64_2e158m15_3limbs/py_interpreter.sh
new file mode 100755
index 000000000..9ff818a21
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_3limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**158 - 15' -Dmodulus_bytes='52 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e158m15/CurveParameters.v b/src/Specific/solinas64_2e158m15_4limbs/CurveParameters.v
index 87d0e02c0..87d0e02c0 100644
--- a/src/Specific/solinas64_2e158m15/CurveParameters.v
+++ b/src/Specific/solinas64_2e158m15_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e158m15_4limbs/Synthesis.v b/src/Specific/solinas64_2e158m15_4limbs/Synthesis.v
new file mode 100644
index 000000000..8035cc65d
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e158m15/compiler.sh b/src/Specific/solinas64_2e158m15_4limbs/compiler.sh
index 5c8c20e37..5c8c20e37 100755
--- a/src/Specific/solinas64_2e158m15/compiler.sh
+++ b/src/Specific/solinas64_2e158m15_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e158m15/compilerxx.sh b/src/Specific/solinas64_2e158m15_4limbs/compilerxx.sh
index 4048216cd..4048216cd 100755
--- a/src/Specific/solinas64_2e158m15/compilerxx.sh
+++ b/src/Specific/solinas64_2e158m15_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e158m15_4limbs/feadd.v b/src/Specific/solinas64_2e158m15_4limbs/feadd.v
new file mode 100644
index 000000000..e4b02d87d
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e158m15_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..c79a985de
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/femul.v b/src/Specific/solinas64_2e158m15_4limbs/femul.v
new file mode 100644
index 000000000..20ecef8b5
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/femulDisplay.v b/src/Specific/solinas64_2e158m15_4limbs/femulDisplay.v
new file mode 100644
index 000000000..38ed58985
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/fesquare.v b/src/Specific/solinas64_2e158m15_4limbs/fesquare.v
new file mode 100644
index 000000000..b1647f64f
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e158m15_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..18c1fa9b5
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/fesub.v b/src/Specific/solinas64_2e158m15_4limbs/fesub.v
new file mode 100644
index 000000000..c50d336b1
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e158m15_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..0a5ab6cb3
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/freeze.v b/src/Specific/solinas64_2e158m15_4limbs/freeze.v
new file mode 100644
index 000000000..6488850b8
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e158m15_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e158m15_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..85e1e3fdf
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e158m15_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e158m15/py_interpreter.sh b/src/Specific/solinas64_2e158m15_4limbs/py_interpreter.sh
index 62d315db0..62d315db0 100755
--- a/src/Specific/solinas64_2e158m15/py_interpreter.sh
+++ b/src/Specific/solinas64_2e158m15_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e165m25/Synthesis.v b/src/Specific/solinas64_2e165m25/Synthesis.v
deleted file mode 100644
index e5a0e11da..000000000
--- a/src/Specific/solinas64_2e165m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e165m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e165m25/feadd.c b/src/Specific/solinas64_2e165m25/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e165m25/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e165m25/feadd.v b/src/Specific/solinas64_2e165m25/feadd.v
deleted file mode 100644
index a062a3d23..000000000
--- a/src/Specific/solinas64_2e165m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e165m25/feaddDisplay.log b/src/Specific/solinas64_2e165m25/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e165m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/feaddDisplay.v b/src/Specific/solinas64_2e165m25/feaddDisplay.v
deleted file mode 100644
index 8e1671d2f..000000000
--- a/src/Specific/solinas64_2e165m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e165m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e165m25/femul.c b/src/Specific/solinas64_2e165m25/femul.c
deleted file mode 100644
index 79b5c48a0..000000000
--- a/src/Specific/solinas64_2e165m25/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x19 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x19 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint128_t x15 = (x14 >> 0x37);
- { uint64_t x16 = ((uint64_t)x14 & 0x7fffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x37);
- { uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x37);
- { uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffffff);
- { uint128_t x23 = (x16 + ((uint128_t)0x19 * x21));
- { uint64_t x24 = (uint64_t) (x23 >> 0x37);
- { uint64_t x25 = ((uint64_t)x23 & 0x7fffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x37);
- { uint64_t x28 = (x26 & 0x7fffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e165m25/femul.v b/src/Specific/solinas64_2e165m25/femul.v
deleted file mode 100644
index 44d73e592..000000000
--- a/src/Specific/solinas64_2e165m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e165m25/femulDisplay.log b/src/Specific/solinas64_2e165m25/femulDisplay.log
deleted file mode 100644
index f31c56e57..000000000
--- a/src/Specific/solinas64_2e165m25/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x19 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x19 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint128_t x15 = (x14 >> 0x37);
- uint64_t x16 = ((uint64_t)x14 & 0x7fffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x37);
- uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x37);
- uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffffff);
- uint128_t x23 = (x16 + ((uint128_t)0x19 * x21));
- uint64_t x24 = (uint64_t) (x23 >> 0x37);
- uint64_t x25 = ((uint64_t)x23 & 0x7fffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x37);
- uint64_t x28 = (x26 & 0x7fffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/femulDisplay.v b/src/Specific/solinas64_2e165m25/femulDisplay.v
deleted file mode 100644
index 56c6e52a1..000000000
--- a/src/Specific/solinas64_2e165m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e165m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e165m25/fesquare.c b/src/Specific/solinas64_2e165m25/fesquare.c
deleted file mode 100644
index 4920e64b1..000000000
--- a/src/Specific/solinas64_2e165m25/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x19 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint128_t x8 = (x7 >> 0x37);
- { uint64_t x9 = ((uint64_t)x7 & 0x7fffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x37);
- { uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x37);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- { uint128_t x16 = (x9 + ((uint128_t)0x19 * x14));
- { uint64_t x17 = (uint64_t) (x16 >> 0x37);
- { uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x37);
- { uint64_t x21 = (x19 & 0x7fffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e165m25/fesquare.v b/src/Specific/solinas64_2e165m25/fesquare.v
deleted file mode 100644
index bfb55c80e..000000000
--- a/src/Specific/solinas64_2e165m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e165m25/fesquareDisplay.log b/src/Specific/solinas64_2e165m25/fesquareDisplay.log
deleted file mode 100644
index 665752d95..000000000
--- a/src/Specific/solinas64_2e165m25/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x19 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint128_t x8 = (x7 >> 0x37);
- uint64_t x9 = ((uint64_t)x7 & 0x7fffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x37);
- uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x37);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- uint128_t x16 = (x9 + ((uint128_t)0x19 * x14));
- uint64_t x17 = (uint64_t) (x16 >> 0x37);
- uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x37);
- uint64_t x21 = (x19 & 0x7fffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/fesquareDisplay.v b/src/Specific/solinas64_2e165m25/fesquareDisplay.v
deleted file mode 100644
index 93396cb72..000000000
--- a/src/Specific/solinas64_2e165m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e165m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e165m25/fesub.c b/src/Specific/solinas64_2e165m25/fesub.c
deleted file mode 100644
index dda19b667..000000000
--- a/src/Specific/solinas64_2e165m25/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0xffffffffffffce + x5) - x9);
- out[1] = ((0xfffffffffffffe + x7) - x11);
- out[2] = ((0xfffffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e165m25/fesub.v b/src/Specific/solinas64_2e165m25/fesub.v
deleted file mode 100644
index 01e9212d6..000000000
--- a/src/Specific/solinas64_2e165m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e165m25/fesubDisplay.log b/src/Specific/solinas64_2e165m25/fesubDisplay.log
deleted file mode 100644
index 8e2ee812b..000000000
--- a/src/Specific/solinas64_2e165m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0xfffffffffffffe + x6) - x10), ((0xfffffffffffffe + x7) - x11), ((0xffffffffffffce + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/fesubDisplay.v b/src/Specific/solinas64_2e165m25/fesubDisplay.v
deleted file mode 100644
index a17e55bb9..000000000
--- a/src/Specific/solinas64_2e165m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e165m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e165m25/freeze.c b/src/Specific/solinas64_2e165m25/freeze.c
deleted file mode 100644
index 6cdc223df..000000000
--- a/src/Specific/solinas64_2e165m25/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffe7);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x7fffffffffffe7);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x7fffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x7fffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e165m25/freeze.v b/src/Specific/solinas64_2e165m25/freeze.v
deleted file mode 100644
index b7e14e4fd..000000000
--- a/src/Specific/solinas64_2e165m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e165m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e165m25/freezeDisplay.log b/src/Specific/solinas64_2e165m25/freezeDisplay.log
deleted file mode 100644
index f056ae1bd..000000000
--- a/src/Specific/solinas64_2e165m25/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffe7);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x7fffffffffffe7);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x7fffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x7fffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/freezeDisplay.v b/src/Specific/solinas64_2e165m25/freezeDisplay.v
deleted file mode 100644
index 0d10f079f..000000000
--- a/src/Specific/solinas64_2e165m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e165m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e165m25/CurveParameters.v b/src/Specific/solinas64_2e165m25_3limbs/CurveParameters.v
index bbdb16a2c..bbdb16a2c 100644
--- a/src/Specific/solinas64_2e165m25/CurveParameters.v
+++ b/src/Specific/solinas64_2e165m25_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e165m25_3limbs/Synthesis.v b/src/Specific/solinas64_2e165m25_3limbs/Synthesis.v
new file mode 100644
index 000000000..e079796f2
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e165m25/compiler.sh b/src/Specific/solinas64_2e165m25_3limbs/compiler.sh
index ee27788c6..ee27788c6 100755
--- a/src/Specific/solinas64_2e165m25/compiler.sh
+++ b/src/Specific/solinas64_2e165m25_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e165m25/compilerxx.sh b/src/Specific/solinas64_2e165m25_3limbs/compilerxx.sh
index 5a85dbb52..5a85dbb52 100755
--- a/src/Specific/solinas64_2e165m25/compilerxx.sh
+++ b/src/Specific/solinas64_2e165m25_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e165m25_3limbs/feadd.v b/src/Specific/solinas64_2e165m25_3limbs/feadd.v
new file mode 100644
index 000000000..d5ef4cfca
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e165m25_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..ffe7f597e
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/femul.v b/src/Specific/solinas64_2e165m25_3limbs/femul.v
new file mode 100644
index 000000000..dfd305ef6
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/femulDisplay.v b/src/Specific/solinas64_2e165m25_3limbs/femulDisplay.v
new file mode 100644
index 000000000..1df6d0e7d
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/fesquare.v b/src/Specific/solinas64_2e165m25_3limbs/fesquare.v
new file mode 100644
index 000000000..d3ad7698a
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e165m25_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3a6d84e39
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/fesub.v b/src/Specific/solinas64_2e165m25_3limbs/fesub.v
new file mode 100644
index 000000000..e6697de6c
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e165m25_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..a21b3b919
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/freeze.v b/src/Specific/solinas64_2e165m25_3limbs/freeze.v
new file mode 100644
index 000000000..abea32921
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e165m25_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e165m25_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..5b31a0184
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e165m25/py_interpreter.sh b/src/Specific/solinas64_2e165m25_3limbs/py_interpreter.sh
index 49af9f37e..49af9f37e 100755
--- a/src/Specific/solinas64_2e165m25/py_interpreter.sh
+++ b/src/Specific/solinas64_2e165m25_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e165m25_4limbs/CurveParameters.v b/src/Specific/solinas64_2e165m25_4limbs/CurveParameters.v
new file mode 100644
index 000000000..a512437c1
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^165 - 25
+Base: 41.25
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 41 + 1/4;
+ bitwidth := 64;
+ s := 2^165;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/Synthesis.v b/src/Specific/solinas64_2e165m25_4limbs/Synthesis.v
new file mode 100644
index 000000000..1b9b73f6b
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/compiler.sh b/src/Specific/solinas64_2e165m25_4limbs/compiler.sh
new file mode 100755
index 000000000..87ef57448
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas64_2e165m25_4limbs/compilerxx.sh b/src/Specific/solinas64_2e165m25_4limbs/compilerxx.sh
new file mode 100755
index 000000000..71b015bee
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<165) - 25' "$@"
diff --git a/src/Specific/solinas64_2e165m25_4limbs/feadd.v b/src/Specific/solinas64_2e165m25_4limbs/feadd.v
new file mode 100644
index 000000000..7f8a1e110
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e165m25_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..f16e5b646
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/femul.v b/src/Specific/solinas64_2e165m25_4limbs/femul.v
new file mode 100644
index 000000000..9f468f53c
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/femulDisplay.v b/src/Specific/solinas64_2e165m25_4limbs/femulDisplay.v
new file mode 100644
index 000000000..8628f24bd
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesquare.v b/src/Specific/solinas64_2e165m25_4limbs/fesquare.v
new file mode 100644
index 000000000..0311bb93a
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e165m25_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..190f67f03
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesub.v b/src/Specific/solinas64_2e165m25_4limbs/fesub.v
new file mode 100644
index 000000000..f61b0b2ee
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..8363410c9
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/freeze.v b/src/Specific/solinas64_2e165m25_4limbs/freeze.v
new file mode 100644
index 000000000..0442a65f9
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e165m25_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..be3a2ef3d
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e165m25_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e165m25_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e165m25_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..c87dc1fb1
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**165 - 25' -Dmodulus_bytes='41.25' -Da24='121665'
diff --git a/src/Specific/solinas64_2e166m5/Synthesis.v b/src/Specific/solinas64_2e166m5/Synthesis.v
deleted file mode 100644
index 75358af7f..000000000
--- a/src/Specific/solinas64_2e166m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e166m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e166m5/feadd.c b/src/Specific/solinas64_2e166m5/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e166m5/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e166m5/feadd.v b/src/Specific/solinas64_2e166m5/feadd.v
deleted file mode 100644
index 5f4b18d64..000000000
--- a/src/Specific/solinas64_2e166m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e166m5/feaddDisplay.log b/src/Specific/solinas64_2e166m5/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e166m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/feaddDisplay.v b/src/Specific/solinas64_2e166m5/feaddDisplay.v
deleted file mode 100644
index e357ddced..000000000
--- a/src/Specific/solinas64_2e166m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e166m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e166m5/femul.c b/src/Specific/solinas64_2e166m5/femul.c
deleted file mode 100644
index dc6d5fea4..000000000
--- a/src/Specific/solinas64_2e166m5/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11)))));
- { uint64_t x15 = (uint64_t) (x14 >> 0x38);
- { uint64_t x16 = ((uint64_t)x14 & 0xffffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x37);
- { uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x37);
- { uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffffff);
- { uint64_t x23 = (x16 + (0x5 * x21));
- { uint64_t x24 = (x23 >> 0x38);
- { uint64_t x25 = (x23 & 0xffffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x37);
- { uint64_t x28 = (x26 & 0x7fffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e166m5/femul.v b/src/Specific/solinas64_2e166m5/femul.v
deleted file mode 100644
index aa0b1bd3d..000000000
--- a/src/Specific/solinas64_2e166m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e166m5/femulDisplay.log b/src/Specific/solinas64_2e166m5/femulDisplay.log
deleted file mode 100644
index 9c9995571..000000000
--- a/src/Specific/solinas64_2e166m5/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + ((0x2 * ((uint128_t)x7 * x11)) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x5 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x5 * ((0x2 * ((uint128_t)x7 * x10)) + (0x2 * ((uint128_t)x6 * x11)))));
- uint64_t x15 = (uint64_t) (x14 >> 0x38);
- uint64_t x16 = ((uint64_t)x14 & 0xffffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x37);
- uint64_t x19 = ((uint64_t)x17 & 0x7fffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x37);
- uint64_t x22 = ((uint64_t)x20 & 0x7fffffffffffff);
- uint64_t x23 = (x16 + (0x5 * x21));
- uint64_t x24 = (x23 >> 0x38);
- uint64_t x25 = (x23 & 0xffffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x37);
- uint64_t x28 = (x26 & 0x7fffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/femulDisplay.v b/src/Specific/solinas64_2e166m5/femulDisplay.v
deleted file mode 100644
index 8a95c5b48..000000000
--- a/src/Specific/solinas64_2e166m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e166m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e166m5/fesquare.c b/src/Specific/solinas64_2e166m5/fesquare.c
deleted file mode 100644
index ba2f12c7e..000000000
--- a/src/Specific/solinas64_2e166m5/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4)))));
- { uint64_t x8 = (uint64_t) (x7 >> 0x38);
- { uint64_t x9 = ((uint64_t)x7 & 0xffffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x37);
- { uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x37);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- { uint64_t x16 = (x9 + (0x5 * x14));
- { uint64_t x17 = (x16 >> 0x38);
- { uint64_t x18 = (x16 & 0xffffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x37);
- { uint64_t x21 = (x19 & 0x7fffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e166m5/fesquare.v b/src/Specific/solinas64_2e166m5/fesquare.v
deleted file mode 100644
index a069848d3..000000000
--- a/src/Specific/solinas64_2e166m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e166m5/fesquareDisplay.log b/src/Specific/solinas64_2e166m5/fesquareDisplay.log
deleted file mode 100644
index 6166583b5..000000000
--- a/src/Specific/solinas64_2e166m5/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x3)) + (0x2 * ((uint128_t)x3 * x4)))));
- uint64_t x8 = (uint64_t) (x7 >> 0x38);
- uint64_t x9 = ((uint64_t)x7 & 0xffffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x37);
- uint64_t x12 = ((uint64_t)x10 & 0x7fffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x37);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- uint64_t x16 = (x9 + (0x5 * x14));
- uint64_t x17 = (x16 >> 0x38);
- uint64_t x18 = (x16 & 0xffffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x37);
- uint64_t x21 = (x19 & 0x7fffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/fesquareDisplay.v b/src/Specific/solinas64_2e166m5/fesquareDisplay.v
deleted file mode 100644
index 524fb948d..000000000
--- a/src/Specific/solinas64_2e166m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e166m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e166m5/fesub.c b/src/Specific/solinas64_2e166m5/fesub.c
deleted file mode 100644
index f915e3d1a..000000000
--- a/src/Specific/solinas64_2e166m5/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x1fffffffffffff6 + x5) - x9);
- out[1] = ((0xfffffffffffffe + x7) - x11);
- out[2] = ((0xfffffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e166m5/fesub.v b/src/Specific/solinas64_2e166m5/fesub.v
deleted file mode 100644
index 208b3c988..000000000
--- a/src/Specific/solinas64_2e166m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e166m5/fesubDisplay.log b/src/Specific/solinas64_2e166m5/fesubDisplay.log
deleted file mode 100644
index 3b42dfd84..000000000
--- a/src/Specific/solinas64_2e166m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0xfffffffffffffe + x6) - x10), ((0xfffffffffffffe + x7) - x11), ((0x1fffffffffffff6 + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/fesubDisplay.v b/src/Specific/solinas64_2e166m5/fesubDisplay.v
deleted file mode 100644
index a8e9a400a..000000000
--- a/src/Specific/solinas64_2e166m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e166m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e166m5/freeze.c b/src/Specific/solinas64_2e166m5/freeze.c
deleted file mode 100644
index 039a7e77a..000000000
--- a/src/Specific/solinas64_2e166m5/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffb);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0xfffffffffffffb);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x7fffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x7fffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e166m5/freeze.v b/src/Specific/solinas64_2e166m5/freeze.v
deleted file mode 100644
index 194098a02..000000000
--- a/src/Specific/solinas64_2e166m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e166m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e166m5/freezeDisplay.log b/src/Specific/solinas64_2e166m5/freezeDisplay.log
deleted file mode 100644
index 49424f528..000000000
--- a/src/Specific/solinas64_2e166m5/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffb);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x7fffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0xfffffffffffffb);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x7fffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x7fffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/freezeDisplay.v b/src/Specific/solinas64_2e166m5/freezeDisplay.v
deleted file mode 100644
index 01fb689ae..000000000
--- a/src/Specific/solinas64_2e166m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e166m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e166m5/CurveParameters.v b/src/Specific/solinas64_2e166m5_3limbs/CurveParameters.v
index ef48bf342..ef48bf342 100644
--- a/src/Specific/solinas64_2e166m5/CurveParameters.v
+++ b/src/Specific/solinas64_2e166m5_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e166m5_3limbs/Synthesis.v b/src/Specific/solinas64_2e166m5_3limbs/Synthesis.v
new file mode 100644
index 000000000..d968fb316
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e166m5/compiler.sh b/src/Specific/solinas64_2e166m5_3limbs/compiler.sh
index 7a1e71fea..7a1e71fea 100755
--- a/src/Specific/solinas64_2e166m5/compiler.sh
+++ b/src/Specific/solinas64_2e166m5_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e166m5/compilerxx.sh b/src/Specific/solinas64_2e166m5_3limbs/compilerxx.sh
index cf6a0c412..cf6a0c412 100755
--- a/src/Specific/solinas64_2e166m5/compilerxx.sh
+++ b/src/Specific/solinas64_2e166m5_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e166m5_3limbs/feadd.v b/src/Specific/solinas64_2e166m5_3limbs/feadd.v
new file mode 100644
index 000000000..b10115342
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e166m5_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..49248c3c5
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/femul.v b/src/Specific/solinas64_2e166m5_3limbs/femul.v
new file mode 100644
index 000000000..a8a4bb6b7
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/femulDisplay.v b/src/Specific/solinas64_2e166m5_3limbs/femulDisplay.v
new file mode 100644
index 000000000..b61272cfc
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/fesquare.v b/src/Specific/solinas64_2e166m5_3limbs/fesquare.v
new file mode 100644
index 000000000..7fad865e2
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e166m5_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3d6f4b272
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/fesub.v b/src/Specific/solinas64_2e166m5_3limbs/fesub.v
new file mode 100644
index 000000000..9cd6f4045
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e166m5_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..a6548ff36
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/freeze.v b/src/Specific/solinas64_2e166m5_3limbs/freeze.v
new file mode 100644
index 000000000..9c1ded2d4
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e166m5_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e166m5_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..bfa6ca732
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e166m5/py_interpreter.sh b/src/Specific/solinas64_2e166m5_3limbs/py_interpreter.sh
index 67e44b9bc..67e44b9bc 100755
--- a/src/Specific/solinas64_2e166m5/py_interpreter.sh
+++ b/src/Specific/solinas64_2e166m5_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e166m5_4limbs/CurveParameters.v b/src/Specific/solinas64_2e166m5_4limbs/CurveParameters.v
new file mode 100644
index 000000000..b2b8749d7
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^166 - 5
+Base: 41.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 41 + 1/2;
+ bitwidth := 64;
+ s := 2^166;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/Synthesis.v b/src/Specific/solinas64_2e166m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..c20690c14
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/compiler.sh b/src/Specific/solinas64_2e166m5_4limbs/compiler.sh
new file mode 100755
index 000000000..0066145a6
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,42,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas64_2e166m5_4limbs/compilerxx.sh b/src/Specific/solinas64_2e166m5_4limbs/compilerxx.sh
new file mode 100755
index 000000000..22d17ba04
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,42,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='21' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<166) - 5' "$@"
diff --git a/src/Specific/solinas64_2e166m5_4limbs/feadd.v b/src/Specific/solinas64_2e166m5_4limbs/feadd.v
new file mode 100644
index 000000000..4ee96ba1c
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e166m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..4b1e53dea
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/femul.v b/src/Specific/solinas64_2e166m5_4limbs/femul.v
new file mode 100644
index 000000000..3c08c48a4
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/femulDisplay.v b/src/Specific/solinas64_2e166m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..1a3ff99d8
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesquare.v b/src/Specific/solinas64_2e166m5_4limbs/fesquare.v
new file mode 100644
index 000000000..a321b15f3
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e166m5_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c24c2da9e
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesub.v b/src/Specific/solinas64_2e166m5_4limbs/fesub.v
new file mode 100644
index 000000000..428c2c77c
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..c07a76bd9
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/freeze.v b/src/Specific/solinas64_2e166m5_4limbs/freeze.v
new file mode 100644
index 000000000..bc5a899a8
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e166m5_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..902335747
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e166m5_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e166m5_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e166m5_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..b58c5d35e
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**166 - 5' -Dmodulus_bytes='41.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e171m19/Synthesis.v b/src/Specific/solinas64_2e171m19/Synthesis.v
deleted file mode 100644
index 20ce488df..000000000
--- a/src/Specific/solinas64_2e171m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e171m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e171m19/feadd.c b/src/Specific/solinas64_2e171m19/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e171m19/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e171m19/feadd.v b/src/Specific/solinas64_2e171m19/feadd.v
deleted file mode 100644
index 424a7cb48..000000000
--- a/src/Specific/solinas64_2e171m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e171m19/feaddDisplay.log b/src/Specific/solinas64_2e171m19/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e171m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/feaddDisplay.v b/src/Specific/solinas64_2e171m19/feaddDisplay.v
deleted file mode 100644
index 4fd1bef22..000000000
--- a/src/Specific/solinas64_2e171m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e171m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e171m19/femul.c b/src/Specific/solinas64_2e171m19/femul.c
deleted file mode 100644
index fef824bff..000000000
--- a/src/Specific/solinas64_2e171m19/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x13 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x13 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint128_t x15 = (x14 >> 0x39);
- { uint64_t x16 = ((uint64_t)x14 & 0x1ffffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint128_t x18 = (x17 >> 0x39);
- { uint64_t x19 = ((uint64_t)x17 & 0x1ffffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x39);
- { uint64_t x22 = ((uint64_t)x20 & 0x1ffffffffffffff);
- { uint128_t x23 = (x16 + ((uint128_t)0x13 * x21));
- { uint64_t x24 = (uint64_t) (x23 >> 0x39);
- { uint64_t x25 = ((uint64_t)x23 & 0x1ffffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x39);
- { uint64_t x28 = (x26 & 0x1ffffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e171m19/femul.v b/src/Specific/solinas64_2e171m19/femul.v
deleted file mode 100644
index 1ecb2ba74..000000000
--- a/src/Specific/solinas64_2e171m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e171m19/femulDisplay.log b/src/Specific/solinas64_2e171m19/femulDisplay.log
deleted file mode 100644
index 277ffffec..000000000
--- a/src/Specific/solinas64_2e171m19/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x13 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x13 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint128_t x15 = (x14 >> 0x39);
- uint64_t x16 = ((uint64_t)x14 & 0x1ffffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint128_t x18 = (x17 >> 0x39);
- uint64_t x19 = ((uint64_t)x17 & 0x1ffffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x39);
- uint64_t x22 = ((uint64_t)x20 & 0x1ffffffffffffff);
- uint128_t x23 = (x16 + ((uint128_t)0x13 * x21));
- uint64_t x24 = (uint64_t) (x23 >> 0x39);
- uint64_t x25 = ((uint64_t)x23 & 0x1ffffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x39);
- uint64_t x28 = (x26 & 0x1ffffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/femulDisplay.v b/src/Specific/solinas64_2e171m19/femulDisplay.v
deleted file mode 100644
index e9944b463..000000000
--- a/src/Specific/solinas64_2e171m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e171m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e171m19/fesquare.c b/src/Specific/solinas64_2e171m19/fesquare.c
deleted file mode 100644
index baf29c300..000000000
--- a/src/Specific/solinas64_2e171m19/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x13 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint128_t x8 = (x7 >> 0x39);
- { uint64_t x9 = ((uint64_t)x7 & 0x1ffffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint128_t x11 = (x10 >> 0x39);
- { uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x39);
- { uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- { uint128_t x16 = (x9 + ((uint128_t)0x13 * x14));
- { uint64_t x17 = (uint64_t) (x16 >> 0x39);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x39);
- { uint64_t x21 = (x19 & 0x1ffffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e171m19/fesquare.v b/src/Specific/solinas64_2e171m19/fesquare.v
deleted file mode 100644
index 4cc59a829..000000000
--- a/src/Specific/solinas64_2e171m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e171m19/fesquareDisplay.log b/src/Specific/solinas64_2e171m19/fesquareDisplay.log
deleted file mode 100644
index ed72eaa4d..000000000
--- a/src/Specific/solinas64_2e171m19/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x13 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint128_t x8 = (x7 >> 0x39);
- uint64_t x9 = ((uint64_t)x7 & 0x1ffffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint128_t x11 = (x10 >> 0x39);
- uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x39);
- uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- uint128_t x16 = (x9 + ((uint128_t)0x13 * x14));
- uint64_t x17 = (uint64_t) (x16 >> 0x39);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x39);
- uint64_t x21 = (x19 & 0x1ffffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/fesquareDisplay.v b/src/Specific/solinas64_2e171m19/fesquareDisplay.v
deleted file mode 100644
index e6ed3e08d..000000000
--- a/src/Specific/solinas64_2e171m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e171m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e171m19/fesub.c b/src/Specific/solinas64_2e171m19/fesub.c
deleted file mode 100644
index 060449697..000000000
--- a/src/Specific/solinas64_2e171m19/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x3ffffffffffffda + x5) - x9);
- out[1] = ((0x3fffffffffffffe + x7) - x11);
- out[2] = ((0x3fffffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e171m19/fesub.v b/src/Specific/solinas64_2e171m19/fesub.v
deleted file mode 100644
index 8a9b57dfc..000000000
--- a/src/Specific/solinas64_2e171m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e171m19/fesubDisplay.log b/src/Specific/solinas64_2e171m19/fesubDisplay.log
deleted file mode 100644
index c6120f7d9..000000000
--- a/src/Specific/solinas64_2e171m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x3fffffffffffffe + x6) - x10), ((0x3fffffffffffffe + x7) - x11), ((0x3ffffffffffffda + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/fesubDisplay.v b/src/Specific/solinas64_2e171m19/fesubDisplay.v
deleted file mode 100644
index 2e3d448ab..000000000
--- a/src/Specific/solinas64_2e171m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e171m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e171m19/freeze.c b/src/Specific/solinas64_2e171m19/freeze.c
deleted file mode 100644
index 4dfecb1df..000000000
--- a/src/Specific/solinas64_2e171m19/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffffed);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1ffffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1ffffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x1ffffffffffffed);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x1ffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x1ffffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e171m19/freeze.v b/src/Specific/solinas64_2e171m19/freeze.v
deleted file mode 100644
index cce2fe794..000000000
--- a/src/Specific/solinas64_2e171m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e171m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e171m19/freezeDisplay.log b/src/Specific/solinas64_2e171m19/freezeDisplay.log
deleted file mode 100644
index 95f2aa18b..000000000
--- a/src/Specific/solinas64_2e171m19/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffffed);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1ffffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1ffffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x1ffffffffffffed);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x1ffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x1ffffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/freezeDisplay.v b/src/Specific/solinas64_2e171m19/freezeDisplay.v
deleted file mode 100644
index 883e0dc63..000000000
--- a/src/Specific/solinas64_2e171m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e171m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e171m19/CurveParameters.v b/src/Specific/solinas64_2e171m19_3limbs/CurveParameters.v
index ff1df7e1c..ff1df7e1c 100644
--- a/src/Specific/solinas64_2e171m19/CurveParameters.v
+++ b/src/Specific/solinas64_2e171m19_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e171m19_3limbs/Synthesis.v b/src/Specific/solinas64_2e171m19_3limbs/Synthesis.v
new file mode 100644
index 000000000..b2174da68
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e171m19/compiler.sh b/src/Specific/solinas64_2e171m19_3limbs/compiler.sh
index a26eac5a2..a26eac5a2 100755
--- a/src/Specific/solinas64_2e171m19/compiler.sh
+++ b/src/Specific/solinas64_2e171m19_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e171m19/compilerxx.sh b/src/Specific/solinas64_2e171m19_3limbs/compilerxx.sh
index f4bdfac18..f4bdfac18 100755
--- a/src/Specific/solinas64_2e171m19/compilerxx.sh
+++ b/src/Specific/solinas64_2e171m19_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e171m19_3limbs/feadd.v b/src/Specific/solinas64_2e171m19_3limbs/feadd.v
new file mode 100644
index 000000000..797dcf901
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e171m19_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..d330cdae5
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/femul.v b/src/Specific/solinas64_2e171m19_3limbs/femul.v
new file mode 100644
index 000000000..35b7a0bf5
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/femulDisplay.v b/src/Specific/solinas64_2e171m19_3limbs/femulDisplay.v
new file mode 100644
index 000000000..dca1b1d75
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/fesquare.v b/src/Specific/solinas64_2e171m19_3limbs/fesquare.v
new file mode 100644
index 000000000..e461316ab
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e171m19_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..99f957f1b
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/fesub.v b/src/Specific/solinas64_2e171m19_3limbs/fesub.v
new file mode 100644
index 000000000..4738ba6ec
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e171m19_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..bcbb177f7
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/freeze.v b/src/Specific/solinas64_2e171m19_3limbs/freeze.v
new file mode 100644
index 000000000..a13f33f6d
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e171m19_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e171m19_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..aef384b19
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e171m19/py_interpreter.sh b/src/Specific/solinas64_2e171m19_3limbs/py_interpreter.sh
index a58798c98..a58798c98 100755
--- a/src/Specific/solinas64_2e171m19/py_interpreter.sh
+++ b/src/Specific/solinas64_2e171m19_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e171m19_4limbs/CurveParameters.v b/src/Specific/solinas64_2e171m19_4limbs/CurveParameters.v
new file mode 100644
index 000000000..25031ab9f
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^171 - 19
+Base: 42.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 42 + 3/4;
+ bitwidth := 64;
+ s := 2^171;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/Synthesis.v b/src/Specific/solinas64_2e171m19_4limbs/Synthesis.v
new file mode 100644
index 000000000..67e5c1c42
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/compiler.sh b/src/Specific/solinas64_2e171m19_4limbs/compiler.sh
new file mode 100755
index 000000000..a92147fe0
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43,42}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas64_2e171m19_4limbs/compilerxx.sh b/src/Specific/solinas64_2e171m19_4limbs/compilerxx.sh
new file mode 100755
index 000000000..dd89a3c29
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,43,42}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<171) - 19' "$@"
diff --git a/src/Specific/solinas64_2e171m19_4limbs/feadd.v b/src/Specific/solinas64_2e171m19_4limbs/feadd.v
new file mode 100644
index 000000000..701e17c08
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e171m19_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..84df6a941
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/femul.v b/src/Specific/solinas64_2e171m19_4limbs/femul.v
new file mode 100644
index 000000000..95a5df804
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/femulDisplay.v b/src/Specific/solinas64_2e171m19_4limbs/femulDisplay.v
new file mode 100644
index 000000000..63f162f55
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesquare.v b/src/Specific/solinas64_2e171m19_4limbs/fesquare.v
new file mode 100644
index 000000000..d3261edc8
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e171m19_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5baa5d838
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesub.v b/src/Specific/solinas64_2e171m19_4limbs/fesub.v
new file mode 100644
index 000000000..ae520f818
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..f5c4ab22b
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/freeze.v b/src/Specific/solinas64_2e171m19_4limbs/freeze.v
new file mode 100644
index 000000000..9127c6b6c
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e171m19_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..790050238
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e171m19_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e171m19_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e171m19_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..77459642b
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**171 - 19' -Dmodulus_bytes='42.75' -Da24='121665'
diff --git a/src/Specific/solinas64_2e174m17/Synthesis.v b/src/Specific/solinas64_2e174m17/Synthesis.v
deleted file mode 100644
index 029f73481..000000000
--- a/src/Specific/solinas64_2e174m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e174m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m17/feadd.c b/src/Specific/solinas64_2e174m17/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e174m17/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m17/feadd.v b/src/Specific/solinas64_2e174m17/feadd.v
deleted file mode 100644
index 0f9c78793..000000000
--- a/src/Specific/solinas64_2e174m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m17/feaddDisplay.log b/src/Specific/solinas64_2e174m17/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e174m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/feaddDisplay.v b/src/Specific/solinas64_2e174m17/feaddDisplay.v
deleted file mode 100644
index 7e7cca580..000000000
--- a/src/Specific/solinas64_2e174m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e174m17/femul.c b/src/Specific/solinas64_2e174m17/femul.c
deleted file mode 100644
index fdf07cf4c..000000000
--- a/src/Specific/solinas64_2e174m17/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x11 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x11 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint128_t x15 = (x14 >> 0x3a);
- { uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint128_t x18 = (x17 >> 0x3a);
- { uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x3a);
- { uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffffff);
- { uint128_t x23 = (x16 + ((uint128_t)0x11 * x21));
- { uint64_t x24 = (uint64_t) (x23 >> 0x3a);
- { uint64_t x25 = ((uint64_t)x23 & 0x3ffffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x3a);
- { uint64_t x28 = (x26 & 0x3ffffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m17/femul.v b/src/Specific/solinas64_2e174m17/femul.v
deleted file mode 100644
index 38e5a9c44..000000000
--- a/src/Specific/solinas64_2e174m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m17/femulDisplay.log b/src/Specific/solinas64_2e174m17/femulDisplay.log
deleted file mode 100644
index c05cad5fe..000000000
--- a/src/Specific/solinas64_2e174m17/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x11 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x11 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint128_t x15 = (x14 >> 0x3a);
- uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint128_t x18 = (x17 >> 0x3a);
- uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x3a);
- uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffffff);
- uint128_t x23 = (x16 + ((uint128_t)0x11 * x21));
- uint64_t x24 = (uint64_t) (x23 >> 0x3a);
- uint64_t x25 = ((uint64_t)x23 & 0x3ffffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x3a);
- uint64_t x28 = (x26 & 0x3ffffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/femulDisplay.v b/src/Specific/solinas64_2e174m17/femulDisplay.v
deleted file mode 100644
index 27b53286b..000000000
--- a/src/Specific/solinas64_2e174m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e174m17/fesquare.c b/src/Specific/solinas64_2e174m17/fesquare.c
deleted file mode 100644
index 1364215bc..000000000
--- a/src/Specific/solinas64_2e174m17/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint128_t x8 = (x7 >> 0x3a);
- { uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint128_t x11 = (x10 >> 0x3a);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x3a);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffffff);
- { uint128_t x16 = (x9 + ((uint128_t)0x11 * x14));
- { uint64_t x17 = (uint64_t) (x16 >> 0x3a);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x3a);
- { uint64_t x21 = (x19 & 0x3ffffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m17/fesquare.v b/src/Specific/solinas64_2e174m17/fesquare.v
deleted file mode 100644
index 94bf887fc..000000000
--- a/src/Specific/solinas64_2e174m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m17/fesquareDisplay.log b/src/Specific/solinas64_2e174m17/fesquareDisplay.log
deleted file mode 100644
index 65a36812e..000000000
--- a/src/Specific/solinas64_2e174m17/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint128_t x8 = (x7 >> 0x3a);
- uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint128_t x11 = (x10 >> 0x3a);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x3a);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffffff);
- uint128_t x16 = (x9 + ((uint128_t)0x11 * x14));
- uint64_t x17 = (uint64_t) (x16 >> 0x3a);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x3a);
- uint64_t x21 = (x19 & 0x3ffffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/fesquareDisplay.v b/src/Specific/solinas64_2e174m17/fesquareDisplay.v
deleted file mode 100644
index 1d7b2326f..000000000
--- a/src/Specific/solinas64_2e174m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e174m17/fesub.c b/src/Specific/solinas64_2e174m17/fesub.c
deleted file mode 100644
index f81d19b57..000000000
--- a/src/Specific/solinas64_2e174m17/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x7ffffffffffffde + x5) - x9);
- out[1] = ((0x7fffffffffffffe + x7) - x11);
- out[2] = ((0x7fffffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m17/fesub.v b/src/Specific/solinas64_2e174m17/fesub.v
deleted file mode 100644
index 2581546a0..000000000
--- a/src/Specific/solinas64_2e174m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m17/fesubDisplay.log b/src/Specific/solinas64_2e174m17/fesubDisplay.log
deleted file mode 100644
index 747607a6c..000000000
--- a/src/Specific/solinas64_2e174m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffffffe + x6) - x10), ((0x7fffffffffffffe + x7) - x11), ((0x7ffffffffffffde + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/fesubDisplay.v b/src/Specific/solinas64_2e174m17/fesubDisplay.v
deleted file mode 100644
index e9cbc0d25..000000000
--- a/src/Specific/solinas64_2e174m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e174m17/freeze.c b/src/Specific/solinas64_2e174m17/freeze.c
deleted file mode 100644
index 7593d076d..000000000
--- a/src/Specific/solinas64_2e174m17/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffef);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x3ffffffffffffef);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x3ffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x3ffffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m17/freeze.v b/src/Specific/solinas64_2e174m17/freeze.v
deleted file mode 100644
index 9f53894ae..000000000
--- a/src/Specific/solinas64_2e174m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m17/freezeDisplay.log b/src/Specific/solinas64_2e174m17/freezeDisplay.log
deleted file mode 100644
index 2ae343b92..000000000
--- a/src/Specific/solinas64_2e174m17/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffef);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x3ffffffffffffef);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x3ffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x3ffffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/freezeDisplay.v b/src/Specific/solinas64_2e174m17/freezeDisplay.v
deleted file mode 100644
index 8a07d8341..000000000
--- a/src/Specific/solinas64_2e174m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e174m17/CurveParameters.v b/src/Specific/solinas64_2e174m17_3limbs/CurveParameters.v
index 69603408a..69603408a 100644
--- a/src/Specific/solinas64_2e174m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e174m17_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e174m17_3limbs/Synthesis.v b/src/Specific/solinas64_2e174m17_3limbs/Synthesis.v
new file mode 100644
index 000000000..1a3d31b10
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m17/compiler.sh b/src/Specific/solinas64_2e174m17_3limbs/compiler.sh
index e65092f21..e65092f21 100755
--- a/src/Specific/solinas64_2e174m17/compiler.sh
+++ b/src/Specific/solinas64_2e174m17_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e174m17/compilerxx.sh b/src/Specific/solinas64_2e174m17_3limbs/compilerxx.sh
index 560008f1e..560008f1e 100755
--- a/src/Specific/solinas64_2e174m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e174m17_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e174m17_3limbs/feadd.v b/src/Specific/solinas64_2e174m17_3limbs/feadd.v
new file mode 100644
index 000000000..78d5104ed
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e174m17_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..a5a897422
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/femul.v b/src/Specific/solinas64_2e174m17_3limbs/femul.v
new file mode 100644
index 000000000..9ba7fa4d0
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/femulDisplay.v b/src/Specific/solinas64_2e174m17_3limbs/femulDisplay.v
new file mode 100644
index 000000000..0c6b4ad87
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/fesquare.v b/src/Specific/solinas64_2e174m17_3limbs/fesquare.v
new file mode 100644
index 000000000..bb2e94dde
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e174m17_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f442e2061
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/fesub.v b/src/Specific/solinas64_2e174m17_3limbs/fesub.v
new file mode 100644
index 000000000..d18e5f8a8
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e174m17_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..09d21f78c
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/freeze.v b/src/Specific/solinas64_2e174m17_3limbs/freeze.v
new file mode 100644
index 000000000..3f90ced5b
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m17_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e174m17_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..1b16cfdc7
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e174m17/py_interpreter.sh b/src/Specific/solinas64_2e174m17_3limbs/py_interpreter.sh
index d584e2052..d584e2052 100755
--- a/src/Specific/solinas64_2e174m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e174m17_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e174m17_4limbs/CurveParameters.v b/src/Specific/solinas64_2e174m17_4limbs/CurveParameters.v
new file mode 100644
index 000000000..0829abac5
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 17
+Base: 43.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 43 + 1/2;
+ bitwidth := 64;
+ s := 2^174;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/Synthesis.v b/src/Specific/solinas64_2e174m17_4limbs/Synthesis.v
new file mode 100644
index 000000000..a105384ed
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/compiler.sh b/src/Specific/solinas64_2e174m17_4limbs/compiler.sh
new file mode 100755
index 000000000..c4701f324
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas64_2e174m17_4limbs/compilerxx.sh b/src/Specific/solinas64_2e174m17_4limbs/compilerxx.sh
new file mode 100755
index 000000000..65120b7a2
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 17' "$@"
diff --git a/src/Specific/solinas64_2e174m17_4limbs/feadd.v b/src/Specific/solinas64_2e174m17_4limbs/feadd.v
new file mode 100644
index 000000000..1a315edee
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e174m17_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..b5a432e4e
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/femul.v b/src/Specific/solinas64_2e174m17_4limbs/femul.v
new file mode 100644
index 000000000..0d885943c
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/femulDisplay.v b/src/Specific/solinas64_2e174m17_4limbs/femulDisplay.v
new file mode 100644
index 000000000..932ac7706
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesquare.v b/src/Specific/solinas64_2e174m17_4limbs/fesquare.v
new file mode 100644
index 000000000..a6b90fe99
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e174m17_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6413a686a
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesub.v b/src/Specific/solinas64_2e174m17_4limbs/fesub.v
new file mode 100644
index 000000000..176b5aa43
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..4a527c765
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/freeze.v b/src/Specific/solinas64_2e174m17_4limbs/freeze.v
new file mode 100644
index 000000000..76e5695c7
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e174m17_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..a428ea102
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m17_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e174m17_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e174m17_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..cca2d6af9
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 17' -Dmodulus_bytes='43.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e174m3/Synthesis.v b/src/Specific/solinas64_2e174m3/Synthesis.v
deleted file mode 100644
index b4fbb2ee6..000000000
--- a/src/Specific/solinas64_2e174m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e174m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m3/feadd.c b/src/Specific/solinas64_2e174m3/feadd.c
deleted file mode 100644
index 725c1f205..000000000
--- a/src/Specific/solinas64_2e174m3/feadd.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = (x5 + x9);
- out[1] = (x7 + x11);
- out[2] = (x6 + x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m3/feadd.v b/src/Specific/solinas64_2e174m3/feadd.v
deleted file mode 100644
index 6d55398c5..000000000
--- a/src/Specific/solinas64_2e174m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m3/feaddDisplay.log b/src/Specific/solinas64_2e174m3/feaddDisplay.log
deleted file mode 100644
index 64fb467ef..000000000
--- a/src/Specific/solinas64_2e174m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- ((x6 + x10), (x7 + x11), (x5 + x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/feaddDisplay.v b/src/Specific/solinas64_2e174m3/feaddDisplay.v
deleted file mode 100644
index 1fb35e20b..000000000
--- a/src/Specific/solinas64_2e174m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e174m3/femul.c b/src/Specific/solinas64_2e174m3/femul.c
deleted file mode 100644
index 25915ef8a..000000000
--- a/src/Specific/solinas64_2e174m3/femul.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void femul(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- { uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- { uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x3 * ((uint128_t)x6 * x10)));
- { uint128_t x14 = (((uint128_t)x5 * x9) + (0x3 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- { uint128_t x15 = (x14 >> 0x3a);
- { uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffffff);
- { uint128_t x17 = (x15 + x13);
- { uint64_t x18 = (uint64_t) (x17 >> 0x3a);
- { uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffffff);
- { uint128_t x20 = (x18 + x12);
- { uint64_t x21 = (uint64_t) (x20 >> 0x3a);
- { uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffffff);
- { uint128_t x23 = (x16 + ((uint128_t)0x3 * x21));
- { uint64_t x24 = (uint64_t) (x23 >> 0x3a);
- { uint64_t x25 = ((uint64_t)x23 & 0x3ffffffffffffff);
- { uint64_t x26 = (x24 + x19);
- { uint64_t x27 = (x26 >> 0x3a);
- { uint64_t x28 = (x26 & 0x3ffffffffffffff);
- out[0] = x25;
- out[1] = x28;
- out[2] = (x27 + x22);
- }}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m3/femul.v b/src/Specific/solinas64_2e174m3/femul.v
deleted file mode 100644
index 71a3cda97..000000000
--- a/src/Specific/solinas64_2e174m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m3/femulDisplay.log b/src/Specific/solinas64_2e174m3/femulDisplay.log
deleted file mode 100644
index 0de3c7427..000000000
--- a/src/Specific/solinas64_2e174m3/femulDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- uint128_t x12 = (((uint128_t)x5 * x10) + (((uint128_t)x7 * x11) + ((uint128_t)x6 * x9)));
- uint128_t x13 = ((((uint128_t)x5 * x11) + ((uint128_t)x7 * x9)) + (0x3 * ((uint128_t)x6 * x10)));
- uint128_t x14 = (((uint128_t)x5 * x9) + (0x3 * (((uint128_t)x7 * x10) + ((uint128_t)x6 * x11))));
- uint128_t x15 = (x14 >> 0x3a);
- uint64_t x16 = ((uint64_t)x14 & 0x3ffffffffffffff);
- uint128_t x17 = (x15 + x13);
- uint64_t x18 = (uint64_t) (x17 >> 0x3a);
- uint64_t x19 = ((uint64_t)x17 & 0x3ffffffffffffff);
- uint128_t x20 = (x18 + x12);
- uint64_t x21 = (uint64_t) (x20 >> 0x3a);
- uint64_t x22 = ((uint64_t)x20 & 0x3ffffffffffffff);
- uint128_t x23 = (x16 + ((uint128_t)0x3 * x21));
- uint64_t x24 = (uint64_t) (x23 >> 0x3a);
- uint64_t x25 = ((uint64_t)x23 & 0x3ffffffffffffff);
- uint64_t x26 = (x24 + x19);
- uint64_t x27 = (x26 >> 0x3a);
- uint64_t x28 = (x26 & 0x3ffffffffffffff);
- return ((x27 + x22), Return x28, Return x25))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/femulDisplay.v b/src/Specific/solinas64_2e174m3/femulDisplay.v
deleted file mode 100644
index df4ed6352..000000000
--- a/src/Specific/solinas64_2e174m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e174m3/fesquare.c b/src/Specific/solinas64_2e174m3/fesquare.c
deleted file mode 100644
index e4d94711a..000000000
--- a/src/Specific/solinas64_2e174m3/fesquare.c
+++ /dev/null
@@ -1,26 +0,0 @@
-static void fesquare(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- { uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * ((uint128_t)x3 * x3)));
- { uint128_t x7 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- { uint128_t x8 = (x7 >> 0x3a);
- { uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffffff);
- { uint128_t x10 = (x8 + x6);
- { uint64_t x11 = (uint64_t) (x10 >> 0x3a);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- { uint128_t x13 = (x11 + x5);
- { uint64_t x14 = (uint64_t) (x13 >> 0x3a);
- { uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffffff);
- { uint128_t x16 = (x9 + ((uint128_t)0x3 * x14));
- { uint64_t x17 = (uint64_t) (x16 >> 0x3a);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- { uint64_t x19 = (x17 + x12);
- { uint64_t x20 = (x19 >> 0x3a);
- { uint64_t x21 = (x19 & 0x3ffffffffffffff);
- out[0] = x18;
- out[1] = x21;
- out[2] = (x20 + x15);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m3/fesquare.v b/src/Specific/solinas64_2e174m3/fesquare.v
deleted file mode 100644
index 81f37a621..000000000
--- a/src/Specific/solinas64_2e174m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m3/fesquareDisplay.log b/src/Specific/solinas64_2e174m3/fesquareDisplay.log
deleted file mode 100644
index 5ae5fb222..000000000
--- a/src/Specific/solinas64_2e174m3/fesquareDisplay.log
+++ /dev/null
@@ -1,24 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint128_t x5 = (((uint128_t)x2 * x3) + (((uint128_t)x4 * x4) + ((uint128_t)x3 * x2)));
- uint128_t x6 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * ((uint128_t)x3 * x3)));
- uint128_t x7 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x3) + ((uint128_t)x3 * x4))));
- uint128_t x8 = (x7 >> 0x3a);
- uint64_t x9 = ((uint64_t)x7 & 0x3ffffffffffffff);
- uint128_t x10 = (x8 + x6);
- uint64_t x11 = (uint64_t) (x10 >> 0x3a);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- uint128_t x13 = (x11 + x5);
- uint64_t x14 = (uint64_t) (x13 >> 0x3a);
- uint64_t x15 = ((uint64_t)x13 & 0x3ffffffffffffff);
- uint128_t x16 = (x9 + ((uint128_t)0x3 * x14));
- uint64_t x17 = (uint64_t) (x16 >> 0x3a);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- uint64_t x19 = (x17 + x12);
- uint64_t x20 = (x19 >> 0x3a);
- uint64_t x21 = (x19 & 0x3ffffffffffffff);
- return ((x20 + x15), Return x21, Return x18))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/fesquareDisplay.v b/src/Specific/solinas64_2e174m3/fesquareDisplay.v
deleted file mode 100644
index 93752164b..000000000
--- a/src/Specific/solinas64_2e174m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e174m3/fesub.c b/src/Specific/solinas64_2e174m3/fesub.c
deleted file mode 100644
index 33fdd392d..000000000
--- a/src/Specific/solinas64_2e174m3/fesub.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
- { const uint64_t x6 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x10 = in2[2];
- { const uint64_t x11 = in2[1];
- { const uint64_t x9 = in2[0];
- out[0] = ((0x7fffffffffffffa + x5) - x9);
- out[1] = ((0x7fffffffffffffe + x7) - x11);
- out[2] = ((0x7fffffffffffffe + x6) - x10);
- }}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m3/fesub.v b/src/Specific/solinas64_2e174m3/fesub.v
deleted file mode 100644
index dc3cb00d4..000000000
--- a/src/Specific/solinas64_2e174m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m3/fesubDisplay.log b/src/Specific/solinas64_2e174m3/fesubDisplay.log
deleted file mode 100644
index 6fbc51ba6..000000000
--- a/src/Specific/solinas64_2e174m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffffffe + x6) - x10), ((0x7fffffffffffffe + x7) - x11), ((0x7fffffffffffffa + x5) - x9)))
-(x, x0)%core
- : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/fesubDisplay.v b/src/Specific/solinas64_2e174m3/fesubDisplay.v
deleted file mode 100644
index 99d32e7bb..000000000
--- a/src/Specific/solinas64_2e174m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e174m3/freeze.c b/src/Specific/solinas64_2e174m3/freeze.c
deleted file mode 100644
index 42e104e38..000000000
--- a/src/Specific/solinas64_2e174m3/freeze.c
+++ /dev/null
@@ -1,19 +0,0 @@
-static void freeze(uint64_t out[3], const uint64_t in1[3]) {
- { const uint64_t x3 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffffd);
- { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffffff);
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffffff);
- { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & 0x3fffffffffffffd);
- { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- { uint64_t x19 = (x14 & 0x3ffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- { uint64_t x23 = (x14 & 0x3ffffffffffffff);
- { uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- out[0] = x17;
- out[1] = x21;
- out[2] = x25;
- }}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e174m3/freeze.v b/src/Specific/solinas64_2e174m3/freeze.v
deleted file mode 100644
index a03bbe82a..000000000
--- a/src/Specific/solinas64_2e174m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e174m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m3/freezeDisplay.log b/src/Specific/solinas64_2e174m3/freezeDisplay.log
deleted file mode 100644
index 3a8210248..000000000
--- a/src/Specific/solinas64_2e174m3/freezeDisplay.log
+++ /dev/null
@@ -1,17 +0,0 @@
-λ x : word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffffd);
- uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3ffffffffffffff);
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffffff);
- uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & 0x3fffffffffffffd);
- uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
- uint64_t x19 = (x14 & 0x3ffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
- uint64_t x23 = (x14 & 0x3ffffffffffffff);
- uint64_t x25, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x12, Return x23);
- (Return x25, Return x21, Return x17))
-x
- : word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/freezeDisplay.v b/src/Specific/solinas64_2e174m3/freezeDisplay.v
deleted file mode 100644
index 9444f48c9..000000000
--- a/src/Specific/solinas64_2e174m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e174m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e174m3/CurveParameters.v b/src/Specific/solinas64_2e174m3_3limbs/CurveParameters.v
index f09389f59..f09389f59 100644
--- a/src/Specific/solinas64_2e174m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e174m3_3limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e174m3_3limbs/Synthesis.v b/src/Specific/solinas64_2e174m3_3limbs/Synthesis.v
new file mode 100644
index 000000000..161e673ad
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m3/compiler.sh b/src/Specific/solinas64_2e174m3_3limbs/compiler.sh
index ba40ceabb..ba40ceabb 100755
--- a/src/Specific/solinas64_2e174m3/compiler.sh
+++ b/src/Specific/solinas64_2e174m3_3limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e174m3/compilerxx.sh b/src/Specific/solinas64_2e174m3_3limbs/compilerxx.sh
index 10b9c691e..10b9c691e 100755
--- a/src/Specific/solinas64_2e174m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e174m3_3limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e174m3_3limbs/feadd.v b/src/Specific/solinas64_2e174m3_3limbs/feadd.v
new file mode 100644
index 000000000..3840c1fbc
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/feaddDisplay.v b/src/Specific/solinas64_2e174m3_3limbs/feaddDisplay.v
new file mode 100644
index 000000000..0aac6429f
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/femul.v b/src/Specific/solinas64_2e174m3_3limbs/femul.v
new file mode 100644
index 000000000..f1b8df350
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/femulDisplay.v b/src/Specific/solinas64_2e174m3_3limbs/femulDisplay.v
new file mode 100644
index 000000000..316646987
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/fesquare.v b/src/Specific/solinas64_2e174m3_3limbs/fesquare.v
new file mode 100644
index 000000000..826bc0bc4
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/fesquareDisplay.v b/src/Specific/solinas64_2e174m3_3limbs/fesquareDisplay.v
new file mode 100644
index 000000000..75d04ef84
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/fesub.v b/src/Specific/solinas64_2e174m3_3limbs/fesub.v
new file mode 100644
index 000000000..3557584c3
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/fesubDisplay.v b/src/Specific/solinas64_2e174m3_3limbs/fesubDisplay.v
new file mode 100644
index 000000000..08c3e780c
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/freeze.v b/src/Specific/solinas64_2e174m3_3limbs/freeze.v
new file mode 100644
index 000000000..27c36123e
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m3_3limbs/freezeDisplay.v b/src/Specific/solinas64_2e174m3_3limbs/freezeDisplay.v
new file mode 100644
index 000000000..e8617e777
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_3limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_3limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e174m3/py_interpreter.sh b/src/Specific/solinas64_2e174m3_3limbs/py_interpreter.sh
index 14104f66b..14104f66b 100755
--- a/src/Specific/solinas64_2e174m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e174m3_3limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e174m3_4limbs/CurveParameters.v b/src/Specific/solinas64_2e174m3_4limbs/CurveParameters.v
new file mode 100644
index 000000000..b35461a1c
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^174 - 3
+Base: 43.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 43 + 1/2;
+ bitwidth := 64;
+ s := 2^174;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/Synthesis.v b/src/Specific/solinas64_2e174m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..0c110733d
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/compiler.sh b/src/Specific/solinas64_2e174m3_4limbs/compiler.sh
new file mode 100755
index 000000000..a404f2aa0
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas64_2e174m3_4limbs/compilerxx.sh b/src/Specific/solinas64_2e174m3_4limbs/compilerxx.sh
new file mode 100755
index 000000000..749c60c93
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,44,43}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='22' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<174) - 3' "$@"
diff --git a/src/Specific/solinas64_2e174m3_4limbs/feadd.v b/src/Specific/solinas64_2e174m3_4limbs/feadd.v
new file mode 100644
index 000000000..a33ac868d
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e174m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..7380232a0
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/femul.v b/src/Specific/solinas64_2e174m3_4limbs/femul.v
new file mode 100644
index 000000000..3d12ef4fb
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/femulDisplay.v b/src/Specific/solinas64_2e174m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..463cdd1e5
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesquare.v b/src/Specific/solinas64_2e174m3_4limbs/fesquare.v
new file mode 100644
index 000000000..499882fc2
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e174m3_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..aa2711cdd
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesub.v b/src/Specific/solinas64_2e174m3_4limbs/fesub.v
new file mode 100644
index 000000000..50612bee4
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7147b5f1d
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/freeze.v b/src/Specific/solinas64_2e174m3_4limbs/freeze.v
new file mode 100644
index 000000000..12487c4cd
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e174m3_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..eef266536
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e174m3_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e174m3_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e174m3_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..bb6ea8adb
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**174 - 3' -Dmodulus_bytes='43.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e189m25/Synthesis.v b/src/Specific/solinas64_2e189m25/Synthesis.v
deleted file mode 100644
index c8b5fd91f..000000000
--- a/src/Specific/solinas64_2e189m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e189m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e189m25/feadd.c b/src/Specific/solinas64_2e189m25/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e189m25/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e189m25/feadd.v b/src/Specific/solinas64_2e189m25/feadd.v
deleted file mode 100644
index 97f73aa9b..000000000
--- a/src/Specific/solinas64_2e189m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e189m25/feaddDisplay.log b/src/Specific/solinas64_2e189m25/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e189m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/feaddDisplay.v b/src/Specific/solinas64_2e189m25/feaddDisplay.v
deleted file mode 100644
index bdf9b9b93..000000000
--- a/src/Specific/solinas64_2e189m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e189m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e189m25/femul.c b/src/Specific/solinas64_2e189m25/femul.c
deleted file mode 100644
index a7e14d4be..000000000
--- a/src/Specific/solinas64_2e189m25/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x19 * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x19 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x19 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x30);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x2f);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x2f);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffff);
- { uint64_t x31 = (x21 + (0x19 * x29));
- { uint64_t x32 = (x31 >> 0x30);
- { uint64_t x33 = (x31 & 0xffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x2f);
- { uint64_t x36 = (x34 & 0x7fffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e189m25/femul.v b/src/Specific/solinas64_2e189m25/femul.v
deleted file mode 100644
index 0a396fedb..000000000
--- a/src/Specific/solinas64_2e189m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e189m25/femulDisplay.log b/src/Specific/solinas64_2e189m25/femulDisplay.log
deleted file mode 100644
index 34b69f899..000000000
--- a/src/Specific/solinas64_2e189m25/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x19 * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x19 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x19 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x30);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x2f);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x2f);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffff);
- uint64_t x31 = (x21 + (0x19 * x29));
- uint64_t x32 = (x31 >> 0x30);
- uint64_t x33 = (x31 & 0xffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x2f);
- uint64_t x36 = (x34 & 0x7fffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/femulDisplay.v b/src/Specific/solinas64_2e189m25/femulDisplay.v
deleted file mode 100644
index a00e9f296..000000000
--- a/src/Specific/solinas64_2e189m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e189m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e189m25/fesquare.c b/src/Specific/solinas64_2e189m25/fesquare.c
deleted file mode 100644
index 15fd75f8c..000000000
--- a/src/Specific/solinas64_2e189m25/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x19 * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x19 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x30);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x2f);
- { uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- { uint64_t x22 = (x12 + (0x19 * x20));
- { uint64_t x23 = (x22 >> 0x30);
- { uint64_t x24 = (x22 & 0xffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x2f);
- { uint64_t x27 = (x25 & 0x7fffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e189m25/fesquare.v b/src/Specific/solinas64_2e189m25/fesquare.v
deleted file mode 100644
index d68b1a9bd..000000000
--- a/src/Specific/solinas64_2e189m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e189m25/fesquareDisplay.log b/src/Specific/solinas64_2e189m25/fesquareDisplay.log
deleted file mode 100644
index bda32cda6..000000000
--- a/src/Specific/solinas64_2e189m25/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x19 * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x19 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x30);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x2f);
- uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- uint64_t x22 = (x12 + (0x19 * x20));
- uint64_t x23 = (x22 >> 0x30);
- uint64_t x24 = (x22 & 0xffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x2f);
- uint64_t x27 = (x25 & 0x7fffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/fesquareDisplay.v b/src/Specific/solinas64_2e189m25/fesquareDisplay.v
deleted file mode 100644
index 118157107..000000000
--- a/src/Specific/solinas64_2e189m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e189m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e189m25/fesub.c b/src/Specific/solinas64_2e189m25/fesub.c
deleted file mode 100644
index 3e5bf08f3..000000000
--- a/src/Specific/solinas64_2e189m25/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffffce + x5) - x11);
- out[1] = ((0xfffffffffffe + x7) - x13);
- out[2] = ((0xfffffffffffe + x9) - x15);
- out[3] = ((0xfffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e189m25/fesub.v b/src/Specific/solinas64_2e189m25/fesub.v
deleted file mode 100644
index 47046c6ec..000000000
--- a/src/Specific/solinas64_2e189m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e189m25/fesubDisplay.log b/src/Specific/solinas64_2e189m25/fesubDisplay.log
deleted file mode 100644
index f67ee56fe..000000000
--- a/src/Specific/solinas64_2e189m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffffe + x8) - x14), ((0xfffffffffffe + x9) - x15), ((0xfffffffffffe + x7) - x13), ((0x1ffffffffffce + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/fesubDisplay.v b/src/Specific/solinas64_2e189m25/fesubDisplay.v
deleted file mode 100644
index 49165a468..000000000
--- a/src/Specific/solinas64_2e189m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e189m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e189m25/freeze.c b/src/Specific/solinas64_2e189m25/freeze.c
deleted file mode 100644
index 45ab54c8d..000000000
--- a/src/Specific/solinas64_2e189m25/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffe7);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7fffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffe7);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7fffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x7fffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7fffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e189m25/freeze.v b/src/Specific/solinas64_2e189m25/freeze.v
deleted file mode 100644
index 2e34dba5e..000000000
--- a/src/Specific/solinas64_2e189m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e189m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e189m25/freezeDisplay.log b/src/Specific/solinas64_2e189m25/freezeDisplay.log
deleted file mode 100644
index 459e8b8d2..000000000
--- a/src/Specific/solinas64_2e189m25/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffe7);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7fffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffe7);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7fffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x7fffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7fffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/freezeDisplay.v b/src/Specific/solinas64_2e189m25/freezeDisplay.v
deleted file mode 100644
index 3ee63b8c1..000000000
--- a/src/Specific/solinas64_2e189m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e189m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e189m25/CurveParameters.v b/src/Specific/solinas64_2e189m25_4limbs/CurveParameters.v
index a009d1f50..a009d1f50 100644
--- a/src/Specific/solinas64_2e189m25/CurveParameters.v
+++ b/src/Specific/solinas64_2e189m25_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e189m25_4limbs/Synthesis.v b/src/Specific/solinas64_2e189m25_4limbs/Synthesis.v
new file mode 100644
index 000000000..27d696903
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e189m25/compiler.sh b/src/Specific/solinas64_2e189m25_4limbs/compiler.sh
index f5fcd31d1..f5fcd31d1 100755
--- a/src/Specific/solinas64_2e189m25/compiler.sh
+++ b/src/Specific/solinas64_2e189m25_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e189m25/compilerxx.sh b/src/Specific/solinas64_2e189m25_4limbs/compilerxx.sh
index 4db11fe3c..4db11fe3c 100755
--- a/src/Specific/solinas64_2e189m25/compilerxx.sh
+++ b/src/Specific/solinas64_2e189m25_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e189m25_4limbs/feadd.v b/src/Specific/solinas64_2e189m25_4limbs/feadd.v
new file mode 100644
index 000000000..71d5d7027
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e189m25_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..61214ce4e
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/femul.v b/src/Specific/solinas64_2e189m25_4limbs/femul.v
new file mode 100644
index 000000000..680520e3b
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/femulDisplay.v b/src/Specific/solinas64_2e189m25_4limbs/femulDisplay.v
new file mode 100644
index 000000000..54d7d9a16
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/fesquare.v b/src/Specific/solinas64_2e189m25_4limbs/fesquare.v
new file mode 100644
index 000000000..3f9c93227
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e189m25_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..754a017fb
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/fesub.v b/src/Specific/solinas64_2e189m25_4limbs/fesub.v
new file mode 100644
index 000000000..e896ae756
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e189m25_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..1f898dd03
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/freeze.v b/src/Specific/solinas64_2e189m25_4limbs/freeze.v
new file mode 100644
index 000000000..3de96986a
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e189m25_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e189m25_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..3f3dcb217
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e189m25/py_interpreter.sh b/src/Specific/solinas64_2e189m25_4limbs/py_interpreter.sh
index 77b176a54..77b176a54 100755
--- a/src/Specific/solinas64_2e189m25/py_interpreter.sh
+++ b/src/Specific/solinas64_2e189m25_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e189m25_5limbs/CurveParameters.v b/src/Specific/solinas64_2e189m25_5limbs/CurveParameters.v
new file mode 100644
index 000000000..e15ca8a6a
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^189 - 25
+Base: 37.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 37 + 4/5;
+ bitwidth := 64;
+ s := 2^189;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/Synthesis.v b/src/Specific/solinas64_2e189m25_5limbs/Synthesis.v
new file mode 100644
index 000000000..ff3bd638f
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/compiler.sh b/src/Specific/solinas64_2e189m25_5limbs/compiler.sh
new file mode 100755
index 000000000..5fbb77188
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,37}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<189) - 25' "$@"
diff --git a/src/Specific/solinas64_2e189m25_5limbs/compilerxx.sh b/src/Specific/solinas64_2e189m25_5limbs/compilerxx.sh
new file mode 100755
index 000000000..0cb42db5e
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,37}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<189) - 25' "$@"
diff --git a/src/Specific/solinas64_2e189m25_5limbs/feadd.v b/src/Specific/solinas64_2e189m25_5limbs/feadd.v
new file mode 100644
index 000000000..52c643e32
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e189m25_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..e70553b7d
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/femul.v b/src/Specific/solinas64_2e189m25_5limbs/femul.v
new file mode 100644
index 000000000..a7e6792b0
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/femulDisplay.v b/src/Specific/solinas64_2e189m25_5limbs/femulDisplay.v
new file mode 100644
index 000000000..2f61965d4
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesquare.v b/src/Specific/solinas64_2e189m25_5limbs/fesquare.v
new file mode 100644
index 000000000..36b916d1d
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e189m25_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d9773598d
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesub.v b/src/Specific/solinas64_2e189m25_5limbs/fesub.v
new file mode 100644
index 000000000..c03264279
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..76beb23ce
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/freeze.v b/src/Specific/solinas64_2e189m25_5limbs/freeze.v
new file mode 100644
index 000000000..1e374eacb
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..a3d885bbc
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e189m25_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e189m25_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e189m25_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..6e1df8f40
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**189 - 25' -Dmodulus_bytes='37.8' -Da24='121665'
diff --git a/src/Specific/solinas64_2e190m11/Synthesis.v b/src/Specific/solinas64_2e190m11/Synthesis.v
deleted file mode 100644
index ce9a154d4..000000000
--- a/src/Specific/solinas64_2e190m11/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e190m11.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e190m11/feadd.c b/src/Specific/solinas64_2e190m11/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e190m11/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e190m11/feadd.v b/src/Specific/solinas64_2e190m11/feadd.v
deleted file mode 100644
index d7ff55af5..000000000
--- a/src/Specific/solinas64_2e190m11/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e190m11/feaddDisplay.log b/src/Specific/solinas64_2e190m11/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e190m11/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/feaddDisplay.v b/src/Specific/solinas64_2e190m11/feaddDisplay.v
deleted file mode 100644
index 71c3dc645..000000000
--- a/src/Specific/solinas64_2e190m11/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e190m11.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e190m11/femul.c b/src/Specific/solinas64_2e190m11/femul.c
deleted file mode 100644
index 280a7eb48..000000000
--- a/src/Specific/solinas64_2e190m11/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xb * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xb * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0xb * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x30);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x30);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x2f);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffff);
- { uint64_t x31 = (x21 + (0xb * x29));
- { uint64_t x32 = (x31 >> 0x30);
- { uint64_t x33 = (x31 & 0xffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x2f);
- { uint64_t x36 = (x34 & 0x7fffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e190m11/femul.v b/src/Specific/solinas64_2e190m11/femul.v
deleted file mode 100644
index 6954da082..000000000
--- a/src/Specific/solinas64_2e190m11/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e190m11/femulDisplay.log b/src/Specific/solinas64_2e190m11/femulDisplay.log
deleted file mode 100644
index 3ed92c4a1..000000000
--- a/src/Specific/solinas64_2e190m11/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0xb * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xb * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0xb * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x30);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x30);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x2f);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffff);
- uint64_t x31 = (x21 + (0xb * x29));
- uint64_t x32 = (x31 >> 0x30);
- uint64_t x33 = (x31 & 0xffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x2f);
- uint64_t x36 = (x34 & 0x7fffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/femulDisplay.v b/src/Specific/solinas64_2e190m11/femulDisplay.v
deleted file mode 100644
index e5ae3858b..000000000
--- a/src/Specific/solinas64_2e190m11/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e190m11.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e190m11/fesquare.c b/src/Specific/solinas64_2e190m11/fesquare.c
deleted file mode 100644
index b06d07e9d..000000000
--- a/src/Specific/solinas64_2e190m11/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xb * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xb * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0xb * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x30);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x30);
- { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- { uint64_t x22 = (x12 + (0xb * x20));
- { uint64_t x23 = (x22 >> 0x30);
- { uint64_t x24 = (x22 & 0xffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x2f);
- { uint64_t x27 = (x25 & 0x7fffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e190m11/fesquare.v b/src/Specific/solinas64_2e190m11/fesquare.v
deleted file mode 100644
index 622f00e94..000000000
--- a/src/Specific/solinas64_2e190m11/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e190m11/fesquareDisplay.log b/src/Specific/solinas64_2e190m11/fesquareDisplay.log
deleted file mode 100644
index b30c6e136..000000000
--- a/src/Specific/solinas64_2e190m11/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xb * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xb * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0xb * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x30);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x30);
- uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- uint64_t x22 = (x12 + (0xb * x20));
- uint64_t x23 = (x22 >> 0x30);
- uint64_t x24 = (x22 & 0xffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x2f);
- uint64_t x27 = (x25 & 0x7fffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/fesquareDisplay.v b/src/Specific/solinas64_2e190m11/fesquareDisplay.v
deleted file mode 100644
index 20cc004d6..000000000
--- a/src/Specific/solinas64_2e190m11/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e190m11.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e190m11/fesub.c b/src/Specific/solinas64_2e190m11/fesub.c
deleted file mode 100644
index e75f3c5d7..000000000
--- a/src/Specific/solinas64_2e190m11/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffffea + x5) - x11);
- out[1] = ((0xfffffffffffe + x7) - x13);
- out[2] = ((0x1fffffffffffe + x9) - x15);
- out[3] = ((0xfffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e190m11/fesub.v b/src/Specific/solinas64_2e190m11/fesub.v
deleted file mode 100644
index b9059ffef..000000000
--- a/src/Specific/solinas64_2e190m11/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e190m11/fesubDisplay.log b/src/Specific/solinas64_2e190m11/fesubDisplay.log
deleted file mode 100644
index 05c4a769d..000000000
--- a/src/Specific/solinas64_2e190m11/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0xfffffffffffe + x7) - x13), ((0x1ffffffffffea + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/fesubDisplay.v b/src/Specific/solinas64_2e190m11/fesubDisplay.v
deleted file mode 100644
index 6d065e0ef..000000000
--- a/src/Specific/solinas64_2e190m11/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e190m11.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e190m11/freeze.c b/src/Specific/solinas64_2e190m11/freeze.c
deleted file mode 100644
index 7a7c45793..000000000
--- a/src/Specific/solinas64_2e190m11/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff5);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffff5);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7fffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0xffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7fffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e190m11/freeze.v b/src/Specific/solinas64_2e190m11/freeze.v
deleted file mode 100644
index bbc3c6459..000000000
--- a/src/Specific/solinas64_2e190m11/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e190m11.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e190m11/freezeDisplay.log b/src/Specific/solinas64_2e190m11/freezeDisplay.log
deleted file mode 100644
index d0480da0c..000000000
--- a/src/Specific/solinas64_2e190m11/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff5);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffff5);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7fffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0xffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7fffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/freezeDisplay.v b/src/Specific/solinas64_2e190m11/freezeDisplay.v
deleted file mode 100644
index e12e31057..000000000
--- a/src/Specific/solinas64_2e190m11/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e190m11.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e190m11/CurveParameters.v b/src/Specific/solinas64_2e190m11_4limbs/CurveParameters.v
index 75a2918dd..75a2918dd 100644
--- a/src/Specific/solinas64_2e190m11/CurveParameters.v
+++ b/src/Specific/solinas64_2e190m11_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e190m11_4limbs/Synthesis.v b/src/Specific/solinas64_2e190m11_4limbs/Synthesis.v
new file mode 100644
index 000000000..a81beda45
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e190m11/compiler.sh b/src/Specific/solinas64_2e190m11_4limbs/compiler.sh
index 3a88ef87d..3a88ef87d 100755
--- a/src/Specific/solinas64_2e190m11/compiler.sh
+++ b/src/Specific/solinas64_2e190m11_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e190m11/compilerxx.sh b/src/Specific/solinas64_2e190m11_4limbs/compilerxx.sh
index 1809506eb..1809506eb 100755
--- a/src/Specific/solinas64_2e190m11/compilerxx.sh
+++ b/src/Specific/solinas64_2e190m11_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e190m11_4limbs/feadd.v b/src/Specific/solinas64_2e190m11_4limbs/feadd.v
new file mode 100644
index 000000000..8442d7063
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e190m11_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..6bd7b21c1
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/femul.v b/src/Specific/solinas64_2e190m11_4limbs/femul.v
new file mode 100644
index 000000000..008cab5bc
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/femulDisplay.v b/src/Specific/solinas64_2e190m11_4limbs/femulDisplay.v
new file mode 100644
index 000000000..1c2e767b5
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/fesquare.v b/src/Specific/solinas64_2e190m11_4limbs/fesquare.v
new file mode 100644
index 000000000..a00ea4dc4
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e190m11_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5d9637336
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/fesub.v b/src/Specific/solinas64_2e190m11_4limbs/fesub.v
new file mode 100644
index 000000000..585f9a57e
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e190m11_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..53c22f723
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/freeze.v b/src/Specific/solinas64_2e190m11_4limbs/freeze.v
new file mode 100644
index 000000000..2e9c6aea8
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e190m11_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e190m11_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..0c92458c4
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e190m11/py_interpreter.sh b/src/Specific/solinas64_2e190m11_4limbs/py_interpreter.sh
index 7d9af983a..7d9af983a 100755
--- a/src/Specific/solinas64_2e190m11/py_interpreter.sh
+++ b/src/Specific/solinas64_2e190m11_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e190m11_5limbs/CurveParameters.v b/src/Specific/solinas64_2e190m11_5limbs/CurveParameters.v
new file mode 100644
index 000000000..baf8c752f
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^190 - 11
+Base: 38
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 38;
+ bitwidth := 64;
+ s := 2^190;
+ c := [(1, 11)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/Synthesis.v b/src/Specific/solinas64_2e190m11_5limbs/Synthesis.v
new file mode 100644
index 000000000..3628c5a58
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/compiler.sh b/src/Specific/solinas64_2e190m11_5limbs/compiler.sh
new file mode 100755
index 000000000..dda21824b
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<190) - 11' "$@"
diff --git a/src/Specific/solinas64_2e190m11_5limbs/compilerxx.sh b/src/Specific/solinas64_2e190m11_5limbs/compilerxx.sh
new file mode 100755
index 000000000..3cc674918
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<190) - 11' "$@"
diff --git a/src/Specific/solinas64_2e190m11_5limbs/feadd.v b/src/Specific/solinas64_2e190m11_5limbs/feadd.v
new file mode 100644
index 000000000..3e63275b3
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e190m11_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..aad337e14
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/femul.v b/src/Specific/solinas64_2e190m11_5limbs/femul.v
new file mode 100644
index 000000000..f2d57058e
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/femulDisplay.v b/src/Specific/solinas64_2e190m11_5limbs/femulDisplay.v
new file mode 100644
index 000000000..9ca742bef
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesquare.v b/src/Specific/solinas64_2e190m11_5limbs/fesquare.v
new file mode 100644
index 000000000..7f38953ea
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e190m11_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ec927fdd6
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesub.v b/src/Specific/solinas64_2e190m11_5limbs/fesub.v
new file mode 100644
index 000000000..d857970bb
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..bbdb0821b
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/freeze.v b/src/Specific/solinas64_2e190m11_5limbs/freeze.v
new file mode 100644
index 000000000..5e8682472
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e190m11_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..4b9876f5d
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e190m11_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e190m11_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e190m11_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..ce71dfc0a
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**190 - 11' -Dmodulus_bytes='38' -Da24='121665'
diff --git a/src/Specific/solinas64_2e191m19/Synthesis.v b/src/Specific/solinas64_2e191m19/Synthesis.v
deleted file mode 100644
index 2bd22832a..000000000
--- a/src/Specific/solinas64_2e191m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e191m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e191m19/feadd.c b/src/Specific/solinas64_2e191m19/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e191m19/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e191m19/feadd.v b/src/Specific/solinas64_2e191m19/feadd.v
deleted file mode 100644
index 40e98ae58..000000000
--- a/src/Specific/solinas64_2e191m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e191m19/feaddDisplay.log b/src/Specific/solinas64_2e191m19/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e191m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/feaddDisplay.v b/src/Specific/solinas64_2e191m19/feaddDisplay.v
deleted file mode 100644
index 9b5f70753..000000000
--- a/src/Specific/solinas64_2e191m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e191m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e191m19/femul.c b/src/Specific/solinas64_2e191m19/femul.c
deleted file mode 100644
index ef49510ba..000000000
--- a/src/Specific/solinas64_2e191m19/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- { uint64_t x25 = (uint64_t) (x24 >> 0x27);
- { uint64_t x26 = ((uint64_t)x24 & 0x7fffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x26);
- { uint64_t x29 = ((uint64_t)x27 & 0x3fffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x26);
- { uint64_t x32 = ((uint64_t)x30 & 0x3fffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x26);
- { uint64_t x35 = ((uint64_t)x33 & 0x3fffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x26);
- { uint64_t x38 = ((uint64_t)x36 & 0x3fffffffff);
- { uint64_t x39 = (x26 + (0x13 * x37));
- { uint64_t x40 = (x39 >> 0x27);
- { uint64_t x41 = (x39 & 0x7fffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x26);
- { uint64_t x44 = (x42 & 0x3fffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e191m19/femul.v b/src/Specific/solinas64_2e191m19/femul.v
deleted file mode 100644
index 1b59946a8..000000000
--- a/src/Specific/solinas64_2e191m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e191m19/femulDisplay.log b/src/Specific/solinas64_2e191m19/femulDisplay.log
deleted file mode 100644
index 6d8240546..000000000
--- a/src/Specific/solinas64_2e191m19/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- uint64_t x25 = (uint64_t) (x24 >> 0x27);
- uint64_t x26 = ((uint64_t)x24 & 0x7fffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x26);
- uint64_t x29 = ((uint64_t)x27 & 0x3fffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x26);
- uint64_t x32 = ((uint64_t)x30 & 0x3fffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x26);
- uint64_t x35 = ((uint64_t)x33 & 0x3fffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x26);
- uint64_t x38 = ((uint64_t)x36 & 0x3fffffffff);
- uint64_t x39 = (x26 + (0x13 * x37));
- uint64_t x40 = (x39 >> 0x27);
- uint64_t x41 = (x39 & 0x7fffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x26);
- uint64_t x44 = (x42 & 0x3fffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/femulDisplay.v b/src/Specific/solinas64_2e191m19/femulDisplay.v
deleted file mode 100644
index 27384537c..000000000
--- a/src/Specific/solinas64_2e191m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e191m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e191m19/fesquare.c b/src/Specific/solinas64_2e191m19/fesquare.c
deleted file mode 100644
index 2f53470de..000000000
--- a/src/Specific/solinas64_2e191m19/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- { uint64_t x14 = (uint64_t) (x13 >> 0x27);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x26);
- { uint64_t x18 = ((uint64_t)x16 & 0x3fffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x26);
- { uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x26);
- { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x26);
- { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffff);
- { uint64_t x28 = (x15 + (0x13 * x26));
- { uint64_t x29 = (x28 >> 0x27);
- { uint64_t x30 = (x28 & 0x7fffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x26);
- { uint64_t x33 = (x31 & 0x3fffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e191m19/fesquare.v b/src/Specific/solinas64_2e191m19/fesquare.v
deleted file mode 100644
index 69e2a0082..000000000
--- a/src/Specific/solinas64_2e191m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e191m19/fesquareDisplay.log b/src/Specific/solinas64_2e191m19/fesquareDisplay.log
deleted file mode 100644
index e1ed33530..000000000
--- a/src/Specific/solinas64_2e191m19/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- uint64_t x14 = (uint64_t) (x13 >> 0x27);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x26);
- uint64_t x18 = ((uint64_t)x16 & 0x3fffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x26);
- uint64_t x21 = ((uint64_t)x19 & 0x3fffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x26);
- uint64_t x24 = ((uint64_t)x22 & 0x3fffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x26);
- uint64_t x27 = ((uint64_t)x25 & 0x3fffffffff);
- uint64_t x28 = (x15 + (0x13 * x26));
- uint64_t x29 = (x28 >> 0x27);
- uint64_t x30 = (x28 & 0x7fffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x26);
- uint64_t x33 = (x31 & 0x3fffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/fesquareDisplay.v b/src/Specific/solinas64_2e191m19/fesquareDisplay.v
deleted file mode 100644
index b96a3ef5a..000000000
--- a/src/Specific/solinas64_2e191m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e191m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e191m19/fesub.c b/src/Specific/solinas64_2e191m19/fesub.c
deleted file mode 100644
index 87b0206aa..000000000
--- a/src/Specific/solinas64_2e191m19/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xffffffffda + x5) - x13);
- out[1] = ((0x7ffffffffe + x7) - x15);
- out[2] = ((0x7ffffffffe + x9) - x17);
- out[3] = ((0x7ffffffffe + x11) - x19);
- out[4] = ((0x7ffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e191m19/fesub.v b/src/Specific/solinas64_2e191m19/fesub.v
deleted file mode 100644
index 17a957f2b..000000000
--- a/src/Specific/solinas64_2e191m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e191m19/fesubDisplay.log b/src/Specific/solinas64_2e191m19/fesubDisplay.log
deleted file mode 100644
index 5aac62de5..000000000
--- a/src/Specific/solinas64_2e191m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((0xffffffffda + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/fesubDisplay.v b/src/Specific/solinas64_2e191m19/fesubDisplay.v
deleted file mode 100644
index 4b66692d6..000000000
--- a/src/Specific/solinas64_2e191m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e191m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e191m19/freeze.c b/src/Specific/solinas64_2e191m19/freeze.c
deleted file mode 100644
index ab0600622..000000000
--- a/src/Specific/solinas64_2e191m19/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffed);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7fffffffed);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x3fffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x3fffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x3fffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x3fffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e191m19/freeze.v b/src/Specific/solinas64_2e191m19/freeze.v
deleted file mode 100644
index 65d975369..000000000
--- a/src/Specific/solinas64_2e191m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e191m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e191m19/freezeDisplay.log b/src/Specific/solinas64_2e191m19/freezeDisplay.log
deleted file mode 100644
index 1a2e9f3b1..000000000
--- a/src/Specific/solinas64_2e191m19/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffed);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7fffffffed);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x3fffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x3fffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x3fffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x3fffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/freezeDisplay.v b/src/Specific/solinas64_2e191m19/freezeDisplay.v
deleted file mode 100644
index 001af740c..000000000
--- a/src/Specific/solinas64_2e191m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e191m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/CurveParameters.v b/src/Specific/solinas64_2e191m19_4limbs/CurveParameters.v
new file mode 100644
index 000000000..05a177025
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^191 - 19
+Base: 47.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 47 + 3/4;
+ bitwidth := 64;
+ s := 2^191;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/Synthesis.v b/src/Specific/solinas64_2e191m19_4limbs/Synthesis.v
new file mode 100644
index 000000000..c80d695c6
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/compiler.sh b/src/Specific/solinas64_2e191m19_4limbs/compiler.sh
new file mode 100755
index 000000000..1c3dccbef
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas64_2e191m19_4limbs/compilerxx.sh b/src/Specific/solinas64_2e191m19_4limbs/compilerxx.sh
new file mode 100755
index 000000000..c640a65eb
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<191) - 19' "$@"
diff --git a/src/Specific/solinas64_2e191m19_4limbs/feadd.v b/src/Specific/solinas64_2e191m19_4limbs/feadd.v
new file mode 100644
index 000000000..a2815d005
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e191m19_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..55241a049
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/femul.v b/src/Specific/solinas64_2e191m19_4limbs/femul.v
new file mode 100644
index 000000000..50deba856
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/femulDisplay.v b/src/Specific/solinas64_2e191m19_4limbs/femulDisplay.v
new file mode 100644
index 000000000..2fd4a46eb
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesquare.v b/src/Specific/solinas64_2e191m19_4limbs/fesquare.v
new file mode 100644
index 000000000..780a90b52
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e191m19_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7deac0be8
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesub.v b/src/Specific/solinas64_2e191m19_4limbs/fesub.v
new file mode 100644
index 000000000..9ec9cab47
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..f67604a94
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/freeze.v b/src/Specific/solinas64_2e191m19_4limbs/freeze.v
new file mode 100644
index 000000000..638c0d9ce
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..942e64115
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e191m19_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e191m19_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..6a82e8c86
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**191 - 19' -Dmodulus_bytes='47.75' -Da24='121665'
diff --git a/src/Specific/solinas64_2e191m19/CurveParameters.v b/src/Specific/solinas64_2e191m19_5limbs/CurveParameters.v
index 514a5a09c..514a5a09c 100644
--- a/src/Specific/solinas64_2e191m19/CurveParameters.v
+++ b/src/Specific/solinas64_2e191m19_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e191m19_5limbs/Synthesis.v b/src/Specific/solinas64_2e191m19_5limbs/Synthesis.v
new file mode 100644
index 000000000..2bdf8d80a
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e191m19/compiler.sh b/src/Specific/solinas64_2e191m19_5limbs/compiler.sh
index d00ddb8f2..d00ddb8f2 100755
--- a/src/Specific/solinas64_2e191m19/compiler.sh
+++ b/src/Specific/solinas64_2e191m19_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e191m19/compilerxx.sh b/src/Specific/solinas64_2e191m19_5limbs/compilerxx.sh
index f8a10fba1..f8a10fba1 100755
--- a/src/Specific/solinas64_2e191m19/compilerxx.sh
+++ b/src/Specific/solinas64_2e191m19_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e191m19_5limbs/feadd.v b/src/Specific/solinas64_2e191m19_5limbs/feadd.v
new file mode 100644
index 000000000..e69e2682e
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e191m19_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..c0f27f2bb
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/femul.v b/src/Specific/solinas64_2e191m19_5limbs/femul.v
new file mode 100644
index 000000000..0b790ac9d
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/femulDisplay.v b/src/Specific/solinas64_2e191m19_5limbs/femulDisplay.v
new file mode 100644
index 000000000..4bf06bac2
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/fesquare.v b/src/Specific/solinas64_2e191m19_5limbs/fesquare.v
new file mode 100644
index 000000000..0d7f4820c
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e191m19_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ed02b462e
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/fesub.v b/src/Specific/solinas64_2e191m19_5limbs/fesub.v
new file mode 100644
index 000000000..4d368b0c9
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e191m19_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..e40373430
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/freeze.v b/src/Specific/solinas64_2e191m19_5limbs/freeze.v
new file mode 100644
index 000000000..0547a282c
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e191m19_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e191m19_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..b4141d699
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e191m19_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e191m19/py_interpreter.sh b/src/Specific/solinas64_2e191m19_5limbs/py_interpreter.sh
index db0354298..db0354298 100755
--- a/src/Specific/solinas64_2e191m19/py_interpreter.sh
+++ b/src/Specific/solinas64_2e191m19_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e192m2e64m1/Synthesis.v b/src/Specific/solinas64_2e192m2e64m1/Synthesis.v
deleted file mode 100644
index 173dd36e5..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e192m2e64m1/feadd.c b/src/Specific/solinas64_2e192m2e64m1/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e192m2e64m1/feadd.v b/src/Specific/solinas64_2e192m2e64m1/feadd.v
deleted file mode 100644
index 33618daf2..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log b/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.v b/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.v
deleted file mode 100644
index b5b98d3a3..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e192m2e64m1/femul.c b/src/Specific/solinas64_2e192m2e64m1/femul.c
deleted file mode 100644
index cb6363ab6..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/femul.c
+++ /dev/null
@@ -1,47 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = ((((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11)))) + (0x10000 * ((uint128_t)x8 * x14)));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (((uint128_t)x8 * x14) + (0x10000 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + ((((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)) + (0x10000 * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13))))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x30);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- { uint128_t x22 = (x16 >> 0x30);
- { uint64_t x23 = ((uint64_t)x16 & 0xffffffffffff);
- { uint128_t x24 = ((0x1000000000000 * x22) + x23);
- { uint128_t x25 = (x24 >> 0x30);
- { uint64_t x26 = ((uint64_t)x24 & 0xffffffffffff);
- { uint128_t x27 = ((x20 + x18) + (0x10000 * x25));
- { uint128_t x28 = (x27 >> 0x30);
- { uint64_t x29 = ((uint64_t)x27 & 0xffffffffffff);
- { uint128_t x30 = (x21 + x25);
- { uint64_t x31 = (uint64_t) (x30 >> 0x30);
- { uint64_t x32 = ((uint64_t)x30 & 0xffffffffffff);
- { uint128_t x33 = (x28 + x17);
- { uint128_t x34 = (x33 >> 0x30);
- { uint64_t x35 = ((uint64_t)x33 & 0xffffffffffff);
- { uint128_t x36 = (x34 + x26);
- { uint64_t x37 = (uint64_t) (x36 >> 0x30);
- { uint64_t x38 = ((uint64_t)x36 & 0xffffffffffff);
- { uint128_t x39 = (((uint128_t)0x1000000000000 * x37) + x38);
- { uint64_t x40 = (uint64_t) (x39 >> 0x30);
- { uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
- { uint64_t x42 = ((x31 + x29) + (0x10000 * x40));
- { uint64_t x43 = (x42 >> 0x30);
- { uint64_t x44 = (x42 & 0xffffffffffff);
- { uint64_t x45 = (x32 + x40);
- { uint64_t x46 = (x45 >> 0x30);
- { uint64_t x47 = (x45 & 0xffffffffffff);
- out[0] = x47;
- out[1] = (x46 + x44);
- out[2] = (x43 + x35);
- out[3] = x41;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e192m2e64m1/femul.v b/src/Specific/solinas64_2e192m2e64m1/femul.v
deleted file mode 100644
index de64f3d23..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1/femulDisplay.log b/src/Specific/solinas64_2e192m2e64m1/femulDisplay.log
deleted file mode 100644
index 009614164..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/femulDisplay.log
+++ /dev/null
@@ -1,39 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = ((((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11)))) + (0x10000 * ((uint128_t)x8 * x14)));
- uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (((uint128_t)x8 * x14) + (0x10000 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + ((((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)) + (0x10000 * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13))))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13))));
- uint64_t x20 = (uint64_t) (x19 >> 0x30);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- uint128_t x22 = (x16 >> 0x30);
- uint64_t x23 = ((uint64_t)x16 & 0xffffffffffff);
- uint128_t x24 = ((0x1000000000000 * x22) + x23);
- uint128_t x25 = (x24 >> 0x30);
- uint64_t x26 = ((uint64_t)x24 & 0xffffffffffff);
- uint128_t x27 = ((x20 + x18) + (0x10000 * x25));
- uint128_t x28 = (x27 >> 0x30);
- uint64_t x29 = ((uint64_t)x27 & 0xffffffffffff);
- uint128_t x30 = (x21 + x25);
- uint64_t x31 = (uint64_t) (x30 >> 0x30);
- uint64_t x32 = ((uint64_t)x30 & 0xffffffffffff);
- uint128_t x33 = (x28 + x17);
- uint128_t x34 = (x33 >> 0x30);
- uint64_t x35 = ((uint64_t)x33 & 0xffffffffffff);
- uint128_t x36 = (x34 + x26);
- uint64_t x37 = (uint64_t) (x36 >> 0x30);
- uint64_t x38 = ((uint64_t)x36 & 0xffffffffffff);
- uint128_t x39 = (((uint128_t)0x1000000000000 * x37) + x38);
- uint64_t x40 = (uint64_t) (x39 >> 0x30);
- uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
- uint64_t x42 = ((x31 + x29) + (0x10000 * x40));
- uint64_t x43 = (x42 >> 0x30);
- uint64_t x44 = (x42 & 0xffffffffffff);
- uint64_t x45 = (x32 + x40);
- uint64_t x46 = (x45 >> 0x30);
- uint64_t x47 = (x45 & 0xffffffffffff);
- return (Return x41, (x43 + x35), (x46 + x44), Return x47))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v b/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v
deleted file mode 100644
index edc129565..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquare.c b/src/Specific/solinas64_2e192m2e64m1/fesquare.c
deleted file mode 100644
index 5988be53a..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesquare.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = ((((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2)))) + (0x10000 * ((uint128_t)x5 * x5)));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x5 * x5) + (0x10000 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)) + (0x10000 * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4))))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x30);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- { uint128_t x13 = (x7 >> 0x30);
- { uint64_t x14 = ((uint64_t)x7 & 0xffffffffffff);
- { uint128_t x15 = ((0x1000000000000 * x13) + x14);
- { uint128_t x16 = (x15 >> 0x30);
- { uint64_t x17 = ((uint64_t)x15 & 0xffffffffffff);
- { uint128_t x18 = ((x11 + x9) + (0x10000 * x16));
- { uint128_t x19 = (x18 >> 0x30);
- { uint64_t x20 = ((uint64_t)x18 & 0xffffffffffff);
- { uint128_t x21 = (x12 + x16);
- { uint64_t x22 = (uint64_t) (x21 >> 0x30);
- { uint64_t x23 = ((uint64_t)x21 & 0xffffffffffff);
- { uint128_t x24 = (x19 + x8);
- { uint128_t x25 = (x24 >> 0x30);
- { uint64_t x26 = ((uint64_t)x24 & 0xffffffffffff);
- { uint128_t x27 = (x25 + x17);
- { uint64_t x28 = (uint64_t) (x27 >> 0x30);
- { uint64_t x29 = ((uint64_t)x27 & 0xffffffffffff);
- { uint128_t x30 = (((uint128_t)0x1000000000000 * x28) + x29);
- { uint64_t x31 = (uint64_t) (x30 >> 0x30);
- { uint64_t x32 = ((uint64_t)x30 & 0xffffffffffff);
- { uint64_t x33 = ((x22 + x20) + (0x10000 * x31));
- { uint64_t x34 = (x33 >> 0x30);
- { uint64_t x35 = (x33 & 0xffffffffffff);
- { uint64_t x36 = (x23 + x31);
- { uint64_t x37 = (x36 >> 0x30);
- { uint64_t x38 = (x36 & 0xffffffffffff);
- out[0] = x38;
- out[1] = (x37 + x35);
- out[2] = (x34 + x26);
- out[3] = x32;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquare.v b/src/Specific/solinas64_2e192m2e64m1/fesquare.v
deleted file mode 100644
index 95c5d2294..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.log b/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.log
deleted file mode 100644
index 3878dd9df..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.log
+++ /dev/null
@@ -1,39 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = ((((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2)))) + (0x10000 * ((uint128_t)x5 * x5)));
- uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x5 * x5) + (0x10000 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)) + (0x10000 * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4))))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4))));
- uint64_t x11 = (uint64_t) (x10 >> 0x30);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffffff);
- uint128_t x13 = (x7 >> 0x30);
- uint64_t x14 = ((uint64_t)x7 & 0xffffffffffff);
- uint128_t x15 = ((0x1000000000000 * x13) + x14);
- uint128_t x16 = (x15 >> 0x30);
- uint64_t x17 = ((uint64_t)x15 & 0xffffffffffff);
- uint128_t x18 = ((x11 + x9) + (0x10000 * x16));
- uint128_t x19 = (x18 >> 0x30);
- uint64_t x20 = ((uint64_t)x18 & 0xffffffffffff);
- uint128_t x21 = (x12 + x16);
- uint64_t x22 = (uint64_t) (x21 >> 0x30);
- uint64_t x23 = ((uint64_t)x21 & 0xffffffffffff);
- uint128_t x24 = (x19 + x8);
- uint128_t x25 = (x24 >> 0x30);
- uint64_t x26 = ((uint64_t)x24 & 0xffffffffffff);
- uint128_t x27 = (x25 + x17);
- uint64_t x28 = (uint64_t) (x27 >> 0x30);
- uint64_t x29 = ((uint64_t)x27 & 0xffffffffffff);
- uint128_t x30 = (((uint128_t)0x1000000000000 * x28) + x29);
- uint64_t x31 = (uint64_t) (x30 >> 0x30);
- uint64_t x32 = ((uint64_t)x30 & 0xffffffffffff);
- uint64_t x33 = ((x22 + x20) + (0x10000 * x31));
- uint64_t x34 = (x33 >> 0x30);
- uint64_t x35 = (x33 & 0xffffffffffff);
- uint64_t x36 = (x23 + x31);
- uint64_t x37 = (x36 >> 0x30);
- uint64_t x38 = (x36 & 0xffffffffffff);
- return (Return x32, (x34 + x26), (x37 + x35), Return x38))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v b/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v
deleted file mode 100644
index ab5627e83..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesub.c b/src/Specific/solinas64_2e192m2e64m1/fesub.c
deleted file mode 100644
index 1a50d25e3..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1fffffffffffe + x5) - x11);
- out[1] = ((0x1fffffffdfffe + x7) - x13);
- out[2] = ((0x1fffffffffffe + x9) - x15);
- out[3] = ((0x1fffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesub.v b/src/Specific/solinas64_2e192m2e64m1/fesub.v
deleted file mode 100644
index e3b8dd321..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log b/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log
deleted file mode 100644
index 2a60218c6..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x1fffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0x1fffffffdfffe + x7) - x13), ((0x1fffffffffffe + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.v b/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.v
deleted file mode 100644
index 485dab304..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1/freeze.c b/src/Specific/solinas64_2e192m2e64m1/freeze.c
deleted file mode 100644
index c1e4735bd..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xfffffffeffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0xfffffffeffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0xffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0xffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e192m2e64m1/freeze.v b/src/Specific/solinas64_2e192m2e64m1/freeze.v
deleted file mode 100644
index c9243702e..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.log b/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.log
deleted file mode 100644
index ea4bfd068..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xfffffffeffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0xfffffffeffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0xffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0xffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v b/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v
deleted file mode 100644
index 41a9caa45..000000000
--- a/src/Specific/solinas64_2e192m2e64m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e192m2e64m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1/CurveParameters.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/CurveParameters.v
index f44b5be97..f44b5be97 100644
--- a/src/Specific/solinas64_2e192m2e64m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/Synthesis.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..80961b02b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e192m2e64m1/compiler.sh b/src/Specific/solinas64_2e192m2e64m1_4limbs/compiler.sh
index c31d2be61..c31d2be61 100755
--- a/src/Specific/solinas64_2e192m2e64m1/compiler.sh
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e192m2e64m1/compilerxx.sh b/src/Specific/solinas64_2e192m2e64m1_4limbs/compilerxx.sh
index 25ad5cb15..25ad5cb15 100755
--- a/src/Specific/solinas64_2e192m2e64m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/feadd.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/feadd.v
new file mode 100644
index 000000000..a4d413ac4
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..35a2a0343
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/femul.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/femul.v
new file mode 100644
index 000000000..3582e660b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/femulDisplay.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..fd291717e
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquare.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquare.v
new file mode 100644
index 000000000..854710e4b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..caea20f08
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/fesub.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesub.v
new file mode 100644
index 000000000..6d7c11a0c
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7445b6976
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/freeze.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/freeze.v
new file mode 100644
index 000000000..409c072da
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e192m2e64m1_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..0d738c828
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1/py_interpreter.sh b/src/Specific/solinas64_2e192m2e64m1_4limbs/py_interpreter.sh
index 3607c7e1e..3607c7e1e 100755
--- a/src/Specific/solinas64_2e192m2e64m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e192m2e64m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/CurveParameters.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/CurveParameters.v
new file mode 100644
index 000000000..8cc8f324b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^192 - 2^64 - 1
+Base: 38.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 38 + 2/5;
+ bitwidth := 64;
+ s := 2^192;
+ c := [(1, 1); (2^64, 1)];
+ carry_chains := Some [[0; 4]; [1; 0; 2; 3; 4]; [1; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/Synthesis.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/Synthesis.v
new file mode 100644
index 000000000..f68fdf799
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/compiler.sh b/src/Specific/solinas64_2e192m2e64m1_5limbs/compiler.sh
new file mode 100755
index 000000000..2a0678d20
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/compilerxx.sh b/src/Specific/solinas64_2e192m2e64m1_5limbs/compilerxx.sh
new file mode 100755
index 000000000..d16008981
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='24' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<192) - (1_mpz<<64) - 1' "$@"
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/feadd.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/feadd.v
new file mode 100644
index 000000000..4fd392746
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..2d52065b7
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/femul.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/femul.v
new file mode 100644
index 000000000..49b7a08c5
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/femulDisplay.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/femulDisplay.v
new file mode 100644
index 000000000..a9ac50598
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquare.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquare.v
new file mode 100644
index 000000000..a4bcef1b2
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..73ae9819b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.v
new file mode 100644
index 000000000..8919ae69b
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..1a1f6a75e
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.v
new file mode 100644
index 000000000..b8a89f7df
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..15ed758e1
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e192m2e64m1_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e192m2e64m1_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..247cfa03f
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**192 - 2**64 - 1' -Dmodulus_bytes='38.4' -Da24='121665'
diff --git a/src/Specific/solinas64_2e194m33/Synthesis.v b/src/Specific/solinas64_2e194m33/Synthesis.v
deleted file mode 100644
index 5aa9ba293..000000000
--- a/src/Specific/solinas64_2e194m33/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e194m33.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e194m33/feadd.c b/src/Specific/solinas64_2e194m33/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e194m33/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e194m33/feadd.v b/src/Specific/solinas64_2e194m33/feadd.v
deleted file mode 100644
index c2f2b4722..000000000
--- a/src/Specific/solinas64_2e194m33/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e194m33/feaddDisplay.log b/src/Specific/solinas64_2e194m33/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e194m33/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/feaddDisplay.v b/src/Specific/solinas64_2e194m33/feaddDisplay.v
deleted file mode 100644
index 105692db5..000000000
--- a/src/Specific/solinas64_2e194m33/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e194m33.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e194m33/femul.c b/src/Specific/solinas64_2e194m33/femul.c
deleted file mode 100644
index c9dfe04d0..000000000
--- a/src/Specific/solinas64_2e194m33/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x21 * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x21 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x21 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x31);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x30);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x31);
- { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x30);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
- { uint64_t x31 = (x21 + (0x21 * x29));
- { uint64_t x32 = (x31 >> 0x31);
- { uint64_t x33 = (x31 & 0x1ffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x30);
- { uint64_t x36 = (x34 & 0xffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e194m33/femul.v b/src/Specific/solinas64_2e194m33/femul.v
deleted file mode 100644
index d5361de61..000000000
--- a/src/Specific/solinas64_2e194m33/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e194m33/femulDisplay.log b/src/Specific/solinas64_2e194m33/femulDisplay.log
deleted file mode 100644
index c3b8e1fbe..000000000
--- a/src/Specific/solinas64_2e194m33/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x21 * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x21 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x21 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x31);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x30);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x31);
- uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x30);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
- uint64_t x31 = (x21 + (0x21 * x29));
- uint64_t x32 = (x31 >> 0x31);
- uint64_t x33 = (x31 & 0x1ffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x30);
- uint64_t x36 = (x34 & 0xffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/femulDisplay.v b/src/Specific/solinas64_2e194m33/femulDisplay.v
deleted file mode 100644
index 6adef65aa..000000000
--- a/src/Specific/solinas64_2e194m33/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e194m33.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e194m33/fesquare.c b/src/Specific/solinas64_2e194m33/fesquare.c
deleted file mode 100644
index 877c757a4..000000000
--- a/src/Specific/solinas64_2e194m33/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x21 * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x21 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x21 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x31);
- { uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x30);
- { uint64_t x15 = ((uint64_t)x13 & 0xffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x31);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x30);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- { uint64_t x22 = (x12 + (0x21 * x20));
- { uint64_t x23 = (x22 >> 0x31);
- { uint64_t x24 = (x22 & 0x1ffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x30);
- { uint64_t x27 = (x25 & 0xffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e194m33/fesquare.v b/src/Specific/solinas64_2e194m33/fesquare.v
deleted file mode 100644
index 5a34d194e..000000000
--- a/src/Specific/solinas64_2e194m33/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e194m33/fesquareDisplay.log b/src/Specific/solinas64_2e194m33/fesquareDisplay.log
deleted file mode 100644
index 9fa536104..000000000
--- a/src/Specific/solinas64_2e194m33/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x21 * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x21 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x21 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x31);
- uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x30);
- uint64_t x15 = ((uint64_t)x13 & 0xffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x31);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x30);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
- uint64_t x22 = (x12 + (0x21 * x20));
- uint64_t x23 = (x22 >> 0x31);
- uint64_t x24 = (x22 & 0x1ffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x30);
- uint64_t x27 = (x25 & 0xffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/fesquareDisplay.v b/src/Specific/solinas64_2e194m33/fesquareDisplay.v
deleted file mode 100644
index ad7e9d4e8..000000000
--- a/src/Specific/solinas64_2e194m33/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e194m33.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e194m33/fesub.c b/src/Specific/solinas64_2e194m33/fesub.c
deleted file mode 100644
index 9d40814f9..000000000
--- a/src/Specific/solinas64_2e194m33/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x3ffffffffffbe + x5) - x11);
- out[1] = ((0x1fffffffffffe + x7) - x13);
- out[2] = ((0x3fffffffffffe + x9) - x15);
- out[3] = ((0x1fffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e194m33/fesub.v b/src/Specific/solinas64_2e194m33/fesub.v
deleted file mode 100644
index 10ae08ed4..000000000
--- a/src/Specific/solinas64_2e194m33/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e194m33/fesubDisplay.log b/src/Specific/solinas64_2e194m33/fesubDisplay.log
deleted file mode 100644
index 7240009c0..000000000
--- a/src/Specific/solinas64_2e194m33/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x1fffffffffffe + x8) - x14), ((0x3fffffffffffe + x9) - x15), ((0x1fffffffffffe + x7) - x13), ((0x3ffffffffffbe + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/fesubDisplay.v b/src/Specific/solinas64_2e194m33/fesubDisplay.v
deleted file mode 100644
index 210212ef4..000000000
--- a/src/Specific/solinas64_2e194m33/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e194m33.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e194m33/freeze.c b/src/Specific/solinas64_2e194m33/freeze.c
deleted file mode 100644
index 92cbe9964..000000000
--- a/src/Specific/solinas64_2e194m33/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffdf);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x1ffffffffffdf);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0xffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x1ffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0xffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e194m33/freeze.v b/src/Specific/solinas64_2e194m33/freeze.v
deleted file mode 100644
index c585043fd..000000000
--- a/src/Specific/solinas64_2e194m33/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e194m33.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e194m33/freezeDisplay.log b/src/Specific/solinas64_2e194m33/freezeDisplay.log
deleted file mode 100644
index 38df2685d..000000000
--- a/src/Specific/solinas64_2e194m33/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffdf);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x1ffffffffffdf);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0xffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x1ffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0xffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/freezeDisplay.v b/src/Specific/solinas64_2e194m33/freezeDisplay.v
deleted file mode 100644
index 636798cc1..000000000
--- a/src/Specific/solinas64_2e194m33/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e194m33.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e194m33/CurveParameters.v b/src/Specific/solinas64_2e194m33_4limbs/CurveParameters.v
index 905a67b54..905a67b54 100644
--- a/src/Specific/solinas64_2e194m33/CurveParameters.v
+++ b/src/Specific/solinas64_2e194m33_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e194m33_4limbs/Synthesis.v b/src/Specific/solinas64_2e194m33_4limbs/Synthesis.v
new file mode 100644
index 000000000..8db27b622
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e194m33/compiler.sh b/src/Specific/solinas64_2e194m33_4limbs/compiler.sh
index 7327b32eb..7327b32eb 100755
--- a/src/Specific/solinas64_2e194m33/compiler.sh
+++ b/src/Specific/solinas64_2e194m33_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e194m33/compilerxx.sh b/src/Specific/solinas64_2e194m33_4limbs/compilerxx.sh
index 57b4515de..57b4515de 100755
--- a/src/Specific/solinas64_2e194m33/compilerxx.sh
+++ b/src/Specific/solinas64_2e194m33_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e194m33_4limbs/feadd.v b/src/Specific/solinas64_2e194m33_4limbs/feadd.v
new file mode 100644
index 000000000..be8e2fbc4
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e194m33_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..8d90e1469
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/femul.v b/src/Specific/solinas64_2e194m33_4limbs/femul.v
new file mode 100644
index 000000000..b506a9a45
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/femulDisplay.v b/src/Specific/solinas64_2e194m33_4limbs/femulDisplay.v
new file mode 100644
index 000000000..3666d841c
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/fesquare.v b/src/Specific/solinas64_2e194m33_4limbs/fesquare.v
new file mode 100644
index 000000000..65a47c86d
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e194m33_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5e2de3fe0
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/fesub.v b/src/Specific/solinas64_2e194m33_4limbs/fesub.v
new file mode 100644
index 000000000..5d9af03e4
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e194m33_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..c84996f85
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/freeze.v b/src/Specific/solinas64_2e194m33_4limbs/freeze.v
new file mode 100644
index 000000000..f388b4023
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e194m33_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e194m33_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..7f20a669f
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e194m33/py_interpreter.sh b/src/Specific/solinas64_2e194m33_4limbs/py_interpreter.sh
index fb89b1eeb..fb89b1eeb 100755
--- a/src/Specific/solinas64_2e194m33/py_interpreter.sh
+++ b/src/Specific/solinas64_2e194m33_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e194m33_5limbs/CurveParameters.v b/src/Specific/solinas64_2e194m33_5limbs/CurveParameters.v
new file mode 100644
index 000000000..b568340d9
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^194 - 33
+Base: 38.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 38 + 4/5;
+ bitwidth := 64;
+ s := 2^194;
+ c := [(1, 33)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/Synthesis.v b/src/Specific/solinas64_2e194m33_5limbs/Synthesis.v
new file mode 100644
index 000000000..f3959f7a4
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/compiler.sh b/src/Specific/solinas64_2e194m33_5limbs/compiler.sh
new file mode 100755
index 000000000..c9d0e4eb6
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,39,39,39,38}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<194) - 33' "$@"
diff --git a/src/Specific/solinas64_2e194m33_5limbs/compilerxx.sh b/src/Specific/solinas64_2e194m33_5limbs/compilerxx.sh
new file mode 100755
index 000000000..39cf97a83
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,39,39,39,38}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<194) - 33' "$@"
diff --git a/src/Specific/solinas64_2e194m33_5limbs/feadd.v b/src/Specific/solinas64_2e194m33_5limbs/feadd.v
new file mode 100644
index 000000000..57417ca0f
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e194m33_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..57fabbda1
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/femul.v b/src/Specific/solinas64_2e194m33_5limbs/femul.v
new file mode 100644
index 000000000..76f2b6bc1
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/femulDisplay.v b/src/Specific/solinas64_2e194m33_5limbs/femulDisplay.v
new file mode 100644
index 000000000..4ce5075c0
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesquare.v b/src/Specific/solinas64_2e194m33_5limbs/fesquare.v
new file mode 100644
index 000000000..cb82af6e8
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e194m33_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c09e15f0d
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesub.v b/src/Specific/solinas64_2e194m33_5limbs/fesub.v
new file mode 100644
index 000000000..d59d0efe7
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..573400d24
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/freeze.v b/src/Specific/solinas64_2e194m33_5limbs/freeze.v
new file mode 100644
index 000000000..7ba78f355
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..a0649c851
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e194m33_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e194m33_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e194m33_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..08d10f16a
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**194 - 33' -Dmodulus_bytes='38.8' -Da24='121665'
diff --git a/src/Specific/solinas64_2e196m15/Synthesis.v b/src/Specific/solinas64_2e196m15/Synthesis.v
deleted file mode 100644
index d75e126e4..000000000
--- a/src/Specific/solinas64_2e196m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e196m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e196m15/feadd.c b/src/Specific/solinas64_2e196m15/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e196m15/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e196m15/feadd.v b/src/Specific/solinas64_2e196m15/feadd.v
deleted file mode 100644
index d548d044d..000000000
--- a/src/Specific/solinas64_2e196m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e196m15/feaddDisplay.log b/src/Specific/solinas64_2e196m15/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e196m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/feaddDisplay.v b/src/Specific/solinas64_2e196m15/feaddDisplay.v
deleted file mode 100644
index 1e43f1039..000000000
--- a/src/Specific/solinas64_2e196m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e196m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e196m15/femul.c b/src/Specific/solinas64_2e196m15/femul.c
deleted file mode 100644
index 3f661dd84..000000000
--- a/src/Specific/solinas64_2e196m15/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0xf * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xf * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0xf * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x31);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x31);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x31);
- { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x31);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
- { uint64_t x31 = (x21 + (0xf * x29));
- { uint64_t x32 = (x31 >> 0x31);
- { uint64_t x33 = (x31 & 0x1ffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x31);
- { uint64_t x36 = (x34 & 0x1ffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e196m15/femul.v b/src/Specific/solinas64_2e196m15/femul.v
deleted file mode 100644
index 0f4842b7b..000000000
--- a/src/Specific/solinas64_2e196m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e196m15/femulDisplay.log b/src/Specific/solinas64_2e196m15/femulDisplay.log
deleted file mode 100644
index 72ad53d0e..000000000
--- a/src/Specific/solinas64_2e196m15/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0xf * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0xf * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0xf * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- uint64_t x20 = (uint64_t) (x19 >> 0x31);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x31);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x31);
- uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x31);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
- uint64_t x31 = (x21 + (0xf * x29));
- uint64_t x32 = (x31 >> 0x31);
- uint64_t x33 = (x31 & 0x1ffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x31);
- uint64_t x36 = (x34 & 0x1ffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/femulDisplay.v b/src/Specific/solinas64_2e196m15/femulDisplay.v
deleted file mode 100644
index 77c8c881b..000000000
--- a/src/Specific/solinas64_2e196m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e196m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e196m15/fesquare.c b/src/Specific/solinas64_2e196m15/fesquare.c
deleted file mode 100644
index 2679040a4..000000000
--- a/src/Specific/solinas64_2e196m15/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xf * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0xf * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x31);
- { uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x31);
- { uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x31);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x31);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- { uint64_t x22 = (x12 + (0xf * x20));
- { uint64_t x23 = (x22 >> 0x31);
- { uint64_t x24 = (x22 & 0x1ffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x31);
- { uint64_t x27 = (x25 & 0x1ffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e196m15/fesquare.v b/src/Specific/solinas64_2e196m15/fesquare.v
deleted file mode 100644
index bc2fece87..000000000
--- a/src/Specific/solinas64_2e196m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e196m15/fesquareDisplay.log b/src/Specific/solinas64_2e196m15/fesquareDisplay.log
deleted file mode 100644
index 764324a53..000000000
--- a/src/Specific/solinas64_2e196m15/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xf * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0xf * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- uint64_t x11 = (uint64_t) (x10 >> 0x31);
- uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x31);
- uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x31);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x31);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- uint64_t x22 = (x12 + (0xf * x20));
- uint64_t x23 = (x22 >> 0x31);
- uint64_t x24 = (x22 & 0x1ffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x31);
- uint64_t x27 = (x25 & 0x1ffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/fesquareDisplay.v b/src/Specific/solinas64_2e196m15/fesquareDisplay.v
deleted file mode 100644
index f05bbc636..000000000
--- a/src/Specific/solinas64_2e196m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e196m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e196m15/fesub.c b/src/Specific/solinas64_2e196m15/fesub.c
deleted file mode 100644
index 7ffc0db76..000000000
--- a/src/Specific/solinas64_2e196m15/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x3ffffffffffe2 + x5) - x11);
- out[1] = ((0x3fffffffffffe + x7) - x13);
- out[2] = ((0x3fffffffffffe + x9) - x15);
- out[3] = ((0x3fffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e196m15/fesub.v b/src/Specific/solinas64_2e196m15/fesub.v
deleted file mode 100644
index 0c259996f..000000000
--- a/src/Specific/solinas64_2e196m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e196m15/fesubDisplay.log b/src/Specific/solinas64_2e196m15/fesubDisplay.log
deleted file mode 100644
index 146b4988d..000000000
--- a/src/Specific/solinas64_2e196m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3fffffffffffe + x8) - x14), ((0x3fffffffffffe + x9) - x15), ((0x3fffffffffffe + x7) - x13), ((0x3ffffffffffe2 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/fesubDisplay.v b/src/Specific/solinas64_2e196m15/fesubDisplay.v
deleted file mode 100644
index a0a796734..000000000
--- a/src/Specific/solinas64_2e196m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e196m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e196m15/freeze.c b/src/Specific/solinas64_2e196m15/freeze.c
deleted file mode 100644
index bdc2f7c30..000000000
--- a/src/Specific/solinas64_2e196m15/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff1);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x1fffffffffff1);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x1ffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x1ffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x1ffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e196m15/freeze.v b/src/Specific/solinas64_2e196m15/freeze.v
deleted file mode 100644
index 528dc0603..000000000
--- a/src/Specific/solinas64_2e196m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e196m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e196m15/freezeDisplay.log b/src/Specific/solinas64_2e196m15/freezeDisplay.log
deleted file mode 100644
index 372b48361..000000000
--- a/src/Specific/solinas64_2e196m15/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff1);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x1fffffffffff1);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x1ffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x1ffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x1ffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/freezeDisplay.v b/src/Specific/solinas64_2e196m15/freezeDisplay.v
deleted file mode 100644
index db100631c..000000000
--- a/src/Specific/solinas64_2e196m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e196m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e196m15/CurveParameters.v b/src/Specific/solinas64_2e196m15_4limbs/CurveParameters.v
index ebcf4a84e..ebcf4a84e 100644
--- a/src/Specific/solinas64_2e196m15/CurveParameters.v
+++ b/src/Specific/solinas64_2e196m15_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e196m15_4limbs/Synthesis.v b/src/Specific/solinas64_2e196m15_4limbs/Synthesis.v
new file mode 100644
index 000000000..849e430bc
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e196m15/compiler.sh b/src/Specific/solinas64_2e196m15_4limbs/compiler.sh
index 5a20e4500..5a20e4500 100755
--- a/src/Specific/solinas64_2e196m15/compiler.sh
+++ b/src/Specific/solinas64_2e196m15_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e196m15/compilerxx.sh b/src/Specific/solinas64_2e196m15_4limbs/compilerxx.sh
index 630664319..630664319 100755
--- a/src/Specific/solinas64_2e196m15/compilerxx.sh
+++ b/src/Specific/solinas64_2e196m15_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e196m15_4limbs/feadd.v b/src/Specific/solinas64_2e196m15_4limbs/feadd.v
new file mode 100644
index 000000000..9bdfe8184
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e196m15_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..3164edc5f
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/femul.v b/src/Specific/solinas64_2e196m15_4limbs/femul.v
new file mode 100644
index 000000000..eeb44c34c
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/femulDisplay.v b/src/Specific/solinas64_2e196m15_4limbs/femulDisplay.v
new file mode 100644
index 000000000..5c38c4e72
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/fesquare.v b/src/Specific/solinas64_2e196m15_4limbs/fesquare.v
new file mode 100644
index 000000000..72e20f524
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e196m15_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..49eba404f
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/fesub.v b/src/Specific/solinas64_2e196m15_4limbs/fesub.v
new file mode 100644
index 000000000..c40e7f413
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e196m15_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..cf2380328
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/freeze.v b/src/Specific/solinas64_2e196m15_4limbs/freeze.v
new file mode 100644
index 000000000..183f294ca
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e196m15_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e196m15_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..1aa8f8bd0
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e196m15/py_interpreter.sh b/src/Specific/solinas64_2e196m15_4limbs/py_interpreter.sh
index f55283233..f55283233 100755
--- a/src/Specific/solinas64_2e196m15/py_interpreter.sh
+++ b/src/Specific/solinas64_2e196m15_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e196m15_5limbs/CurveParameters.v b/src/Specific/solinas64_2e196m15_5limbs/CurveParameters.v
new file mode 100644
index 000000000..e8d14cbf0
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^196 - 15
+Base: 39.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 39 + 1/5;
+ bitwidth := 64;
+ s := 2^196;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/Synthesis.v b/src/Specific/solinas64_2e196m15_5limbs/Synthesis.v
new file mode 100644
index 000000000..e5a7f27d5
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/compiler.sh b/src/Specific/solinas64_2e196m15_5limbs/compiler.sh
new file mode 100755
index 000000000..163936ecf
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,39,39,39}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas64_2e196m15_5limbs/compilerxx.sh b/src/Specific/solinas64_2e196m15_5limbs/compilerxx.sh
new file mode 100755
index 000000000..3f7cb72e3
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,39,39,39,39}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<196) - 15' "$@"
diff --git a/src/Specific/solinas64_2e196m15_5limbs/feadd.v b/src/Specific/solinas64_2e196m15_5limbs/feadd.v
new file mode 100644
index 000000000..c04e0681d
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e196m15_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..e55ab2033
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/femul.v b/src/Specific/solinas64_2e196m15_5limbs/femul.v
new file mode 100644
index 000000000..db4acb081
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/femulDisplay.v b/src/Specific/solinas64_2e196m15_5limbs/femulDisplay.v
new file mode 100644
index 000000000..1f295f2d4
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/fesquare.v b/src/Specific/solinas64_2e196m15_5limbs/fesquare.v
new file mode 100644
index 000000000..db45c1615
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e196m15_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c7c20f567
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/fesub.v b/src/Specific/solinas64_2e196m15_5limbs/fesub.v
new file mode 100644
index 000000000..109e48a66
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e196m15_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..756e89d91
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/freeze.v b/src/Specific/solinas64_2e196m15_5limbs/freeze.v
new file mode 100644
index 000000000..8b38a6b79
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e196m15_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..c4e15707f
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e196m15_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e196m15_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e196m15_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..05a13ecb2
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**196 - 15' -Dmodulus_bytes='39.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e198m17/Synthesis.v b/src/Specific/solinas64_2e198m17/Synthesis.v
deleted file mode 100644
index 6477384b8..000000000
--- a/src/Specific/solinas64_2e198m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e198m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e198m17/feadd.c b/src/Specific/solinas64_2e198m17/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e198m17/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e198m17/feadd.v b/src/Specific/solinas64_2e198m17/feadd.v
deleted file mode 100644
index 5733c652d..000000000
--- a/src/Specific/solinas64_2e198m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e198m17/feaddDisplay.log b/src/Specific/solinas64_2e198m17/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e198m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/feaddDisplay.v b/src/Specific/solinas64_2e198m17/feaddDisplay.v
deleted file mode 100644
index 89b0688d8..000000000
--- a/src/Specific/solinas64_2e198m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e198m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e198m17/femul.c b/src/Specific/solinas64_2e198m17/femul.c
deleted file mode 100644
index 6fc4add36..000000000
--- a/src/Specific/solinas64_2e198m17/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x11 * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x11 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x11 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x32);
- { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x31);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x32);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x31);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
- { uint64_t x31 = (x21 + (0x11 * x29));
- { uint64_t x32 = (x31 >> 0x32);
- { uint64_t x33 = (x31 & 0x3ffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x31);
- { uint64_t x36 = (x34 & 0x1ffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e198m17/femul.v b/src/Specific/solinas64_2e198m17/femul.v
deleted file mode 100644
index 0380b7994..000000000
--- a/src/Specific/solinas64_2e198m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e198m17/femulDisplay.log b/src/Specific/solinas64_2e198m17/femulDisplay.log
deleted file mode 100644
index ad84fbfa8..000000000
--- a/src/Specific/solinas64_2e198m17/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x11 * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x11 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x11 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x32);
- uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x31);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x32);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x31);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
- uint64_t x31 = (x21 + (0x11 * x29));
- uint64_t x32 = (x31 >> 0x32);
- uint64_t x33 = (x31 & 0x3ffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x31);
- uint64_t x36 = (x34 & 0x1ffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/femulDisplay.v b/src/Specific/solinas64_2e198m17/femulDisplay.v
deleted file mode 100644
index 76527fa7e..000000000
--- a/src/Specific/solinas64_2e198m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e198m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e198m17/fesquare.c b/src/Specific/solinas64_2e198m17/fesquare.c
deleted file mode 100644
index c2571c13f..000000000
--- a/src/Specific/solinas64_2e198m17/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x32);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x31);
- { uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x32);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x31);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- { uint64_t x22 = (x12 + (0x11 * x20));
- { uint64_t x23 = (x22 >> 0x32);
- { uint64_t x24 = (x22 & 0x3ffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x31);
- { uint64_t x27 = (x25 & 0x1ffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e198m17/fesquare.v b/src/Specific/solinas64_2e198m17/fesquare.v
deleted file mode 100644
index 28bdd3e06..000000000
--- a/src/Specific/solinas64_2e198m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e198m17/fesquareDisplay.log b/src/Specific/solinas64_2e198m17/fesquareDisplay.log
deleted file mode 100644
index 7a55b9efd..000000000
--- a/src/Specific/solinas64_2e198m17/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x32);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x31);
- uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x32);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x31);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffff);
- uint64_t x22 = (x12 + (0x11 * x20));
- uint64_t x23 = (x22 >> 0x32);
- uint64_t x24 = (x22 & 0x3ffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x31);
- uint64_t x27 = (x25 & 0x1ffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/fesquareDisplay.v b/src/Specific/solinas64_2e198m17/fesquareDisplay.v
deleted file mode 100644
index a52937443..000000000
--- a/src/Specific/solinas64_2e198m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e198m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e198m17/fesub.c b/src/Specific/solinas64_2e198m17/fesub.c
deleted file mode 100644
index 17a37ea15..000000000
--- a/src/Specific/solinas64_2e198m17/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x7ffffffffffde + x5) - x11);
- out[1] = ((0x3fffffffffffe + x7) - x13);
- out[2] = ((0x7fffffffffffe + x9) - x15);
- out[3] = ((0x3fffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e198m17/fesub.v b/src/Specific/solinas64_2e198m17/fesub.v
deleted file mode 100644
index 23db1b817..000000000
--- a/src/Specific/solinas64_2e198m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e198m17/fesubDisplay.log b/src/Specific/solinas64_2e198m17/fesubDisplay.log
deleted file mode 100644
index 0454cd477..000000000
--- a/src/Specific/solinas64_2e198m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3fffffffffffe + x8) - x14), ((0x7fffffffffffe + x9) - x15), ((0x3fffffffffffe + x7) - x13), ((0x7ffffffffffde + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/fesubDisplay.v b/src/Specific/solinas64_2e198m17/fesubDisplay.v
deleted file mode 100644
index faace6f45..000000000
--- a/src/Specific/solinas64_2e198m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e198m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e198m17/freeze.c b/src/Specific/solinas64_2e198m17/freeze.c
deleted file mode 100644
index 0c7b96d4a..000000000
--- a/src/Specific/solinas64_2e198m17/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffef);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x3ffffffffffef);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x1ffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x3ffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x1ffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e198m17/freeze.v b/src/Specific/solinas64_2e198m17/freeze.v
deleted file mode 100644
index 2ba20c0e4..000000000
--- a/src/Specific/solinas64_2e198m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e198m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e198m17/freezeDisplay.log b/src/Specific/solinas64_2e198m17/freezeDisplay.log
deleted file mode 100644
index 5ff2bff86..000000000
--- a/src/Specific/solinas64_2e198m17/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffef);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x3ffffffffffef);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x1ffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x3ffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x1ffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/freezeDisplay.v b/src/Specific/solinas64_2e198m17/freezeDisplay.v
deleted file mode 100644
index d91b19627..000000000
--- a/src/Specific/solinas64_2e198m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e198m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e198m17/CurveParameters.v b/src/Specific/solinas64_2e198m17_4limbs/CurveParameters.v
index cb3a65318..cb3a65318 100644
--- a/src/Specific/solinas64_2e198m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e198m17_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e198m17_4limbs/Synthesis.v b/src/Specific/solinas64_2e198m17_4limbs/Synthesis.v
new file mode 100644
index 000000000..e267ca95f
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e198m17/compiler.sh b/src/Specific/solinas64_2e198m17_4limbs/compiler.sh
index 581b0b8a0..581b0b8a0 100755
--- a/src/Specific/solinas64_2e198m17/compiler.sh
+++ b/src/Specific/solinas64_2e198m17_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e198m17/compilerxx.sh b/src/Specific/solinas64_2e198m17_4limbs/compilerxx.sh
index 3131f957a..3131f957a 100755
--- a/src/Specific/solinas64_2e198m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e198m17_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e198m17_4limbs/feadd.v b/src/Specific/solinas64_2e198m17_4limbs/feadd.v
new file mode 100644
index 000000000..c5df077fa
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e198m17_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..b9259315e
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/femul.v b/src/Specific/solinas64_2e198m17_4limbs/femul.v
new file mode 100644
index 000000000..c8ebb794c
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/femulDisplay.v b/src/Specific/solinas64_2e198m17_4limbs/femulDisplay.v
new file mode 100644
index 000000000..9a70f558c
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/fesquare.v b/src/Specific/solinas64_2e198m17_4limbs/fesquare.v
new file mode 100644
index 000000000..65b542280
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e198m17_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3e116ecf6
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/fesub.v b/src/Specific/solinas64_2e198m17_4limbs/fesub.v
new file mode 100644
index 000000000..d0a14ca2a
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e198m17_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..c2ceb3ad2
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/freeze.v b/src/Specific/solinas64_2e198m17_4limbs/freeze.v
new file mode 100644
index 000000000..3df20ee5b
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e198m17_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e198m17_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..20e19e6f4
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e198m17/py_interpreter.sh b/src/Specific/solinas64_2e198m17_4limbs/py_interpreter.sh
index 964700a43..964700a43 100755
--- a/src/Specific/solinas64_2e198m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e198m17_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e198m17_5limbs/CurveParameters.v b/src/Specific/solinas64_2e198m17_5limbs/CurveParameters.v
new file mode 100644
index 000000000..28e736777
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^198 - 17
+Base: 39.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 39 + 3/5;
+ bitwidth := 64;
+ s := 2^198;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/Synthesis.v b/src/Specific/solinas64_2e198m17_5limbs/Synthesis.v
new file mode 100644
index 000000000..18d68a41b
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/compiler.sh b/src/Specific/solinas64_2e198m17_5limbs/compiler.sh
new file mode 100755
index 000000000..79df6c5eb
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<198) - 17' "$@"
diff --git a/src/Specific/solinas64_2e198m17_5limbs/compilerxx.sh b/src/Specific/solinas64_2e198m17_5limbs/compilerxx.sh
new file mode 100755
index 000000000..b9a18d134
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{40,40,39,40,39}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='25' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<198) - 17' "$@"
diff --git a/src/Specific/solinas64_2e198m17_5limbs/feadd.v b/src/Specific/solinas64_2e198m17_5limbs/feadd.v
new file mode 100644
index 000000000..3b246f446
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e198m17_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..27b34a8d0
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/femul.v b/src/Specific/solinas64_2e198m17_5limbs/femul.v
new file mode 100644
index 000000000..87a8c2a8c
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/femulDisplay.v b/src/Specific/solinas64_2e198m17_5limbs/femulDisplay.v
new file mode 100644
index 000000000..105e2df9c
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesquare.v b/src/Specific/solinas64_2e198m17_5limbs/fesquare.v
new file mode 100644
index 000000000..597cd5c9e
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e198m17_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..0d11faa95
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesub.v b/src/Specific/solinas64_2e198m17_5limbs/fesub.v
new file mode 100644
index 000000000..078ae314b
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..f7a04f13b
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/freeze.v b/src/Specific/solinas64_2e198m17_5limbs/freeze.v
new file mode 100644
index 000000000..9b9597e5b
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..e851a1a99
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e198m17_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e198m17_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e198m17_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..5ff50a3bd
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**198 - 17' -Dmodulus_bytes='39.6' -Da24='121665'
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/CurveParameters.v b/src/Specific/solinas64_2e205m45x2e198m1/CurveParameters.v
deleted file mode 100644
index 2d6935360..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^205 - 45*2^198 - 1
-Base: 51.25
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 4%nat;
- base := 51 + 1/4;
- bitwidth := 64;
- s := 2^205;
- c := [(1, 1); (45, 2^198)];
- carry_chains := Some [[2; 3]; [3; 0; 1; 2]; [3; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/Synthesis.v b/src/Specific/solinas64_2e205m45x2e198m1/Synthesis.v
deleted file mode 100644
index b0bd151f8..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/compiler.sh b/src/Specific/solinas64_2e205m45x2e198m1/compiler.sh
deleted file mode 100755
index d9efc757c..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1' "$@"
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/compilerxx.sh b/src/Specific/solinas64_2e205m45x2e198m1/compilerxx.sh
deleted file mode 100755
index 7ce679787..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51}' -Dmodulus_array='{0x14,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<205) - 45*(1_mpz<<198) - 1' "$@"
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feadd.c b/src/Specific/solinas64_2e205m45x2e198m1/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feadd.v b/src/Specific/solinas64_2e205m45x2e198m1/feadd.v
deleted file mode 100644
index a65a6679e..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log b/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.v b/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.v
deleted file mode 100644
index 8c4957f89..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/femul.v b/src/Specific/solinas64_2e205m45x2e198m1/femul.v
deleted file mode 100644
index ada96cd3d..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/femulDisplay.v b/src/Specific/solinas64_2e205m45x2e198m1/femulDisplay.v
deleted file mode 100644
index 8554f26e5..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesquare.v b/src/Specific/solinas64_2e205m45x2e198m1/fesquare.v
deleted file mode 100644
index 1326e3efe..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesquareDisplay.v b/src/Specific/solinas64_2e205m45x2e198m1/fesquareDisplay.v
deleted file mode 100644
index 6b795e996..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesub.c b/src/Specific/solinas64_2e205m45x2e198m1/fesub.c
deleted file mode 100644
index 1543bb0e5..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffffffe + x5) - x11);
- out[1] = ((0xffffffffffffe + x7) - x13);
- out[2] = ((0xffffffffffffe + x9) - x15);
- out[3] = ((0xa5ffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesub.v b/src/Specific/solinas64_2e205m45x2e198m1/fesub.v
deleted file mode 100644
index a7078d418..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log b/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log
deleted file mode 100644
index c4a4577cd..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xa5ffffffffffe + x8) - x14), ((0xffffffffffffe + x9) - x15), ((0xffffffffffffe + x7) - x13), ((0x1ffffffffffffe + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.v b/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.v
deleted file mode 100644
index 40c131dd2..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/freeze.c b/src/Specific/solinas64_2e205m45x2e198m1/freeze.c
deleted file mode 100644
index a506c2a8e..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- { uint64_t x11; uint8_t x12 = _subborrow_u51(x9, x4, 0x7ffffffffffff, &x11);
- { uint64_t x14; uint8_t x15 = _subborrow_u51(x12, x6, 0x7ffffffffffff, &x14);
- { uint64_t x17; uint8_t x18 = _subborrow_u51(x15, x5, 0x52fffffffffff, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7ffffffffffff);
- { uint64_t x26; uint8_t x27 = _addcarryx_u51(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0x7ffffffffffff);
- { uint64_t x30; uint8_t x31 = _addcarryx_u51(x27, x14, x28, &x30);
- { uint64_t x32 = (x19 & 0x52fffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u51(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/freeze.v b/src/Specific/solinas64_2e205m45x2e198m1/freeze.v
deleted file mode 100644
index cc89d7425..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.log b/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.log
deleted file mode 100644
index 2af9d6fcd..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- uint64_t x11, uint8_t x12 = subborrow_u51(x9, x4, 0x7ffffffffffff);
- uint64_t x14, uint8_t x15 = subborrow_u51(x12, x6, 0x7ffffffffffff);
- uint64_t x17, uint8_t x18 = subborrow_u51(x15, x5, 0x52fffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = addcarryx_u51(x23, x11, x24);
- uint64_t x28 = (x19 & 0x7ffffffffffff);
- uint64_t x30, uint8_t x31 = addcarryx_u51(x27, x14, x28);
- uint64_t x32 = (x19 & 0x52fffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u51(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.v b/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.v
deleted file mode 100644
index 1704363fe..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e205m45x2e198m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/py_interpreter.sh b/src/Specific/solinas64_2e205m45x2e198m1/py_interpreter.sh
deleted file mode 100755
index 0419b85fa..000000000
--- a/src/Specific/solinas64_2e205m45x2e198m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**205 - 45*2**198 - 1' -Dmodulus_bytes='51.25' -Da24='121665'
diff --git a/src/Specific/solinas64_2e206m5/Synthesis.v b/src/Specific/solinas64_2e206m5/Synthesis.v
deleted file mode 100644
index 082a81b6f..000000000
--- a/src/Specific/solinas64_2e206m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e206m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e206m5/feadd.c b/src/Specific/solinas64_2e206m5/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e206m5/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e206m5/feadd.v b/src/Specific/solinas64_2e206m5/feadd.v
deleted file mode 100644
index d6e35bc60..000000000
--- a/src/Specific/solinas64_2e206m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e206m5/feaddDisplay.log b/src/Specific/solinas64_2e206m5/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e206m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/feaddDisplay.v b/src/Specific/solinas64_2e206m5/feaddDisplay.v
deleted file mode 100644
index 80cd830a1..000000000
--- a/src/Specific/solinas64_2e206m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e206m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e206m5/femul.c b/src/Specific/solinas64_2e206m5/femul.c
deleted file mode 100644
index cc09e2ec7..000000000
--- a/src/Specific/solinas64_2e206m5/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x5 * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x5 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x5 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x34);
- { uint64_t x21 = ((uint64_t)x19 & 0xfffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x34);
- { uint64_t x27 = ((uint64_t)x25 & 0xfffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x33);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- { uint64_t x31 = (x21 + (0x5 * x29));
- { uint64_t x32 = (x31 >> 0x34);
- { uint64_t x33 = (x31 & 0xfffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x33);
- { uint64_t x36 = (x34 & 0x7ffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e206m5/femul.v b/src/Specific/solinas64_2e206m5/femul.v
deleted file mode 100644
index e7b659784..000000000
--- a/src/Specific/solinas64_2e206m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e206m5/femulDisplay.log b/src/Specific/solinas64_2e206m5/femulDisplay.log
deleted file mode 100644
index a9fdbd04e..000000000
--- a/src/Specific/solinas64_2e206m5/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x5 * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x5 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x5 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x34);
- uint64_t x21 = ((uint64_t)x19 & 0xfffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x34);
- uint64_t x27 = ((uint64_t)x25 & 0xfffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x33);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- uint64_t x31 = (x21 + (0x5 * x29));
- uint64_t x32 = (x31 >> 0x34);
- uint64_t x33 = (x31 & 0xfffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x33);
- uint64_t x36 = (x34 & 0x7ffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/femulDisplay.v b/src/Specific/solinas64_2e206m5/femulDisplay.v
deleted file mode 100644
index c8411822c..000000000
--- a/src/Specific/solinas64_2e206m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e206m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e206m5/fesquare.c b/src/Specific/solinas64_2e206m5/fesquare.c
deleted file mode 100644
index df4b48fcf..000000000
--- a/src/Specific/solinas64_2e206m5/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x5 * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x34);
- { uint64_t x12 = ((uint64_t)x10 & 0xfffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x33);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x34);
- { uint64_t x18 = ((uint64_t)x16 & 0xfffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { uint64_t x22 = (x12 + (0x5 * x20));
- { uint64_t x23 = (x22 >> 0x34);
- { uint64_t x24 = (x22 & 0xfffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x33);
- { uint64_t x27 = (x25 & 0x7ffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e206m5/fesquare.v b/src/Specific/solinas64_2e206m5/fesquare.v
deleted file mode 100644
index 60994ebd0..000000000
--- a/src/Specific/solinas64_2e206m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e206m5/fesquareDisplay.log b/src/Specific/solinas64_2e206m5/fesquareDisplay.log
deleted file mode 100644
index 7aa87c67f..000000000
--- a/src/Specific/solinas64_2e206m5/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x5 * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x34);
- uint64_t x12 = ((uint64_t)x10 & 0xfffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x33);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x34);
- uint64_t x18 = ((uint64_t)x16 & 0xfffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- uint64_t x22 = (x12 + (0x5 * x20));
- uint64_t x23 = (x22 >> 0x34);
- uint64_t x24 = (x22 & 0xfffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x33);
- uint64_t x27 = (x25 & 0x7ffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/fesquareDisplay.v b/src/Specific/solinas64_2e206m5/fesquareDisplay.v
deleted file mode 100644
index 6d3c236c9..000000000
--- a/src/Specific/solinas64_2e206m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e206m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e206m5/fesub.c b/src/Specific/solinas64_2e206m5/fesub.c
deleted file mode 100644
index 605f4b203..000000000
--- a/src/Specific/solinas64_2e206m5/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffffff6 + x5) - x11);
- out[1] = ((0xffffffffffffe + x7) - x13);
- out[2] = ((0x1ffffffffffffe + x9) - x15);
- out[3] = ((0xffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e206m5/fesub.v b/src/Specific/solinas64_2e206m5/fesub.v
deleted file mode 100644
index 6a1379d1f..000000000
--- a/src/Specific/solinas64_2e206m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e206m5/fesubDisplay.log b/src/Specific/solinas64_2e206m5/fesubDisplay.log
deleted file mode 100644
index 81bcc88f2..000000000
--- a/src/Specific/solinas64_2e206m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xffffffffffffe + x8) - x14), ((0x1ffffffffffffe + x9) - x15), ((0xffffffffffffe + x7) - x13), ((0x1ffffffffffff6 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/fesubDisplay.v b/src/Specific/solinas64_2e206m5/fesubDisplay.v
deleted file mode 100644
index 5a95e25f3..000000000
--- a/src/Specific/solinas64_2e206m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e206m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e206m5/freeze.c b/src/Specific/solinas64_2e206m5/freeze.c
deleted file mode 100644
index a6dea8ec3..000000000
--- a/src/Specific/solinas64_2e206m5/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffb);
- { uint64_t x11; uint8_t x12 = _subborrow_u51(x9, x4, 0x7ffffffffffff, &x11);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xfffffffffffff);
- { uint64_t x17; uint8_t x18 = _subborrow_u51(x15, x5, 0x7ffffffffffff, &x17);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffffb);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7ffffffffffff);
- { uint64_t x26; uint8_t x27 = _addcarryx_u51(x23, x11, x24, &x26);
- { uint64_t x28 = (x19 & 0xfffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7ffffffffffff);
- { uint64_t x34; uint8_t _ = _addcarryx_u51(x31, x17, x32, &x34);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e206m5/freeze.v b/src/Specific/solinas64_2e206m5/freeze.v
deleted file mode 100644
index dd8d1f044..000000000
--- a/src/Specific/solinas64_2e206m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e206m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e206m5/freezeDisplay.log b/src/Specific/solinas64_2e206m5/freezeDisplay.log
deleted file mode 100644
index 79dd921e8..000000000
--- a/src/Specific/solinas64_2e206m5/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffb);
- uint64_t x11, uint8_t x12 = subborrow_u51(x9, x4, 0x7ffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xfffffffffffff);
- uint64_t x17, uint8_t x18 = subborrow_u51(x15, x5, 0x7ffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffffb);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = addcarryx_u51(x23, x11, x24);
- uint64_t x28 = (x19 & 0xfffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7ffffffffffff);
- uint64_t x34, uint8_t _ = addcarryx_u51(x31, x17, x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/freezeDisplay.v b/src/Specific/solinas64_2e206m5/freezeDisplay.v
deleted file mode 100644
index 1b4a4fa57..000000000
--- a/src/Specific/solinas64_2e206m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e206m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e206m5/CurveParameters.v b/src/Specific/solinas64_2e206m5_4limbs/CurveParameters.v
index 185e3afb6..185e3afb6 100644
--- a/src/Specific/solinas64_2e206m5/CurveParameters.v
+++ b/src/Specific/solinas64_2e206m5_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e206m5_4limbs/Synthesis.v b/src/Specific/solinas64_2e206m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..bb96b4b4e
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e206m5/compiler.sh b/src/Specific/solinas64_2e206m5_4limbs/compiler.sh
index 3b91a3964..3b91a3964 100755
--- a/src/Specific/solinas64_2e206m5/compiler.sh
+++ b/src/Specific/solinas64_2e206m5_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e206m5/compilerxx.sh b/src/Specific/solinas64_2e206m5_4limbs/compilerxx.sh
index dcdd87559..dcdd87559 100755
--- a/src/Specific/solinas64_2e206m5/compilerxx.sh
+++ b/src/Specific/solinas64_2e206m5_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e206m5_4limbs/feadd.v b/src/Specific/solinas64_2e206m5_4limbs/feadd.v
new file mode 100644
index 000000000..b51bf68d6
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e206m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..1916ee620
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/femul.v b/src/Specific/solinas64_2e206m5_4limbs/femul.v
new file mode 100644
index 000000000..45b49f59a
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/femulDisplay.v b/src/Specific/solinas64_2e206m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..c5311bbad
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/fesquare.v b/src/Specific/solinas64_2e206m5_4limbs/fesquare.v
new file mode 100644
index 000000000..81b271e6f
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e206m5_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..496e469a3
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/fesub.v b/src/Specific/solinas64_2e206m5_4limbs/fesub.v
new file mode 100644
index 000000000..61fae988a
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e206m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..b077772b2
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/freeze.v b/src/Specific/solinas64_2e206m5_4limbs/freeze.v
new file mode 100644
index 000000000..96a4fffb8
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e206m5_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e206m5_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..15db657e3
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e206m5/py_interpreter.sh b/src/Specific/solinas64_2e206m5_4limbs/py_interpreter.sh
index 7d204f731..7d204f731 100755
--- a/src/Specific/solinas64_2e206m5/py_interpreter.sh
+++ b/src/Specific/solinas64_2e206m5_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e206m5_5limbs/CurveParameters.v b/src/Specific/solinas64_2e206m5_5limbs/CurveParameters.v
new file mode 100644
index 000000000..532996953
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^206 - 5
+Base: 41.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 41 + 1/5;
+ bitwidth := 64;
+ s := 2^206;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/Synthesis.v b/src/Specific/solinas64_2e206m5_5limbs/Synthesis.v
new file mode 100644
index 000000000..5c7306c7f
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/compiler.sh b/src/Specific/solinas64_2e206m5_5limbs/compiler.sh
new file mode 100755
index 000000000..b1d3ffd23
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas64_2e206m5_5limbs/compilerxx.sh b/src/Specific/solinas64_2e206m5_5limbs/compilerxx.sh
new file mode 100755
index 000000000..49878e9aa
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,41,41,41,41}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='26' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<206) - 5' "$@"
diff --git a/src/Specific/solinas64_2e206m5_5limbs/feadd.v b/src/Specific/solinas64_2e206m5_5limbs/feadd.v
new file mode 100644
index 000000000..125a7fee0
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e206m5_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..5285b6908
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/femul.v b/src/Specific/solinas64_2e206m5_5limbs/femul.v
new file mode 100644
index 000000000..d5adb6949
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/femulDisplay.v b/src/Specific/solinas64_2e206m5_5limbs/femulDisplay.v
new file mode 100644
index 000000000..62f6a2bd1
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesquare.v b/src/Specific/solinas64_2e206m5_5limbs/fesquare.v
new file mode 100644
index 000000000..f9c47d5c7
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e206m5_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bc84b2911
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesub.v b/src/Specific/solinas64_2e206m5_5limbs/fesub.v
new file mode 100644
index 000000000..7e2ce1cf5
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..44f95ad1a
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/freeze.v b/src/Specific/solinas64_2e206m5_5limbs/freeze.v
new file mode 100644
index 000000000..2d4fd0f7b
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e206m5_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..9b63767cc
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e206m5_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e206m5_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e206m5_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..737a4de50
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**206 - 5' -Dmodulus_bytes='41.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e212m29/Synthesis.v b/src/Specific/solinas64_2e212m29/Synthesis.v
deleted file mode 100644
index 9a529751b..000000000
--- a/src/Specific/solinas64_2e212m29/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e212m29.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e212m29/feadd.c b/src/Specific/solinas64_2e212m29/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e212m29/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e212m29/feadd.v b/src/Specific/solinas64_2e212m29/feadd.v
deleted file mode 100644
index 7a5b1c575..000000000
--- a/src/Specific/solinas64_2e212m29/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e212m29/feaddDisplay.log b/src/Specific/solinas64_2e212m29/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e212m29/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/feaddDisplay.v b/src/Specific/solinas64_2e212m29/feaddDisplay.v
deleted file mode 100644
index 35d7fdf46..000000000
--- a/src/Specific/solinas64_2e212m29/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e212m29.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e212m29/femul.c b/src/Specific/solinas64_2e212m29/femul.c
deleted file mode 100644
index edd1e152c..000000000
--- a/src/Specific/solinas64_2e212m29/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x1d * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1d * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x1d * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x35);
- { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x35);
- { uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x35);
- { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x35);
- { uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- { uint64_t x31 = (x21 + (0x1d * x29));
- { uint64_t x32 = (x31 >> 0x35);
- { uint64_t x33 = (x31 & 0x1fffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x35);
- { uint64_t x36 = (x34 & 0x1fffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e212m29/femul.v b/src/Specific/solinas64_2e212m29/femul.v
deleted file mode 100644
index b25f57211..000000000
--- a/src/Specific/solinas64_2e212m29/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e212m29/femulDisplay.log b/src/Specific/solinas64_2e212m29/femulDisplay.log
deleted file mode 100644
index f16224016..000000000
--- a/src/Specific/solinas64_2e212m29/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + (((uint128_t)x7 * x13) + ((uint128_t)x9 * x11))) + (0x1d * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1d * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x1d * (((uint128_t)x7 * x14) + (((uint128_t)x9 * x15) + ((uint128_t)x8 * x13)))));
- uint64_t x20 = (uint64_t) (x19 >> 0x35);
- uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x35);
- uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x35);
- uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x35);
- uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- uint64_t x31 = (x21 + (0x1d * x29));
- uint64_t x32 = (x31 >> 0x35);
- uint64_t x33 = (x31 & 0x1fffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x35);
- uint64_t x36 = (x34 & 0x1fffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/femulDisplay.v b/src/Specific/solinas64_2e212m29/femulDisplay.v
deleted file mode 100644
index 2074b50a5..000000000
--- a/src/Specific/solinas64_2e212m29/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e212m29.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e212m29/fesquare.c b/src/Specific/solinas64_2e212m29/fesquare.c
deleted file mode 100644
index faa9c384f..000000000
--- a/src/Specific/solinas64_2e212m29/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1d * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1d * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x1d * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x35);
- { uint64_t x12 = ((uint64_t)x10 & 0x1fffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x35);
- { uint64_t x15 = ((uint64_t)x13 & 0x1fffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x35);
- { uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x35);
- { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- { uint64_t x22 = (x12 + (0x1d * x20));
- { uint64_t x23 = (x22 >> 0x35);
- { uint64_t x24 = (x22 & 0x1fffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x35);
- { uint64_t x27 = (x25 & 0x1fffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e212m29/fesquare.v b/src/Specific/solinas64_2e212m29/fesquare.v
deleted file mode 100644
index 7d07cdb8e..000000000
--- a/src/Specific/solinas64_2e212m29/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e212m29/fesquareDisplay.log b/src/Specific/solinas64_2e212m29/fesquareDisplay.log
deleted file mode 100644
index 134cadfa2..000000000
--- a/src/Specific/solinas64_2e212m29/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1d * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1d * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x1d * (((uint128_t)x4 * x5) + (((uint128_t)x6 * x6) + ((uint128_t)x5 * x4)))));
- uint64_t x11 = (uint64_t) (x10 >> 0x35);
- uint64_t x12 = ((uint64_t)x10 & 0x1fffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x35);
- uint64_t x15 = ((uint64_t)x13 & 0x1fffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x35);
- uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x35);
- uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- uint64_t x22 = (x12 + (0x1d * x20));
- uint64_t x23 = (x22 >> 0x35);
- uint64_t x24 = (x22 & 0x1fffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x35);
- uint64_t x27 = (x25 & 0x1fffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/fesquareDisplay.v b/src/Specific/solinas64_2e212m29/fesquareDisplay.v
deleted file mode 100644
index 156918001..000000000
--- a/src/Specific/solinas64_2e212m29/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e212m29.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e212m29/fesub.c b/src/Specific/solinas64_2e212m29/fesub.c
deleted file mode 100644
index 8ea0c01ca..000000000
--- a/src/Specific/solinas64_2e212m29/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x3fffffffffffc6 + x5) - x11);
- out[1] = ((0x3ffffffffffffe + x7) - x13);
- out[2] = ((0x3ffffffffffffe + x9) - x15);
- out[3] = ((0x3ffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e212m29/fesub.v b/src/Specific/solinas64_2e212m29/fesub.v
deleted file mode 100644
index 8a69316ed..000000000
--- a/src/Specific/solinas64_2e212m29/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e212m29/fesubDisplay.log b/src/Specific/solinas64_2e212m29/fesubDisplay.log
deleted file mode 100644
index d08123189..000000000
--- a/src/Specific/solinas64_2e212m29/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3ffffffffffffe + x8) - x14), ((0x3ffffffffffffe + x9) - x15), ((0x3ffffffffffffe + x7) - x13), ((0x3fffffffffffc6 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/fesubDisplay.v b/src/Specific/solinas64_2e212m29/fesubDisplay.v
deleted file mode 100644
index 939ff7141..000000000
--- a/src/Specific/solinas64_2e212m29/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e212m29.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e212m29/freeze.c b/src/Specific/solinas64_2e212m29/freeze.c
deleted file mode 100644
index ba2a57d23..000000000
--- a/src/Specific/solinas64_2e212m29/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffe3);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1fffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1fffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1fffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x1fffffffffffe3);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x1fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x1fffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x1fffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e212m29/freeze.v b/src/Specific/solinas64_2e212m29/freeze.v
deleted file mode 100644
index dee41bcb4..000000000
--- a/src/Specific/solinas64_2e212m29/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e212m29.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e212m29/freezeDisplay.log b/src/Specific/solinas64_2e212m29/freezeDisplay.log
deleted file mode 100644
index 83cbb1bec..000000000
--- a/src/Specific/solinas64_2e212m29/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffe3);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1fffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1fffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1fffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x1fffffffffffe3);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x1fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x1fffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x1fffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/freezeDisplay.v b/src/Specific/solinas64_2e212m29/freezeDisplay.v
deleted file mode 100644
index ac1c329ec..000000000
--- a/src/Specific/solinas64_2e212m29/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e212m29.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e212m29/CurveParameters.v b/src/Specific/solinas64_2e212m29_4limbs/CurveParameters.v
index 26435ae90..26435ae90 100644
--- a/src/Specific/solinas64_2e212m29/CurveParameters.v
+++ b/src/Specific/solinas64_2e212m29_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e212m29_4limbs/Synthesis.v b/src/Specific/solinas64_2e212m29_4limbs/Synthesis.v
new file mode 100644
index 000000000..146ca21cf
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e212m29/compiler.sh b/src/Specific/solinas64_2e212m29_4limbs/compiler.sh
index d472ca2f1..d472ca2f1 100755
--- a/src/Specific/solinas64_2e212m29/compiler.sh
+++ b/src/Specific/solinas64_2e212m29_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e212m29/compilerxx.sh b/src/Specific/solinas64_2e212m29_4limbs/compilerxx.sh
index 673991fdd..673991fdd 100755
--- a/src/Specific/solinas64_2e212m29/compilerxx.sh
+++ b/src/Specific/solinas64_2e212m29_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e212m29_4limbs/feadd.v b/src/Specific/solinas64_2e212m29_4limbs/feadd.v
new file mode 100644
index 000000000..4491f1008
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e212m29_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..fbc9245a1
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/femul.v b/src/Specific/solinas64_2e212m29_4limbs/femul.v
new file mode 100644
index 000000000..8ffe04377
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/femulDisplay.v b/src/Specific/solinas64_2e212m29_4limbs/femulDisplay.v
new file mode 100644
index 000000000..e0e57decc
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/fesquare.v b/src/Specific/solinas64_2e212m29_4limbs/fesquare.v
new file mode 100644
index 000000000..7b30c26d7
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e212m29_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4aa52c8cc
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/fesub.v b/src/Specific/solinas64_2e212m29_4limbs/fesub.v
new file mode 100644
index 000000000..014a1aad5
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e212m29_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..3056928e8
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/freeze.v b/src/Specific/solinas64_2e212m29_4limbs/freeze.v
new file mode 100644
index 000000000..cb865f9ff
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e212m29_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e212m29_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..6c3bd46aa
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e212m29/py_interpreter.sh b/src/Specific/solinas64_2e212m29_4limbs/py_interpreter.sh
index b1c168f4d..b1c168f4d 100755
--- a/src/Specific/solinas64_2e212m29/py_interpreter.sh
+++ b/src/Specific/solinas64_2e212m29_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e212m29_5limbs/CurveParameters.v b/src/Specific/solinas64_2e212m29_5limbs/CurveParameters.v
new file mode 100644
index 000000000..d44bbd23f
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^212 - 29
+Base: 42.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 42 + 2/5;
+ bitwidth := 64;
+ s := 2^212;
+ c := [(1, 29)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/Synthesis.v b/src/Specific/solinas64_2e212m29_5limbs/Synthesis.v
new file mode 100644
index 000000000..77a74b883
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/compiler.sh b/src/Specific/solinas64_2e212m29_5limbs/compiler.sh
new file mode 100755
index 000000000..7f14e8831
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,42}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<212) - 29' "$@"
diff --git a/src/Specific/solinas64_2e212m29_5limbs/compilerxx.sh b/src/Specific/solinas64_2e212m29_5limbs/compilerxx.sh
new file mode 100755
index 000000000..7fecd4209
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,42}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<212) - 29' "$@"
diff --git a/src/Specific/solinas64_2e212m29_5limbs/feadd.v b/src/Specific/solinas64_2e212m29_5limbs/feadd.v
new file mode 100644
index 000000000..6a160096f
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e212m29_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..7d2c530a2
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/femul.v b/src/Specific/solinas64_2e212m29_5limbs/femul.v
new file mode 100644
index 000000000..bbc5f1945
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/femulDisplay.v b/src/Specific/solinas64_2e212m29_5limbs/femulDisplay.v
new file mode 100644
index 000000000..55950ee98
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesquare.v b/src/Specific/solinas64_2e212m29_5limbs/fesquare.v
new file mode 100644
index 000000000..d0d9a6895
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e212m29_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6d03215f8
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesub.v b/src/Specific/solinas64_2e212m29_5limbs/fesub.v
new file mode 100644
index 000000000..ac05b02cf
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..b4609f2ce
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/freeze.v b/src/Specific/solinas64_2e212m29_5limbs/freeze.v
new file mode 100644
index 000000000..33bd2ee31
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..dad89f1e3
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e212m29_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e212m29_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e212m29_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..a6f184c98
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**212 - 29' -Dmodulus_bytes='42.4' -Da24='121665'
diff --git a/src/Specific/solinas64_2e213m3/Synthesis.v b/src/Specific/solinas64_2e213m3/Synthesis.v
deleted file mode 100644
index b800aea08..000000000
--- a/src/Specific/solinas64_2e213m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e213m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e213m3/feadd.c b/src/Specific/solinas64_2e213m3/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e213m3/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e213m3/feadd.v b/src/Specific/solinas64_2e213m3/feadd.v
deleted file mode 100644
index d02c20538..000000000
--- a/src/Specific/solinas64_2e213m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e213m3/feaddDisplay.log b/src/Specific/solinas64_2e213m3/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e213m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/feaddDisplay.v b/src/Specific/solinas64_2e213m3/feaddDisplay.v
deleted file mode 100644
index 34341ef8a..000000000
--- a/src/Specific/solinas64_2e213m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e213m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e213m3/femul.c b/src/Specific/solinas64_2e213m3/femul.c
deleted file mode 100644
index 9b8555ac6..000000000
--- a/src/Specific/solinas64_2e213m3/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x3 * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x3 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x3 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x36);
- { uint64_t x21 = ((uint64_t)x19 & 0x3fffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x35);
- { uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x35);
- { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x35);
- { uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- { uint64_t x31 = (x21 + (0x3 * x29));
- { uint64_t x32 = (x31 >> 0x36);
- { uint64_t x33 = (x31 & 0x3fffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x35);
- { uint64_t x36 = (x34 & 0x1fffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e213m3/femul.v b/src/Specific/solinas64_2e213m3/femul.v
deleted file mode 100644
index 4015e75ec..000000000
--- a/src/Specific/solinas64_2e213m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e213m3/femulDisplay.log b/src/Specific/solinas64_2e213m3/femulDisplay.log
deleted file mode 100644
index 49daa0df9..000000000
--- a/src/Specific/solinas64_2e213m3/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x3 * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x3 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x3 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x36);
- uint64_t x21 = ((uint64_t)x19 & 0x3fffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x35);
- uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x35);
- uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x35);
- uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- uint64_t x31 = (x21 + (0x3 * x29));
- uint64_t x32 = (x31 >> 0x36);
- uint64_t x33 = (x31 & 0x3fffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x35);
- uint64_t x36 = (x34 & 0x1fffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/femulDisplay.v b/src/Specific/solinas64_2e213m3/femulDisplay.v
deleted file mode 100644
index 586758dfe..000000000
--- a/src/Specific/solinas64_2e213m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e213m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e213m3/fesquare.c b/src/Specific/solinas64_2e213m3/fesquare.c
deleted file mode 100644
index f7dd12ecc..000000000
--- a/src/Specific/solinas64_2e213m3/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x36);
- { uint64_t x12 = ((uint64_t)x10 & 0x3fffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x35);
- { uint64_t x15 = ((uint64_t)x13 & 0x1fffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x35);
- { uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x35);
- { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- { uint64_t x22 = (x12 + (0x3 * x20));
- { uint64_t x23 = (x22 >> 0x36);
- { uint64_t x24 = (x22 & 0x3fffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x35);
- { uint64_t x27 = (x25 & 0x1fffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e213m3/fesquare.v b/src/Specific/solinas64_2e213m3/fesquare.v
deleted file mode 100644
index bab6cde1c..000000000
--- a/src/Specific/solinas64_2e213m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e213m3/fesquareDisplay.log b/src/Specific/solinas64_2e213m3/fesquareDisplay.log
deleted file mode 100644
index 290179681..000000000
--- a/src/Specific/solinas64_2e213m3/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x36);
- uint64_t x12 = ((uint64_t)x10 & 0x3fffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x35);
- uint64_t x15 = ((uint64_t)x13 & 0x1fffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x35);
- uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x35);
- uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- uint64_t x22 = (x12 + (0x3 * x20));
- uint64_t x23 = (x22 >> 0x36);
- uint64_t x24 = (x22 & 0x3fffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x35);
- uint64_t x27 = (x25 & 0x1fffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/fesquareDisplay.v b/src/Specific/solinas64_2e213m3/fesquareDisplay.v
deleted file mode 100644
index c69e35c73..000000000
--- a/src/Specific/solinas64_2e213m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e213m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e213m3/fesub.c b/src/Specific/solinas64_2e213m3/fesub.c
deleted file mode 100644
index e9653060b..000000000
--- a/src/Specific/solinas64_2e213m3/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x7ffffffffffffa + x5) - x11);
- out[1] = ((0x3ffffffffffffe + x7) - x13);
- out[2] = ((0x3ffffffffffffe + x9) - x15);
- out[3] = ((0x3ffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e213m3/fesub.v b/src/Specific/solinas64_2e213m3/fesub.v
deleted file mode 100644
index f8775eea8..000000000
--- a/src/Specific/solinas64_2e213m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e213m3/fesubDisplay.log b/src/Specific/solinas64_2e213m3/fesubDisplay.log
deleted file mode 100644
index 82e0dfabe..000000000
--- a/src/Specific/solinas64_2e213m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3ffffffffffffe + x8) - x14), ((0x3ffffffffffffe + x9) - x15), ((0x3ffffffffffffe + x7) - x13), ((0x7ffffffffffffa + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/fesubDisplay.v b/src/Specific/solinas64_2e213m3/fesubDisplay.v
deleted file mode 100644
index 16845b84f..000000000
--- a/src/Specific/solinas64_2e213m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e213m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e213m3/freeze.c b/src/Specific/solinas64_2e213m3/freeze.c
deleted file mode 100644
index b27bdee4d..000000000
--- a/src/Specific/solinas64_2e213m3/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffd);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1fffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1fffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1fffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x3ffffffffffffd);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x1fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x1fffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x1fffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e213m3/freeze.v b/src/Specific/solinas64_2e213m3/freeze.v
deleted file mode 100644
index c7d3cc6fc..000000000
--- a/src/Specific/solinas64_2e213m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e213m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e213m3/freezeDisplay.log b/src/Specific/solinas64_2e213m3/freezeDisplay.log
deleted file mode 100644
index 34d7db38c..000000000
--- a/src/Specific/solinas64_2e213m3/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffd);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1fffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1fffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1fffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x3ffffffffffffd);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x1fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x1fffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x1fffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/freezeDisplay.v b/src/Specific/solinas64_2e213m3/freezeDisplay.v
deleted file mode 100644
index f149478b0..000000000
--- a/src/Specific/solinas64_2e213m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e213m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e213m3/CurveParameters.v b/src/Specific/solinas64_2e213m3_4limbs/CurveParameters.v
index 7b8111f00..7b8111f00 100644
--- a/src/Specific/solinas64_2e213m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e213m3_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e213m3_4limbs/Synthesis.v b/src/Specific/solinas64_2e213m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..de828a7d0
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e213m3/compiler.sh b/src/Specific/solinas64_2e213m3_4limbs/compiler.sh
index c68891dc5..c68891dc5 100755
--- a/src/Specific/solinas64_2e213m3/compiler.sh
+++ b/src/Specific/solinas64_2e213m3_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e213m3/compilerxx.sh b/src/Specific/solinas64_2e213m3_4limbs/compilerxx.sh
index 7def363ac..7def363ac 100755
--- a/src/Specific/solinas64_2e213m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e213m3_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e213m3_4limbs/feadd.v b/src/Specific/solinas64_2e213m3_4limbs/feadd.v
new file mode 100644
index 000000000..101012963
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e213m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..e38902c92
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/femul.v b/src/Specific/solinas64_2e213m3_4limbs/femul.v
new file mode 100644
index 000000000..d284a273e
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/femulDisplay.v b/src/Specific/solinas64_2e213m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..1a937c23d
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/fesquare.v b/src/Specific/solinas64_2e213m3_4limbs/fesquare.v
new file mode 100644
index 000000000..de6e4f403
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e213m3_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2d4d3241d
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/fesub.v b/src/Specific/solinas64_2e213m3_4limbs/fesub.v
new file mode 100644
index 000000000..3a1543e98
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e213m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..1a554ee3e
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/freeze.v b/src/Specific/solinas64_2e213m3_4limbs/freeze.v
new file mode 100644
index 000000000..f53907624
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e213m3_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e213m3_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..5c3614d2d
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e213m3/py_interpreter.sh b/src/Specific/solinas64_2e213m3_4limbs/py_interpreter.sh
index b5cfeaa3c..b5cfeaa3c 100755
--- a/src/Specific/solinas64_2e213m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e213m3_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e213m3_5limbs/CurveParameters.v b/src/Specific/solinas64_2e213m3_5limbs/CurveParameters.v
new file mode 100644
index 000000000..f242d4915
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^213 - 3
+Base: 42.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 42 + 3/5;
+ bitwidth := 64;
+ s := 2^213;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/Synthesis.v b/src/Specific/solinas64_2e213m3_5limbs/Synthesis.v
new file mode 100644
index 000000000..44bd89be0
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/compiler.sh b/src/Specific/solinas64_2e213m3_5limbs/compiler.sh
new file mode 100755
index 000000000..9c967650e
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,42}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas64_2e213m3_5limbs/compilerxx.sh b/src/Specific/solinas64_2e213m3_5limbs/compilerxx.sh
new file mode 100755
index 000000000..bb313c9be
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,42}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<213) - 3' "$@"
diff --git a/src/Specific/solinas64_2e213m3_5limbs/feadd.v b/src/Specific/solinas64_2e213m3_5limbs/feadd.v
new file mode 100644
index 000000000..4b64bd65f
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e213m3_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..494f2bee7
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/femul.v b/src/Specific/solinas64_2e213m3_5limbs/femul.v
new file mode 100644
index 000000000..472836cf1
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/femulDisplay.v b/src/Specific/solinas64_2e213m3_5limbs/femulDisplay.v
new file mode 100644
index 000000000..3edcf015d
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesquare.v b/src/Specific/solinas64_2e213m3_5limbs/fesquare.v
new file mode 100644
index 000000000..c10c49b5a
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e213m3_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..40625ee3b
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesub.v b/src/Specific/solinas64_2e213m3_5limbs/fesub.v
new file mode 100644
index 000000000..e6ce10c3d
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..5e732a736
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/freeze.v b/src/Specific/solinas64_2e213m3_5limbs/freeze.v
new file mode 100644
index 000000000..e889a6c81
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..4e2f03c45
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e213m3_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e213m3_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e213m3_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..773ba89a7
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**213 - 3' -Dmodulus_bytes='42.6' -Da24='121665'
diff --git a/src/Specific/solinas64_2e216m2e108m1/Synthesis.v b/src/Specific/solinas64_2e216m2e108m1/Synthesis.v
deleted file mode 100644
index d98e57c9f..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e216m2e108m1/feadd.c b/src/Specific/solinas64_2e216m2e108m1/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e216m2e108m1/feadd.v b/src/Specific/solinas64_2e216m2e108m1/feadd.v
deleted file mode 100644
index 26e73925d..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log b/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.v b/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.v
deleted file mode 100644
index bb8b72c20..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e216m2e108m1/femul.c b/src/Specific/solinas64_2e216m2e108m1/femul.c
deleted file mode 100644
index 94f4a962f..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/femul.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)(x7 + x8) * (x13 + x14)) - ((uint128_t)x7 * x13));
- { uint128_t x17 = ((((uint128_t)(x5 + x9) * (x13 + x14)) + ((uint128_t)(x7 + x8) * (x11 + x15))) - (((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)));
- { uint128_t x18 = (((uint128_t)(x5 + x9) * (x11 + x15)) - ((uint128_t)x5 * x11));
- { uint128_t x19 = (((((uint128_t)x7 * x13) + ((uint128_t)x8 * x14)) + x18) + x16);
- { uint128_t x20 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)));
- { uint128_t x21 = ((((uint128_t)x5 * x11) + ((uint128_t)x9 * x15)) + x16);
- { uint64_t x22 = (uint64_t) (x20 >> 0x36);
- { uint64_t x23 = ((uint64_t)x20 & 0x3fffffffffffff);
- { uint64_t x24 = (uint64_t) (x17 >> 0x36);
- { uint64_t x25 = ((uint64_t)x17 & 0x3fffffffffffff);
- { uint128_t x26 = (((uint128_t)0x40000000000000 * x24) + x25);
- { uint64_t x27 = (uint64_t) (x26 >> 0x36);
- { uint64_t x28 = ((uint64_t)x26 & 0x3fffffffffffff);
- { uint128_t x29 = ((x22 + x19) + x27);
- { uint64_t x30 = (uint64_t) (x29 >> 0x36);
- { uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
- { uint128_t x32 = (x21 + x27);
- { uint64_t x33 = (uint64_t) (x32 >> 0x36);
- { uint64_t x34 = ((uint64_t)x32 & 0x3fffffffffffff);
- { uint64_t x35 = (x30 + x28);
- { uint64_t x36 = (x35 >> 0x36);
- { uint64_t x37 = (x35 & 0x3fffffffffffff);
- { uint64_t x38 = (x33 + x23);
- { uint64_t x39 = (x38 >> 0x36);
- { uint64_t x40 = (x38 & 0x3fffffffffffff);
- { uint64_t x41 = ((0x40000000000000 * x36) + x37);
- { uint64_t x42 = (x41 >> 0x36);
- { uint64_t x43 = (x41 & 0x3fffffffffffff);
- { uint64_t x44 = ((x39 + x31) + x42);
- { uint64_t x45 = (x44 >> 0x36);
- { uint64_t x46 = (x44 & 0x3fffffffffffff);
- { uint64_t x47 = (x34 + x42);
- { uint64_t x48 = (x47 >> 0x36);
- { uint64_t x49 = (x47 & 0x3fffffffffffff);
- out[0] = x49;
- out[1] = (x48 + x40);
- out[2] = x46;
- out[3] = (x45 + x43);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e216m2e108m1/femul.v b/src/Specific/solinas64_2e216m2e108m1/femul.v
deleted file mode 100644
index 103102556..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1/femulDisplay.log b/src/Specific/solinas64_2e216m2e108m1/femulDisplay.log
deleted file mode 100644
index 8c6d5ef99..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/femulDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)(x7 + x8) * (x13 + x14)) - ((uint128_t)x7 * x13));
- uint128_t x17 = ((((uint128_t)(x5 + x9) * (x13 + x14)) + ((uint128_t)(x7 + x8) * (x11 + x15))) - (((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)));
- uint128_t x18 = (((uint128_t)(x5 + x9) * (x11 + x15)) - ((uint128_t)x5 * x11));
- uint128_t x19 = (((((uint128_t)x7 * x13) + ((uint128_t)x8 * x14)) + x18) + x16);
- uint128_t x20 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15)));
- uint128_t x21 = ((((uint128_t)x5 * x11) + ((uint128_t)x9 * x15)) + x16);
- uint64_t x22 = (uint64_t) (x20 >> 0x36);
- uint64_t x23 = ((uint64_t)x20 & 0x3fffffffffffff);
- uint64_t x24 = (uint64_t) (x17 >> 0x36);
- uint64_t x25 = ((uint64_t)x17 & 0x3fffffffffffff);
- uint128_t x26 = (((uint128_t)0x40000000000000 * x24) + x25);
- uint64_t x27 = (uint64_t) (x26 >> 0x36);
- uint64_t x28 = ((uint64_t)x26 & 0x3fffffffffffff);
- uint128_t x29 = ((x22 + x19) + x27);
- uint64_t x30 = (uint64_t) (x29 >> 0x36);
- uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
- uint128_t x32 = (x21 + x27);
- uint64_t x33 = (uint64_t) (x32 >> 0x36);
- uint64_t x34 = ((uint64_t)x32 & 0x3fffffffffffff);
- uint64_t x35 = (x30 + x28);
- uint64_t x36 = (x35 >> 0x36);
- uint64_t x37 = (x35 & 0x3fffffffffffff);
- uint64_t x38 = (x33 + x23);
- uint64_t x39 = (x38 >> 0x36);
- uint64_t x40 = (x38 & 0x3fffffffffffff);
- uint64_t x41 = ((0x40000000000000 * x36) + x37);
- uint64_t x42 = (x41 >> 0x36);
- uint64_t x43 = (x41 & 0x3fffffffffffff);
- uint64_t x44 = ((x39 + x31) + x42);
- uint64_t x45 = (x44 >> 0x36);
- uint64_t x46 = (x44 & 0x3fffffffffffff);
- uint64_t x47 = (x34 + x42);
- uint64_t x48 = (x47 >> 0x36);
- uint64_t x49 = (x47 & 0x3fffffffffffff);
- return ((x45 + x43), Return x46, (x48 + x40), Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v b/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v
deleted file mode 100644
index acbeab03f..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquare.c b/src/Specific/solinas64_2e216m2e108m1/fesquare.c
deleted file mode 100644
index de35400a3..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesquare.c
+++ /dev/null
@@ -1,45 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)(x4 + x5) * (x4 + x5)) - ((uint128_t)x4 * x4));
- { uint128_t x8 = ((((uint128_t)(x2 + x6) * (x4 + x5)) + ((uint128_t)(x4 + x5) * (x2 + x6))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- { uint128_t x9 = (((uint128_t)(x2 + x6) * (x2 + x6)) - ((uint128_t)x2 * x2));
- { uint128_t x10 = (((((uint128_t)x4 * x4) + ((uint128_t)x5 * x5)) + x9) + x7);
- { uint128_t x11 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)));
- { uint128_t x12 = ((((uint128_t)x2 * x2) + ((uint128_t)x6 * x6)) + x7);
- { uint64_t x13 = (uint64_t) (x11 >> 0x36);
- { uint64_t x14 = ((uint64_t)x11 & 0x3fffffffffffff);
- { uint64_t x15 = (uint64_t) (x8 >> 0x36);
- { uint64_t x16 = ((uint64_t)x8 & 0x3fffffffffffff);
- { uint128_t x17 = (((uint128_t)0x40000000000000 * x15) + x16);
- { uint64_t x18 = (uint64_t) (x17 >> 0x36);
- { uint64_t x19 = ((uint64_t)x17 & 0x3fffffffffffff);
- { uint128_t x20 = ((x13 + x10) + x18);
- { uint64_t x21 = (uint64_t) (x20 >> 0x36);
- { uint64_t x22 = ((uint64_t)x20 & 0x3fffffffffffff);
- { uint128_t x23 = (x12 + x18);
- { uint64_t x24 = (uint64_t) (x23 >> 0x36);
- { uint64_t x25 = ((uint64_t)x23 & 0x3fffffffffffff);
- { uint64_t x26 = (x21 + x19);
- { uint64_t x27 = (x26 >> 0x36);
- { uint64_t x28 = (x26 & 0x3fffffffffffff);
- { uint64_t x29 = (x24 + x14);
- { uint64_t x30 = (x29 >> 0x36);
- { uint64_t x31 = (x29 & 0x3fffffffffffff);
- { uint64_t x32 = ((0x40000000000000 * x27) + x28);
- { uint64_t x33 = (x32 >> 0x36);
- { uint64_t x34 = (x32 & 0x3fffffffffffff);
- { uint64_t x35 = ((x30 + x22) + x33);
- { uint64_t x36 = (x35 >> 0x36);
- { uint64_t x37 = (x35 & 0x3fffffffffffff);
- { uint64_t x38 = (x25 + x33);
- { uint64_t x39 = (x38 >> 0x36);
- { uint64_t x40 = (x38 & 0x3fffffffffffff);
- out[0] = x40;
- out[1] = (x39 + x31);
- out[2] = x37;
- out[3] = (x36 + x34);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquare.v b/src/Specific/solinas64_2e216m2e108m1/fesquare.v
deleted file mode 100644
index f813b25fb..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.log b/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.log
deleted file mode 100644
index 37171ab4c..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.log
+++ /dev/null
@@ -1,41 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)(x4 + x5) * (x4 + x5)) - ((uint128_t)x4 * x4));
- uint128_t x8 = ((((uint128_t)(x2 + x6) * (x4 + x5)) + ((uint128_t)(x4 + x5) * (x2 + x6))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- uint128_t x9 = (((uint128_t)(x2 + x6) * (x2 + x6)) - ((uint128_t)x2 * x2));
- uint128_t x10 = (((((uint128_t)x4 * x4) + ((uint128_t)x5 * x5)) + x9) + x7);
- uint128_t x11 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6)));
- uint128_t x12 = ((((uint128_t)x2 * x2) + ((uint128_t)x6 * x6)) + x7);
- uint64_t x13 = (uint64_t) (x11 >> 0x36);
- uint64_t x14 = ((uint64_t)x11 & 0x3fffffffffffff);
- uint64_t x15 = (uint64_t) (x8 >> 0x36);
- uint64_t x16 = ((uint64_t)x8 & 0x3fffffffffffff);
- uint128_t x17 = (((uint128_t)0x40000000000000 * x15) + x16);
- uint64_t x18 = (uint64_t) (x17 >> 0x36);
- uint64_t x19 = ((uint64_t)x17 & 0x3fffffffffffff);
- uint128_t x20 = ((x13 + x10) + x18);
- uint64_t x21 = (uint64_t) (x20 >> 0x36);
- uint64_t x22 = ((uint64_t)x20 & 0x3fffffffffffff);
- uint128_t x23 = (x12 + x18);
- uint64_t x24 = (uint64_t) (x23 >> 0x36);
- uint64_t x25 = ((uint64_t)x23 & 0x3fffffffffffff);
- uint64_t x26 = (x21 + x19);
- uint64_t x27 = (x26 >> 0x36);
- uint64_t x28 = (x26 & 0x3fffffffffffff);
- uint64_t x29 = (x24 + x14);
- uint64_t x30 = (x29 >> 0x36);
- uint64_t x31 = (x29 & 0x3fffffffffffff);
- uint64_t x32 = ((0x40000000000000 * x27) + x28);
- uint64_t x33 = (x32 >> 0x36);
- uint64_t x34 = (x32 & 0x3fffffffffffff);
- uint64_t x35 = ((x30 + x22) + x33);
- uint64_t x36 = (x35 >> 0x36);
- uint64_t x37 = (x35 & 0x3fffffffffffff);
- uint64_t x38 = (x25 + x33);
- uint64_t x39 = (x38 >> 0x36);
- uint64_t x40 = (x38 & 0x3fffffffffffff);
- return ((x36 + x34), Return x37, (x39 + x31), Return x40))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v b/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v
deleted file mode 100644
index f0f5c22f9..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesub.c b/src/Specific/solinas64_2e216m2e108m1/fesub.c
deleted file mode 100644
index c532fb2a6..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x7ffffffffffffe + x5) - x11);
- out[1] = ((0x7ffffffffffffe + x7) - x13);
- out[2] = ((0x7ffffffffffffc + x9) - x15);
- out[3] = ((0x7ffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesub.v b/src/Specific/solinas64_2e216m2e108m1/fesub.v
deleted file mode 100644
index e8abe0d41..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log b/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log
deleted file mode 100644
index 00f2ffde6..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x7ffffffffffffe + x8) - x14), ((0x7ffffffffffffc + x9) - x15), ((0x7ffffffffffffe + x7) - x13), ((0x7ffffffffffffe + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.v b/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.v
deleted file mode 100644
index 184f25b38..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1/freeze.c b/src/Specific/solinas64_2e216m2e108m1/freeze.c
deleted file mode 100644
index e653cc54b..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffff);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3fffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffffe);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3fffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x3fffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x3fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x3ffffffffffffe);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x3fffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e216m2e108m1/freeze.v b/src/Specific/solinas64_2e216m2e108m1/freeze.v
deleted file mode 100644
index 90e0205ac..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.log b/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.log
deleted file mode 100644
index 380efd4d5..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffff);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x3fffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffffe);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3fffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x3fffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x3fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x3ffffffffffffe);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x3fffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v b/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v
deleted file mode 100644
index 317f1086c..000000000
--- a/src/Specific/solinas64_2e216m2e108m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e216m2e108m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1/CurveParameters.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/CurveParameters.v
index e60d40411..e60d40411 100644
--- a/src/Specific/solinas64_2e216m2e108m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/Synthesis.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/Synthesis.v
new file mode 100644
index 000000000..06ebf3623
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e216m2e108m1/compiler.sh b/src/Specific/solinas64_2e216m2e108m1_4limbs/compiler.sh
index 43158b8cc..43158b8cc 100755
--- a/src/Specific/solinas64_2e216m2e108m1/compiler.sh
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e216m2e108m1/compilerxx.sh b/src/Specific/solinas64_2e216m2e108m1_4limbs/compilerxx.sh
index 6c571fd26..6c571fd26 100755
--- a/src/Specific/solinas64_2e216m2e108m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/feadd.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/feadd.v
new file mode 100644
index 000000000..12a8f3766
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..ffdf79e7f
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/femul.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/femul.v
new file mode 100644
index 000000000..3cbdb557d
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/femulDisplay.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/femulDisplay.v
new file mode 100644
index 000000000..de3b30844
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquare.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquare.v
new file mode 100644
index 000000000..3f5a7c006
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f44d45ec6
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/fesub.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesub.v
new file mode 100644
index 000000000..8a6b726a6
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..75181739a
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/freeze.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/freeze.v
new file mode 100644
index 000000000..6fc0d5ac4
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e216m2e108m1_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..ea483b3ca
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1/py_interpreter.sh b/src/Specific/solinas64_2e216m2e108m1_4limbs/py_interpreter.sh
index 9af1051cf..9af1051cf 100755
--- a/src/Specific/solinas64_2e216m2e108m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e216m2e108m1_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/CurveParameters.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/CurveParameters.v
new file mode 100644
index 000000000..d919654e6
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^216 - 2^108 - 1
+Base: 43.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 43 + 1/5;
+ bitwidth := 64;
+ s := 2^216;
+ c := [(1, 1); (2^108, 1)];
+ carry_chains := Some [[1; 4]; [2; 0; 3; 1; 4]; [2; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/Synthesis.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/Synthesis.v
new file mode 100644
index 000000000..bb8d9c981
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/compiler.sh b/src/Specific/solinas64_2e216m2e108m1_5limbs/compiler.sh
new file mode 100755
index 000000000..913fa1610
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43,43,43}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1' "$@"
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/compilerxx.sh b/src/Specific/solinas64_2e216m2e108m1_5limbs/compilerxx.sh
new file mode 100755
index 000000000..d6f2820e6
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{44,43,43,43,43}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='27' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<216) - (1_mpz<<108) - 1' "$@"
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/feadd.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/feadd.v
new file mode 100644
index 000000000..f804f3d60
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..5696240d1
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/femul.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/femul.v
new file mode 100644
index 000000000..da89f5741
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/femulDisplay.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/femulDisplay.v
new file mode 100644
index 000000000..15e90d107
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquare.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquare.v
new file mode 100644
index 000000000..836409b94
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..18e2a55e7
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.v
new file mode 100644
index 000000000..8cb2bccbe
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..1256cc6e0
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/freeze.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/freeze.v
new file mode 100644
index 000000000..388ad737f
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e216m2e108m1_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..0a76fa837
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e216m2e108m1_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e216m2e108m1_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..7acbf815b
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**216 - 2**108 - 1' -Dmodulus_bytes='43.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e221m3/Synthesis.v b/src/Specific/solinas64_2e221m3/Synthesis.v
deleted file mode 100644
index 74abf23e4..000000000
--- a/src/Specific/solinas64_2e221m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e221m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e221m3/feadd.c b/src/Specific/solinas64_2e221m3/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e221m3/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e221m3/feadd.v b/src/Specific/solinas64_2e221m3/feadd.v
deleted file mode 100644
index e670093a9..000000000
--- a/src/Specific/solinas64_2e221m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e221m3/feaddDisplay.log b/src/Specific/solinas64_2e221m3/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e221m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/feaddDisplay.v b/src/Specific/solinas64_2e221m3/feaddDisplay.v
deleted file mode 100644
index 1907777a4..000000000
--- a/src/Specific/solinas64_2e221m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e221m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e221m3/femul.c b/src/Specific/solinas64_2e221m3/femul.c
deleted file mode 100644
index 57b54ec37..000000000
--- a/src/Specific/solinas64_2e221m3/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x3 * ((uint128_t)x8 * x14)));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x3 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x3 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint64_t x23 = (uint64_t) (x22 >> 0x37);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x37);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x37);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- { uint64_t x31 = (x21 + (0x3 * x29));
- { uint64_t x32 = (x31 >> 0x38);
- { uint64_t x33 = (x31 & 0xffffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x37);
- { uint64_t x36 = (x34 & 0x7fffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e221m3/femul.v b/src/Specific/solinas64_2e221m3/femul.v
deleted file mode 100644
index aa8fca1d0..000000000
--- a/src/Specific/solinas64_2e221m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e221m3/femulDisplay.log b/src/Specific/solinas64_2e221m3/femulDisplay.log
deleted file mode 100644
index 4644f56a2..000000000
--- a/src/Specific/solinas64_2e221m3/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + ((0x2 * ((uint128_t)x7 * x15)) + ((0x2 * ((uint128_t)x9 * x13)) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x3 * ((uint128_t)x8 * x14)));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x3 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x3 * ((0x2 * ((uint128_t)x7 * x14)) + ((0x2 * ((uint128_t)x9 * x15)) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint64_t x23 = (uint64_t) (x22 >> 0x37);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x37);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x37);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- uint64_t x31 = (x21 + (0x3 * x29));
- uint64_t x32 = (x31 >> 0x38);
- uint64_t x33 = (x31 & 0xffffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x37);
- uint64_t x36 = (x34 & 0x7fffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/femulDisplay.v b/src/Specific/solinas64_2e221m3/femulDisplay.v
deleted file mode 100644
index 76aa68781..000000000
--- a/src/Specific/solinas64_2e221m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e221m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e221m3/fesquare.c b/src/Specific/solinas64_2e221m3/fesquare.c
deleted file mode 100644
index 5ea9ea22a..000000000
--- a/src/Specific/solinas64_2e221m3/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((uint128_t)x5 * x5)));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x38);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint64_t x14 = (uint64_t) (x13 >> 0x37);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x37);
- { uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x37);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- { uint64_t x22 = (x12 + (0x3 * x20));
- { uint64_t x23 = (x22 >> 0x38);
- { uint64_t x24 = (x22 & 0xffffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x37);
- { uint64_t x27 = (x25 & 0x7fffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e221m3/fesquare.v b/src/Specific/solinas64_2e221m3/fesquare.v
deleted file mode 100644
index b3b789da0..000000000
--- a/src/Specific/solinas64_2e221m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e221m3/fesquareDisplay.log b/src/Specific/solinas64_2e221m3/fesquareDisplay.log
deleted file mode 100644
index 36ad83440..000000000
--- a/src/Specific/solinas64_2e221m3/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((uint128_t)x5 * x5)));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x5)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x38);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint64_t x14 = (uint64_t) (x13 >> 0x37);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x37);
- uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x37);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- uint64_t x22 = (x12 + (0x3 * x20));
- uint64_t x23 = (x22 >> 0x38);
- uint64_t x24 = (x22 & 0xffffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x37);
- uint64_t x27 = (x25 & 0x7fffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/fesquareDisplay.v b/src/Specific/solinas64_2e221m3/fesquareDisplay.v
deleted file mode 100644
index 27cf9549a..000000000
--- a/src/Specific/solinas64_2e221m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e221m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e221m3/fesub.c b/src/Specific/solinas64_2e221m3/fesub.c
deleted file mode 100644
index 3f3468539..000000000
--- a/src/Specific/solinas64_2e221m3/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1fffffffffffffa + x5) - x11);
- out[1] = ((0xfffffffffffffe + x7) - x13);
- out[2] = ((0xfffffffffffffe + x9) - x15);
- out[3] = ((0xfffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e221m3/fesub.v b/src/Specific/solinas64_2e221m3/fesub.v
deleted file mode 100644
index 1902e1f5d..000000000
--- a/src/Specific/solinas64_2e221m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e221m3/fesubDisplay.log b/src/Specific/solinas64_2e221m3/fesubDisplay.log
deleted file mode 100644
index f1c4eacf9..000000000
--- a/src/Specific/solinas64_2e221m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffffffe + x8) - x14), ((0xfffffffffffffe + x9) - x15), ((0xfffffffffffffe + x7) - x13), ((0x1fffffffffffffa + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/fesubDisplay.v b/src/Specific/solinas64_2e221m3/fesubDisplay.v
deleted file mode 100644
index 9f3383b65..000000000
--- a/src/Specific/solinas64_2e221m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e221m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e221m3/freeze.c b/src/Specific/solinas64_2e221m3/freeze.c
deleted file mode 100644
index b05893fd6..000000000
--- a/src/Specific/solinas64_2e221m3/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7fffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xfffffffffffffd);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x7fffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7fffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e221m3/freeze.v b/src/Specific/solinas64_2e221m3/freeze.v
deleted file mode 100644
index bb778b4e0..000000000
--- a/src/Specific/solinas64_2e221m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e221m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e221m3/freezeDisplay.log b/src/Specific/solinas64_2e221m3/freezeDisplay.log
deleted file mode 100644
index 6c22bf989..000000000
--- a/src/Specific/solinas64_2e221m3/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7fffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xfffffffffffffd);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x7fffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7fffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/freezeDisplay.v b/src/Specific/solinas64_2e221m3/freezeDisplay.v
deleted file mode 100644
index 82c507e1d..000000000
--- a/src/Specific/solinas64_2e221m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e221m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e221m3/CurveParameters.v b/src/Specific/solinas64_2e221m3_4limbs/CurveParameters.v
index b6c3b8c1a..b6c3b8c1a 100644
--- a/src/Specific/solinas64_2e221m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e221m3_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e221m3_4limbs/Synthesis.v b/src/Specific/solinas64_2e221m3_4limbs/Synthesis.v
new file mode 100644
index 000000000..6fe2d9a16
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e221m3/compiler.sh b/src/Specific/solinas64_2e221m3_4limbs/compiler.sh
index ff798d7d4..ff798d7d4 100755
--- a/src/Specific/solinas64_2e221m3/compiler.sh
+++ b/src/Specific/solinas64_2e221m3_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e221m3/compilerxx.sh b/src/Specific/solinas64_2e221m3_4limbs/compilerxx.sh
index 5a3d66ee7..5a3d66ee7 100755
--- a/src/Specific/solinas64_2e221m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e221m3_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e221m3_4limbs/feadd.v b/src/Specific/solinas64_2e221m3_4limbs/feadd.v
new file mode 100644
index 000000000..f371d325e
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e221m3_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..651da7ed5
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/femul.v b/src/Specific/solinas64_2e221m3_4limbs/femul.v
new file mode 100644
index 000000000..4916f12c9
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/femulDisplay.v b/src/Specific/solinas64_2e221m3_4limbs/femulDisplay.v
new file mode 100644
index 000000000..f849417ce
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/fesquare.v b/src/Specific/solinas64_2e221m3_4limbs/fesquare.v
new file mode 100644
index 000000000..5391862a8
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e221m3_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6263517d9
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/fesub.v b/src/Specific/solinas64_2e221m3_4limbs/fesub.v
new file mode 100644
index 000000000..2c9d34d5c
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e221m3_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..7ec4ac5ec
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/freeze.v b/src/Specific/solinas64_2e221m3_4limbs/freeze.v
new file mode 100644
index 000000000..bc739d8c0
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e221m3_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e221m3_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..6a10d5939
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e221m3/py_interpreter.sh b/src/Specific/solinas64_2e221m3_4limbs/py_interpreter.sh
index 6bb3515d4..6bb3515d4 100755
--- a/src/Specific/solinas64_2e221m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e221m3_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e221m3_5limbs/CurveParameters.v b/src/Specific/solinas64_2e221m3_5limbs/CurveParameters.v
new file mode 100644
index 000000000..4805f424e
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^221 - 3
+Base: 44.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 44 + 1/5;
+ bitwidth := 64;
+ s := 2^221;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/Synthesis.v b/src/Specific/solinas64_2e221m3_5limbs/Synthesis.v
new file mode 100644
index 000000000..94c74b883
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/compiler.sh b/src/Specific/solinas64_2e221m3_5limbs/compiler.sh
new file mode 100755
index 000000000..238549442
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,44,44}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas64_2e221m3_5limbs/compilerxx.sh b/src/Specific/solinas64_2e221m3_5limbs/compilerxx.sh
new file mode 100755
index 000000000..fff7a390f
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,44,44}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<221) - 3' "$@"
diff --git a/src/Specific/solinas64_2e221m3_5limbs/feadd.v b/src/Specific/solinas64_2e221m3_5limbs/feadd.v
new file mode 100644
index 000000000..4788cddb6
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e221m3_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..dfa55f49c
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/femul.v b/src/Specific/solinas64_2e221m3_5limbs/femul.v
new file mode 100644
index 000000000..90a798c09
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/femulDisplay.v b/src/Specific/solinas64_2e221m3_5limbs/femulDisplay.v
new file mode 100644
index 000000000..923bbb6e0
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesquare.v b/src/Specific/solinas64_2e221m3_5limbs/fesquare.v
new file mode 100644
index 000000000..81ad58367
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e221m3_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a688f7145
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesub.v b/src/Specific/solinas64_2e221m3_5limbs/fesub.v
new file mode 100644
index 000000000..c8552014d
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..2c0b73408
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/freeze.v b/src/Specific/solinas64_2e221m3_5limbs/freeze.v
new file mode 100644
index 000000000..8d2e05c56
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e221m3_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..d3b8588c1
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e221m3_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e221m3_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e221m3_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..e60a140c6
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**221 - 3' -Dmodulus_bytes='44.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e222m117/Synthesis.v b/src/Specific/solinas64_2e222m117/Synthesis.v
deleted file mode 100644
index 2cbf2f98a..000000000
--- a/src/Specific/solinas64_2e222m117/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e222m117.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e222m117/feadd.c b/src/Specific/solinas64_2e222m117/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e222m117/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e222m117/feadd.v b/src/Specific/solinas64_2e222m117/feadd.v
deleted file mode 100644
index 9c7149cd6..000000000
--- a/src/Specific/solinas64_2e222m117/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e222m117/feaddDisplay.log b/src/Specific/solinas64_2e222m117/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e222m117/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/feaddDisplay.v b/src/Specific/solinas64_2e222m117/feaddDisplay.v
deleted file mode 100644
index 6bfb61c2c..000000000
--- a/src/Specific/solinas64_2e222m117/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e222m117.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e222m117/femul.c b/src/Specific/solinas64_2e222m117/femul.c
deleted file mode 100644
index db1b7c285..000000000
--- a/src/Specific/solinas64_2e222m117/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x75 * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x75 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x75 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint128_t x20 = (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint128_t x23 = (x22 >> 0x37);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint128_t x26 = (x25 >> 0x38);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x37);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- { uint128_t x31 = (x21 + ((uint128_t)0x75 * x29));
- { uint64_t x32 = (uint64_t) (x31 >> 0x38);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x37);
- { uint64_t x36 = (x34 & 0x7fffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e222m117/femul.v b/src/Specific/solinas64_2e222m117/femul.v
deleted file mode 100644
index 56e0d14d3..000000000
--- a/src/Specific/solinas64_2e222m117/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e222m117/femulDisplay.log b/src/Specific/solinas64_2e222m117/femulDisplay.log
deleted file mode 100644
index 5f2033ad6..000000000
--- a/src/Specific/solinas64_2e222m117/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x75 * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x75 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x75 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint128_t x20 = (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint128_t x23 = (x22 >> 0x37);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint128_t x26 = (x25 >> 0x38);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x37);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- uint128_t x31 = (x21 + ((uint128_t)0x75 * x29));
- uint64_t x32 = (uint64_t) (x31 >> 0x38);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x37);
- uint64_t x36 = (x34 & 0x7fffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/femulDisplay.v b/src/Specific/solinas64_2e222m117/femulDisplay.v
deleted file mode 100644
index aaa0fc7e7..000000000
--- a/src/Specific/solinas64_2e222m117/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e222m117.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e222m117/fesquare.c b/src/Specific/solinas64_2e222m117/fesquare.c
deleted file mode 100644
index ffaeac9af..000000000
--- a/src/Specific/solinas64_2e222m117/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x75 * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x75 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x75 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint128_t x11 = (x10 >> 0x38);
- { uint64_t x12 = ((uint64_t)x10 & 0xffffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint128_t x14 = (x13 >> 0x37);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint128_t x17 = (x16 >> 0x38);
- { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x37);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- { uint128_t x22 = (x12 + ((uint128_t)0x75 * x20));
- { uint64_t x23 = (uint64_t) (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x37);
- { uint64_t x27 = (x25 & 0x7fffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e222m117/fesquare.v b/src/Specific/solinas64_2e222m117/fesquare.v
deleted file mode 100644
index bb3bcb00f..000000000
--- a/src/Specific/solinas64_2e222m117/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e222m117/fesquareDisplay.log b/src/Specific/solinas64_2e222m117/fesquareDisplay.log
deleted file mode 100644
index 276d1a4b2..000000000
--- a/src/Specific/solinas64_2e222m117/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x75 * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x75 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x75 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint128_t x11 = (x10 >> 0x38);
- uint64_t x12 = ((uint64_t)x10 & 0xffffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint128_t x14 = (x13 >> 0x37);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint128_t x17 = (x16 >> 0x38);
- uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x37);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- uint128_t x22 = (x12 + ((uint128_t)0x75 * x20));
- uint64_t x23 = (uint64_t) (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x37);
- uint64_t x27 = (x25 & 0x7fffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/fesquareDisplay.v b/src/Specific/solinas64_2e222m117/fesquareDisplay.v
deleted file mode 100644
index 04d5ae461..000000000
--- a/src/Specific/solinas64_2e222m117/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e222m117.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e222m117/fesub.c b/src/Specific/solinas64_2e222m117/fesub.c
deleted file mode 100644
index 9e774a1b1..000000000
--- a/src/Specific/solinas64_2e222m117/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x1ffffffffffff16 + x5) - x11);
- out[1] = ((0xfffffffffffffe + x7) - x13);
- out[2] = ((0x1fffffffffffffe + x9) - x15);
- out[3] = ((0xfffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e222m117/fesub.v b/src/Specific/solinas64_2e222m117/fesub.v
deleted file mode 100644
index 0fb3b58ae..000000000
--- a/src/Specific/solinas64_2e222m117/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e222m117/fesubDisplay.log b/src/Specific/solinas64_2e222m117/fesubDisplay.log
deleted file mode 100644
index eb74f7a0d..000000000
--- a/src/Specific/solinas64_2e222m117/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffffffe + x8) - x14), ((0x1fffffffffffffe + x9) - x15), ((0xfffffffffffffe + x7) - x13), ((0x1ffffffffffff16 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/fesubDisplay.v b/src/Specific/solinas64_2e222m117/fesubDisplay.v
deleted file mode 100644
index e105c4234..000000000
--- a/src/Specific/solinas64_2e222m117/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e222m117.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e222m117/freeze.c b/src/Specific/solinas64_2e222m117/freeze.c
deleted file mode 100644
index 9c4d35595..000000000
--- a/src/Specific/solinas64_2e222m117/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff8b);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0xffffffffffff8b);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x7fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0xffffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x7fffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e222m117/freeze.v b/src/Specific/solinas64_2e222m117/freeze.v
deleted file mode 100644
index cd04b3dec..000000000
--- a/src/Specific/solinas64_2e222m117/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e222m117.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e222m117/freezeDisplay.log b/src/Specific/solinas64_2e222m117/freezeDisplay.log
deleted file mode 100644
index 2fd34e0f6..000000000
--- a/src/Specific/solinas64_2e222m117/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff8b);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7fffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0xffffffffffff8b);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x7fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0xffffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x7fffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/freezeDisplay.v b/src/Specific/solinas64_2e222m117/freezeDisplay.v
deleted file mode 100644
index dd83c8d47..000000000
--- a/src/Specific/solinas64_2e222m117/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e222m117.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e222m117/CurveParameters.v b/src/Specific/solinas64_2e222m117_4limbs/CurveParameters.v
index 2781a543c..2781a543c 100644
--- a/src/Specific/solinas64_2e222m117/CurveParameters.v
+++ b/src/Specific/solinas64_2e222m117_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e222m117_4limbs/Synthesis.v b/src/Specific/solinas64_2e222m117_4limbs/Synthesis.v
new file mode 100644
index 000000000..858e11fe8
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e222m117/compiler.sh b/src/Specific/solinas64_2e222m117_4limbs/compiler.sh
index 74133acbc..74133acbc 100755
--- a/src/Specific/solinas64_2e222m117/compiler.sh
+++ b/src/Specific/solinas64_2e222m117_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e222m117/compilerxx.sh b/src/Specific/solinas64_2e222m117_4limbs/compilerxx.sh
index d497b58e8..d497b58e8 100755
--- a/src/Specific/solinas64_2e222m117/compilerxx.sh
+++ b/src/Specific/solinas64_2e222m117_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e222m117_4limbs/feadd.v b/src/Specific/solinas64_2e222m117_4limbs/feadd.v
new file mode 100644
index 000000000..591c1e8b0
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e222m117_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..6ea369e68
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/femul.v b/src/Specific/solinas64_2e222m117_4limbs/femul.v
new file mode 100644
index 000000000..5adb3153c
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/femulDisplay.v b/src/Specific/solinas64_2e222m117_4limbs/femulDisplay.v
new file mode 100644
index 000000000..2e9d8ca5e
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/fesquare.v b/src/Specific/solinas64_2e222m117_4limbs/fesquare.v
new file mode 100644
index 000000000..fb6ae4d14
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e222m117_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..57d13e180
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/fesub.v b/src/Specific/solinas64_2e222m117_4limbs/fesub.v
new file mode 100644
index 000000000..b9d357374
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e222m117_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..2b65ecf7e
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/freeze.v b/src/Specific/solinas64_2e222m117_4limbs/freeze.v
new file mode 100644
index 000000000..42c4bc89f
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e222m117_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e222m117_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..29a613685
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e222m117/py_interpreter.sh b/src/Specific/solinas64_2e222m117_4limbs/py_interpreter.sh
index 8bcc9d070..8bcc9d070 100755
--- a/src/Specific/solinas64_2e222m117/py_interpreter.sh
+++ b/src/Specific/solinas64_2e222m117_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e222m117_5limbs/CurveParameters.v b/src/Specific/solinas64_2e222m117_5limbs/CurveParameters.v
new file mode 100644
index 000000000..f51465876
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^222 - 117
+Base: 44.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 44 + 2/5;
+ bitwidth := 64;
+ s := 2^222;
+ c := [(1, 117)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/Synthesis.v b/src/Specific/solinas64_2e222m117_5limbs/Synthesis.v
new file mode 100644
index 000000000..06a73b2c8
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/compiler.sh b/src/Specific/solinas64_2e222m117_5limbs/compiler.sh
new file mode 100755
index 000000000..3c0ca87c1
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,45,44,44}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<222) - 117' "$@"
diff --git a/src/Specific/solinas64_2e222m117_5limbs/compilerxx.sh b/src/Specific/solinas64_2e222m117_5limbs/compilerxx.sh
new file mode 100755
index 000000000..ff79385ef
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,45,44,44}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<222) - 117' "$@"
diff --git a/src/Specific/solinas64_2e222m117_5limbs/feadd.v b/src/Specific/solinas64_2e222m117_5limbs/feadd.v
new file mode 100644
index 000000000..b56700f2a
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e222m117_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..651bca903
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/femul.v b/src/Specific/solinas64_2e222m117_5limbs/femul.v
new file mode 100644
index 000000000..67007320c
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/femulDisplay.v b/src/Specific/solinas64_2e222m117_5limbs/femulDisplay.v
new file mode 100644
index 000000000..166c0675e
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesquare.v b/src/Specific/solinas64_2e222m117_5limbs/fesquare.v
new file mode 100644
index 000000000..6fe159e83
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e222m117_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f9664de27
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesub.v b/src/Specific/solinas64_2e222m117_5limbs/fesub.v
new file mode 100644
index 000000000..21836cd68
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..b494e5408
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/freeze.v b/src/Specific/solinas64_2e222m117_5limbs/freeze.v
new file mode 100644
index 000000000..872ea0ce2
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..24555eb19
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e222m117_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e222m117_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e222m117_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..fa530a078
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**222 - 117' -Dmodulus_bytes='44.4' -Da24='121665'
diff --git a/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v b/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v
deleted file mode 100644
index 32bf066b1..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^224 - 2^96 + 1
-Base: 56
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 4%nat;
- base := 56;
- bitwidth := 64;
- s := 2^224;
- c := [(1, -1); (2^96, 1)];
- carry_chains := Some [[0; 3]; [1; 0; 2; 3]; [1; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e224m2e96p1/Synthesis.v b/src/Specific/solinas64_2e224m2e96p1/Synthesis.v
deleted file mode 100644
index b2b342a2a..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e224m2e96p1/compiler.sh b/src/Specific/solinas64_2e224m2e96p1/compiler.sh
deleted file mode 100755
index 4b7ae8e5a..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1/compilerxx.sh b/src/Specific/solinas64_2e224m2e96p1/compilerxx.sh
deleted file mode 100755
index 9b2421b22..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,56,56}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1/feadd.c b/src/Specific/solinas64_2e224m2e96p1/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e224m2e96p1/feadd.v b/src/Specific/solinas64_2e224m2e96p1/feadd.v
deleted file mode 100644
index f99088d2c..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log b/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.v b/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.v
deleted file mode 100644
index 73c50f1c5..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e224m2e96p1/femul.v b/src/Specific/solinas64_2e224m2e96p1/femul.v
deleted file mode 100644
index 883ace718..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v b/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v
deleted file mode 100644
index 32a63986c..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1/fesquare.v b/src/Specific/solinas64_2e224m2e96p1/fesquare.v
deleted file mode 100644
index 41035d223..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v b/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v
deleted file mode 100644
index bdac77212..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e224m2e96p1/fesub.v b/src/Specific/solinas64_2e224m2e96p1/fesub.v
deleted file mode 100644
index f8f7df6de..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1/fesubDisplay.v b/src/Specific/solinas64_2e224m2e96p1/fesubDisplay.v
deleted file mode 100644
index fc0bcd1bc..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1/freeze.c b/src/Specific/solinas64_2e224m2e96p1/freeze.c
deleted file mode 100644
index 7228c2d33..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, ℤ x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 56 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffff0000000000);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint8_t x20 = ((uint8_t)x19 & 0x1);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0xffff0000000000);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0xffffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0xffffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e224m2e96p1/freeze.v b/src/Specific/solinas64_2e224m2e96p1/freeze.v
deleted file mode 100644
index cc1afe287..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.log b/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.log
deleted file mode 100644
index 00130badf..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, ℤ x9 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 56 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffff0000000000);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint8_t x20 = ((uint8_t)x19 & 0x1);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0xffff0000000000);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0xffffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0xffffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v b/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v
deleted file mode 100644
index e6b91534b..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e224m2e96p1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1/py_interpreter.sh b/src/Specific/solinas64_2e224m2e96p1/py_interpreter.sh
deleted file mode 100755
index 90728b246..000000000
--- a/src/Specific/solinas64_2e224m2e96p1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='56' -Da24='121665'
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/CurveParameters.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/CurveParameters.v
new file mode 100644
index 000000000..77da23e52
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^224 - 2^96 + 1
+Base: 44.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 44 + 4/5;
+ bitwidth := 64;
+ s := 2^224;
+ c := [(1, -1); (2^96, 1)];
+ carry_chains := Some [[1; 4]; [2; 0; 3; 1; 4]; [2; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/Synthesis.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/Synthesis.v
new file mode 100644
index 000000000..898a8f2bb
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/compiler.sh b/src/Specific/solinas64_2e224m2e96p1_5limbs/compiler.sh
new file mode 100755
index 000000000..e406ebc32
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/compilerxx.sh b/src/Specific/solinas64_2e224m2e96p1_5limbs/compilerxx.sh
new file mode 100755
index 000000000..518668c4d
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/feadd.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/feadd.v
new file mode 100644
index 000000000..79416d067
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..9b9de6003
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/femul.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/femul.v
new file mode 100644
index 000000000..24c302bc2
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/femulDisplay.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/femulDisplay.v
new file mode 100644
index 000000000..4ad58b459
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquare.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquare.v
new file mode 100644
index 000000000..fd71658c3
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..abbb96fd1
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/fesub.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesub.v
new file mode 100644
index 000000000..c20396fbc
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..0e61ade87
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.v
new file mode 100644
index 000000000..b43ca8351
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..46dc82d84
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e224m2e96p1_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..81d1e73f5
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='44.8' -Da24='121665'
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/CurveParameters.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/CurveParameters.v
new file mode 100644
index 000000000..1173c567f
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^224 - 2^96 + 1
+Base: 37 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 37 + 1/3;
+ bitwidth := 64;
+ s := 2^224;
+ c := [(1, -1); (2^96, 1)];
+ carry_chains := Some [[1; 5]; [2; 0; 3; 1; 4; 5]; [2; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/Synthesis.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/Synthesis.v
new file mode 100644
index 000000000..1cbaa38bf
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/compiler.sh b/src/Specific/solinas64_2e224m2e96p1_6limbs/compiler.sh
new file mode 100755
index 000000000..169c9a8e4
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,37,38,37,37}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/compilerxx.sh b/src/Specific/solinas64_2e224m2e96p1_6limbs/compilerxx.sh
new file mode 100755
index 000000000..73a450fb7
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{38,37,37,38,37,37}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01}' -Dmodulus_bytes_val='28' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<224) - (1_mpz<<96) + 1' "$@"
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.v
new file mode 100644
index 000000000..9731c6546
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..dc1802e2a
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/femul.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/femul.v
new file mode 100644
index 000000000..916268c4e
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/femulDisplay.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..bb61705a5
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquare.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquare.v
new file mode 100644
index 000000000..9416702f7
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..fc094c0ac
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/fesub.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesub.v
new file mode 100644
index 000000000..39813f86b
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..8ad7a7ba9
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.v
new file mode 100644
index 000000000..079e96214
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..077ca7c14
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e224m2e96p1_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e224m2e96p1_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..53405d403
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**224 - 2**96 + 1' -Dmodulus_bytes='37 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e226m5/Synthesis.v b/src/Specific/solinas64_2e226m5/Synthesis.v
deleted file mode 100644
index a1d599e8c..000000000
--- a/src/Specific/solinas64_2e226m5/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e226m5.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e226m5/feadd.c b/src/Specific/solinas64_2e226m5/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e226m5/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e226m5/feadd.v b/src/Specific/solinas64_2e226m5/feadd.v
deleted file mode 100644
index 7647b8bbf..000000000
--- a/src/Specific/solinas64_2e226m5/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e226m5/feaddDisplay.log b/src/Specific/solinas64_2e226m5/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e226m5/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/feaddDisplay.v b/src/Specific/solinas64_2e226m5/feaddDisplay.v
deleted file mode 100644
index 818f326c0..000000000
--- a/src/Specific/solinas64_2e226m5/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e226m5.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e226m5/femul.c b/src/Specific/solinas64_2e226m5/femul.c
deleted file mode 100644
index d92664251..000000000
--- a/src/Specific/solinas64_2e226m5/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x5 * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x5 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x5 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint64_t x20 = (uint64_t) (x19 >> 0x39);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint128_t x23 = (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x39);
- { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x38);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- { uint128_t x31 = (x21 + ((uint128_t)0x5 * x29));
- { uint64_t x32 = (uint64_t) (x31 >> 0x39);
- { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x38);
- { uint64_t x36 = (x34 & 0xffffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e226m5/femul.v b/src/Specific/solinas64_2e226m5/femul.v
deleted file mode 100644
index 9ee1a7e1b..000000000
--- a/src/Specific/solinas64_2e226m5/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e226m5/femulDisplay.log b/src/Specific/solinas64_2e226m5/femulDisplay.log
deleted file mode 100644
index bdc377b7d..000000000
--- a/src/Specific/solinas64_2e226m5/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x5 * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x5 * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x5 * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint64_t x20 = (uint64_t) (x19 >> 0x39);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint128_t x23 = (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x39);
- uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x38);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- uint128_t x31 = (x21 + ((uint128_t)0x5 * x29));
- uint64_t x32 = (uint64_t) (x31 >> 0x39);
- uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x38);
- uint64_t x36 = (x34 & 0xffffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/femulDisplay.v b/src/Specific/solinas64_2e226m5/femulDisplay.v
deleted file mode 100644
index 259d90aed..000000000
--- a/src/Specific/solinas64_2e226m5/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e226m5.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e226m5/fesquare.c b/src/Specific/solinas64_2e226m5/fesquare.c
deleted file mode 100644
index bb9017957..000000000
--- a/src/Specific/solinas64_2e226m5/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x5 * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint64_t x11 = (uint64_t) (x10 >> 0x39);
- { uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint128_t x14 = (x13 >> 0x38);
- { uint64_t x15 = ((uint64_t)x13 & 0xffffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint64_t x17 = (uint64_t) (x16 >> 0x39);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x12 + ((uint128_t)0x5 * x20));
- { uint64_t x23 = (uint64_t) (x22 >> 0x39);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x38);
- { uint64_t x27 = (x25 & 0xffffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e226m5/fesquare.v b/src/Specific/solinas64_2e226m5/fesquare.v
deleted file mode 100644
index b1f66cde3..000000000
--- a/src/Specific/solinas64_2e226m5/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e226m5/fesquareDisplay.log b/src/Specific/solinas64_2e226m5/fesquareDisplay.log
deleted file mode 100644
index 45a28e10e..000000000
--- a/src/Specific/solinas64_2e226m5/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x5 * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x5 * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x5 * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint64_t x11 = (uint64_t) (x10 >> 0x39);
- uint64_t x12 = ((uint64_t)x10 & 0x1ffffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint128_t x14 = (x13 >> 0x38);
- uint64_t x15 = ((uint64_t)x13 & 0xffffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint64_t x17 = (uint64_t) (x16 >> 0x39);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x12 + ((uint128_t)0x5 * x20));
- uint64_t x23 = (uint64_t) (x22 >> 0x39);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x38);
- uint64_t x27 = (x25 & 0xffffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/fesquareDisplay.v b/src/Specific/solinas64_2e226m5/fesquareDisplay.v
deleted file mode 100644
index 7247b9dfe..000000000
--- a/src/Specific/solinas64_2e226m5/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e226m5.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e226m5/fesub.c b/src/Specific/solinas64_2e226m5/fesub.c
deleted file mode 100644
index b31e552cc..000000000
--- a/src/Specific/solinas64_2e226m5/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x3fffffffffffff6 + x5) - x11);
- out[1] = ((0x1fffffffffffffe + x7) - x13);
- out[2] = ((0x3fffffffffffffe + x9) - x15);
- out[3] = ((0x1fffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e226m5/fesub.v b/src/Specific/solinas64_2e226m5/fesub.v
deleted file mode 100644
index 849d25fb0..000000000
--- a/src/Specific/solinas64_2e226m5/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e226m5/fesubDisplay.log b/src/Specific/solinas64_2e226m5/fesubDisplay.log
deleted file mode 100644
index f0f83e6da..000000000
--- a/src/Specific/solinas64_2e226m5/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x1fffffffffffffe + x8) - x14), ((0x3fffffffffffffe + x9) - x15), ((0x1fffffffffffffe + x7) - x13), ((0x3fffffffffffff6 + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/fesubDisplay.v b/src/Specific/solinas64_2e226m5/fesubDisplay.v
deleted file mode 100644
index c5eb09436..000000000
--- a/src/Specific/solinas64_2e226m5/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e226m5.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e226m5/freeze.c b/src/Specific/solinas64_2e226m5/freeze.c
deleted file mode 100644
index 27a027c47..000000000
--- a/src/Specific/solinas64_2e226m5/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffffb);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x1fffffffffffffb);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0xffffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x1ffffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0xffffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e226m5/freeze.v b/src/Specific/solinas64_2e226m5/freeze.v
deleted file mode 100644
index 0de45c7a5..000000000
--- a/src/Specific/solinas64_2e226m5/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e226m5.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e226m5/freezeDisplay.log b/src/Specific/solinas64_2e226m5/freezeDisplay.log
deleted file mode 100644
index 89622811c..000000000
--- a/src/Specific/solinas64_2e226m5/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffffb);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x1ffffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0xffffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x1fffffffffffffb);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0xffffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x1ffffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0xffffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/freezeDisplay.v b/src/Specific/solinas64_2e226m5/freezeDisplay.v
deleted file mode 100644
index 6830a52fa..000000000
--- a/src/Specific/solinas64_2e226m5/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e226m5.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e226m5/CurveParameters.v b/src/Specific/solinas64_2e226m5_4limbs/CurveParameters.v
index b7d00c001..b7d00c001 100644
--- a/src/Specific/solinas64_2e226m5/CurveParameters.v
+++ b/src/Specific/solinas64_2e226m5_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e226m5_4limbs/Synthesis.v b/src/Specific/solinas64_2e226m5_4limbs/Synthesis.v
new file mode 100644
index 000000000..1c073bc77
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e226m5/compiler.sh b/src/Specific/solinas64_2e226m5_4limbs/compiler.sh
index 1f53be93b..1f53be93b 100755
--- a/src/Specific/solinas64_2e226m5/compiler.sh
+++ b/src/Specific/solinas64_2e226m5_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e226m5/compilerxx.sh b/src/Specific/solinas64_2e226m5_4limbs/compilerxx.sh
index b156c099f..b156c099f 100755
--- a/src/Specific/solinas64_2e226m5/compilerxx.sh
+++ b/src/Specific/solinas64_2e226m5_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e226m5_4limbs/feadd.v b/src/Specific/solinas64_2e226m5_4limbs/feadd.v
new file mode 100644
index 000000000..02e5c9b9a
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e226m5_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..02b24d5ae
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/femul.v b/src/Specific/solinas64_2e226m5_4limbs/femul.v
new file mode 100644
index 000000000..1a0e0416c
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/femulDisplay.v b/src/Specific/solinas64_2e226m5_4limbs/femulDisplay.v
new file mode 100644
index 000000000..2b1882c85
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/fesquare.v b/src/Specific/solinas64_2e226m5_4limbs/fesquare.v
new file mode 100644
index 000000000..325d4ebaf
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e226m5_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e3fb5cc33
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/fesub.v b/src/Specific/solinas64_2e226m5_4limbs/fesub.v
new file mode 100644
index 000000000..ebf5dbebe
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e226m5_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..d825ffe2c
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/freeze.v b/src/Specific/solinas64_2e226m5_4limbs/freeze.v
new file mode 100644
index 000000000..14991bc7e
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e226m5_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e226m5_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..0aa83c6b2
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e226m5/py_interpreter.sh b/src/Specific/solinas64_2e226m5_4limbs/py_interpreter.sh
index e7fa43f5a..e7fa43f5a 100755
--- a/src/Specific/solinas64_2e226m5/py_interpreter.sh
+++ b/src/Specific/solinas64_2e226m5_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e226m5_5limbs/CurveParameters.v b/src/Specific/solinas64_2e226m5_5limbs/CurveParameters.v
new file mode 100644
index 000000000..2c8e16ee6
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^226 - 5
+Base: 45.2
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 45 + 1/5;
+ bitwidth := 64;
+ s := 2^226;
+ c := [(1, 5)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/Synthesis.v b/src/Specific/solinas64_2e226m5_5limbs/Synthesis.v
new file mode 100644
index 000000000..c81851016
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/compiler.sh b/src/Specific/solinas64_2e226m5_5limbs/compiler.sh
new file mode 100755
index 000000000..d017acc6a
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas64_2e226m5_5limbs/compilerxx.sh b/src/Specific/solinas64_2e226m5_5limbs/compilerxx.sh
new file mode 100755
index 000000000..3f6162637
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<226) - 5' "$@"
diff --git a/src/Specific/solinas64_2e226m5_5limbs/feadd.v b/src/Specific/solinas64_2e226m5_5limbs/feadd.v
new file mode 100644
index 000000000..3028493f3
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e226m5_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..2ed3a861b
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/femul.v b/src/Specific/solinas64_2e226m5_5limbs/femul.v
new file mode 100644
index 000000000..f97c5918b
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/femulDisplay.v b/src/Specific/solinas64_2e226m5_5limbs/femulDisplay.v
new file mode 100644
index 000000000..15c9b8390
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesquare.v b/src/Specific/solinas64_2e226m5_5limbs/fesquare.v
new file mode 100644
index 000000000..016bc7eb8
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e226m5_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..860eb8319
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesub.v b/src/Specific/solinas64_2e226m5_5limbs/fesub.v
new file mode 100644
index 000000000..2960f5e31
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..45abe182a
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/freeze.v b/src/Specific/solinas64_2e226m5_5limbs/freeze.v
new file mode 100644
index 000000000..9ba5785dc
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e226m5_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..ae67c5eba
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e226m5_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e226m5_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e226m5_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..87080e619
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**226 - 5' -Dmodulus_bytes='45.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e230m27/Synthesis.v b/src/Specific/solinas64_2e230m27/Synthesis.v
deleted file mode 100644
index e39d5a577..000000000
--- a/src/Specific/solinas64_2e230m27/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e230m27.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e230m27/feadd.c b/src/Specific/solinas64_2e230m27/feadd.c
deleted file mode 100644
index d304c298a..000000000
--- a/src/Specific/solinas64_2e230m27/feadd.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = (x5 + x11);
- out[1] = (x7 + x13);
- out[2] = (x9 + x15);
- out[3] = (x8 + x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e230m27/feadd.v b/src/Specific/solinas64_2e230m27/feadd.v
deleted file mode 100644
index be1ecba43..000000000
--- a/src/Specific/solinas64_2e230m27/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e230m27/feaddDisplay.log b/src/Specific/solinas64_2e230m27/feaddDisplay.log
deleted file mode 100644
index d42ef91c3..000000000
--- a/src/Specific/solinas64_2e230m27/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/feaddDisplay.v b/src/Specific/solinas64_2e230m27/feaddDisplay.v
deleted file mode 100644
index e50a3866d..000000000
--- a/src/Specific/solinas64_2e230m27/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e230m27.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e230m27/femul.c b/src/Specific/solinas64_2e230m27/femul.c
deleted file mode 100644
index ffb6b77cd..000000000
--- a/src/Specific/solinas64_2e230m27/femul.c
+++ /dev/null
@@ -1,36 +0,0 @@
-static void femul(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- { uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- { uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x1b * (0x2 * ((uint128_t)x8 * x14))));
- { uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1b * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- { uint128_t x19 = (((uint128_t)x5 * x11) + (0x1b * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- { uint128_t x20 = (x19 >> 0x3a);
- { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint128_t x23 = (x22 >> 0x39);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint128_t x26 = (x25 >> 0x3a);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x39);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- { uint128_t x31 = (x21 + ((uint128_t)0x1b * x29));
- { uint64_t x32 = (uint64_t) (x31 >> 0x3a);
- { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
- { uint64_t x34 = (x32 + x24);
- { uint64_t x35 = (x34 >> 0x39);
- { uint64_t x36 = (x34 & 0x1ffffffffffffff);
- out[0] = x33;
- out[1] = x36;
- out[2] = (x35 + x27);
- out[3] = x30;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e230m27/femul.v b/src/Specific/solinas64_2e230m27/femul.v
deleted file mode 100644
index d63b91d4a..000000000
--- a/src/Specific/solinas64_2e230m27/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e230m27/femulDisplay.log b/src/Specific/solinas64_2e230m27/femulDisplay.log
deleted file mode 100644
index c3853896e..000000000
--- a/src/Specific/solinas64_2e230m27/femulDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- uint128_t x16 = (((uint128_t)x5 * x14) + (((uint128_t)x7 * x15) + (((uint128_t)x9 * x13) + ((uint128_t)x8 * x11))));
- uint128_t x17 = ((((uint128_t)x5 * x15) + ((0x2 * ((uint128_t)x7 * x13)) + ((uint128_t)x9 * x11))) + (0x1b * (0x2 * ((uint128_t)x8 * x14))));
- uint128_t x18 = ((((uint128_t)x5 * x13) + ((uint128_t)x7 * x11)) + (0x1b * (((uint128_t)x9 * x14) + ((uint128_t)x8 * x15))));
- uint128_t x19 = (((uint128_t)x5 * x11) + (0x1b * ((0x2 * ((uint128_t)x7 * x14)) + (((uint128_t)x9 * x15) + (0x2 * ((uint128_t)x8 * x13))))));
- uint128_t x20 = (x19 >> 0x3a);
- uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint128_t x23 = (x22 >> 0x39);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint128_t x26 = (x25 >> 0x3a);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x39);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- uint128_t x31 = (x21 + ((uint128_t)0x1b * x29));
- uint64_t x32 = (uint64_t) (x31 >> 0x3a);
- uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
- uint64_t x34 = (x32 + x24);
- uint64_t x35 = (x34 >> 0x39);
- uint64_t x36 = (x34 & 0x1ffffffffffffff);
- return (Return x30, (x35 + x27), Return x36, Return x33))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/femulDisplay.v b/src/Specific/solinas64_2e230m27/femulDisplay.v
deleted file mode 100644
index f570f64c0..000000000
--- a/src/Specific/solinas64_2e230m27/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e230m27.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e230m27/fesquare.c b/src/Specific/solinas64_2e230m27/fesquare.c
deleted file mode 100644
index daf47328b..000000000
--- a/src/Specific/solinas64_2e230m27/fesquare.c
+++ /dev/null
@@ -1,32 +0,0 @@
-static void fesquare(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- { uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1b * (0x2 * ((uint128_t)x5 * x5))));
- { uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1b * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- { uint128_t x10 = (((uint128_t)x2 * x2) + (0x1b * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- { uint128_t x11 = (x10 >> 0x3a);
- { uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- { uint128_t x13 = (x11 + x9);
- { uint128_t x14 = (x13 >> 0x39);
- { uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- { uint128_t x16 = (x14 + x8);
- { uint128_t x17 = (x16 >> 0x3a);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- { uint128_t x19 = (x17 + x7);
- { uint64_t x20 = (uint64_t) (x19 >> 0x39);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- { uint128_t x22 = (x12 + ((uint128_t)0x1b * x20));
- { uint64_t x23 = (uint64_t) (x22 >> 0x3a);
- { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffffff);
- { uint64_t x25 = (x23 + x15);
- { uint64_t x26 = (x25 >> 0x39);
- { uint64_t x27 = (x25 & 0x1ffffffffffffff);
- out[0] = x24;
- out[1] = x27;
- out[2] = (x26 + x18);
- out[3] = x21;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e230m27/fesquare.v b/src/Specific/solinas64_2e230m27/fesquare.v
deleted file mode 100644
index f21086d15..000000000
--- a/src/Specific/solinas64_2e230m27/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e230m27/fesquareDisplay.log b/src/Specific/solinas64_2e230m27/fesquareDisplay.log
deleted file mode 100644
index 936d27885..000000000
--- a/src/Specific/solinas64_2e230m27/fesquareDisplay.log
+++ /dev/null
@@ -1,28 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint128_t x7 = (((uint128_t)x2 * x5) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x5 * x2))));
- uint128_t x8 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1b * (0x2 * ((uint128_t)x5 * x5))));
- uint128_t x9 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1b * (((uint128_t)x6 * x5) + ((uint128_t)x5 * x6))));
- uint128_t x10 = (((uint128_t)x2 * x2) + (0x1b * ((0x2 * ((uint128_t)x4 * x5)) + (((uint128_t)x6 * x6) + (0x2 * ((uint128_t)x5 * x4))))));
- uint128_t x11 = (x10 >> 0x3a);
- uint64_t x12 = ((uint64_t)x10 & 0x3ffffffffffffff);
- uint128_t x13 = (x11 + x9);
- uint128_t x14 = (x13 >> 0x39);
- uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- uint128_t x16 = (x14 + x8);
- uint128_t x17 = (x16 >> 0x3a);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- uint128_t x19 = (x17 + x7);
- uint64_t x20 = (uint64_t) (x19 >> 0x39);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- uint128_t x22 = (x12 + ((uint128_t)0x1b * x20));
- uint64_t x23 = (uint64_t) (x22 >> 0x3a);
- uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffffff);
- uint64_t x25 = (x23 + x15);
- uint64_t x26 = (x25 >> 0x39);
- uint64_t x27 = (x25 & 0x1ffffffffffffff);
- return (Return x21, (x26 + x18), Return x27, Return x24))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/fesquareDisplay.v b/src/Specific/solinas64_2e230m27/fesquareDisplay.v
deleted file mode 100644
index 2f9fe044a..000000000
--- a/src/Specific/solinas64_2e230m27/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e230m27.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e230m27/fesub.c b/src/Specific/solinas64_2e230m27/fesub.c
deleted file mode 100644
index babe8ab41..000000000
--- a/src/Specific/solinas64_2e230m27/fesub.c
+++ /dev/null
@@ -1,15 +0,0 @@
-static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
- { const uint64_t x8 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x14 = in2[3];
- { const uint64_t x15 = in2[2];
- { const uint64_t x13 = in2[1];
- { const uint64_t x11 = in2[0];
- out[0] = ((0x7ffffffffffffca + x5) - x11);
- out[1] = ((0x3fffffffffffffe + x7) - x13);
- out[2] = ((0x7fffffffffffffe + x9) - x15);
- out[3] = ((0x3fffffffffffffe + x8) - x14);
- }}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e230m27/fesub.v b/src/Specific/solinas64_2e230m27/fesub.v
deleted file mode 100644
index 304ffaedd..000000000
--- a/src/Specific/solinas64_2e230m27/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e230m27/fesubDisplay.log b/src/Specific/solinas64_2e230m27/fesubDisplay.log
deleted file mode 100644
index db7ef6c5d..000000000
--- a/src/Specific/solinas64_2e230m27/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3fffffffffffffe + x8) - x14), ((0x7fffffffffffffe + x9) - x15), ((0x3fffffffffffffe + x7) - x13), ((0x7ffffffffffffca + x5) - x11)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/fesubDisplay.v b/src/Specific/solinas64_2e230m27/fesubDisplay.v
deleted file mode 100644
index e583418b9..000000000
--- a/src/Specific/solinas64_2e230m27/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e230m27.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e230m27/freeze.c b/src/Specific/solinas64_2e230m27/freeze.c
deleted file mode 100644
index 038500201..000000000
--- a/src/Specific/solinas64_2e230m27/freeze.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void freeze(uint64_t out[4], const uint64_t in1[4]) {
- { const uint64_t x5 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffe5);
- { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffffff);
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffffff);
- { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & 0x3ffffffffffffe5);
- { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- { uint64_t x24 = (x19 & 0x1ffffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- { uint64_t x28 = (x19 & 0x3ffffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- { uint64_t x32 = (x19 & 0x1ffffffffffffff);
- { uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- out[0] = x22;
- out[1] = x26;
- out[2] = x30;
- out[3] = x34;
- }}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e230m27/freeze.v b/src/Specific/solinas64_2e230m27/freeze.v
deleted file mode 100644
index 90077aae4..000000000
--- a/src/Specific/solinas64_2e230m27/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e230m27.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e230m27/freezeDisplay.log b/src/Specific/solinas64_2e230m27/freezeDisplay.log
deleted file mode 100644
index 11aac547b..000000000
--- a/src/Specific/solinas64_2e230m27/freezeDisplay.log
+++ /dev/null
@@ -1,20 +0,0 @@
-λ x : word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffe5);
- uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x1ffffffffffffff);
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x3ffffffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x1ffffffffffffff);
- uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & 0x3ffffffffffffe5);
- uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
- uint64_t x24 = (x19 & 0x1ffffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
- uint64_t x28 = (x19 & 0x3ffffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x14, Return x28);
- uint64_t x32 = (x19 & 0x1ffffffffffffff);
- uint64_t x34, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x17, Return x32);
- (Return x34, Return x30, Return x26, Return x22))
-x
- : word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/freezeDisplay.v b/src/Specific/solinas64_2e230m27/freezeDisplay.v
deleted file mode 100644
index 107ab205c..000000000
--- a/src/Specific/solinas64_2e230m27/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e230m27.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e230m27/CurveParameters.v b/src/Specific/solinas64_2e230m27_4limbs/CurveParameters.v
index c6ea3202b..c6ea3202b 100644
--- a/src/Specific/solinas64_2e230m27/CurveParameters.v
+++ b/src/Specific/solinas64_2e230m27_4limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e230m27_4limbs/Synthesis.v b/src/Specific/solinas64_2e230m27_4limbs/Synthesis.v
new file mode 100644
index 000000000..f0a7c8050
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e230m27/compiler.sh b/src/Specific/solinas64_2e230m27_4limbs/compiler.sh
index e54981b25..e54981b25 100755
--- a/src/Specific/solinas64_2e230m27/compiler.sh
+++ b/src/Specific/solinas64_2e230m27_4limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e230m27/compilerxx.sh b/src/Specific/solinas64_2e230m27_4limbs/compilerxx.sh
index 29509ade7..29509ade7 100755
--- a/src/Specific/solinas64_2e230m27/compilerxx.sh
+++ b/src/Specific/solinas64_2e230m27_4limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e230m27_4limbs/feadd.v b/src/Specific/solinas64_2e230m27_4limbs/feadd.v
new file mode 100644
index 000000000..61975391f
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e230m27_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..b927d4e1a
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/femul.v b/src/Specific/solinas64_2e230m27_4limbs/femul.v
new file mode 100644
index 000000000..be6fe19f7
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/femulDisplay.v b/src/Specific/solinas64_2e230m27_4limbs/femulDisplay.v
new file mode 100644
index 000000000..5325cbe45
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/fesquare.v b/src/Specific/solinas64_2e230m27_4limbs/fesquare.v
new file mode 100644
index 000000000..7fde088c1
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e230m27_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..79abb33d5
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/fesub.v b/src/Specific/solinas64_2e230m27_4limbs/fesub.v
new file mode 100644
index 000000000..6d078a910
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e230m27_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..e1cc9a650
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/freeze.v b/src/Specific/solinas64_2e230m27_4limbs/freeze.v
new file mode 100644
index 000000000..e2779468e
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e230m27_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e230m27_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..e39e3fb1a
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e230m27/py_interpreter.sh b/src/Specific/solinas64_2e230m27_4limbs/py_interpreter.sh
index 37bed5d95..37bed5d95 100755
--- a/src/Specific/solinas64_2e230m27/py_interpreter.sh
+++ b/src/Specific/solinas64_2e230m27_4limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e230m27_5limbs/CurveParameters.v b/src/Specific/solinas64_2e230m27_5limbs/CurveParameters.v
new file mode 100644
index 000000000..2be1cd7c9
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^230 - 27
+Base: 46
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 46;
+ bitwidth := 64;
+ s := 2^230;
+ c := [(1, 27)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/Synthesis.v b/src/Specific/solinas64_2e230m27_5limbs/Synthesis.v
new file mode 100644
index 000000000..d235b9afc
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/compiler.sh b/src/Specific/solinas64_2e230m27_5limbs/compiler.sh
new file mode 100755
index 000000000..05f0cbb85
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<230) - 27' "$@"
diff --git a/src/Specific/solinas64_2e230m27_5limbs/compilerxx.sh b/src/Specific/solinas64_2e230m27_5limbs/compilerxx.sh
new file mode 100755
index 000000000..ccfebd551
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5}' -Dmodulus_bytes_val='29' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<230) - 27' "$@"
diff --git a/src/Specific/solinas64_2e230m27_5limbs/feadd.v b/src/Specific/solinas64_2e230m27_5limbs/feadd.v
new file mode 100644
index 000000000..90d13beaa
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e230m27_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..d822a94c5
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/femul.v b/src/Specific/solinas64_2e230m27_5limbs/femul.v
new file mode 100644
index 000000000..c62e464f5
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/femulDisplay.v b/src/Specific/solinas64_2e230m27_5limbs/femulDisplay.v
new file mode 100644
index 000000000..8ac906749
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesquare.v b/src/Specific/solinas64_2e230m27_5limbs/fesquare.v
new file mode 100644
index 000000000..95b53fd0e
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e230m27_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7bae43e03
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesub.v b/src/Specific/solinas64_2e230m27_5limbs/fesub.v
new file mode 100644
index 000000000..14ac75d88
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..56830cecb
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/freeze.v b/src/Specific/solinas64_2e230m27_5limbs/freeze.v
new file mode 100644
index 000000000..1a90105f5
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e230m27_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..25a7e0dbe
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e230m27_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e230m27_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e230m27_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..e48729398
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**230 - 27' -Dmodulus_bytes='46' -Da24='121665'
diff --git a/src/Specific/solinas64_2e235m15/Synthesis.v b/src/Specific/solinas64_2e235m15/Synthesis.v
deleted file mode 100644
index 22da94029..000000000
--- a/src/Specific/solinas64_2e235m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e235m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e235m15/feadd.c b/src/Specific/solinas64_2e235m15/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e235m15/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e235m15/feadd.v b/src/Specific/solinas64_2e235m15/feadd.v
deleted file mode 100644
index fdda7d23a..000000000
--- a/src/Specific/solinas64_2e235m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e235m15/feaddDisplay.log b/src/Specific/solinas64_2e235m15/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e235m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/feaddDisplay.v b/src/Specific/solinas64_2e235m15/feaddDisplay.v
deleted file mode 100644
index 994ced5ef..000000000
--- a/src/Specific/solinas64_2e235m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e235m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e235m15/femul.c b/src/Specific/solinas64_2e235m15/femul.c
deleted file mode 100644
index 0dcf869f7..000000000
--- a/src/Specific/solinas64_2e235m15/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0xf * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0xf * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0xf * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0xf * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- { uint64_t x25 = (uint64_t) (x24 >> 0x2f);
- { uint64_t x26 = ((uint64_t)x24 & 0x7fffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x2f);
- { uint64_t x29 = ((uint64_t)x27 & 0x7fffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x2f);
- { uint64_t x32 = ((uint64_t)x30 & 0x7fffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x2f);
- { uint64_t x35 = ((uint64_t)x33 & 0x7fffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x2f);
- { uint64_t x38 = ((uint64_t)x36 & 0x7fffffffffff);
- { uint64_t x39 = (x26 + (0xf * x37));
- { uint64_t x40 = (x39 >> 0x2f);
- { uint64_t x41 = (x39 & 0x7fffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x2f);
- { uint64_t x44 = (x42 & 0x7fffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e235m15/femul.v b/src/Specific/solinas64_2e235m15/femul.v
deleted file mode 100644
index db3bbfd86..000000000
--- a/src/Specific/solinas64_2e235m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e235m15/femulDisplay.log b/src/Specific/solinas64_2e235m15/femulDisplay.log
deleted file mode 100644
index 0565fc7d6..000000000
--- a/src/Specific/solinas64_2e235m15/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0xf * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0xf * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0xf * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0xf * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- uint64_t x25 = (uint64_t) (x24 >> 0x2f);
- uint64_t x26 = ((uint64_t)x24 & 0x7fffffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x2f);
- uint64_t x29 = ((uint64_t)x27 & 0x7fffffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x2f);
- uint64_t x32 = ((uint64_t)x30 & 0x7fffffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x2f);
- uint64_t x35 = ((uint64_t)x33 & 0x7fffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x2f);
- uint64_t x38 = ((uint64_t)x36 & 0x7fffffffffff);
- uint64_t x39 = (x26 + (0xf * x37));
- uint64_t x40 = (x39 >> 0x2f);
- uint64_t x41 = (x39 & 0x7fffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x2f);
- uint64_t x44 = (x42 & 0x7fffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/femulDisplay.v b/src/Specific/solinas64_2e235m15/femulDisplay.v
deleted file mode 100644
index dc0c198d1..000000000
--- a/src/Specific/solinas64_2e235m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e235m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e235m15/fesquare.c b/src/Specific/solinas64_2e235m15/fesquare.c
deleted file mode 100644
index 20e3056c3..000000000
--- a/src/Specific/solinas64_2e235m15/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0xf * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0xf * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- { uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- { uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x2f);
- { uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x2f);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
- { uint64_t x28 = (x15 + (0xf * x26));
- { uint64_t x29 = (x28 >> 0x2f);
- { uint64_t x30 = (x28 & 0x7fffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x2f);
- { uint64_t x33 = (x31 & 0x7fffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e235m15/fesquare.v b/src/Specific/solinas64_2e235m15/fesquare.v
deleted file mode 100644
index adf2125a3..000000000
--- a/src/Specific/solinas64_2e235m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e235m15/fesquareDisplay.log b/src/Specific/solinas64_2e235m15/fesquareDisplay.log
deleted file mode 100644
index f5c16047d..000000000
--- a/src/Specific/solinas64_2e235m15/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0xf * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0xf * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- uint64_t x14 = (uint64_t) (x13 >> 0x2f);
- uint64_t x15 = ((uint64_t)x13 & 0x7fffffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x2f);
- uint64_t x18 = ((uint64_t)x16 & 0x7fffffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x2f);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x2f);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
- uint64_t x28 = (x15 + (0xf * x26));
- uint64_t x29 = (x28 >> 0x2f);
- uint64_t x30 = (x28 & 0x7fffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x2f);
- uint64_t x33 = (x31 & 0x7fffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/fesquareDisplay.v b/src/Specific/solinas64_2e235m15/fesquareDisplay.v
deleted file mode 100644
index 92c659f79..000000000
--- a/src/Specific/solinas64_2e235m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e235m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e235m15/fesub.c b/src/Specific/solinas64_2e235m15/fesub.c
deleted file mode 100644
index e33d58fa4..000000000
--- a/src/Specific/solinas64_2e235m15/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xffffffffffe2 + x5) - x13);
- out[1] = ((0xfffffffffffe + x7) - x15);
- out[2] = ((0xfffffffffffe + x9) - x17);
- out[3] = ((0xfffffffffffe + x11) - x19);
- out[4] = ((0xfffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e235m15/fesub.v b/src/Specific/solinas64_2e235m15/fesub.v
deleted file mode 100644
index 6bc6dec87..000000000
--- a/src/Specific/solinas64_2e235m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e235m15/fesubDisplay.log b/src/Specific/solinas64_2e235m15/fesubDisplay.log
deleted file mode 100644
index 9d33fa7c5..000000000
--- a/src/Specific/solinas64_2e235m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xfffffffffffe + x10) - x18), ((0xfffffffffffe + x11) - x19), ((0xfffffffffffe + x9) - x17), ((0xfffffffffffe + x7) - x15), ((0xffffffffffe2 + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/fesubDisplay.v b/src/Specific/solinas64_2e235m15/fesubDisplay.v
deleted file mode 100644
index 256cf1f7e..000000000
--- a/src/Specific/solinas64_2e235m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e235m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e235m15/freeze.c b/src/Specific/solinas64_2e235m15/freeze.c
deleted file mode 100644
index db8f71551..000000000
--- a/src/Specific/solinas64_2e235m15/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff1);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7ffffffffff1);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x7fffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x7fffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x7fffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x7fffffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e235m15/freeze.v b/src/Specific/solinas64_2e235m15/freeze.v
deleted file mode 100644
index 08f3672ff..000000000
--- a/src/Specific/solinas64_2e235m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e235m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e235m15/freezeDisplay.log b/src/Specific/solinas64_2e235m15/freezeDisplay.log
deleted file mode 100644
index da977944b..000000000
--- a/src/Specific/solinas64_2e235m15/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff1);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7ffffffffff1);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x7fffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x7fffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x7fffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x7fffffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/freezeDisplay.v b/src/Specific/solinas64_2e235m15/freezeDisplay.v
deleted file mode 100644
index 2cd9f2e74..000000000
--- a/src/Specific/solinas64_2e235m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e235m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/CurveParameters.v b/src/Specific/solinas64_2e235m15_4limbs/CurveParameters.v
new file mode 100644
index 000000000..49818038a
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^235 - 15
+Base: 58.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 4%nat;
+ base := 58 + 3/4;
+ bitwidth := 64;
+ s := 2^235;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 4); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/Synthesis.v b/src/Specific/solinas64_2e235m15_4limbs/Synthesis.v
new file mode 100644
index 000000000..f7aace8e6
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/compiler.sh b/src/Specific/solinas64_2e235m15_4limbs/compiler.sh
new file mode 100755
index 000000000..52786ecb1
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15' "$@"
diff --git a/src/Specific/solinas64_2e235m15_4limbs/compilerxx.sh b/src/Specific/solinas64_2e235m15_4limbs/compilerxx.sh
new file mode 100755
index 000000000..509ed477a
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{59,59,59,58}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='30' -Dmodulus_limbs='4' -Dq_mpz='(1_mpz<<235) - 15' "$@"
diff --git a/src/Specific/solinas64_2e235m15_4limbs/feadd.v b/src/Specific/solinas64_2e235m15_4limbs/feadd.v
new file mode 100644
index 000000000..6cbc1f411
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/feaddDisplay.v b/src/Specific/solinas64_2e235m15_4limbs/feaddDisplay.v
new file mode 100644
index 000000000..c5e46e55b
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/femul.v b/src/Specific/solinas64_2e235m15_4limbs/femul.v
new file mode 100644
index 000000000..f17f8cd98
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/femulDisplay.v b/src/Specific/solinas64_2e235m15_4limbs/femulDisplay.v
new file mode 100644
index 000000000..bae6d7461
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesquare.v b/src/Specific/solinas64_2e235m15_4limbs/fesquare.v
new file mode 100644
index 000000000..a41176179
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesquareDisplay.v b/src/Specific/solinas64_2e235m15_4limbs/fesquareDisplay.v
new file mode 100644
index 000000000..cb744ae1e
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesub.v b/src/Specific/solinas64_2e235m15_4limbs/fesub.v
new file mode 100644
index 000000000..7e5f331f6
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.v b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.v
new file mode 100644
index 000000000..5327423f0
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/freeze.v b/src/Specific/solinas64_2e235m15_4limbs/freeze.v
new file mode 100644
index 000000000..f9228b6e7
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.v b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.v
new file mode 100644
index 000000000..852b3470a
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_4limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e235m15_4limbs/py_interpreter.sh b/src/Specific/solinas64_2e235m15_4limbs/py_interpreter.sh
new file mode 100755
index 000000000..c2a317d76
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_4limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**235 - 15' -Dmodulus_bytes='58.75' -Da24='121665'
diff --git a/src/Specific/solinas64_2e235m15/CurveParameters.v b/src/Specific/solinas64_2e235m15_5limbs/CurveParameters.v
index 80a94df58..80a94df58 100644
--- a/src/Specific/solinas64_2e235m15/CurveParameters.v
+++ b/src/Specific/solinas64_2e235m15_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e235m15_5limbs/Synthesis.v b/src/Specific/solinas64_2e235m15_5limbs/Synthesis.v
new file mode 100644
index 000000000..9f5f53f5a
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e235m15/compiler.sh b/src/Specific/solinas64_2e235m15_5limbs/compiler.sh
index 7bac1b9f5..7bac1b9f5 100755
--- a/src/Specific/solinas64_2e235m15/compiler.sh
+++ b/src/Specific/solinas64_2e235m15_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e235m15/compilerxx.sh b/src/Specific/solinas64_2e235m15_5limbs/compilerxx.sh
index bbbdc179e..bbbdc179e 100755
--- a/src/Specific/solinas64_2e235m15/compilerxx.sh
+++ b/src/Specific/solinas64_2e235m15_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e235m15_5limbs/feadd.v b/src/Specific/solinas64_2e235m15_5limbs/feadd.v
new file mode 100644
index 000000000..fcc1f2e19
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e235m15_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..915c837e1
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/femul.v b/src/Specific/solinas64_2e235m15_5limbs/femul.v
new file mode 100644
index 000000000..9383802c7
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/femulDisplay.v b/src/Specific/solinas64_2e235m15_5limbs/femulDisplay.v
new file mode 100644
index 000000000..bd5e72d25
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/fesquare.v b/src/Specific/solinas64_2e235m15_5limbs/fesquare.v
new file mode 100644
index 000000000..ce1e6e269
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e235m15_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3e5ddb6c1
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/fesub.v b/src/Specific/solinas64_2e235m15_5limbs/fesub.v
new file mode 100644
index 000000000..fe871091e
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e235m15_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..30513c216
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/freeze.v b/src/Specific/solinas64_2e235m15_5limbs/freeze.v
new file mode 100644
index 000000000..2cc999015
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e235m15_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e235m15_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..8609ad428
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e235m15_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e235m15/py_interpreter.sh b/src/Specific/solinas64_2e235m15_5limbs/py_interpreter.sh
index 5298833d2..5298833d2 100755
--- a/src/Specific/solinas64_2e235m15/py_interpreter.sh
+++ b/src/Specific/solinas64_2e235m15_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e243m9/Synthesis.v b/src/Specific/solinas64_2e243m9/Synthesis.v
deleted file mode 100644
index ce273c501..000000000
--- a/src/Specific/solinas64_2e243m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e243m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e243m9/feadd.c b/src/Specific/solinas64_2e243m9/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e243m9/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e243m9/feadd.v b/src/Specific/solinas64_2e243m9/feadd.v
deleted file mode 100644
index fe785bea6..000000000
--- a/src/Specific/solinas64_2e243m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e243m9/feaddDisplay.log b/src/Specific/solinas64_2e243m9/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e243m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9/feaddDisplay.v b/src/Specific/solinas64_2e243m9/feaddDisplay.v
deleted file mode 100644
index 744aca38c..000000000
--- a/src/Specific/solinas64_2e243m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e243m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e243m9/femul.c b/src/Specific/solinas64_2e243m9/femul.c
deleted file mode 100644
index 1f3dd625a..000000000
--- a/src/Specific/solinas64_2e243m9/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
- { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
- { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
- { uint64_t x30 = (uint64_t) (x29 >> 0x29);
- { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffff);
- { uint128_t x32 = (x30 + x28);
- { uint64_t x33 = (uint64_t) (x32 >> 0x28);
- { uint64_t x34 = ((uint64_t)x32 & 0xffffffffff);
- { uint128_t x35 = (x33 + x27);
- { uint64_t x36 = (uint64_t) (x35 >> 0x29);
- { uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffff);
- { uint128_t x38 = (x36 + x26);
- { uint64_t x39 = (uint64_t) (x38 >> 0x28);
- { uint64_t x40 = ((uint64_t)x38 & 0xffffffffff);
- { uint128_t x41 = (x39 + x25);
- { uint64_t x42 = (uint64_t) (x41 >> 0x29);
- { uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffff);
- { uint128_t x44 = (x42 + x24);
- { uint64_t x45 = (uint64_t) (x44 >> 0x28);
- { uint64_t x46 = ((uint64_t)x44 & 0xffffffffff);
- { uint64_t x47 = (x31 + (0x9 * x45));
- { uint64_t x48 = (x47 >> 0x29);
- { uint64_t x49 = (x47 & 0x1ffffffffff);
- { uint64_t x50 = (x48 + x34);
- { uint64_t x51 = (x50 >> 0x28);
- { uint64_t x52 = (x50 & 0xffffffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e243m9/femul.v b/src/Specific/solinas64_2e243m9/femul.v
deleted file mode 100644
index f12e29622..000000000
--- a/src/Specific/solinas64_2e243m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e243m9/femulDisplay.log b/src/Specific/solinas64_2e243m9/femulDisplay.log
deleted file mode 100644
index 6b6b1ee55..000000000
--- a/src/Specific/solinas64_2e243m9/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
- uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
- uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
- uint64_t x30 = (uint64_t) (x29 >> 0x29);
- uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffff);
- uint128_t x32 = (x30 + x28);
- uint64_t x33 = (uint64_t) (x32 >> 0x28);
- uint64_t x34 = ((uint64_t)x32 & 0xffffffffff);
- uint128_t x35 = (x33 + x27);
- uint64_t x36 = (uint64_t) (x35 >> 0x29);
- uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffff);
- uint128_t x38 = (x36 + x26);
- uint64_t x39 = (uint64_t) (x38 >> 0x28);
- uint64_t x40 = ((uint64_t)x38 & 0xffffffffff);
- uint128_t x41 = (x39 + x25);
- uint64_t x42 = (uint64_t) (x41 >> 0x29);
- uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffff);
- uint128_t x44 = (x42 + x24);
- uint64_t x45 = (uint64_t) (x44 >> 0x28);
- uint64_t x46 = ((uint64_t)x44 & 0xffffffffff);
- uint64_t x47 = (x31 + (0x9 * x45));
- uint64_t x48 = (x47 >> 0x29);
- uint64_t x49 = (x47 & 0x1ffffffffff);
- uint64_t x50 = (x48 + x34);
- uint64_t x51 = (x50 >> 0x28);
- uint64_t x52 = (x50 & 0xffffffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9/femulDisplay.v b/src/Specific/solinas64_2e243m9/femulDisplay.v
deleted file mode 100644
index bf73a45c8..000000000
--- a/src/Specific/solinas64_2e243m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e243m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e243m9/fesquare.c b/src/Specific/solinas64_2e243m9/fesquare.c
deleted file mode 100644
index c1d0d52c6..000000000
--- a/src/Specific/solinas64_2e243m9/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
- { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
- { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
- { uint64_t x17 = (uint64_t) (x16 >> 0x29);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffff);
- { uint128_t x19 = (x17 + x15);
- { uint64_t x20 = (uint64_t) (x19 >> 0x28);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
- { uint128_t x22 = (x20 + x14);
- { uint64_t x23 = (uint64_t) (x22 >> 0x29);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffff);
- { uint128_t x25 = (x23 + x13);
- { uint64_t x26 = (uint64_t) (x25 >> 0x28);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint64_t x29 = (uint64_t) (x28 >> 0x29);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x28);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffff);
- { uint64_t x34 = (x18 + (0x9 * x32));
- { uint64_t x35 = (x34 >> 0x29);
- { uint64_t x36 = (x34 & 0x1ffffffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x28);
- { uint64_t x39 = (x37 & 0xffffffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e243m9/fesquare.v b/src/Specific/solinas64_2e243m9/fesquare.v
deleted file mode 100644
index ad3565c62..000000000
--- a/src/Specific/solinas64_2e243m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e243m9/fesquareDisplay.log b/src/Specific/solinas64_2e243m9/fesquareDisplay.log
deleted file mode 100644
index 5b9f6a27c..000000000
--- a/src/Specific/solinas64_2e243m9/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
- uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
- uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
- uint64_t x17 = (uint64_t) (x16 >> 0x29);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffff);
- uint128_t x19 = (x17 + x15);
- uint64_t x20 = (uint64_t) (x19 >> 0x28);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
- uint128_t x22 = (x20 + x14);
- uint64_t x23 = (uint64_t) (x22 >> 0x29);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffff);
- uint128_t x25 = (x23 + x13);
- uint64_t x26 = (uint64_t) (x25 >> 0x28);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
- uint128_t x28 = (x26 + x12);
- uint64_t x29 = (uint64_t) (x28 >> 0x29);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x28);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffff);
- uint64_t x34 = (x18 + (0x9 * x32));
- uint64_t x35 = (x34 >> 0x29);
- uint64_t x36 = (x34 & 0x1ffffffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x28);
- uint64_t x39 = (x37 & 0xffffffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9/fesquareDisplay.v b/src/Specific/solinas64_2e243m9/fesquareDisplay.v
deleted file mode 100644
index 5fefb5929..000000000
--- a/src/Specific/solinas64_2e243m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e243m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e243m9/fesub.c b/src/Specific/solinas64_2e243m9/fesub.c
deleted file mode 100644
index 50c317b29..000000000
--- a/src/Specific/solinas64_2e243m9/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0x3ffffffffee + x5) - x15);
- out[1] = ((0x1fffffffffe + x7) - x17);
- out[2] = ((0x3fffffffffe + x9) - x19);
- out[3] = ((0x1fffffffffe + x11) - x21);
- out[4] = ((0x3fffffffffe + x13) - x23);
- out[5] = ((0x1fffffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e243m9/fesub.v b/src/Specific/solinas64_2e243m9/fesub.v
deleted file mode 100644
index e6ec38c4d..000000000
--- a/src/Specific/solinas64_2e243m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e243m9/fesubDisplay.log b/src/Specific/solinas64_2e243m9/fesubDisplay.log
deleted file mode 100644
index 22e0778d0..000000000
--- a/src/Specific/solinas64_2e243m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x1fffffffffe + x12) - x22), ((0x3fffffffffe + x13) - x23), ((0x1fffffffffe + x11) - x21), ((0x3fffffffffe + x9) - x19), ((0x1fffffffffe + x7) - x17), ((0x3ffffffffee + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9/fesubDisplay.v b/src/Specific/solinas64_2e243m9/fesubDisplay.v
deleted file mode 100644
index b071ef4ce..000000000
--- a/src/Specific/solinas64_2e243m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e243m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e243m9/freeze.c b/src/Specific/solinas64_2e243m9/freeze.c
deleted file mode 100644
index 56fe99d55..000000000
--- a/src/Specific/solinas64_2e243m9/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff7);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0x1fffffffff7);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0xffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0x1ffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0xffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0x1ffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0xffffffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e243m9/freeze.v b/src/Specific/solinas64_2e243m9/freeze.v
deleted file mode 100644
index 38bc105b9..000000000
--- a/src/Specific/solinas64_2e243m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e243m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e243m9/freezeDisplay.log b/src/Specific/solinas64_2e243m9/freezeDisplay.log
deleted file mode 100644
index 2240ec6b1..000000000
--- a/src/Specific/solinas64_2e243m9/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff7);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0x1fffffffff7);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0xffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0x1ffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0xffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0x1ffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0xffffffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9/freezeDisplay.v b/src/Specific/solinas64_2e243m9/freezeDisplay.v
deleted file mode 100644
index 3c95d37bf..000000000
--- a/src/Specific/solinas64_2e243m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e243m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/CurveParameters.v b/src/Specific/solinas64_2e243m9_5limbs/CurveParameters.v
new file mode 100644
index 000000000..209fda3d3
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^243 - 9
+Base: 48.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 5%nat;
+ base := 48 + 3/5;
+ bitwidth := 64;
+ s := 2^243;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 5); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/Synthesis.v b/src/Specific/solinas64_2e243m9_5limbs/Synthesis.v
new file mode 100644
index 000000000..ae0d9f919
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/compiler.sh b/src/Specific/solinas64_2e243m9_5limbs/compiler.sh
new file mode 100755
index 000000000..6415333f5
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<243) - 9' "$@"
diff --git a/src/Specific/solinas64_2e243m9_5limbs/compilerxx.sh b/src/Specific/solinas64_2e243m9_5limbs/compilerxx.sh
new file mode 100755
index 000000000..6f92784f0
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='31' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<243) - 9' "$@"
diff --git a/src/Specific/solinas64_2e243m9_5limbs/feadd.v b/src/Specific/solinas64_2e243m9_5limbs/feadd.v
new file mode 100644
index 000000000..9d71c030d
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e243m9_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..be243bb83
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/femul.v b/src/Specific/solinas64_2e243m9_5limbs/femul.v
new file mode 100644
index 000000000..4229561b8
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/femulDisplay.v b/src/Specific/solinas64_2e243m9_5limbs/femulDisplay.v
new file mode 100644
index 000000000..fc80ba9dd
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesquare.v b/src/Specific/solinas64_2e243m9_5limbs/fesquare.v
new file mode 100644
index 000000000..27cfed6b6
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e243m9_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c3a019bf5
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesub.v b/src/Specific/solinas64_2e243m9_5limbs/fesub.v
new file mode 100644
index 000000000..06d90c007
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..f180d8185
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/freeze.v b/src/Specific/solinas64_2e243m9_5limbs/freeze.v
new file mode 100644
index 000000000..d1ab0b9c6
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..6caad5436
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e243m9_5limbs/py_interpreter.sh b/src/Specific/solinas64_2e243m9_5limbs/py_interpreter.sh
new file mode 100755
index 000000000..fb575c490
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_5limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**243 - 9' -Dmodulus_bytes='48.6' -Da24='121665'
diff --git a/src/Specific/solinas64_2e243m9/CurveParameters.v b/src/Specific/solinas64_2e243m9_6limbs/CurveParameters.v
index 60427d462..60427d462 100644
--- a/src/Specific/solinas64_2e243m9/CurveParameters.v
+++ b/src/Specific/solinas64_2e243m9_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e243m9_6limbs/Synthesis.v b/src/Specific/solinas64_2e243m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..07fd26c97
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e243m9/compiler.sh b/src/Specific/solinas64_2e243m9_6limbs/compiler.sh
index 3640f9422..3640f9422 100755
--- a/src/Specific/solinas64_2e243m9/compiler.sh
+++ b/src/Specific/solinas64_2e243m9_6limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e243m9/compilerxx.sh b/src/Specific/solinas64_2e243m9_6limbs/compilerxx.sh
index a77da4338..a77da4338 100755
--- a/src/Specific/solinas64_2e243m9/compilerxx.sh
+++ b/src/Specific/solinas64_2e243m9_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e243m9_6limbs/feadd.v b/src/Specific/solinas64_2e243m9_6limbs/feadd.v
new file mode 100644
index 000000000..95f06fad0
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..a63e71554
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/femul.v b/src/Specific/solinas64_2e243m9_6limbs/femul.v
new file mode 100644
index 000000000..28872402d
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.v b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..7431207de
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesquare.v b/src/Specific/solinas64_2e243m9_6limbs/fesquare.v
new file mode 100644
index 000000000..e5a459bfa
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..097098540
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesub.v b/src/Specific/solinas64_2e243m9_6limbs/fesub.v
new file mode 100644
index 000000000..9745e8c81
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..c91eee1fa
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/freeze.v b/src/Specific/solinas64_2e243m9_6limbs/freeze.v
new file mode 100644
index 000000000..69c91e045
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..d935e124e
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e243m9_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e243m9/py_interpreter.sh b/src/Specific/solinas64_2e243m9_6limbs/py_interpreter.sh
index 73df75d70..73df75d70 100755
--- a/src/Specific/solinas64_2e243m9/py_interpreter.sh
+++ b/src/Specific/solinas64_2e243m9_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e251m9/Synthesis.v b/src/Specific/solinas64_2e251m9/Synthesis.v
deleted file mode 100644
index f9a98dc55..000000000
--- a/src/Specific/solinas64_2e251m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e251m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e251m9/feadd.c b/src/Specific/solinas64_2e251m9/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e251m9/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e251m9/feadd.v b/src/Specific/solinas64_2e251m9/feadd.v
deleted file mode 100644
index ee9f2cdf8..000000000
--- a/src/Specific/solinas64_2e251m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e251m9/feaddDisplay.log b/src/Specific/solinas64_2e251m9/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e251m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9/feaddDisplay.v b/src/Specific/solinas64_2e251m9/feaddDisplay.v
deleted file mode 100644
index c97b444fc..000000000
--- a/src/Specific/solinas64_2e251m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e251m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e251m9/femul.c b/src/Specific/solinas64_2e251m9/femul.c
deleted file mode 100644
index cced9ce9f..000000000
--- a/src/Specific/solinas64_2e251m9/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x9 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x9 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x9 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x9 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- { uint64_t x25 = (uint64_t) (x24 >> 0x33);
- { uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x32);
- { uint64_t x29 = ((uint64_t)x27 & 0x3ffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x32);
- { uint64_t x32 = ((uint64_t)x30 & 0x3ffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x32);
- { uint64_t x35 = ((uint64_t)x33 & 0x3ffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x32);
- { uint64_t x38 = ((uint64_t)x36 & 0x3ffffffffffff);
- { uint64_t x39 = (x26 + (0x9 * x37));
- { uint64_t x40 = (x39 >> 0x33);
- { uint64_t x41 = (x39 & 0x7ffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x32);
- { uint64_t x44 = (x42 & 0x3ffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e251m9/femul.v b/src/Specific/solinas64_2e251m9/femul.v
deleted file mode 100644
index 2093c4588..000000000
--- a/src/Specific/solinas64_2e251m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e251m9/femulDisplay.log b/src/Specific/solinas64_2e251m9/femulDisplay.log
deleted file mode 100644
index fbb8498ab..000000000
--- a/src/Specific/solinas64_2e251m9/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x9 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x9 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x9 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x9 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- uint64_t x25 = (uint64_t) (x24 >> 0x33);
- uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x32);
- uint64_t x29 = ((uint64_t)x27 & 0x3ffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x32);
- uint64_t x32 = ((uint64_t)x30 & 0x3ffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x32);
- uint64_t x35 = ((uint64_t)x33 & 0x3ffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x32);
- uint64_t x38 = ((uint64_t)x36 & 0x3ffffffffffff);
- uint64_t x39 = (x26 + (0x9 * x37));
- uint64_t x40 = (x39 >> 0x33);
- uint64_t x41 = (x39 & 0x7ffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x32);
- uint64_t x44 = (x42 & 0x3ffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9/femulDisplay.v b/src/Specific/solinas64_2e251m9/femulDisplay.v
deleted file mode 100644
index bf25adf15..000000000
--- a/src/Specific/solinas64_2e251m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e251m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e251m9/fesquare.c b/src/Specific/solinas64_2e251m9/fesquare.c
deleted file mode 100644
index 77726bb6a..000000000
--- a/src/Specific/solinas64_2e251m9/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x9 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- { uint64_t x14 = (uint64_t) (x13 >> 0x33);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x32);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x32);
- { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x32);
- { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x32);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- { uint64_t x28 = (x15 + (0x9 * x26));
- { uint64_t x29 = (x28 >> 0x33);
- { uint64_t x30 = (x28 & 0x7ffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x32);
- { uint64_t x33 = (x31 & 0x3ffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e251m9/fesquare.v b/src/Specific/solinas64_2e251m9/fesquare.v
deleted file mode 100644
index aa043b1d8..000000000
--- a/src/Specific/solinas64_2e251m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e251m9/fesquareDisplay.log b/src/Specific/solinas64_2e251m9/fesquareDisplay.log
deleted file mode 100644
index 7a89b038e..000000000
--- a/src/Specific/solinas64_2e251m9/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x9 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- uint64_t x14 = (uint64_t) (x13 >> 0x33);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x32);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x32);
- uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x32);
- uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x32);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- uint64_t x28 = (x15 + (0x9 * x26));
- uint64_t x29 = (x28 >> 0x33);
- uint64_t x30 = (x28 & 0x7ffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x32);
- uint64_t x33 = (x31 & 0x3ffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9/fesquareDisplay.v b/src/Specific/solinas64_2e251m9/fesquareDisplay.v
deleted file mode 100644
index 9b3a2158f..000000000
--- a/src/Specific/solinas64_2e251m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e251m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e251m9/fesub.c b/src/Specific/solinas64_2e251m9/fesub.c
deleted file mode 100644
index e7563ceae..000000000
--- a/src/Specific/solinas64_2e251m9/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xfffffffffffee + x5) - x13);
- out[1] = ((0x7fffffffffffe + x7) - x15);
- out[2] = ((0x7fffffffffffe + x9) - x17);
- out[3] = ((0x7fffffffffffe + x11) - x19);
- out[4] = ((0x7fffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e251m9/fesub.v b/src/Specific/solinas64_2e251m9/fesub.v
deleted file mode 100644
index 885e08bf5..000000000
--- a/src/Specific/solinas64_2e251m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e251m9/fesubDisplay.log b/src/Specific/solinas64_2e251m9/fesubDisplay.log
deleted file mode 100644
index 4c7bb5bfc..000000000
--- a/src/Specific/solinas64_2e251m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7fffffffffffe + x10) - x18), ((0x7fffffffffffe + x11) - x19), ((0x7fffffffffffe + x9) - x17), ((0x7fffffffffffe + x7) - x15), ((0xfffffffffffee + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9/fesubDisplay.v b/src/Specific/solinas64_2e251m9/fesubDisplay.v
deleted file mode 100644
index 2293a2edf..000000000
--- a/src/Specific/solinas64_2e251m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e251m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e251m9/freeze.c b/src/Specific/solinas64_2e251m9/freeze.c
deleted file mode 100644
index f21798fc1..000000000
--- a/src/Specific/solinas64_2e251m9/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u51(0x0, x2, 0x7fffffffffff7, &x10);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7fffffffffff7);
- { uint64_t x27; uint8_t x28 = _addcarryx_u51(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0x3ffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x3ffffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x3ffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x3ffffffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e251m9/freeze.v b/src/Specific/solinas64_2e251m9/freeze.v
deleted file mode 100644
index bf3f93cf8..000000000
--- a/src/Specific/solinas64_2e251m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e251m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e251m9/freezeDisplay.log b/src/Specific/solinas64_2e251m9/freezeDisplay.log
deleted file mode 100644
index ea1f68ec7..000000000
--- a/src/Specific/solinas64_2e251m9/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u51(0x0, x2, 0x7fffffffffff7);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7fffffffffff7);
- uint64_t x27, uint8_t x28 = addcarryx_u51(0x0, x10, x25);
- uint64_t x29 = (x24 & 0x3ffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x3ffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x3ffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x3ffffffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9/freezeDisplay.v b/src/Specific/solinas64_2e251m9/freezeDisplay.v
deleted file mode 100644
index a77edefb8..000000000
--- a/src/Specific/solinas64_2e251m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e251m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e251m9/CurveParameters.v b/src/Specific/solinas64_2e251m9_5limbs/CurveParameters.v
index 5a6c7841a..5a6c7841a 100644
--- a/src/Specific/solinas64_2e251m9/CurveParameters.v
+++ b/src/Specific/solinas64_2e251m9_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e251m9_5limbs/Synthesis.v b/src/Specific/solinas64_2e251m9_5limbs/Synthesis.v
new file mode 100644
index 000000000..72def8938
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e251m9/compiler.sh b/src/Specific/solinas64_2e251m9_5limbs/compiler.sh
index b78e542b6..b78e542b6 100755
--- a/src/Specific/solinas64_2e251m9/compiler.sh
+++ b/src/Specific/solinas64_2e251m9_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e251m9/compilerxx.sh b/src/Specific/solinas64_2e251m9_5limbs/compilerxx.sh
index 8e4ef1b88..8e4ef1b88 100755
--- a/src/Specific/solinas64_2e251m9/compilerxx.sh
+++ b/src/Specific/solinas64_2e251m9_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e251m9_5limbs/feadd.v b/src/Specific/solinas64_2e251m9_5limbs/feadd.v
new file mode 100644
index 000000000..69da71c2a
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e251m9_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..e306c7204
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/femul.v b/src/Specific/solinas64_2e251m9_5limbs/femul.v
new file mode 100644
index 000000000..a86646f47
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/femulDisplay.v b/src/Specific/solinas64_2e251m9_5limbs/femulDisplay.v
new file mode 100644
index 000000000..c90b6e6b8
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/fesquare.v b/src/Specific/solinas64_2e251m9_5limbs/fesquare.v
new file mode 100644
index 000000000..e2532082e
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e251m9_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5314bcfce
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/fesub.v b/src/Specific/solinas64_2e251m9_5limbs/fesub.v
new file mode 100644
index 000000000..67d16a7d3
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e251m9_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..f1a417731
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/freeze.v b/src/Specific/solinas64_2e251m9_5limbs/freeze.v
new file mode 100644
index 000000000..23581d25d
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e251m9_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e251m9_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..03986d5a3
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e251m9/py_interpreter.sh b/src/Specific/solinas64_2e251m9_5limbs/py_interpreter.sh
index e87e88f23..e87e88f23 100755
--- a/src/Specific/solinas64_2e251m9/py_interpreter.sh
+++ b/src/Specific/solinas64_2e251m9_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e251m9_6limbs/CurveParameters.v b/src/Specific/solinas64_2e251m9_6limbs/CurveParameters.v
new file mode 100644
index 000000000..523e887e3
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^251 - 9
+Base: 41 + 5/6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 41 + 5/6;
+ bitwidth := 64;
+ s := 2^251;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/Synthesis.v b/src/Specific/solinas64_2e251m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..f225dd47c
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/compiler.sh b/src/Specific/solinas64_2e251m9_6limbs/compiler.sh
new file mode 100755
index 000000000..e3807bd7d
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,42,42,42,42,41}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<251) - 9' "$@"
diff --git a/src/Specific/solinas64_2e251m9_6limbs/compilerxx.sh b/src/Specific/solinas64_2e251m9_6limbs/compilerxx.sh
new file mode 100755
index 000000000..b0acbde6b
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{42,42,42,42,42,41}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<251) - 9' "$@"
diff --git a/src/Specific/solinas64_2e251m9_6limbs/feadd.v b/src/Specific/solinas64_2e251m9_6limbs/feadd.v
new file mode 100644
index 000000000..ef50c8036
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..a500a6b7b
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/femul.v b/src/Specific/solinas64_2e251m9_6limbs/femul.v
new file mode 100644
index 000000000..a4a411459
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.v b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..ef9e72aa5
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesquare.v b/src/Specific/solinas64_2e251m9_6limbs/fesquare.v
new file mode 100644
index 000000000..0875affc5
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..47da873c9
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesub.v b/src/Specific/solinas64_2e251m9_6limbs/fesub.v
new file mode 100644
index 000000000..e9104a79a
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..0a354a981
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/freeze.v b/src/Specific/solinas64_2e251m9_6limbs/freeze.v
new file mode 100644
index 000000000..4467c14ca
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..f8f8577f8
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e251m9_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e251m9_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e251m9_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..5b22eb504
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**251 - 9' -Dmodulus_bytes='41 + 5/6' -Da24='121665'
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/CurveParameters.v b/src/Specific/solinas64_2e254m127x2e240m1/CurveParameters.v
deleted file mode 100644
index d6432aa60..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^254 - 127*2^240 - 1
-Base: 42 + 1/3
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 6%nat;
- base := 42 + 1/3;
- bitwidth := 64;
- s := 2^254;
- c := [(1, 1); (127, 2^240)];
- carry_chains := Some [[4; 5]; [5; 0; 1; 2; 3; 4]; [5; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/Synthesis.v b/src/Specific/solinas64_2e254m127x2e240m1/Synthesis.v
deleted file mode 100644
index a0f315afc..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/compiler.sh b/src/Specific/solinas64_2e254m127x2e240m1/compiler.sh
deleted file mode 100755
index 08dac4abb..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,42,43,42,42}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/compilerxx.sh b/src/Specific/solinas64_2e254m127x2e240m1/compilerxx.sh
deleted file mode 100755
index 39ede6865..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,42,43,42,42}' -Dmodulus_array='{0x3f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<254) - 127*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/feadd.c b/src/Specific/solinas64_2e254m127x2e240m1/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/feadd.v b/src/Specific/solinas64_2e254m127x2e240m1/feadd.v
deleted file mode 100644
index 16f359c9f..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.log b/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.v b/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.v
deleted file mode 100644
index dab089d06..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/femul.v b/src/Specific/solinas64_2e254m127x2e240m1/femul.v
deleted file mode 100644
index 0f78f96e2..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/femulDisplay.v b/src/Specific/solinas64_2e254m127x2e240m1/femulDisplay.v
deleted file mode 100644
index 1c90bc1a4..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesquare.v b/src/Specific/solinas64_2e254m127x2e240m1/fesquare.v
deleted file mode 100644
index 6a2042afc..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesquareDisplay.v b/src/Specific/solinas64_2e254m127x2e240m1/fesquareDisplay.v
deleted file mode 100644
index 899dc2751..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesub.c b/src/Specific/solinas64_2e254m127x2e240m1/fesub.c
deleted file mode 100644
index 890236f67..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0xffffffffffe + x5) - x15);
- out[1] = ((0x7fffffffffe + x7) - x17);
- out[2] = ((0x7fffffffffe + x9) - x19);
- out[3] = ((0xffffffffffe + x11) - x21);
- out[4] = ((0x7fffffffffe + x13) - x23);
- out[5] = ((0x7f01ffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesub.v b/src/Specific/solinas64_2e254m127x2e240m1/fesub.v
deleted file mode 100644
index d1eb936e6..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.log b/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.log
deleted file mode 100644
index 4ea659b58..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x7f01ffffffe + x12) - x22), ((0x7fffffffffe + x13) - x23), ((0xffffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((0xffffffffffe + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.v b/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.v
deleted file mode 100644
index 087fde4fd..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/freeze.c b/src/Specific/solinas64_2e254m127x2e240m1/freeze.c
deleted file mode 100644
index 4252df37f..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3f80fffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0x7ffffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0x3ffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0x3ffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0x7ffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0x3ffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0x3f80fffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/freeze.v b/src/Specific/solinas64_2e254m127x2e240m1/freeze.v
deleted file mode 100644
index 395568eea..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.log b/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.log
deleted file mode 100644
index fd8683e03..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3f80fffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0x7ffffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0x3ffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0x3ffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0x7ffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0x3ffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0x3f80fffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.v b/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.v
deleted file mode 100644
index 13ab078b3..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e254m127x2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e254m127x2e240m1/py_interpreter.sh b/src/Specific/solinas64_2e254m127x2e240m1/py_interpreter.sh
deleted file mode 100755
index 5b92dcea9..000000000
--- a/src/Specific/solinas64_2e254m127x2e240m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**254 - 127*2**240 - 1' -Dmodulus_bytes='42 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e255m19/Synthesis.v b/src/Specific/solinas64_2e255m19/Synthesis.v
deleted file mode 100644
index 07488b7d5..000000000
--- a/src/Specific/solinas64_2e255m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e255m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m19/feadd.c b/src/Specific/solinas64_2e255m19/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e255m19/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m19/feadd.v b/src/Specific/solinas64_2e255m19/feadd.v
deleted file mode 100644
index c95df87b5..000000000
--- a/src/Specific/solinas64_2e255m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m19/feaddDisplay.log b/src/Specific/solinas64_2e255m19/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e255m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19/feaddDisplay.v b/src/Specific/solinas64_2e255m19/feaddDisplay.v
deleted file mode 100644
index 39ab12f01..000000000
--- a/src/Specific/solinas64_2e255m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e255m19/femul.c b/src/Specific/solinas64_2e255m19/femul.c
deleted file mode 100644
index 8094da7fc..000000000
--- a/src/Specific/solinas64_2e255m19/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- { uint64_t x25 = (uint64_t) (x24 >> 0x33);
- { uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x33);
- { uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x33);
- { uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x33);
- { uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x33);
- { uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- { uint64_t x39 = (x26 + (0x13 * x37));
- { uint64_t x40 = (x39 >> 0x33);
- { uint64_t x41 = (x39 & 0x7ffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x33);
- { uint64_t x44 = (x42 & 0x7ffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m19/femul.v b/src/Specific/solinas64_2e255m19/femul.v
deleted file mode 100644
index 9c14958ec..000000000
--- a/src/Specific/solinas64_2e255m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m19/femulDisplay.log b/src/Specific/solinas64_2e255m19/femulDisplay.log
deleted file mode 100644
index 7a2eeb7b0..000000000
--- a/src/Specific/solinas64_2e255m19/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- uint64_t x25 = (uint64_t) (x24 >> 0x33);
- uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x33);
- uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x33);
- uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x33);
- uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x33);
- uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- uint64_t x39 = (x26 + (0x13 * x37));
- uint64_t x40 = (x39 >> 0x33);
- uint64_t x41 = (x39 & 0x7ffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x33);
- uint64_t x44 = (x42 & 0x7ffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19/femulDisplay.v b/src/Specific/solinas64_2e255m19/femulDisplay.v
deleted file mode 100644
index 128297d93..000000000
--- a/src/Specific/solinas64_2e255m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e255m19/fesquare.c b/src/Specific/solinas64_2e255m19/fesquare.c
deleted file mode 100644
index 909c3289c..000000000
--- a/src/Specific/solinas64_2e255m19/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- { uint64_t x14 = (uint64_t) (x13 >> 0x33);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x33);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x33);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- { uint64_t x28 = (x15 + (0x13 * x26));
- { uint64_t x29 = (x28 >> 0x33);
- { uint64_t x30 = (x28 & 0x7ffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x33);
- { uint64_t x33 = (x31 & 0x7ffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m19/fesquare.v b/src/Specific/solinas64_2e255m19/fesquare.v
deleted file mode 100644
index 52ecdfeef..000000000
--- a/src/Specific/solinas64_2e255m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m19/fesquareDisplay.log b/src/Specific/solinas64_2e255m19/fesquareDisplay.log
deleted file mode 100644
index d25c6c497..000000000
--- a/src/Specific/solinas64_2e255m19/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- uint64_t x14 = (uint64_t) (x13 >> 0x33);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x33);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x33);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- uint64_t x28 = (x15 + (0x13 * x26));
- uint64_t x29 = (x28 >> 0x33);
- uint64_t x30 = (x28 & 0x7ffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x33);
- uint64_t x33 = (x31 & 0x7ffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19/fesquareDisplay.v b/src/Specific/solinas64_2e255m19/fesquareDisplay.v
deleted file mode 100644
index 350a1d7cc..000000000
--- a/src/Specific/solinas64_2e255m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e255m19/fesub.c b/src/Specific/solinas64_2e255m19/fesub.c
deleted file mode 100644
index c2a419fee..000000000
--- a/src/Specific/solinas64_2e255m19/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xfffffffffffda + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m19/fesub.v b/src/Specific/solinas64_2e255m19/fesub.v
deleted file mode 100644
index b271c2520..000000000
--- a/src/Specific/solinas64_2e255m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m19/fesubDisplay.log b/src/Specific/solinas64_2e255m19/fesubDisplay.log
deleted file mode 100644
index e85a042f8..000000000
--- a/src/Specific/solinas64_2e255m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0xfffffffffffda + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19/fesubDisplay.v b/src/Specific/solinas64_2e255m19/fesubDisplay.v
deleted file mode 100644
index c4f783cde..000000000
--- a/src/Specific/solinas64_2e255m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e255m19/freeze.c b/src/Specific/solinas64_2e255m19/freeze.c
deleted file mode 100644
index b52fd54f9..000000000
--- a/src/Specific/solinas64_2e255m19/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u51(0x0, x2, 0x7ffffffffffed, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7ffffffffffed);
- { uint64_t x27; uint8_t x28 = _addcarryx_u51(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m19/freeze.v b/src/Specific/solinas64_2e255m19/freeze.v
deleted file mode 100644
index cbdaf4afd..000000000
--- a/src/Specific/solinas64_2e255m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m19/freezeDisplay.log b/src/Specific/solinas64_2e255m19/freezeDisplay.log
deleted file mode 100644
index 1fec36950..000000000
--- a/src/Specific/solinas64_2e255m19/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u51(0x0, x2, 0x7ffffffffffed);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7ffffffffffed);
- uint64_t x27, uint8_t x28 = addcarryx_u51(0x0, x10, x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19/freezeDisplay.v b/src/Specific/solinas64_2e255m19/freezeDisplay.v
deleted file mode 100644
index e5fa5fc6d..000000000
--- a/src/Specific/solinas64_2e255m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e255m19/CurveParameters.v b/src/Specific/solinas64_2e255m19_5limbs/CurveParameters.v
index 652d9dce7..652d9dce7 100644
--- a/src/Specific/solinas64_2e255m19/CurveParameters.v
+++ b/src/Specific/solinas64_2e255m19_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e255m19_5limbs/Synthesis.v b/src/Specific/solinas64_2e255m19_5limbs/Synthesis.v
new file mode 100644
index 000000000..25b0e46c2
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m19/compiler.sh b/src/Specific/solinas64_2e255m19_5limbs/compiler.sh
index a16722d20..a16722d20 100755
--- a/src/Specific/solinas64_2e255m19/compiler.sh
+++ b/src/Specific/solinas64_2e255m19_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e255m19/compilerxx.sh b/src/Specific/solinas64_2e255m19_5limbs/compilerxx.sh
index a3b9b5579..a3b9b5579 100755
--- a/src/Specific/solinas64_2e255m19/compilerxx.sh
+++ b/src/Specific/solinas64_2e255m19_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e255m19_5limbs/feadd.v b/src/Specific/solinas64_2e255m19_5limbs/feadd.v
new file mode 100644
index 000000000..83aef70cb
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e255m19_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..606b2a97b
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/femul.v b/src/Specific/solinas64_2e255m19_5limbs/femul.v
new file mode 100644
index 000000000..4372e68e9
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/femulDisplay.v b/src/Specific/solinas64_2e255m19_5limbs/femulDisplay.v
new file mode 100644
index 000000000..b8435a18d
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/fesquare.v b/src/Specific/solinas64_2e255m19_5limbs/fesquare.v
new file mode 100644
index 000000000..2b22d03ae
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e255m19_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e3f0ace5e
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/fesub.v b/src/Specific/solinas64_2e255m19_5limbs/fesub.v
new file mode 100644
index 000000000..be55bfbd5
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e255m19_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..91fb4d15f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/freeze.v b/src/Specific/solinas64_2e255m19_5limbs/freeze.v
new file mode 100644
index 000000000..4de21db14
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m19_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e255m19_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..83fe6eec4
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e255m19/py_interpreter.sh b/src/Specific/solinas64_2e255m19_5limbs/py_interpreter.sh
index b561a9733..b561a9733 100755
--- a/src/Specific/solinas64_2e255m19/py_interpreter.sh
+++ b/src/Specific/solinas64_2e255m19_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e255m19_6limbs/CurveParameters.v b/src/Specific/solinas64_2e255m19_6limbs/CurveParameters.v
new file mode 100644
index 000000000..f4dca346a
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^255 - 19
+Base: 42.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 42 + 1/2;
+ bitwidth := 64;
+ s := 2^255;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/Synthesis.v b/src/Specific/solinas64_2e255m19_6limbs/Synthesis.v
new file mode 100644
index 000000000..af27f590a
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/compiler.sh b/src/Specific/solinas64_2e255m19_6limbs/compiler.sh
new file mode 100755
index 000000000..03bc28179
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 19' "$@"
diff --git a/src/Specific/solinas64_2e255m19_6limbs/compilerxx.sh b/src/Specific/solinas64_2e255m19_6limbs/compilerxx.sh
new file mode 100755
index 000000000..c519606a9
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 19' "$@"
diff --git a/src/Specific/solinas64_2e255m19_6limbs/feadd.v b/src/Specific/solinas64_2e255m19_6limbs/feadd.v
new file mode 100644
index 000000000..2a76baf20
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..c0d31eb15
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/femul.v b/src/Specific/solinas64_2e255m19_6limbs/femul.v
new file mode 100644
index 000000000..e9133b85d
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.v b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.v
new file mode 100644
index 000000000..16567514f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesquare.v b/src/Specific/solinas64_2e255m19_6limbs/fesquare.v
new file mode 100644
index 000000000..9356df50f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1666bb1db
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesub.v b/src/Specific/solinas64_2e255m19_6limbs/fesub.v
new file mode 100644
index 000000000..eb4c67b19
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..e9c09ecff
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/freeze.v b/src/Specific/solinas64_2e255m19_6limbs/freeze.v
new file mode 100644
index 000000000..532e0ce8d
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..48ccf41f8
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m19_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e255m19_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e255m19_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..1c9dca679
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**255 - 19' -Dmodulus_bytes='42.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v b/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v
deleted file mode 100644
index 97af18cea..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^255 - 2^4 - 2^1 - 1
-Base: 51
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 5%nat;
- base := 51;
- bitwidth := 64;
- s := 2^255;
- c := [(1, 1); (2^1, 1); (2^4, 1)];
- carry_chains := Some [[4; 4; 4]; [0; 1; 2; 3]; [0; 0; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v b/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v
deleted file mode 100644
index 02aa8bdc8..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh b/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh
deleted file mode 100755
index 1cb8d0198..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/compilerxx.sh b/src/Specific/solinas64_2e255m2e4m2e1m1/compilerxx.sh
deleted file mode 100755
index f0710c2ac..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<255) - (1_mpz<<4) - (1_mpz<<1) - 1' "$@"
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.c b/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.v b/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.v
deleted file mode 100644
index b336ae62e..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.log b/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.v
deleted file mode 100644
index 91138c66f..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femul.c b/src/Specific/solinas64_2e255m2e4m2e1m1/femul.c
deleted file mode 100644
index 17aa086fd..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/femul.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x10 * x18)) + (0x10 * ((uint128_t)x10 * x18)))));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + ((((uint128_t)x11 * x18) + ((uint128_t)x10 * x19)) + ((0x2 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))) + (0x10 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + ((((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17))) + ((0x2 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))) + (0x10 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + ((((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15)))) + ((0x2 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))) + (0x10 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))))));
- { uint64_t x25 = (uint64_t) (x20 >> 0x33);
- { uint64_t x26 = ((uint64_t)x20 & 0x7ffffffffffff);
- { uint128_t x27 = (((uint128_t)0x8000000000000 * x25) + x26);
- { uint64_t x28 = (uint64_t) (x27 >> 0x33);
- { uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- { uint128_t x30 = (((uint128_t)0x8000000000000 * x28) + x29);
- { uint64_t x31 = (uint64_t) (x30 >> 0x33);
- { uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- { uint128_t x33 = (((uint128_t)0x8000000000000 * x31) + x32);
- { uint64_t x34 = (uint64_t) (x33 >> 0x33);
- { uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- { uint128_t x36 = (x24 + (x34 + ((0x2 * x34) + (0x10 * x34))));
- { uint64_t x37 = (uint64_t) (x36 >> 0x33);
- { uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- { uint128_t x39 = (x37 + x23);
- { uint64_t x40 = (uint64_t) (x39 >> 0x33);
- { uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- { uint128_t x42 = (x40 + x22);
- { uint64_t x43 = (uint64_t) (x42 >> 0x33);
- { uint64_t x44 = ((uint64_t)x42 & 0x7ffffffffffff);
- { uint128_t x45 = (x43 + x21);
- { uint64_t x46 = (uint64_t) (x45 >> 0x33);
- { uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffff);
- { uint64_t x48 = (x46 + x35);
- { uint64_t x49 = (x48 >> 0x33);
- { uint64_t x50 = (x48 & 0x7ffffffffffff);
- { uint64_t x51 = (x38 + (x49 + ((0x2 * x49) + (0x10 * x49))));
- { uint64_t x52 = (x51 >> 0x33);
- { uint64_t x53 = (x51 & 0x7ffffffffffff);
- { uint64_t x54 = (x53 >> 0x33);
- { uint64_t x55 = (x53 & 0x7ffffffffffff);
- { uint64_t x56 = (x55 >> 0x33);
- { uint64_t x57 = (x55 & 0x7ffffffffffff);
- out[0] = x57;
- out[1] = (x56 + (x54 + (x52 + x41)));
- out[2] = x44;
- out[3] = x47;
- out[4] = x50;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v b/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v
deleted file mode 100644
index ebce83c32..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.log b/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.log
deleted file mode 100644
index b69f0a673..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.log
+++ /dev/null
@@ -1,45 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (((uint128_t)x10 * x18) + ((0x2 * ((uint128_t)x10 * x18)) + (0x10 * ((uint128_t)x10 * x18)))));
- uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + ((((uint128_t)x11 * x18) + ((uint128_t)x10 * x19)) + ((0x2 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))) + (0x10 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + ((((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17))) + ((0x2 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))) + (0x10 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))))));
- uint128_t x24 = (((uint128_t)x5 * x13) + ((((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15)))) + ((0x2 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))) + (0x10 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))))));
- uint64_t x25 = (uint64_t) (x20 >> 0x33);
- uint64_t x26 = ((uint64_t)x20 & 0x7ffffffffffff);
- uint128_t x27 = (((uint128_t)0x8000000000000 * x25) + x26);
- uint64_t x28 = (uint64_t) (x27 >> 0x33);
- uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- uint128_t x30 = (((uint128_t)0x8000000000000 * x28) + x29);
- uint64_t x31 = (uint64_t) (x30 >> 0x33);
- uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- uint128_t x33 = (((uint128_t)0x8000000000000 * x31) + x32);
- uint64_t x34 = (uint64_t) (x33 >> 0x33);
- uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- uint128_t x36 = (x24 + (x34 + ((0x2 * x34) + (0x10 * x34))));
- uint64_t x37 = (uint64_t) (x36 >> 0x33);
- uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- uint128_t x39 = (x37 + x23);
- uint64_t x40 = (uint64_t) (x39 >> 0x33);
- uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- uint128_t x42 = (x40 + x22);
- uint64_t x43 = (uint64_t) (x42 >> 0x33);
- uint64_t x44 = ((uint64_t)x42 & 0x7ffffffffffff);
- uint128_t x45 = (x43 + x21);
- uint64_t x46 = (uint64_t) (x45 >> 0x33);
- uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffff);
- uint64_t x48 = (x46 + x35);
- uint64_t x49 = (x48 >> 0x33);
- uint64_t x50 = (x48 & 0x7ffffffffffff);
- uint64_t x51 = (x38 + (x49 + ((0x2 * x49) + (0x10 * x49))));
- uint64_t x52 = (x51 >> 0x33);
- uint64_t x53 = (x51 & 0x7ffffffffffff);
- uint64_t x54 = (x53 >> 0x33);
- uint64_t x55 = (x53 & 0x7ffffffffffff);
- uint64_t x56 = (x55 >> 0x33);
- uint64_t x57 = (x55 & 0x7ffffffffffff);
- return (Return x50, Return x47, Return x44, (x56 + (x54 + (x52 + x41))), Return x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v
deleted file mode 100644
index b6b202d0c..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.c b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.c
deleted file mode 100644
index 711c6370b..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x7 * x7) + ((0x2 * ((uint128_t)x7 * x7)) + (0x10 * ((uint128_t)x7 * x7)))));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((((uint128_t)x8 * x7) + ((uint128_t)x7 * x8)) + ((0x2 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))) + (0x10 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6))) + ((0x2 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))) + (0x10 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + ((((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4)))) + ((0x2 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))) + (0x10 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))))));
- { uint64_t x14 = (uint64_t) (x9 >> 0x33);
- { uint64_t x15 = ((uint64_t)x9 & 0x7ffffffffffff);
- { uint128_t x16 = (((uint128_t)0x8000000000000 * x14) + x15);
- { uint64_t x17 = (uint64_t) (x16 >> 0x33);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- { uint128_t x19 = (((uint128_t)0x8000000000000 * x17) + x18);
- { uint64_t x20 = (uint64_t) (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { uint128_t x22 = (((uint128_t)0x8000000000000 * x20) + x21);
- { uint64_t x23 = (uint64_t) (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x13 + (x23 + ((0x2 * x23) + (0x10 * x23))));
- { uint64_t x26 = (uint64_t) (x25 >> 0x33);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint64_t x29 = (uint64_t) (x28 >> 0x33);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x33);
- { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- { uint128_t x34 = (x32 + x10);
- { uint64_t x35 = (uint64_t) (x34 >> 0x33);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- { uint64_t x37 = (x35 + x24);
- { uint64_t x38 = (x37 >> 0x33);
- { uint64_t x39 = (x37 & 0x7ffffffffffff);
- { uint64_t x40 = (x27 + (x38 + ((0x2 * x38) + (0x10 * x38))));
- { uint64_t x41 = (x40 >> 0x33);
- { uint64_t x42 = (x40 & 0x7ffffffffffff);
- { uint64_t x43 = (x42 >> 0x33);
- { uint64_t x44 = (x42 & 0x7ffffffffffff);
- { uint64_t x45 = (x44 >> 0x33);
- { uint64_t x46 = (x44 & 0x7ffffffffffff);
- out[0] = x46;
- out[1] = (x45 + (x43 + (x41 + x30)));
- out[2] = x33;
- out[3] = x36;
- out[4] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v
deleted file mode 100644
index da0008525..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.log b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.log
deleted file mode 100644
index 4ed2573ca..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.log
+++ /dev/null
@@ -1,45 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x7 * x7) + ((0x2 * ((uint128_t)x7 * x7)) + (0x10 * ((uint128_t)x7 * x7)))));
- uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((((uint128_t)x8 * x7) + ((uint128_t)x7 * x8)) + ((0x2 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))) + (0x10 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6))) + ((0x2 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))) + (0x10 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))))));
- uint128_t x13 = (((uint128_t)x2 * x2) + ((((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4)))) + ((0x2 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))) + (0x10 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))))));
- uint64_t x14 = (uint64_t) (x9 >> 0x33);
- uint64_t x15 = ((uint64_t)x9 & 0x7ffffffffffff);
- uint128_t x16 = (((uint128_t)0x8000000000000 * x14) + x15);
- uint64_t x17 = (uint64_t) (x16 >> 0x33);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- uint128_t x19 = (((uint128_t)0x8000000000000 * x17) + x18);
- uint64_t x20 = (uint64_t) (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- uint128_t x22 = (((uint128_t)0x8000000000000 * x20) + x21);
- uint64_t x23 = (uint64_t) (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x13 + (x23 + ((0x2 * x23) + (0x10 * x23))));
- uint64_t x26 = (uint64_t) (x25 >> 0x33);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- uint128_t x28 = (x26 + x12);
- uint64_t x29 = (uint64_t) (x28 >> 0x33);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x33);
- uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- uint128_t x34 = (x32 + x10);
- uint64_t x35 = (uint64_t) (x34 >> 0x33);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- uint64_t x37 = (x35 + x24);
- uint64_t x38 = (x37 >> 0x33);
- uint64_t x39 = (x37 & 0x7ffffffffffff);
- uint64_t x40 = (x27 + (x38 + ((0x2 * x38) + (0x10 * x38))));
- uint64_t x41 = (x40 >> 0x33);
- uint64_t x42 = (x40 & 0x7ffffffffffff);
- uint64_t x43 = (x42 >> 0x33);
- uint64_t x44 = (x42 & 0x7ffffffffffff);
- uint64_t x45 = (x44 >> 0x33);
- uint64_t x46 = (x44 & 0x7ffffffffffff);
- return (Return x39, Return x36, Return x33, (x45 + (x43 + (x41 + x30))), Return x46))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v
deleted file mode 100644
index 9d611b0f4..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.c b/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.c
deleted file mode 100644
index c2a419fee..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xfffffffffffda + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.v
deleted file mode 100644
index de9859c4a..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.log b/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.log
deleted file mode 100644
index e85a042f8..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0xfffffffffffda + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.v
deleted file mode 100644
index 4aec81ad7..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.c b/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.c
deleted file mode 100644
index b52fd54f9..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u51(0x0, x2, 0x7ffffffffffed, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7ffffffffffed);
- { uint64_t x27; uint8_t x28 = _addcarryx_u51(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v b/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v
deleted file mode 100644
index 1ad696f70..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.log b/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.log
deleted file mode 100644
index 1fec36950..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u51(0x0, x2, 0x7ffffffffffed);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7ffffffffffed);
- uint64_t x27, uint8_t x28 = addcarryx_u51(0x0, x10, x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v b/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v
deleted file mode 100644
index 5da0b0d6a..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m2e4m2e1m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e255m2e4m2e1m1/py_interpreter.sh b/src/Specific/solinas64_2e255m2e4m2e1m1/py_interpreter.sh
deleted file mode 100755
index 1fc3bf8df..000000000
--- a/src/Specific/solinas64_2e255m2e4m2e1m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**255 - 2**4 - 2**1 - 1' -Dmodulus_bytes='51' -Da24='121665'
diff --git a/src/Specific/solinas64_2e255m765/Synthesis.v b/src/Specific/solinas64_2e255m765/Synthesis.v
deleted file mode 100644
index 0e926038a..000000000
--- a/src/Specific/solinas64_2e255m765/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e255m765.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m765/feadd.c b/src/Specific/solinas64_2e255m765/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e255m765/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m765/feadd.v b/src/Specific/solinas64_2e255m765/feadd.v
deleted file mode 100644
index 52057c1fa..000000000
--- a/src/Specific/solinas64_2e255m765/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m765/feaddDisplay.log b/src/Specific/solinas64_2e255m765/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e255m765/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765/feaddDisplay.v b/src/Specific/solinas64_2e255m765/feaddDisplay.v
deleted file mode 100644
index cf80adf3d..000000000
--- a/src/Specific/solinas64_2e255m765/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m765.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e255m765/femul.c b/src/Specific/solinas64_2e255m765/femul.c
deleted file mode 100644
index 57eb9764f..000000000
--- a/src/Specific/solinas64_2e255m765/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x2fd * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x2fd * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x2fd * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x2fd * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- { uint128_t x25 = (x24 >> 0x33);
- { uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint128_t x28 = (x27 >> 0x33);
- { uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint128_t x31 = (x30 >> 0x33);
- { uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint128_t x34 = (x33 >> 0x33);
- { uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x33);
- { uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- { uint128_t x39 = (x26 + ((uint128_t)0x2fd * x37));
- { uint64_t x40 = (uint64_t) (x39 >> 0x33);
- { uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x33);
- { uint64_t x44 = (x42 & 0x7ffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m765/femul.v b/src/Specific/solinas64_2e255m765/femul.v
deleted file mode 100644
index c41815e9f..000000000
--- a/src/Specific/solinas64_2e255m765/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m765/femulDisplay.log b/src/Specific/solinas64_2e255m765/femulDisplay.log
deleted file mode 100644
index 67e30d2d3..000000000
--- a/src/Specific/solinas64_2e255m765/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x2fd * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x2fd * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x2fd * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x2fd * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- uint128_t x25 = (x24 >> 0x33);
- uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint128_t x28 = (x27 >> 0x33);
- uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint128_t x31 = (x30 >> 0x33);
- uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint128_t x34 = (x33 >> 0x33);
- uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x33);
- uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- uint128_t x39 = (x26 + ((uint128_t)0x2fd * x37));
- uint64_t x40 = (uint64_t) (x39 >> 0x33);
- uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x33);
- uint64_t x44 = (x42 & 0x7ffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765/femulDisplay.v b/src/Specific/solinas64_2e255m765/femulDisplay.v
deleted file mode 100644
index b78979161..000000000
--- a/src/Specific/solinas64_2e255m765/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m765.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e255m765/fesquare.c b/src/Specific/solinas64_2e255m765/fesquare.c
deleted file mode 100644
index 31d7686aa..000000000
--- a/src/Specific/solinas64_2e255m765/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x2fd * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x2fd * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x2fd * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- { uint128_t x14 = (x13 >> 0x33);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint128_t x17 = (x16 >> 0x33);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint128_t x20 = (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint128_t x23 = (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x33);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- { uint128_t x28 = (x15 + ((uint128_t)0x2fd * x26));
- { uint64_t x29 = (uint64_t) (x28 >> 0x33);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x33);
- { uint64_t x33 = (x31 & 0x7ffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m765/fesquare.v b/src/Specific/solinas64_2e255m765/fesquare.v
deleted file mode 100644
index 400b58331..000000000
--- a/src/Specific/solinas64_2e255m765/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m765/fesquareDisplay.log b/src/Specific/solinas64_2e255m765/fesquareDisplay.log
deleted file mode 100644
index 6c1f6e7f7..000000000
--- a/src/Specific/solinas64_2e255m765/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x2fd * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x2fd * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x2fd * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- uint128_t x14 = (x13 >> 0x33);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint128_t x17 = (x16 >> 0x33);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint128_t x20 = (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint128_t x23 = (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x33);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- uint128_t x28 = (x15 + ((uint128_t)0x2fd * x26));
- uint64_t x29 = (uint64_t) (x28 >> 0x33);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x33);
- uint64_t x33 = (x31 & 0x7ffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765/fesquareDisplay.v b/src/Specific/solinas64_2e255m765/fesquareDisplay.v
deleted file mode 100644
index 91f9d692b..000000000
--- a/src/Specific/solinas64_2e255m765/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m765.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e255m765/fesub.c b/src/Specific/solinas64_2e255m765/fesub.c
deleted file mode 100644
index ecafe2bad..000000000
--- a/src/Specific/solinas64_2e255m765/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xffffffffffa06 + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m765/fesub.v b/src/Specific/solinas64_2e255m765/fesub.v
deleted file mode 100644
index 5a514bb6e..000000000
--- a/src/Specific/solinas64_2e255m765/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m765/fesubDisplay.log b/src/Specific/solinas64_2e255m765/fesubDisplay.log
deleted file mode 100644
index 9de59caff..000000000
--- a/src/Specific/solinas64_2e255m765/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0xffffffffffa06 + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765/fesubDisplay.v b/src/Specific/solinas64_2e255m765/fesubDisplay.v
deleted file mode 100644
index 525cdc009..000000000
--- a/src/Specific/solinas64_2e255m765/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m765.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e255m765/freeze.c b/src/Specific/solinas64_2e255m765/freeze.c
deleted file mode 100644
index e594e5530..000000000
--- a/src/Specific/solinas64_2e255m765/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10; uint8_t x11 = _subborrow_u51(0x0, x2, 0x7fffffffffd03, &x10);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7fffffffffd03);
- { uint64_t x27; uint8_t x28 = _addcarryx_u51(0x0, x10, x25, &x27);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e255m765/freeze.v b/src/Specific/solinas64_2e255m765/freeze.v
deleted file mode 100644
index 96871f4f1..000000000
--- a/src/Specific/solinas64_2e255m765/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e255m765.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m765/freezeDisplay.log b/src/Specific/solinas64_2e255m765/freezeDisplay.log
deleted file mode 100644
index 32acd112d..000000000
--- a/src/Specific/solinas64_2e255m765/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = subborrow_u51(0x0, x2, 0x7fffffffffd03);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7fffffffffd03);
- uint64_t x27, uint8_t x28 = addcarryx_u51(0x0, x10, x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765/freezeDisplay.v b/src/Specific/solinas64_2e255m765/freezeDisplay.v
deleted file mode 100644
index 0cb33cd19..000000000
--- a/src/Specific/solinas64_2e255m765/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e255m765.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e255m765/CurveParameters.v b/src/Specific/solinas64_2e255m765_5limbs/CurveParameters.v
index 39be5d174..39be5d174 100644
--- a/src/Specific/solinas64_2e255m765/CurveParameters.v
+++ b/src/Specific/solinas64_2e255m765_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e255m765_5limbs/Synthesis.v b/src/Specific/solinas64_2e255m765_5limbs/Synthesis.v
new file mode 100644
index 000000000..e64adcaf7
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m765/compiler.sh b/src/Specific/solinas64_2e255m765_5limbs/compiler.sh
index 3b6608090..3b6608090 100755
--- a/src/Specific/solinas64_2e255m765/compiler.sh
+++ b/src/Specific/solinas64_2e255m765_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e255m765/compilerxx.sh b/src/Specific/solinas64_2e255m765_5limbs/compilerxx.sh
index 1e242f945..1e242f945 100755
--- a/src/Specific/solinas64_2e255m765/compilerxx.sh
+++ b/src/Specific/solinas64_2e255m765_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e255m765_5limbs/feadd.v b/src/Specific/solinas64_2e255m765_5limbs/feadd.v
new file mode 100644
index 000000000..1c917ad02
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e255m765_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..e9c79ca44
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/femul.v b/src/Specific/solinas64_2e255m765_5limbs/femul.v
new file mode 100644
index 000000000..ad14826e5
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/femulDisplay.v b/src/Specific/solinas64_2e255m765_5limbs/femulDisplay.v
new file mode 100644
index 000000000..8c2639511
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/fesquare.v b/src/Specific/solinas64_2e255m765_5limbs/fesquare.v
new file mode 100644
index 000000000..72bda5c31
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e255m765_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1b5085bf0
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/fesub.v b/src/Specific/solinas64_2e255m765_5limbs/fesub.v
new file mode 100644
index 000000000..1fd30c7d7
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e255m765_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..82a69ff6e
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/freeze.v b/src/Specific/solinas64_2e255m765_5limbs/freeze.v
new file mode 100644
index 000000000..d9b1233b7
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m765_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e255m765_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..491dc13db
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e255m765/py_interpreter.sh b/src/Specific/solinas64_2e255m765_5limbs/py_interpreter.sh
index 2d13f3145..2d13f3145 100755
--- a/src/Specific/solinas64_2e255m765/py_interpreter.sh
+++ b/src/Specific/solinas64_2e255m765_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e255m765_6limbs/CurveParameters.v b/src/Specific/solinas64_2e255m765_6limbs/CurveParameters.v
new file mode 100644
index 000000000..a1a80e509
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^255 - 765
+Base: 42.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 42 + 1/2;
+ bitwidth := 64;
+ s := 2^255;
+ c := [(1, 765)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/Synthesis.v b/src/Specific/solinas64_2e255m765_6limbs/Synthesis.v
new file mode 100644
index 000000000..774e42cd2
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/compiler.sh b/src/Specific/solinas64_2e255m765_6limbs/compiler.sh
new file mode 100755
index 000000000..d5b730aa7
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 765' "$@"
diff --git a/src/Specific/solinas64_2e255m765_6limbs/compilerxx.sh b/src/Specific/solinas64_2e255m765_6limbs/compilerxx.sh
new file mode 100755
index 000000000..3aa388b73
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,42,43,42,43,42}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x03}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<255) - 765' "$@"
diff --git a/src/Specific/solinas64_2e255m765_6limbs/feadd.v b/src/Specific/solinas64_2e255m765_6limbs/feadd.v
new file mode 100644
index 000000000..d6d48bc8f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..9cf9aed97
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/femul.v b/src/Specific/solinas64_2e255m765_6limbs/femul.v
new file mode 100644
index 000000000..37b9e8413
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.v b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.v
new file mode 100644
index 000000000..b8e51db3f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesquare.v b/src/Specific/solinas64_2e255m765_6limbs/fesquare.v
new file mode 100644
index 000000000..88bdba72f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b1808fff1
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesub.v b/src/Specific/solinas64_2e255m765_6limbs/fesub.v
new file mode 100644
index 000000000..bcbde607f
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..b4508830e
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/freeze.v b/src/Specific/solinas64_2e255m765_6limbs/freeze.v
new file mode 100644
index 000000000..83c10eeb3
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..c23f85313
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e255m765_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e255m765_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e255m765_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..344f8e65d
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**255 - 765' -Dmodulus_bytes='42.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m189/Synthesis.v b/src/Specific/solinas64_2e256m189/Synthesis.v
deleted file mode 100644
index 67b8124b3..000000000
--- a/src/Specific/solinas64_2e256m189/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e256m189.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m189/feadd.c b/src/Specific/solinas64_2e256m189/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e256m189/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m189/feadd.v b/src/Specific/solinas64_2e256m189/feadd.v
deleted file mode 100644
index 979a6965e..000000000
--- a/src/Specific/solinas64_2e256m189/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m189/feaddDisplay.log b/src/Specific/solinas64_2e256m189/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e256m189/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189/feaddDisplay.v b/src/Specific/solinas64_2e256m189/feaddDisplay.v
deleted file mode 100644
index 06025d4f5..000000000
--- a/src/Specific/solinas64_2e256m189/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m189.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e256m189/femul.c b/src/Specific/solinas64_2e256m189/femul.c
deleted file mode 100644
index aa2dbbea0..000000000
--- a/src/Specific/solinas64_2e256m189/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0xbd * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0xbd * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0xbd * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0xbd * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- { uint128_t x25 = (x24 >> 0x34);
- { uint64_t x26 = ((uint64_t)x24 & 0xfffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x33);
- { uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x33);
- { uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x33);
- { uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x33);
- { uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- { uint128_t x39 = (x26 + ((uint128_t)0xbd * x37));
- { uint64_t x40 = (uint64_t) (x39 >> 0x34);
- { uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x33);
- { uint64_t x44 = (x42 & 0x7ffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m189/femul.v b/src/Specific/solinas64_2e256m189/femul.v
deleted file mode 100644
index 5f55b3e86..000000000
--- a/src/Specific/solinas64_2e256m189/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m189/femulDisplay.log b/src/Specific/solinas64_2e256m189/femulDisplay.log
deleted file mode 100644
index 613afda6e..000000000
--- a/src/Specific/solinas64_2e256m189/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0xbd * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0xbd * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0xbd * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0xbd * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- uint128_t x25 = (x24 >> 0x34);
- uint64_t x26 = ((uint64_t)x24 & 0xfffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x33);
- uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x33);
- uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x33);
- uint64_t x35 = ((uint64_t)x33 & 0x7ffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x33);
- uint64_t x38 = ((uint64_t)x36 & 0x7ffffffffffff);
- uint128_t x39 = (x26 + ((uint128_t)0xbd * x37));
- uint64_t x40 = (uint64_t) (x39 >> 0x34);
- uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x33);
- uint64_t x44 = (x42 & 0x7ffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189/femulDisplay.v b/src/Specific/solinas64_2e256m189/femulDisplay.v
deleted file mode 100644
index 9b241b20f..000000000
--- a/src/Specific/solinas64_2e256m189/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m189.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e256m189/fesquare.c b/src/Specific/solinas64_2e256m189/fesquare.c
deleted file mode 100644
index 7eaafeefe..000000000
--- a/src/Specific/solinas64_2e256m189/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbd * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- { uint128_t x14 = (x13 >> 0x34);
- { uint64_t x15 = ((uint64_t)x13 & 0xfffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x33);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x33);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- { uint128_t x28 = (x15 + ((uint128_t)0xbd * x26));
- { uint64_t x29 = (uint64_t) (x28 >> 0x34);
- { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x33);
- { uint64_t x33 = (x31 & 0x7ffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m189/fesquare.v b/src/Specific/solinas64_2e256m189/fesquare.v
deleted file mode 100644
index 9c28a7755..000000000
--- a/src/Specific/solinas64_2e256m189/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m189/fesquareDisplay.log b/src/Specific/solinas64_2e256m189/fesquareDisplay.log
deleted file mode 100644
index 6084f98e3..000000000
--- a/src/Specific/solinas64_2e256m189/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbd * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- uint128_t x14 = (x13 >> 0x34);
- uint64_t x15 = ((uint64_t)x13 & 0xfffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x33);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x33);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffff);
- uint128_t x28 = (x15 + ((uint128_t)0xbd * x26));
- uint64_t x29 = (uint64_t) (x28 >> 0x34);
- uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x33);
- uint64_t x33 = (x31 & 0x7ffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189/fesquareDisplay.v b/src/Specific/solinas64_2e256m189/fesquareDisplay.v
deleted file mode 100644
index 9e9f9cc56..000000000
--- a/src/Specific/solinas64_2e256m189/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m189.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e256m189/fesub.c b/src/Specific/solinas64_2e256m189/fesub.c
deleted file mode 100644
index 9498fba5a..000000000
--- a/src/Specific/solinas64_2e256m189/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0x1ffffffffffe86 + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m189/fesub.v b/src/Specific/solinas64_2e256m189/fesub.v
deleted file mode 100644
index 095cbe516..000000000
--- a/src/Specific/solinas64_2e256m189/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m189/fesubDisplay.log b/src/Specific/solinas64_2e256m189/fesubDisplay.log
deleted file mode 100644
index 7089f9abe..000000000
--- a/src/Specific/solinas64_2e256m189/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0x1ffffffffffe86 + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189/fesubDisplay.v b/src/Specific/solinas64_2e256m189/fesubDisplay.v
deleted file mode 100644
index 8344e37df..000000000
--- a/src/Specific/solinas64_2e256m189/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m189.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e256m189/freeze.c b/src/Specific/solinas64_2e256m189/freeze.c
deleted file mode 100644
index 3bf5b68f3..000000000
--- a/src/Specific/solinas64_2e256m189/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff43);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xfffffffffff43);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m189/freeze.v b/src/Specific/solinas64_2e256m189/freeze.v
deleted file mode 100644
index 4aad6407e..000000000
--- a/src/Specific/solinas64_2e256m189/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m189.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m189/freezeDisplay.log b/src/Specific/solinas64_2e256m189/freezeDisplay.log
deleted file mode 100644
index 601faa4c7..000000000
--- a/src/Specific/solinas64_2e256m189/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff43);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xfffffffffff43);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189/freezeDisplay.v b/src/Specific/solinas64_2e256m189/freezeDisplay.v
deleted file mode 100644
index 728d06791..000000000
--- a/src/Specific/solinas64_2e256m189/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m189.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e256m189/CurveParameters.v b/src/Specific/solinas64_2e256m189_5limbs/CurveParameters.v
index 86d4cd268..86d4cd268 100644
--- a/src/Specific/solinas64_2e256m189/CurveParameters.v
+++ b/src/Specific/solinas64_2e256m189_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e256m189_5limbs/Synthesis.v b/src/Specific/solinas64_2e256m189_5limbs/Synthesis.v
new file mode 100644
index 000000000..e45a232ee
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m189/compiler.sh b/src/Specific/solinas64_2e256m189_5limbs/compiler.sh
index 5acbd9e84..5acbd9e84 100755
--- a/src/Specific/solinas64_2e256m189/compiler.sh
+++ b/src/Specific/solinas64_2e256m189_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e256m189/compilerxx.sh b/src/Specific/solinas64_2e256m189_5limbs/compilerxx.sh
index 1a13f942a..1a13f942a 100755
--- a/src/Specific/solinas64_2e256m189/compilerxx.sh
+++ b/src/Specific/solinas64_2e256m189_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e256m189_5limbs/feadd.v b/src/Specific/solinas64_2e256m189_5limbs/feadd.v
new file mode 100644
index 000000000..a03165e12
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m189_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..eed304b2b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/femul.v b/src/Specific/solinas64_2e256m189_5limbs/femul.v
new file mode 100644
index 000000000..bfffffa3c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/femulDisplay.v b/src/Specific/solinas64_2e256m189_5limbs/femulDisplay.v
new file mode 100644
index 000000000..84b21303c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/fesquare.v b/src/Specific/solinas64_2e256m189_5limbs/fesquare.v
new file mode 100644
index 000000000..2a46f87c2
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m189_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..d46eac60b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/fesub.v b/src/Specific/solinas64_2e256m189_5limbs/fesub.v
new file mode 100644
index 000000000..3c31f9c41
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m189_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..5602d0baa
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/freeze.v b/src/Specific/solinas64_2e256m189_5limbs/freeze.v
new file mode 100644
index 000000000..b2c5f0adc
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m189_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m189_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..f0cc739b2
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m189/py_interpreter.sh b/src/Specific/solinas64_2e256m189_5limbs/py_interpreter.sh
index 6da421d25..6da421d25 100755
--- a/src/Specific/solinas64_2e256m189/py_interpreter.sh
+++ b/src/Specific/solinas64_2e256m189_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e256m189_6limbs/CurveParameters.v b/src/Specific/solinas64_2e256m189_6limbs/CurveParameters.v
new file mode 100644
index 000000000..5474b61d9
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 189
+Base: 42 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 42 + 2/3;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 189)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/Synthesis.v b/src/Specific/solinas64_2e256m189_6limbs/Synthesis.v
new file mode 100644
index 000000000..c2218076b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/compiler.sh b/src/Specific/solinas64_2e256m189_6limbs/compiler.sh
new file mode 100755
index 000000000..9603c1166
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - 189' "$@"
diff --git a/src/Specific/solinas64_2e256m189_6limbs/compilerxx.sh b/src/Specific/solinas64_2e256m189_6limbs/compilerxx.sh
new file mode 100755
index 000000000..9742a7b98
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - 189' "$@"
diff --git a/src/Specific/solinas64_2e256m189_6limbs/feadd.v b/src/Specific/solinas64_2e256m189_6limbs/feadd.v
new file mode 100644
index 000000000..41fe92cc7
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..2d7a86a2f
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/femul.v b/src/Specific/solinas64_2e256m189_6limbs/femul.v
new file mode 100644
index 000000000..7dfc68975
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.v b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.v
new file mode 100644
index 000000000..208441658
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesquare.v b/src/Specific/solinas64_2e256m189_6limbs/fesquare.v
new file mode 100644
index 000000000..47b683f1c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4f13c5218
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesub.v b/src/Specific/solinas64_2e256m189_6limbs/fesub.v
new file mode 100644
index 000000000..09924afa2
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..7c9fdabe9
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/freeze.v b/src/Specific/solinas64_2e256m189_6limbs/freeze.v
new file mode 100644
index 000000000..bf9c17f73
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..0ba10ba65
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m189_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m189_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m189_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..942f8d764
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 189' -Dmodulus_bytes='42 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v
deleted file mode 100644
index b57f16745..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.v
deleted file mode 100644
index 9f92be77c..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.v
deleted file mode 100644
index 725473009..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v
deleted file mode 100644
index 28a8ba1ce..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v
deleted file mode 100644
index 441029def..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v
deleted file mode 100644
index a46867d6c..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v
deleted file mode 100644
index 1e552ed55..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesub.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesub.v
deleted file mode 100644
index f7728232a..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesubDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesubDisplay.v
deleted file mode 100644
index 21218f0ca..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.c
deleted file mode 100644
index b5d95bd90..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.c
+++ /dev/null
@@ -1,28 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- { uint64_t x13; ℤ x14 = _subborrow_u51ℤ(x11, x4, 0xfffffffffff, &x13);
- { uint64_t x16; ℤ x17 = _subborrow_u51ℤ(x14, x6, 0x0, &x16);
- { uint64_t x19; ℤ x20 = _subborrow_u51ℤ(x17, x8, 0x4000000000, &x19);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 51 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffff80000);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xfffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0xfffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x34; uint8_t x35 = _addcarryx_u51(x32, x16, 0x0, &x34);
- { uint64_t x36 = (x24 & 0x4000000000);
- { uint64_t x38; uint8_t x39 = _addcarryx_u51(x35, x19, x36, &x38);
- { uint64_t x40 = (x24 & 0x7fffffff80000);
- { uint64_t x42; uint8_t _ = _addcarryx_u51(x39, x22, x40, &x42);
- out[0] = x27;
- out[1] = x31;
- out[2] = x34;
- out[3] = x38;
- out[4] = x42;
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v
deleted file mode 100644
index 863e682c4..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.log
deleted file mode 100644
index f5f1f30bc..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.log
+++ /dev/null
@@ -1,22 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- uint64_t x13, ℤ x14 = subborrow_u51ℤ(x11, x4, 0xfffffffffff);
- uint64_t x16, ℤ x17 = subborrow_u51ℤ(x14, x6, 0x0);
- uint64_t x19, ℤ x20 = subborrow_u51ℤ(x17, x8, 0x4000000000);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 51 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffff80000);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xfffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0xfffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x34, uint8_t x35 = addcarryx_u51(x32, x16, 0x0);
- uint64_t x36 = (x24 & 0x4000000000);
- uint64_t x38, uint8_t x39 = addcarryx_u51(x35, x19, x36);
- uint64_t x40 = (x24 & 0x7fffffff80000);
- uint64_t x42, uint8_t _ = addcarryx_u51(x39, x22, x40);
- (Return x42, Return x38, Return x34, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v
deleted file mode 100644
index ca6cdff15..000000000
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/CurveParameters.v
index 36bcac59d..36bcac59d 100644
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/Synthesis.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/Synthesis.v
new file mode 100644
index 000000000..deb5c225d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compiler.sh
index d033eb4ae..d033eb4ae 100755
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compiler.sh
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compilerxx.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compilerxx.sh
index 97cddda9f..97cddda9f 100755
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feadd.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feadd.v
new file mode 100644
index 000000000..4e0dbfc51
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..c16c930d6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femul.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femul.v
new file mode 100644
index 000000000..65a39b396
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femulDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femulDisplay.v
new file mode 100644
index 000000000..bd3aad397
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquare.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquare.v
new file mode 100644
index 000000000..48887f8fd
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9e68ebde4
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesub.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesub.v
new file mode 100644
index 000000000..db1988e53
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..571983faa
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freeze.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freeze.v
new file mode 100644
index 000000000..e6fadc212
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..316129c19
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/py_interpreter.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/py_interpreter.sh
index 4d329b161..4d329b161 100755
--- a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/CurveParameters.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/CurveParameters.v
new file mode 100644
index 000000000..9b731d455
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 2^224 + 2^192 + 2^96 - 1
+Base: 42 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 42 + 2/3;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 1); (2^96, -1); (2^192, -1); (2^224, 1)];
+ carry_chains := Some [[4; 3; 1; 5]; [5; 4; 2; 0; 3; 1]; [5; 4; 2; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/Synthesis.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..f0a76995c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compiler.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compiler.sh
new file mode 100755
index 000000000..a123f5d88
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1' "$@"
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compilerxx.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compilerxx.sh
new file mode 100755
index 000000000..425e0ec5d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<224) + (1_mpz<<192) + (1_mpz<<96) - 1' "$@"
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.v
new file mode 100644
index 000000000..dad111164
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..509c73771
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femul.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femul.v
new file mode 100644
index 000000000..067ce9974
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femulDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1caf1d4d5
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquare.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquare.v
new file mode 100644
index 000000000..b28e33170
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2a23d1549
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesub.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesub.v
new file mode 100644
index 000000000..fa91688ee
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..a44dab14e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.v
new file mode 100644
index 000000000..e83e02d57
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..e9dafcd16
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e224p2e192p2e96m1_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..e08cc3e90
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 2**224 + 2**192 + 2**96 - 1' -Dmodulus_bytes='42 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v b/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v
deleted file mode 100644
index 435eb4061..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^256 - 2^32 - 977
-Base: 51.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 5%nat;
- base := 51 + 1/5;
- bitwidth := 64;
- s := 2^256;
- c := [(1, 977); (2^32, 1)];
- carry_chains := Some [[4; 4]; [0; 1; 2; 3]; [0; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m2e32m977/Synthesis.v b/src/Specific/solinas64_2e256m2e32m977/Synthesis.v
deleted file mode 100644
index cd01a66d8..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e32m977/compiler.sh b/src/Specific/solinas64_2e256m2e32m977/compiler.sh
deleted file mode 100755
index fd3c72d90..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977/compilerxx.sh b/src/Specific/solinas64_2e256m2e32m977/compilerxx.sh
deleted file mode 100755
index 0f38fbdea..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977/feadd.c b/src/Specific/solinas64_2e256m2e32m977/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e32m977/feadd.v b/src/Specific/solinas64_2e256m2e32m977/feadd.v
deleted file mode 100644
index eb84bcc4d..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.log b/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.v b/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.v
deleted file mode 100644
index ed61133e8..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e256m2e32m977/femul.c b/src/Specific/solinas64_2e256m2e32m977/femul.c
deleted file mode 100644
index ac6b087a0..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/femul.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { ℤ x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) +ℤ ((0x3d1 * ((uint128_t)x10 * x18)) +ℤ (0x100000000 *ℤ ((uint128_t)x10 * x18))));
- { ℤ x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) +ℤ ((0x3d1 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))) +ℤ (0x100000000 *ℤ (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19)))));
- { ℤ x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) +ℤ ((0x3d1 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))) +ℤ (0x100000000 *ℤ (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17))))));
- { ℤ x24 = (((uint128_t)x5 * x13) +ℤ ((0x3d1 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))) +ℤ (0x100000000 *ℤ ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15))))))));
- { uint64_t x25 = (uint64_t) (x20 >> 0x33);
- { uint64_t x26 = ((uint64_t)x20 & 0x7ffffffffffff);
- { uint128_t x27 = (((uint128_t)0x8000000000000 * x25) + x26);
- { uint64_t x28 = (uint64_t) (x27 >> 0x33);
- { uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- { uint128_t x30 = (((uint128_t)0x8000000000000 * x28) + x29);
- { uint64_t x31 = (uint64_t) (x30 >> 0x33);
- { uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- { ℤ x33 = (x24 +ℤ (((uint128_t)0x3d1 * x31) + ((uint128_t)0x100000000 * x31)));
- { uint128_t x34 = (x33 >> 0x34);
- { uint64_t x35 = (x33 & 0xfffffffffffff);
- { ℤ x36 = (x34 +ℤ x23);
- { uint128_t x37 = (x36 >> 0x33);
- { uint64_t x38 = (x36 & 0x7ffffffffffff);
- { ℤ x39 = (x37 +ℤ x22);
- { uint128_t x40 = (x39 >> 0x33);
- { uint64_t x41 = (x39 & 0x7ffffffffffff);
- { ℤ x42 = (x40 +ℤ x21);
- { uint128_t x43 = (x42 >> 0x33);
- { uint64_t x44 = (x42 & 0x7ffffffffffff);
- { uint128_t x45 = (x43 + x32);
- { uint64_t x46 = (uint64_t) (x45 >> 0x33);
- { uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffff);
- { uint128_t x48 = (x35 + ((0x3d1 * x46) + ((uint128_t)0x100000000 * x46)));
- { uint64_t x49 = (uint64_t) (x48 >> 0x34);
- { uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffff);
- { uint64_t x51 = (x50 >> 0x34);
- { uint64_t x52 = (x50 & 0xfffffffffffff);
- out[0] = x52;
- out[1] = (x51 + (x49 + x38));
- out[2] = x41;
- out[3] = x44;
- out[4] = x47;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e32m977/femul.v b/src/Specific/solinas64_2e256m2e32m977/femul.v
deleted file mode 100644
index c66074483..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977/femulDisplay.log b/src/Specific/solinas64_2e256m2e32m977/femulDisplay.log
deleted file mode 100644
index 50f76198f..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- ℤ x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) +ℤ ((0x3d1 * ((uint128_t)x10 * x18)) +ℤ (0x100000000 *ℤ ((uint128_t)x10 * x18))));
- ℤ x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) +ℤ ((0x3d1 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))) +ℤ (0x100000000 *ℤ (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19)))));
- ℤ x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) +ℤ ((0x3d1 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))) +ℤ (0x100000000 *ℤ (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17))))));
- ℤ x24 = (((uint128_t)x5 * x13) +ℤ ((0x3d1 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))) +ℤ (0x100000000 *ℤ ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15))))))));
- uint64_t x25 = (uint64_t) (x20 >> 0x33);
- uint64_t x26 = ((uint64_t)x20 & 0x7ffffffffffff);
- uint128_t x27 = (((uint128_t)0x8000000000000 * x25) + x26);
- uint64_t x28 = (uint64_t) (x27 >> 0x33);
- uint64_t x29 = ((uint64_t)x27 & 0x7ffffffffffff);
- uint128_t x30 = (((uint128_t)0x8000000000000 * x28) + x29);
- uint64_t x31 = (uint64_t) (x30 >> 0x33);
- uint64_t x32 = ((uint64_t)x30 & 0x7ffffffffffff);
- ℤ x33 = (x24 +ℤ (((uint128_t)0x3d1 * x31) + ((uint128_t)0x100000000 * x31)));
- uint128_t x34 = (x33 >> 0x34);
- uint64_t x35 = (x33 & 0xfffffffffffff);
- ℤ x36 = (x34 +ℤ x23);
- uint128_t x37 = (x36 >> 0x33);
- uint64_t x38 = (x36 & 0x7ffffffffffff);
- ℤ x39 = (x37 +ℤ x22);
- uint128_t x40 = (x39 >> 0x33);
- uint64_t x41 = (x39 & 0x7ffffffffffff);
- ℤ x42 = (x40 +ℤ x21);
- uint128_t x43 = (x42 >> 0x33);
- uint64_t x44 = (x42 & 0x7ffffffffffff);
- uint128_t x45 = (x43 + x32);
- uint64_t x46 = (uint64_t) (x45 >> 0x33);
- uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffff);
- uint128_t x48 = (x35 + ((0x3d1 * x46) + ((uint128_t)0x100000000 * x46)));
- uint64_t x49 = (uint64_t) (x48 >> 0x34);
- uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffff);
- uint64_t x51 = (x50 >> 0x34);
- uint64_t x52 = (x50 & 0xfffffffffffff);
- return (Return x47, Return x44, Return x41, (x51 + (x49 + x38)), Return x52))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v b/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v
deleted file mode 100644
index f4c3278ca..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquare.c b/src/Specific/solinas64_2e256m2e32m977/fesquare.c
deleted file mode 100644
index 23fe9a652..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesquare.c
+++ /dev/null
@@ -1,46 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { ℤ x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) +ℤ ((0x3d1 * ((uint128_t)x7 * x7)) +ℤ (0x100000000 *ℤ ((uint128_t)x7 * x7))));
- { ℤ x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) +ℤ ((0x3d1 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))) +ℤ (0x100000000 *ℤ (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8)))));
- { ℤ x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ ((0x3d1 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))) +ℤ (0x100000000 *ℤ (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6))))));
- { ℤ x13 = (((uint128_t)x2 * x2) +ℤ ((0x3d1 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))) +ℤ (0x100000000 *ℤ ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4))))))));
- { uint64_t x14 = (uint64_t) (x9 >> 0x33);
- { uint64_t x15 = ((uint64_t)x9 & 0x7ffffffffffff);
- { uint128_t x16 = (((uint128_t)0x8000000000000 * x14) + x15);
- { uint64_t x17 = (uint64_t) (x16 >> 0x33);
- { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- { uint128_t x19 = (((uint128_t)0x8000000000000 * x17) + x18);
- { uint64_t x20 = (uint64_t) (x19 >> 0x33);
- { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- { ℤ x22 = (x13 +ℤ (((uint128_t)0x3d1 * x20) + ((uint128_t)0x100000000 * x20)));
- { uint128_t x23 = (x22 >> 0x34);
- { uint64_t x24 = (x22 & 0xfffffffffffff);
- { ℤ x25 = (x23 +ℤ x12);
- { uint128_t x26 = (x25 >> 0x33);
- { uint64_t x27 = (x25 & 0x7ffffffffffff);
- { ℤ x28 = (x26 +ℤ x11);
- { uint128_t x29 = (x28 >> 0x33);
- { uint64_t x30 = (x28 & 0x7ffffffffffff);
- { ℤ x31 = (x29 +ℤ x10);
- { uint128_t x32 = (x31 >> 0x33);
- { uint64_t x33 = (x31 & 0x7ffffffffffff);
- { uint128_t x34 = (x32 + x21);
- { uint64_t x35 = (uint64_t) (x34 >> 0x33);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- { uint128_t x37 = (x24 + ((0x3d1 * x35) + ((uint128_t)0x100000000 * x35)));
- { uint64_t x38 = (uint64_t) (x37 >> 0x34);
- { uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
- { uint64_t x40 = (x39 >> 0x34);
- { uint64_t x41 = (x39 & 0xfffffffffffff);
- out[0] = x41;
- out[1] = (x40 + (x38 + x27));
- out[2] = x30;
- out[3] = x33;
- out[4] = x36;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquare.v b/src/Specific/solinas64_2e256m2e32m977/fesquare.v
deleted file mode 100644
index 5e58ca1e2..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.log b/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.log
deleted file mode 100644
index a1bf664b8..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- ℤ x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) +ℤ ((0x3d1 * ((uint128_t)x7 * x7)) +ℤ (0x100000000 *ℤ ((uint128_t)x7 * x7))));
- ℤ x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) +ℤ ((0x3d1 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))) +ℤ (0x100000000 *ℤ (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8)))));
- ℤ x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ ((0x3d1 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))) +ℤ (0x100000000 *ℤ (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6))))));
- ℤ x13 = (((uint128_t)x2 * x2) +ℤ ((0x3d1 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))) +ℤ (0x100000000 *ℤ ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4))))))));
- uint64_t x14 = (uint64_t) (x9 >> 0x33);
- uint64_t x15 = ((uint64_t)x9 & 0x7ffffffffffff);
- uint128_t x16 = (((uint128_t)0x8000000000000 * x14) + x15);
- uint64_t x17 = (uint64_t) (x16 >> 0x33);
- uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffffff);
- uint128_t x19 = (((uint128_t)0x8000000000000 * x17) + x18);
- uint64_t x20 = (uint64_t) (x19 >> 0x33);
- uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffffff);
- ℤ x22 = (x13 +ℤ (((uint128_t)0x3d1 * x20) + ((uint128_t)0x100000000 * x20)));
- uint128_t x23 = (x22 >> 0x34);
- uint64_t x24 = (x22 & 0xfffffffffffff);
- ℤ x25 = (x23 +ℤ x12);
- uint128_t x26 = (x25 >> 0x33);
- uint64_t x27 = (x25 & 0x7ffffffffffff);
- ℤ x28 = (x26 +ℤ x11);
- uint128_t x29 = (x28 >> 0x33);
- uint64_t x30 = (x28 & 0x7ffffffffffff);
- ℤ x31 = (x29 +ℤ x10);
- uint128_t x32 = (x31 >> 0x33);
- uint64_t x33 = (x31 & 0x7ffffffffffff);
- uint128_t x34 = (x32 + x21);
- uint64_t x35 = (uint64_t) (x34 >> 0x33);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- uint128_t x37 = (x24 + ((0x3d1 * x35) + ((uint128_t)0x100000000 * x35)));
- uint64_t x38 = (uint64_t) (x37 >> 0x34);
- uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
- uint64_t x40 = (x39 >> 0x34);
- uint64_t x41 = (x39 & 0xfffffffffffff);
- return (Return x36, Return x33, Return x30, (x40 + (x38 + x27)), Return x41))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v
deleted file mode 100644
index de4d570af..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesub.c b/src/Specific/solinas64_2e256m2e32m977/fesub.c
deleted file mode 100644
index 1838b1402..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0x1ffffdfffff85e + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesub.v b/src/Specific/solinas64_2e256m2e32m977/fesub.v
deleted file mode 100644
index 6a21e7ed8..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.log b/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.log
deleted file mode 100644
index 993f8132c..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0x1ffffdfffff85e + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.v b/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.v
deleted file mode 100644
index f1a73809e..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977/freeze.c b/src/Specific/solinas64_2e256m2e32m977/freeze.c
deleted file mode 100644
index e55425742..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffefffffc2f);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xffffefffffc2f);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7ffffffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m2e32m977/freeze.v b/src/Specific/solinas64_2e256m2e32m977/freeze.v
deleted file mode 100644
index 78671d8d1..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.log b/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.log
deleted file mode 100644
index ce39618ba..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffefffffc2f);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7ffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xffffefffffc2f);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7ffffffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v b/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v
deleted file mode 100644
index 28d474b28..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m2e32m977.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977/py_interpreter.sh b/src/Specific/solinas64_2e256m2e32m977/py_interpreter.sh
deleted file mode 100755
index 500f57995..000000000
--- a/src/Specific/solinas64_2e256m2e32m977/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**256 - 2**32 - 977' -Dmodulus_bytes='51.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/CurveParameters.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/CurveParameters.v
new file mode 100644
index 000000000..a3bdfe9e6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 2^32 - 977
+Base: 42 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 42 + 2/3;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 977); (2^32, 1)];
+ carry_chains := Some [[5; 5]; [0; 1; 2; 3; 4]; [0; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/Synthesis.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/Synthesis.v
new file mode 100644
index 000000000..c54003e51
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/compiler.sh b/src/Specific/solinas64_2e256m2e32m977_6limbs/compiler.sh
new file mode 100755
index 000000000..a0dc88f64
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/compilerxx.sh b/src/Specific/solinas64_2e256m2e32m977_6limbs/compilerxx.sh
new file mode 100755
index 000000000..1e6ddb308
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.v
new file mode 100644
index 000000000..d8032dd5b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..24b4c5165
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.v
new file mode 100644
index 000000000..3c1b140bf
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.v
new file mode 100644
index 000000000..00ebfd5e2
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.v
new file mode 100644
index 000000000..5a76a5ea1
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..18a0a8018
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.v
new file mode 100644
index 000000000..9e5cd0b10
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..b754c9885
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.v
new file mode 100644
index 000000000..e01bbad98
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..1d42d86bf
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m2e32m977_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..67b8b2a0d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 2**32 - 977' -Dmodulus_bytes='42 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/CurveParameters.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/CurveParameters.v
new file mode 100644
index 000000000..c788af8e6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 2^32 - 977
+Base: 36 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 36 + 4/7;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 977); (2^32, 1)];
+ carry_chains := Some [[6; 6]; [0; 1; 2; 3; 4; 5]; [0; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/Synthesis.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/Synthesis.v
new file mode 100644
index 000000000..343dbfc90
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/compiler.sh b/src/Specific/solinas64_2e256m2e32m977_7limbs/compiler.sh
new file mode 100755
index 000000000..999b6e77c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{37,37,36,37,36,37,36}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/compilerxx.sh b/src/Specific/solinas64_2e256m2e32m977_7limbs/compilerxx.sh
new file mode 100755
index 000000000..f98c25b4a
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{37,37,36,37,36,37,36}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<256) - (1_mpz<<32) - 977' "$@"
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/feadd.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/feadd.v
new file mode 100644
index 000000000..0efc53ecd
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..72735b6b3
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/femul.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/femul.v
new file mode 100644
index 000000000..7abe8275e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/femulDisplay.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/femulDisplay.v
new file mode 100644
index 000000000..6a99ddf06
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquare.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquare.v
new file mode 100644
index 000000000..fbb472214
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a1a62022a
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/fesub.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesub.v
new file mode 100644
index 000000000..709fda544
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..5ffec431d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/freeze.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/freeze.v
new file mode 100644
index 000000000..b03ef68ca
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m2e32m977_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..6ce8a77b3
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m2e32m977_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m2e32m977_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m2e32m977_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..94fddd182
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 2**32 - 977' -Dmodulus_bytes='36 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/CurveParameters.v b/src/Specific/solinas64_2e256m4294968273_10limbs/CurveParameters.v
new file mode 100644
index 000000000..2f05d6aad
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 4294968273
+Base: 25.6
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 25 + 3/5;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 4294968273)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/Synthesis.v b/src/Specific/solinas64_2e256m4294968273_10limbs/Synthesis.v
new file mode 100644
index 000000000..1c83b553d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/compiler.sh b/src/Specific/solinas64_2e256m4294968273_10limbs/compiler.sh
new file mode 100755
index 000000000..40d2724cc
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,26,25,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/compilerxx.sh b/src/Specific/solinas64_2e256m4294968273_10limbs/compilerxx.sh
new file mode 100755
index 000000000..e31830abf
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{26,26,25,26,25,26,26,25,26,25}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/feadd.v b/src/Specific/solinas64_2e256m4294968273_10limbs/feadd.v
new file mode 100644
index 000000000..1ad6b0e95
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m4294968273_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..fea9689cc
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/femul.v b/src/Specific/solinas64_2e256m4294968273_10limbs/femul.v
new file mode 100644
index 000000000..673b1fd3e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.v b/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.v
new file mode 100644
index 000000000..cbfdf260e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.v b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.v
new file mode 100644
index 000000000..4d82e008a
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a5d45f524
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.v b/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.v
new file mode 100644
index 000000000..f34b20edf
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..98c44dc0e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.v b/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.v
new file mode 100644
index 000000000..4e929b8c3
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..3cf0e4776
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m4294968273_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m4294968273_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..a6f37492e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 4294968273' -Dmodulus_bytes='25.6' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/CurveParameters.v b/src/Specific/solinas64_2e256m4294968273_9limbs/CurveParameters.v
new file mode 100644
index 000000000..c376d9abe
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^256 - 4294968273
+Base: 28 + 4/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 28 + 4/9;
+ bitwidth := 64;
+ s := 2^256;
+ c := [(1, 4294968273)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/Synthesis.v b/src/Specific/solinas64_2e256m4294968273_9limbs/Synthesis.v
new file mode 100644
index 000000000..4e31ed300
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/compiler.sh b/src/Specific/solinas64_2e256m4294968273_9limbs/compiler.sh
new file mode 100755
index 000000000..cf4633470
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{29,28,29,28,29,28,29,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/compilerxx.sh b/src/Specific/solinas64_2e256m4294968273_9limbs/compilerxx.sh
new file mode 100755
index 000000000..c511e19f6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{29,28,29,28,29,28,29,28,28}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xfc,0x2f}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<256) - 4294968273' "$@"
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/feadd.v b/src/Specific/solinas64_2e256m4294968273_9limbs/feadd.v
new file mode 100644
index 000000000..eb7d2a9bd
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e256m4294968273_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..4b2e0f27a
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/femul.v b/src/Specific/solinas64_2e256m4294968273_9limbs/femul.v
new file mode 100644
index 000000000..b3612e349
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.v b/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.v
new file mode 100644
index 000000000..256e3d01e
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.v b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.v
new file mode 100644
index 000000000..a63d8fbb7
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8c1ed02d9
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.v b/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.v
new file mode 100644
index 000000000..641f927a6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..2ea866ba0
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.v b/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.v
new file mode 100644
index 000000000..81af86c86
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..c8452a039
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e256m4294968273_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e256m4294968273_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e256m4294968273_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..68cc29d7c
--- /dev/null
+++ b/src/Specific/solinas64_2e256m4294968273_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**256 - 4294968273' -Dmodulus_bytes='28 + 4/9' -Da24='121665'
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/CurveParameters.v b/src/Specific/solinas64_2e256m88x2e240m1/CurveParameters.v
deleted file mode 100644
index 0667ab22e..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^256 - 88*2^240 - 1
-Base: 51.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 5%nat;
- base := 51 + 1/5;
- bitwidth := 64;
- s := 2^256;
- c := [(1, 1); (88, 2^240)];
- carry_chains := Some [[3; 4]; [4; 0; 1; 2; 3]; [4; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/Synthesis.v b/src/Specific/solinas64_2e256m88x2e240m1/Synthesis.v
deleted file mode 100644
index f803ba58b..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/compiler.sh b/src/Specific/solinas64_2e256m88x2e240m1/compiler.sh
deleted file mode 100755
index bbdf08731..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/compilerxx.sh b/src/Specific/solinas64_2e256m88x2e240m1/compilerxx.sh
deleted file mode 100755
index f03c875e8..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51}' -Dmodulus_array='{0xff,0xa7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='32' -Dmodulus_limbs='5' -Dq_mpz='(1_mpz<<256) - 88*(1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/feadd.c b/src/Specific/solinas64_2e256m88x2e240m1/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/feadd.v b/src/Specific/solinas64_2e256m88x2e240m1/feadd.v
deleted file mode 100644
index 97f52bfcf..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.log b/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.v b/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.v
deleted file mode 100644
index c0eeb6ec0..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/femul.v b/src/Specific/solinas64_2e256m88x2e240m1/femul.v
deleted file mode 100644
index 06a7ecc3c..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.log b/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.log
deleted file mode 100644
index e69de29bb..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.log
+++ /dev/null
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.v b/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.v
deleted file mode 100644
index 03e18f5cd..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesquare.v b/src/Specific/solinas64_2e256m88x2e240m1/fesquare.v
deleted file mode 100644
index e95e08977..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesquareDisplay.v b/src/Specific/solinas64_2e256m88x2e240m1/fesquareDisplay.v
deleted file mode 100644
index 8d57444ae..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesub.c b/src/Specific/solinas64_2e256m88x2e240m1/fesub.c
deleted file mode 100644
index 10a2e6c20..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0x1ffffffffffffe + x5) - x13);
- out[1] = ((0xffffffffffffe + x7) - x15);
- out[2] = ((0xffffffffffffe + x9) - x17);
- out[3] = ((0xffffffffffffe + x11) - x19);
- out[4] = ((0xffa7ffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesub.v b/src/Specific/solinas64_2e256m88x2e240m1/fesub.v
deleted file mode 100644
index 0b2ae1da0..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.log b/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.log
deleted file mode 100644
index 1c0daea96..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffa7ffffffffe + x10) - x18), ((0xffffffffffffe + x11) - x19), ((0xffffffffffffe + x9) - x17), ((0xffffffffffffe + x7) - x15), ((0x1ffffffffffffe + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.v b/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.v
deleted file mode 100644
index c8630ed33..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/freeze.c b/src/Specific/solinas64_2e256m88x2e240m1/freeze.c
deleted file mode 100644
index 22c2343f6..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- { uint64_t x13; uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
- { uint64_t x16; uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
- { uint64_t x19; uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
- { uint64_t x22; uint8_t x23 = _subborrow_u51(x20, x7, 0x7fd3fffffffff, &x22);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0xfffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x7ffffffffffff);
- { uint64_t x31; uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
- { uint64_t x33 = (x24 & 0x7ffffffffffff);
- { uint64_t x35; uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
- { uint64_t x37 = (x24 & 0x7ffffffffffff);
- { uint64_t x39; uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
- { uint64_t x41 = (x24 & 0x7fd3fffffffff);
- { uint64_t x43; uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/freeze.v b/src/Specific/solinas64_2e256m88x2e240m1/freeze.v
deleted file mode 100644
index bc262af7c..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.log b/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.log
deleted file mode 100644
index dca10d578..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- uint64_t x13, uint8_t x14 = subborrow_u51(x11, x4, 0x7ffffffffffff);
- uint64_t x16, uint8_t x17 = subborrow_u51(x14, x6, 0x7ffffffffffff);
- uint64_t x19, uint8_t x20 = subborrow_u51(x17, x8, 0x7ffffffffffff);
- uint64_t x22, uint8_t x23 = subborrow_u51(x20, x7, 0x7fd3fffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0xfffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x7ffffffffffff);
- uint64_t x31, uint8_t x32 = addcarryx_u51(x28, x13, x29);
- uint64_t x33 = (x24 & 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = addcarryx_u51(x32, x16, x33);
- uint64_t x37 = (x24 & 0x7ffffffffffff);
- uint64_t x39, uint8_t x40 = addcarryx_u51(x36, x19, x37);
- uint64_t x41 = (x24 & 0x7fd3fffffffff);
- uint64_t x43, uint8_t _ = addcarryx_u51(x40, x22, x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.v b/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.v
deleted file mode 100644
index cffbb1e90..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e256m88x2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e256m88x2e240m1/py_interpreter.sh b/src/Specific/solinas64_2e256m88x2e240m1/py_interpreter.sh
deleted file mode 100755
index 2eee65061..000000000
--- a/src/Specific/solinas64_2e256m88x2e240m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**256 - 88*2**240 - 1' -Dmodulus_bytes='51.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e266m3/Synthesis.v b/src/Specific/solinas64_2e266m3/Synthesis.v
deleted file mode 100644
index 351201d4d..000000000
--- a/src/Specific/solinas64_2e266m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e266m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e266m3/feadd.c b/src/Specific/solinas64_2e266m3/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e266m3/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e266m3/feadd.v b/src/Specific/solinas64_2e266m3/feadd.v
deleted file mode 100644
index 859822cde..000000000
--- a/src/Specific/solinas64_2e266m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e266m3/feaddDisplay.log b/src/Specific/solinas64_2e266m3/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e266m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3/feaddDisplay.v b/src/Specific/solinas64_2e266m3/feaddDisplay.v
deleted file mode 100644
index c31d4abff..000000000
--- a/src/Specific/solinas64_2e266m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e266m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e266m3/femul.c b/src/Specific/solinas64_2e266m3/femul.c
deleted file mode 100644
index fbc515dcc..000000000
--- a/src/Specific/solinas64_2e266m3/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x3 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x3 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x3 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x3 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- { uint64_t x25 = (uint64_t) (x24 >> 0x36);
- { uint64_t x26 = ((uint64_t)x24 & 0x3fffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint64_t x28 = (uint64_t) (x27 >> 0x35);
- { uint64_t x29 = ((uint64_t)x27 & 0x1fffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint64_t x31 = (uint64_t) (x30 >> 0x35);
- { uint64_t x32 = ((uint64_t)x30 & 0x1fffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint64_t x34 = (uint64_t) (x33 >> 0x35);
- { uint64_t x35 = ((uint64_t)x33 & 0x1fffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x35);
- { uint64_t x38 = ((uint64_t)x36 & 0x1fffffffffffff);
- { uint64_t x39 = (x26 + (0x3 * x37));
- { uint64_t x40 = (x39 >> 0x36);
- { uint64_t x41 = (x39 & 0x3fffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x35);
- { uint64_t x44 = (x42 & 0x1fffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e266m3/femul.v b/src/Specific/solinas64_2e266m3/femul.v
deleted file mode 100644
index 83533bf81..000000000
--- a/src/Specific/solinas64_2e266m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e266m3/femulDisplay.log b/src/Specific/solinas64_2e266m3/femulDisplay.log
deleted file mode 100644
index 1afee3fde..000000000
--- a/src/Specific/solinas64_2e266m3/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x3 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x3 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x3 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x3 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- uint64_t x25 = (uint64_t) (x24 >> 0x36);
- uint64_t x26 = ((uint64_t)x24 & 0x3fffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint64_t x28 = (uint64_t) (x27 >> 0x35);
- uint64_t x29 = ((uint64_t)x27 & 0x1fffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint64_t x31 = (uint64_t) (x30 >> 0x35);
- uint64_t x32 = ((uint64_t)x30 & 0x1fffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint64_t x34 = (uint64_t) (x33 >> 0x35);
- uint64_t x35 = ((uint64_t)x33 & 0x1fffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x35);
- uint64_t x38 = ((uint64_t)x36 & 0x1fffffffffffff);
- uint64_t x39 = (x26 + (0x3 * x37));
- uint64_t x40 = (x39 >> 0x36);
- uint64_t x41 = (x39 & 0x3fffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x35);
- uint64_t x44 = (x42 & 0x1fffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3/femulDisplay.v b/src/Specific/solinas64_2e266m3/femulDisplay.v
deleted file mode 100644
index 1b231cef6..000000000
--- a/src/Specific/solinas64_2e266m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e266m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e266m3/fesquare.c b/src/Specific/solinas64_2e266m3/fesquare.c
deleted file mode 100644
index 56f5fdb77..000000000
--- a/src/Specific/solinas64_2e266m3/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x3 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- { uint64_t x14 = (uint64_t) (x13 >> 0x36);
- { uint64_t x15 = ((uint64_t)x13 & 0x3fffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint64_t x17 = (uint64_t) (x16 >> 0x35);
- { uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint64_t x20 = (uint64_t) (x19 >> 0x35);
- { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint64_t x23 = (uint64_t) (x22 >> 0x35);
- { uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x35);
- { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- { uint64_t x28 = (x15 + (0x3 * x26));
- { uint64_t x29 = (x28 >> 0x36);
- { uint64_t x30 = (x28 & 0x3fffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x35);
- { uint64_t x33 = (x31 & 0x1fffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e266m3/fesquare.v b/src/Specific/solinas64_2e266m3/fesquare.v
deleted file mode 100644
index f1e61f87f..000000000
--- a/src/Specific/solinas64_2e266m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e266m3/fesquareDisplay.log b/src/Specific/solinas64_2e266m3/fesquareDisplay.log
deleted file mode 100644
index 6b6852a74..000000000
--- a/src/Specific/solinas64_2e266m3/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x3 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- uint64_t x14 = (uint64_t) (x13 >> 0x36);
- uint64_t x15 = ((uint64_t)x13 & 0x3fffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint64_t x17 = (uint64_t) (x16 >> 0x35);
- uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint64_t x20 = (uint64_t) (x19 >> 0x35);
- uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint64_t x23 = (uint64_t) (x22 >> 0x35);
- uint64_t x24 = ((uint64_t)x22 & 0x1fffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x35);
- uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- uint64_t x28 = (x15 + (0x3 * x26));
- uint64_t x29 = (x28 >> 0x36);
- uint64_t x30 = (x28 & 0x3fffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x35);
- uint64_t x33 = (x31 & 0x1fffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3/fesquareDisplay.v b/src/Specific/solinas64_2e266m3/fesquareDisplay.v
deleted file mode 100644
index 93db1f5ce..000000000
--- a/src/Specific/solinas64_2e266m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e266m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e266m3/fesub.c b/src/Specific/solinas64_2e266m3/fesub.c
deleted file mode 100644
index 3807f5376..000000000
--- a/src/Specific/solinas64_2e266m3/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0x7ffffffffffffa + x5) - x13);
- out[1] = ((0x3ffffffffffffe + x7) - x15);
- out[2] = ((0x3ffffffffffffe + x9) - x17);
- out[3] = ((0x3ffffffffffffe + x11) - x19);
- out[4] = ((0x3ffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e266m3/fesub.v b/src/Specific/solinas64_2e266m3/fesub.v
deleted file mode 100644
index a2595c81d..000000000
--- a/src/Specific/solinas64_2e266m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e266m3/fesubDisplay.log b/src/Specific/solinas64_2e266m3/fesubDisplay.log
deleted file mode 100644
index 87750632d..000000000
--- a/src/Specific/solinas64_2e266m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x3ffffffffffffe + x10) - x18), ((0x3ffffffffffffe + x11) - x19), ((0x3ffffffffffffe + x9) - x17), ((0x3ffffffffffffe + x7) - x15), ((0x7ffffffffffffa + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3/fesubDisplay.v b/src/Specific/solinas64_2e266m3/fesubDisplay.v
deleted file mode 100644
index 6442eabbf..000000000
--- a/src/Specific/solinas64_2e266m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e266m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e266m3/freeze.c b/src/Specific/solinas64_2e266m3/freeze.c
deleted file mode 100644
index 36e1f6380..000000000
--- a/src/Specific/solinas64_2e266m3/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffd);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1fffffffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x3ffffffffffffd);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x1fffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x1fffffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x1fffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x1fffffffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e266m3/freeze.v b/src/Specific/solinas64_2e266m3/freeze.v
deleted file mode 100644
index 500e5524c..000000000
--- a/src/Specific/solinas64_2e266m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e266m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e266m3/freezeDisplay.log b/src/Specific/solinas64_2e266m3/freezeDisplay.log
deleted file mode 100644
index add8edb9e..000000000
--- a/src/Specific/solinas64_2e266m3/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffffd);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1fffffffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x3ffffffffffffd);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x1fffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x1fffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x1fffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x1fffffffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3/freezeDisplay.v b/src/Specific/solinas64_2e266m3/freezeDisplay.v
deleted file mode 100644
index 1644f2498..000000000
--- a/src/Specific/solinas64_2e266m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e266m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e266m3/CurveParameters.v b/src/Specific/solinas64_2e266m3_5limbs/CurveParameters.v
index 1aa25a425..1aa25a425 100644
--- a/src/Specific/solinas64_2e266m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e266m3_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e266m3_5limbs/Synthesis.v b/src/Specific/solinas64_2e266m3_5limbs/Synthesis.v
new file mode 100644
index 000000000..a3fb9e197
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e266m3/compiler.sh b/src/Specific/solinas64_2e266m3_5limbs/compiler.sh
index fb8105ab3..fb8105ab3 100755
--- a/src/Specific/solinas64_2e266m3/compiler.sh
+++ b/src/Specific/solinas64_2e266m3_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e266m3/compilerxx.sh b/src/Specific/solinas64_2e266m3_5limbs/compilerxx.sh
index 2ef5a6f6a..2ef5a6f6a 100755
--- a/src/Specific/solinas64_2e266m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e266m3_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e266m3_5limbs/feadd.v b/src/Specific/solinas64_2e266m3_5limbs/feadd.v
new file mode 100644
index 000000000..46af43726
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e266m3_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..4d41a5012
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/femul.v b/src/Specific/solinas64_2e266m3_5limbs/femul.v
new file mode 100644
index 000000000..9742bb2ad
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/femulDisplay.v b/src/Specific/solinas64_2e266m3_5limbs/femulDisplay.v
new file mode 100644
index 000000000..043936c3f
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/fesquare.v b/src/Specific/solinas64_2e266m3_5limbs/fesquare.v
new file mode 100644
index 000000000..52f6443d9
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e266m3_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..02c9ea7ec
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/fesub.v b/src/Specific/solinas64_2e266m3_5limbs/fesub.v
new file mode 100644
index 000000000..5fc288dfd
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e266m3_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..62b279ab2
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/freeze.v b/src/Specific/solinas64_2e266m3_5limbs/freeze.v
new file mode 100644
index 000000000..02eabe730
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e266m3_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e266m3_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..f1dfee7dc
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e266m3/py_interpreter.sh b/src/Specific/solinas64_2e266m3_5limbs/py_interpreter.sh
index e1705c801..e1705c801 100755
--- a/src/Specific/solinas64_2e266m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e266m3_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e266m3_6limbs/CurveParameters.v b/src/Specific/solinas64_2e266m3_6limbs/CurveParameters.v
new file mode 100644
index 000000000..872cb57b9
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^266 - 3
+Base: 44 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 44 + 1/3;
+ bitwidth := 64;
+ s := 2^266;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/Synthesis.v b/src/Specific/solinas64_2e266m3_6limbs/Synthesis.v
new file mode 100644
index 000000000..e130ce29f
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/compiler.sh b/src/Specific/solinas64_2e266m3_6limbs/compiler.sh
new file mode 100755
index 000000000..52a6d1635
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,45,44,44}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas64_2e266m3_6limbs/compilerxx.sh b/src/Specific/solinas64_2e266m3_6limbs/compilerxx.sh
new file mode 100755
index 000000000..23fd3f33a
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,44,44,45,44,44}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='34' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<266) - 3' "$@"
diff --git a/src/Specific/solinas64_2e266m3_6limbs/feadd.v b/src/Specific/solinas64_2e266m3_6limbs/feadd.v
new file mode 100644
index 000000000..e676d0ffc
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..3f3b9a4b9
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/femul.v b/src/Specific/solinas64_2e266m3_6limbs/femul.v
new file mode 100644
index 000000000..633ebc4ea
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.v b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.v
new file mode 100644
index 000000000..c4e8f8559
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesquare.v b/src/Specific/solinas64_2e266m3_6limbs/fesquare.v
new file mode 100644
index 000000000..fae558724
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..02a7eabee
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesub.v b/src/Specific/solinas64_2e266m3_6limbs/fesub.v
new file mode 100644
index 000000000..56ba2b495
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..11dd08a48
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/freeze.v b/src/Specific/solinas64_2e266m3_6limbs/freeze.v
new file mode 100644
index 000000000..1d9c2d451
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..06076579c
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e266m3_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e266m3_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e266m3_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..9fcb44040
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**266 - 3' -Dmodulus_bytes='44 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e285m9/Synthesis.v b/src/Specific/solinas64_2e285m9/Synthesis.v
deleted file mode 100644
index 5c70ce3e9..000000000
--- a/src/Specific/solinas64_2e285m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e285m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e285m9/feadd.c b/src/Specific/solinas64_2e285m9/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e285m9/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e285m9/feadd.v b/src/Specific/solinas64_2e285m9/feadd.v
deleted file mode 100644
index 23b5e7460..000000000
--- a/src/Specific/solinas64_2e285m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e285m9/feaddDisplay.log b/src/Specific/solinas64_2e285m9/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e285m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9/feaddDisplay.v b/src/Specific/solinas64_2e285m9/feaddDisplay.v
deleted file mode 100644
index 6d4ea7880..000000000
--- a/src/Specific/solinas64_2e285m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e285m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e285m9/femul.c b/src/Specific/solinas64_2e285m9/femul.c
deleted file mode 100644
index 932ed20b5..000000000
--- a/src/Specific/solinas64_2e285m9/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x9 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x9 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x9 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x9 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- { uint128_t x25 = (x24 >> 0x39);
- { uint64_t x26 = ((uint64_t)x24 & 0x1ffffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint128_t x28 = (x27 >> 0x39);
- { uint64_t x29 = ((uint64_t)x27 & 0x1ffffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint128_t x31 = (x30 >> 0x39);
- { uint64_t x32 = ((uint64_t)x30 & 0x1ffffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint128_t x34 = (x33 >> 0x39);
- { uint64_t x35 = ((uint64_t)x33 & 0x1ffffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint64_t x37 = (uint64_t) (x36 >> 0x39);
- { uint64_t x38 = ((uint64_t)x36 & 0x1ffffffffffffff);
- { uint128_t x39 = (x26 + ((uint128_t)0x9 * x37));
- { uint64_t x40 = (uint64_t) (x39 >> 0x39);
- { uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x39);
- { uint64_t x44 = (x42 & 0x1ffffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e285m9/femul.v b/src/Specific/solinas64_2e285m9/femul.v
deleted file mode 100644
index 21ca34895..000000000
--- a/src/Specific/solinas64_2e285m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e285m9/femulDisplay.log b/src/Specific/solinas64_2e285m9/femulDisplay.log
deleted file mode 100644
index dfa089f06..000000000
--- a/src/Specific/solinas64_2e285m9/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + (((uint128_t)x11 * x15) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + (((uint128_t)x9 * x15) + ((uint128_t)x11 * x13)))) + (0x9 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + (((uint128_t)x7 * x15) + ((uint128_t)x9 * x13))) + (0x9 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x9 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x9 * (((uint128_t)x7 * x18) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x10 * x15))))));
- uint128_t x25 = (x24 >> 0x39);
- uint64_t x26 = ((uint64_t)x24 & 0x1ffffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint128_t x28 = (x27 >> 0x39);
- uint64_t x29 = ((uint64_t)x27 & 0x1ffffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint128_t x31 = (x30 >> 0x39);
- uint64_t x32 = ((uint64_t)x30 & 0x1ffffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint128_t x34 = (x33 >> 0x39);
- uint64_t x35 = ((uint64_t)x33 & 0x1ffffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint64_t x37 = (uint64_t) (x36 >> 0x39);
- uint64_t x38 = ((uint64_t)x36 & 0x1ffffffffffffff);
- uint128_t x39 = (x26 + ((uint128_t)0x9 * x37));
- uint64_t x40 = (uint64_t) (x39 >> 0x39);
- uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x39);
- uint64_t x44 = (x42 & 0x1ffffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9/femulDisplay.v b/src/Specific/solinas64_2e285m9/femulDisplay.v
deleted file mode 100644
index 087ee2fa8..000000000
--- a/src/Specific/solinas64_2e285m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e285m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e285m9/fesquare.c b/src/Specific/solinas64_2e285m9/fesquare.c
deleted file mode 100644
index 2d267f366..000000000
--- a/src/Specific/solinas64_2e285m9/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x9 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- { uint128_t x14 = (x13 >> 0x39);
- { uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint128_t x17 = (x16 >> 0x39);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint128_t x20 = (x19 >> 0x39);
- { uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint128_t x23 = (x22 >> 0x39);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint64_t x26 = (uint64_t) (x25 >> 0x39);
- { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- { uint128_t x28 = (x15 + ((uint128_t)0x9 * x26));
- { uint64_t x29 = (uint64_t) (x28 >> 0x39);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x39);
- { uint64_t x33 = (x31 & 0x1ffffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e285m9/fesquare.v b/src/Specific/solinas64_2e285m9/fesquare.v
deleted file mode 100644
index faf848f1d..000000000
--- a/src/Specific/solinas64_2e285m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e285m9/fesquareDisplay.log b/src/Specific/solinas64_2e285m9/fesquareDisplay.log
deleted file mode 100644
index ab7e499f7..000000000
--- a/src/Specific/solinas64_2e285m9/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x9 * (((uint128_t)x4 * x7) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((uint128_t)x7 * x4))))));
- uint128_t x14 = (x13 >> 0x39);
- uint64_t x15 = ((uint64_t)x13 & 0x1ffffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint128_t x17 = (x16 >> 0x39);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint128_t x20 = (x19 >> 0x39);
- uint64_t x21 = ((uint64_t)x19 & 0x1ffffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint128_t x23 = (x22 >> 0x39);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint64_t x26 = (uint64_t) (x25 >> 0x39);
- uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- uint128_t x28 = (x15 + ((uint128_t)0x9 * x26));
- uint64_t x29 = (uint64_t) (x28 >> 0x39);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x39);
- uint64_t x33 = (x31 & 0x1ffffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9/fesquareDisplay.v b/src/Specific/solinas64_2e285m9/fesquareDisplay.v
deleted file mode 100644
index 832569d9f..000000000
--- a/src/Specific/solinas64_2e285m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e285m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e285m9/fesub.c b/src/Specific/solinas64_2e285m9/fesub.c
deleted file mode 100644
index 5432636e7..000000000
--- a/src/Specific/solinas64_2e285m9/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0x3ffffffffffffee + x5) - x13);
- out[1] = ((0x3fffffffffffffe + x7) - x15);
- out[2] = ((0x3fffffffffffffe + x9) - x17);
- out[3] = ((0x3fffffffffffffe + x11) - x19);
- out[4] = ((0x3fffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e285m9/fesub.v b/src/Specific/solinas64_2e285m9/fesub.v
deleted file mode 100644
index 6bdec37d4..000000000
--- a/src/Specific/solinas64_2e285m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e285m9/fesubDisplay.log b/src/Specific/solinas64_2e285m9/fesubDisplay.log
deleted file mode 100644
index 4afd8dcc0..000000000
--- a/src/Specific/solinas64_2e285m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x3fffffffffffffe + x10) - x18), ((0x3fffffffffffffe + x11) - x19), ((0x3fffffffffffffe + x9) - x17), ((0x3fffffffffffffe + x7) - x15), ((0x3ffffffffffffee + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9/fesubDisplay.v b/src/Specific/solinas64_2e285m9/fesubDisplay.v
deleted file mode 100644
index 4e30fee97..000000000
--- a/src/Specific/solinas64_2e285m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e285m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e285m9/freeze.c b/src/Specific/solinas64_2e285m9/freeze.c
deleted file mode 100644
index a41633544..000000000
--- a/src/Specific/solinas64_2e285m9/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff7);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1ffffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffffffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x1fffffffffffff7);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x1ffffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x1ffffffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x1ffffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x1ffffffffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e285m9/freeze.v b/src/Specific/solinas64_2e285m9/freeze.v
deleted file mode 100644
index 504727825..000000000
--- a/src/Specific/solinas64_2e285m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e285m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e285m9/freezeDisplay.log b/src/Specific/solinas64_2e285m9/freezeDisplay.log
deleted file mode 100644
index 9f8619d80..000000000
--- a/src/Specific/solinas64_2e285m9/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff7);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1ffffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x1fffffffffffff7);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x1ffffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x1ffffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x1ffffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x1ffffffffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9/freezeDisplay.v b/src/Specific/solinas64_2e285m9/freezeDisplay.v
deleted file mode 100644
index 0fa0aa925..000000000
--- a/src/Specific/solinas64_2e285m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e285m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e285m9/CurveParameters.v b/src/Specific/solinas64_2e285m9_5limbs/CurveParameters.v
index 938d4c035..938d4c035 100644
--- a/src/Specific/solinas64_2e285m9/CurveParameters.v
+++ b/src/Specific/solinas64_2e285m9_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e285m9_5limbs/Synthesis.v b/src/Specific/solinas64_2e285m9_5limbs/Synthesis.v
new file mode 100644
index 000000000..de54ea6e8
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e285m9/compiler.sh b/src/Specific/solinas64_2e285m9_5limbs/compiler.sh
index 288c0a4d9..288c0a4d9 100755
--- a/src/Specific/solinas64_2e285m9/compiler.sh
+++ b/src/Specific/solinas64_2e285m9_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e285m9/compilerxx.sh b/src/Specific/solinas64_2e285m9_5limbs/compilerxx.sh
index b1db87ce7..b1db87ce7 100755
--- a/src/Specific/solinas64_2e285m9/compilerxx.sh
+++ b/src/Specific/solinas64_2e285m9_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e285m9_5limbs/feadd.v b/src/Specific/solinas64_2e285m9_5limbs/feadd.v
new file mode 100644
index 000000000..2473da8d6
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e285m9_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..2cf6486aa
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/femul.v b/src/Specific/solinas64_2e285m9_5limbs/femul.v
new file mode 100644
index 000000000..fe0a48a25
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/femulDisplay.v b/src/Specific/solinas64_2e285m9_5limbs/femulDisplay.v
new file mode 100644
index 000000000..acd91ee38
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/fesquare.v b/src/Specific/solinas64_2e285m9_5limbs/fesquare.v
new file mode 100644
index 000000000..e461ab98a
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e285m9_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6d5f64e0c
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/fesub.v b/src/Specific/solinas64_2e285m9_5limbs/fesub.v
new file mode 100644
index 000000000..f3afe1bc0
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e285m9_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..4e8bade3c
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/freeze.v b/src/Specific/solinas64_2e285m9_5limbs/freeze.v
new file mode 100644
index 000000000..631049a95
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e285m9_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e285m9_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..e6028d1b9
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e285m9/py_interpreter.sh b/src/Specific/solinas64_2e285m9_5limbs/py_interpreter.sh
index 263e483da..263e483da 100755
--- a/src/Specific/solinas64_2e285m9/py_interpreter.sh
+++ b/src/Specific/solinas64_2e285m9_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e285m9_6limbs/CurveParameters.v b/src/Specific/solinas64_2e285m9_6limbs/CurveParameters.v
new file mode 100644
index 000000000..4f7bf76f6
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^285 - 9
+Base: 47.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 47 + 1/2;
+ bitwidth := 64;
+ s := 2^285;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/Synthesis.v b/src/Specific/solinas64_2e285m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..5d41216fa
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/compiler.sh b/src/Specific/solinas64_2e285m9_6limbs/compiler.sh
new file mode 100755
index 000000000..dfc45b483
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,48,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas64_2e285m9_6limbs/compilerxx.sh b/src/Specific/solinas64_2e285m9_6limbs/compilerxx.sh
new file mode 100755
index 000000000..4605d5970
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,48,47}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='36' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<285) - 9' "$@"
diff --git a/src/Specific/solinas64_2e285m9_6limbs/feadd.v b/src/Specific/solinas64_2e285m9_6limbs/feadd.v
new file mode 100644
index 000000000..9b85b752a
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..1a8fb7606
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/femul.v b/src/Specific/solinas64_2e285m9_6limbs/femul.v
new file mode 100644
index 000000000..ab0521acf
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.v b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..8276b5424
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesquare.v b/src/Specific/solinas64_2e285m9_6limbs/fesquare.v
new file mode 100644
index 000000000..84b7cc03c
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c53820c7d
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesub.v b/src/Specific/solinas64_2e285m9_6limbs/fesub.v
new file mode 100644
index 000000000..95cf0d7ee
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..814b73a3c
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/freeze.v b/src/Specific/solinas64_2e285m9_6limbs/freeze.v
new file mode 100644
index 000000000..ef9c47074
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..4ebcd03b7
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e285m9_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e285m9_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e285m9_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..92f4e432f
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**285 - 9' -Dmodulus_bytes='47.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e291m19/Synthesis.v b/src/Specific/solinas64_2e291m19/Synthesis.v
deleted file mode 100644
index 146c1188b..000000000
--- a/src/Specific/solinas64_2e291m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e291m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e291m19/feadd.c b/src/Specific/solinas64_2e291m19/feadd.c
deleted file mode 100644
index a05766e0b..000000000
--- a/src/Specific/solinas64_2e291m19/feadd.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = (x5 + x13);
- out[1] = (x7 + x15);
- out[2] = (x9 + x17);
- out[3] = (x11 + x19);
- out[4] = (x10 + x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e291m19/feadd.v b/src/Specific/solinas64_2e291m19/feadd.v
deleted file mode 100644
index ecbfebc9d..000000000
--- a/src/Specific/solinas64_2e291m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e291m19/feaddDisplay.log b/src/Specific/solinas64_2e291m19/feaddDisplay.log
deleted file mode 100644
index bce3421b2..000000000
--- a/src/Specific/solinas64_2e291m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19/feaddDisplay.v b/src/Specific/solinas64_2e291m19/feaddDisplay.v
deleted file mode 100644
index 44aa87cf3..000000000
--- a/src/Specific/solinas64_2e291m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e291m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e291m19/femul.c b/src/Specific/solinas64_2e291m19/femul.c
deleted file mode 100644
index aadbb7dc2..000000000
--- a/src/Specific/solinas64_2e291m19/femul.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- { uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- { uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- { uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- { uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- { uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- { uint128_t x25 = (x24 >> 0x3b);
- { uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffffff);
- { uint128_t x27 = (x25 + x23);
- { uint128_t x28 = (x27 >> 0x3a);
- { uint64_t x29 = ((uint64_t)x27 & 0x3ffffffffffffff);
- { uint128_t x30 = (x28 + x22);
- { uint128_t x31 = (x30 >> 0x3a);
- { uint64_t x32 = ((uint64_t)x30 & 0x3ffffffffffffff);
- { uint128_t x33 = (x31 + x21);
- { uint128_t x34 = (x33 >> 0x3a);
- { uint64_t x35 = ((uint64_t)x33 & 0x3ffffffffffffff);
- { uint128_t x36 = (x34 + x20);
- { uint128_t x37 = (x36 >> 0x3a);
- { uint64_t x38 = ((uint64_t)x36 & 0x3ffffffffffffff);
- { uint128_t x39 = (x26 + (0x13 * x37));
- { uint64_t x40 = (uint64_t) (x39 >> 0x3b);
- { uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffffff);
- { uint64_t x42 = (x40 + x29);
- { uint64_t x43 = (x42 >> 0x3a);
- { uint64_t x44 = (x42 & 0x3ffffffffffffff);
- out[0] = x41;
- out[1] = x44;
- out[2] = (x43 + x32);
- out[3] = x35;
- out[4] = x38;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e291m19/femul.v b/src/Specific/solinas64_2e291m19/femul.v
deleted file mode 100644
index 2180a0d8a..000000000
--- a/src/Specific/solinas64_2e291m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e291m19/femulDisplay.log b/src/Specific/solinas64_2e291m19/femulDisplay.log
deleted file mode 100644
index 5ea4cd5a6..000000000
--- a/src/Specific/solinas64_2e291m19/femulDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- uint128_t x20 = (((uint128_t)x5 * x18) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((0x2 * ((uint128_t)x11 * x15)) + ((uint128_t)x10 * x13)))));
- uint128_t x21 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((0x2 * ((uint128_t)x9 * x15)) + ((uint128_t)x11 * x13)))) + (0x13 * ((uint128_t)x10 * x18)));
- uint128_t x22 = ((((uint128_t)x5 * x17) + ((0x2 * ((uint128_t)x7 * x15)) + ((uint128_t)x9 * x13))) + (0x13 * (((uint128_t)x11 * x18) + ((uint128_t)x10 * x19))));
- uint128_t x23 = ((((uint128_t)x5 * x15) + ((uint128_t)x7 * x13)) + (0x13 * (((uint128_t)x9 * x18) + (((uint128_t)x11 * x19) + ((uint128_t)x10 * x17)))));
- uint128_t x24 = (((uint128_t)x5 * x13) + (0x13 * ((0x2 * ((uint128_t)x7 * x18)) + ((0x2 * ((uint128_t)x9 * x19)) + ((0x2 * ((uint128_t)x11 * x17)) + (0x2 * ((uint128_t)x10 * x15)))))));
- uint128_t x25 = (x24 >> 0x3b);
- uint64_t x26 = ((uint64_t)x24 & 0x7ffffffffffffff);
- uint128_t x27 = (x25 + x23);
- uint128_t x28 = (x27 >> 0x3a);
- uint64_t x29 = ((uint64_t)x27 & 0x3ffffffffffffff);
- uint128_t x30 = (x28 + x22);
- uint128_t x31 = (x30 >> 0x3a);
- uint64_t x32 = ((uint64_t)x30 & 0x3ffffffffffffff);
- uint128_t x33 = (x31 + x21);
- uint128_t x34 = (x33 >> 0x3a);
- uint64_t x35 = ((uint64_t)x33 & 0x3ffffffffffffff);
- uint128_t x36 = (x34 + x20);
- uint128_t x37 = (x36 >> 0x3a);
- uint64_t x38 = ((uint64_t)x36 & 0x3ffffffffffffff);
- uint128_t x39 = (x26 + (0x13 * x37));
- uint64_t x40 = (uint64_t) (x39 >> 0x3b);
- uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffffff);
- uint64_t x42 = (x40 + x29);
- uint64_t x43 = (x42 >> 0x3a);
- uint64_t x44 = (x42 & 0x3ffffffffffffff);
- return (Return x38, Return x35, (x43 + x32), Return x44, Return x41))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19/femulDisplay.v b/src/Specific/solinas64_2e291m19/femulDisplay.v
deleted file mode 100644
index 2838c652c..000000000
--- a/src/Specific/solinas64_2e291m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e291m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e291m19/fesquare.c b/src/Specific/solinas64_2e291m19/fesquare.c
deleted file mode 100644
index 781a6ed09..000000000
--- a/src/Specific/solinas64_2e291m19/fesquare.c
+++ /dev/null
@@ -1,38 +0,0 @@
-static void fesquare(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- { uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- { uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- { uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- { uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- { uint128_t x14 = (x13 >> 0x3b);
- { uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffffff);
- { uint128_t x16 = (x14 + x12);
- { uint128_t x17 = (x16 >> 0x3a);
- { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- { uint128_t x19 = (x17 + x11);
- { uint128_t x20 = (x19 >> 0x3a);
- { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffffff);
- { uint128_t x22 = (x20 + x10);
- { uint128_t x23 = (x22 >> 0x3a);
- { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffffff);
- { uint128_t x25 = (x23 + x9);
- { uint128_t x26 = (x25 >> 0x3a);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- { uint128_t x28 = (x15 + (0x13 * x26));
- { uint64_t x29 = (uint64_t) (x28 >> 0x3b);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- { uint64_t x31 = (x29 + x18);
- { uint64_t x32 = (x31 >> 0x3a);
- { uint64_t x33 = (x31 & 0x3ffffffffffffff);
- out[0] = x30;
- out[1] = x33;
- out[2] = (x32 + x21);
- out[3] = x24;
- out[4] = x27;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e291m19/fesquare.v b/src/Specific/solinas64_2e291m19/fesquare.v
deleted file mode 100644
index 8a8b0341c..000000000
--- a/src/Specific/solinas64_2e291m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e291m19/fesquareDisplay.log b/src/Specific/solinas64_2e291m19/fesquareDisplay.log
deleted file mode 100644
index c6a1136c5..000000000
--- a/src/Specific/solinas64_2e291m19/fesquareDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint128_t x9 = (((uint128_t)x2 * x7) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x7 * x2)))));
- uint128_t x10 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * ((uint128_t)x7 * x7)));
- uint128_t x11 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x7) + ((uint128_t)x7 * x8))));
- uint128_t x12 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x7) + (((uint128_t)x8 * x8) + ((uint128_t)x7 * x6)))));
- uint128_t x13 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x7)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + (0x2 * ((uint128_t)x7 * x4)))))));
- uint128_t x14 = (x13 >> 0x3b);
- uint64_t x15 = ((uint64_t)x13 & 0x7ffffffffffffff);
- uint128_t x16 = (x14 + x12);
- uint128_t x17 = (x16 >> 0x3a);
- uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffffffff);
- uint128_t x19 = (x17 + x11);
- uint128_t x20 = (x19 >> 0x3a);
- uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffffffff);
- uint128_t x22 = (x20 + x10);
- uint128_t x23 = (x22 >> 0x3a);
- uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffffffff);
- uint128_t x25 = (x23 + x9);
- uint128_t x26 = (x25 >> 0x3a);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- uint128_t x28 = (x15 + (0x13 * x26));
- uint64_t x29 = (uint64_t) (x28 >> 0x3b);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- uint64_t x31 = (x29 + x18);
- uint64_t x32 = (x31 >> 0x3a);
- uint64_t x33 = (x31 & 0x3ffffffffffffff);
- return (Return x27, Return x24, (x32 + x21), Return x33, Return x30))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19/fesquareDisplay.v b/src/Specific/solinas64_2e291m19/fesquareDisplay.v
deleted file mode 100644
index 21236ec43..000000000
--- a/src/Specific/solinas64_2e291m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e291m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e291m19/fesub.c b/src/Specific/solinas64_2e291m19/fesub.c
deleted file mode 100644
index a853aec00..000000000
--- a/src/Specific/solinas64_2e291m19/fesub.c
+++ /dev/null
@@ -1,18 +0,0 @@
-static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
- { const uint64_t x10 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x18 = in2[4];
- { const uint64_t x19 = in2[3];
- { const uint64_t x17 = in2[2];
- { const uint64_t x15 = in2[1];
- { const uint64_t x13 = in2[0];
- out[0] = ((0xfffffffffffffda + x5) - x13);
- out[1] = ((0x7fffffffffffffe + x7) - x15);
- out[2] = ((0x7fffffffffffffe + x9) - x17);
- out[3] = ((0x7fffffffffffffe + x11) - x19);
- out[4] = ((0x7fffffffffffffe + x10) - x18);
- }}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e291m19/fesub.v b/src/Specific/solinas64_2e291m19/fesub.v
deleted file mode 100644
index a3504c282..000000000
--- a/src/Specific/solinas64_2e291m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e291m19/fesubDisplay.log b/src/Specific/solinas64_2e291m19/fesubDisplay.log
deleted file mode 100644
index a5ea892fa..000000000
--- a/src/Specific/solinas64_2e291m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7fffffffffffffe + x10) - x18), ((0x7fffffffffffffe + x11) - x19), ((0x7fffffffffffffe + x9) - x17), ((0x7fffffffffffffe + x7) - x15), ((0xfffffffffffffda + x5) - x13)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19/fesubDisplay.v b/src/Specific/solinas64_2e291m19/fesubDisplay.v
deleted file mode 100644
index 570f6cebb..000000000
--- a/src/Specific/solinas64_2e291m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e291m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e291m19/freeze.c b/src/Specific/solinas64_2e291m19/freeze.c
deleted file mode 100644
index 3e256f312..000000000
--- a/src/Specific/solinas64_2e291m19/freeze.c
+++ /dev/null
@@ -1,29 +0,0 @@
-static void freeze(uint64_t out[5], const uint64_t in1[5]) {
- { const uint64_t x7 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffed);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffffffff);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffffffff);
- { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & 0x7ffffffffffffed);
- { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & 0x3ffffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- { uint64_t x33 = (x24 & 0x3ffffffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- { uint64_t x37 = (x24 & 0x3ffffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- { uint64_t x41 = (x24 & 0x3ffffffffffffff);
- { uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- out[0] = x27;
- out[1] = x31;
- out[2] = x35;
- out[3] = x39;
- out[4] = x43;
- }}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e291m19/freeze.v b/src/Specific/solinas64_2e291m19/freeze.v
deleted file mode 100644
index b115165c8..000000000
--- a/src/Specific/solinas64_2e291m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e291m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e291m19/freezeDisplay.log b/src/Specific/solinas64_2e291m19/freezeDisplay.log
deleted file mode 100644
index 63fcc15c2..000000000
--- a/src/Specific/solinas64_2e291m19/freezeDisplay.log
+++ /dev/null
@@ -1,23 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffed);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffffffff);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffffffff);
- uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & 0x7ffffffffffffed);
- uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & 0x3ffffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
- uint64_t x33 = (x24 & 0x3ffffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
- uint64_t x37 = (x24 & 0x3ffffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x19, Return x37);
- uint64_t x41 = (x24 & 0x3ffffffffffffff);
- uint64_t x43, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x22, Return x41);
- (Return x43, Return x39, Return x35, Return x31, Return x27))
-x
- : word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19/freezeDisplay.v b/src/Specific/solinas64_2e291m19/freezeDisplay.v
deleted file mode 100644
index 847f158e1..000000000
--- a/src/Specific/solinas64_2e291m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e291m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e291m19/CurveParameters.v b/src/Specific/solinas64_2e291m19_5limbs/CurveParameters.v
index 3f580fdc6..3f580fdc6 100644
--- a/src/Specific/solinas64_2e291m19/CurveParameters.v
+++ b/src/Specific/solinas64_2e291m19_5limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e291m19_5limbs/Synthesis.v b/src/Specific/solinas64_2e291m19_5limbs/Synthesis.v
new file mode 100644
index 000000000..f7495a7dd
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e291m19/compiler.sh b/src/Specific/solinas64_2e291m19_5limbs/compiler.sh
index 6018ee0da..6018ee0da 100755
--- a/src/Specific/solinas64_2e291m19/compiler.sh
+++ b/src/Specific/solinas64_2e291m19_5limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e291m19/compilerxx.sh b/src/Specific/solinas64_2e291m19_5limbs/compilerxx.sh
index 0d56c12fe..0d56c12fe 100755
--- a/src/Specific/solinas64_2e291m19/compilerxx.sh
+++ b/src/Specific/solinas64_2e291m19_5limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e291m19_5limbs/feadd.v b/src/Specific/solinas64_2e291m19_5limbs/feadd.v
new file mode 100644
index 000000000..a73b2a5f9
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/feaddDisplay.v b/src/Specific/solinas64_2e291m19_5limbs/feaddDisplay.v
new file mode 100644
index 000000000..b301619a1
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/femul.v b/src/Specific/solinas64_2e291m19_5limbs/femul.v
new file mode 100644
index 000000000..f93af2383
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/femulDisplay.v b/src/Specific/solinas64_2e291m19_5limbs/femulDisplay.v
new file mode 100644
index 000000000..07b3ae327
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/fesquare.v b/src/Specific/solinas64_2e291m19_5limbs/fesquare.v
new file mode 100644
index 000000000..1454a7c70
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/fesquareDisplay.v b/src/Specific/solinas64_2e291m19_5limbs/fesquareDisplay.v
new file mode 100644
index 000000000..da3c01e0b
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/fesub.v b/src/Specific/solinas64_2e291m19_5limbs/fesub.v
new file mode 100644
index 000000000..eaaa0ec3c
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/fesubDisplay.v b/src/Specific/solinas64_2e291m19_5limbs/fesubDisplay.v
new file mode 100644
index 000000000..58456a3c0
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/freeze.v b/src/Specific/solinas64_2e291m19_5limbs/freeze.v
new file mode 100644
index 000000000..1104352fa
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e291m19_5limbs/freezeDisplay.v b/src/Specific/solinas64_2e291m19_5limbs/freezeDisplay.v
new file mode 100644
index 000000000..257182f93
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_5limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_5limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e291m19/py_interpreter.sh b/src/Specific/solinas64_2e291m19_5limbs/py_interpreter.sh
index 0180bd322..0180bd322 100755
--- a/src/Specific/solinas64_2e291m19/py_interpreter.sh
+++ b/src/Specific/solinas64_2e291m19_5limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e291m19_6limbs/CurveParameters.v b/src/Specific/solinas64_2e291m19_6limbs/CurveParameters.v
new file mode 100644
index 000000000..09d464ee7
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^291 - 19
+Base: 48.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 48 + 1/2;
+ bitwidth := 64;
+ s := 2^291;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 6); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/Synthesis.v b/src/Specific/solinas64_2e291m19_6limbs/Synthesis.v
new file mode 100644
index 000000000..f870e415c
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/compiler.sh b/src/Specific/solinas64_2e291m19_6limbs/compiler.sh
new file mode 100755
index 000000000..a1aba5562
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<291) - 19' "$@"
diff --git a/src/Specific/solinas64_2e291m19_6limbs/compilerxx.sh b/src/Specific/solinas64_2e291m19_6limbs/compilerxx.sh
new file mode 100755
index 000000000..b9be43baf
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,49,48,49,48}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='37' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<291) - 19' "$@"
diff --git a/src/Specific/solinas64_2e291m19_6limbs/feadd.v b/src/Specific/solinas64_2e291m19_6limbs/feadd.v
new file mode 100644
index 000000000..8945a8a51
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..aea185c68
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/femul.v b/src/Specific/solinas64_2e291m19_6limbs/femul.v
new file mode 100644
index 000000000..a3a8b77bc
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.v b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.v
new file mode 100644
index 000000000..88f018fc9
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesquare.v b/src/Specific/solinas64_2e291m19_6limbs/fesquare.v
new file mode 100644
index 000000000..b3e55b4fa
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ee23d8947
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesub.v b/src/Specific/solinas64_2e291m19_6limbs/fesub.v
new file mode 100644
index 000000000..b9cc8e814
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..a19f9552b
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/freeze.v b/src/Specific/solinas64_2e291m19_6limbs/freeze.v
new file mode 100644
index 000000000..1ba486be3
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..e318fb35e
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e291m19_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e291m19_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e291m19_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..3ac4804d5
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**291 - 19' -Dmodulus_bytes='48.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e321m9/Synthesis.v b/src/Specific/solinas64_2e321m9/Synthesis.v
deleted file mode 100644
index f8be3b5f7..000000000
--- a/src/Specific/solinas64_2e321m9/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e321m9.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e321m9/feadd.c b/src/Specific/solinas64_2e321m9/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e321m9/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e321m9/feadd.v b/src/Specific/solinas64_2e321m9/feadd.v
deleted file mode 100644
index 1a0a09dfc..000000000
--- a/src/Specific/solinas64_2e321m9/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e321m9/feaddDisplay.log b/src/Specific/solinas64_2e321m9/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e321m9/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9/feaddDisplay.v b/src/Specific/solinas64_2e321m9/feaddDisplay.v
deleted file mode 100644
index 520a98fc5..000000000
--- a/src/Specific/solinas64_2e321m9/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e321m9.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e321m9/femul.c b/src/Specific/solinas64_2e321m9/femul.c
deleted file mode 100644
index 688d2ca13..000000000
--- a/src/Specific/solinas64_2e321m9/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
- { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
- { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
- { uint64_t x30 = (uint64_t) (x29 >> 0x36);
- { uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
- { uint128_t x32 = (x30 + x28);
- { uint64_t x33 = (uint64_t) (x32 >> 0x35);
- { uint64_t x34 = ((uint64_t)x32 & 0x1fffffffffffff);
- { uint128_t x35 = (x33 + x27);
- { uint64_t x36 = (uint64_t) (x35 >> 0x36);
- { uint64_t x37 = ((uint64_t)x35 & 0x3fffffffffffff);
- { uint128_t x38 = (x36 + x26);
- { uint64_t x39 = (uint64_t) (x38 >> 0x35);
- { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
- { uint128_t x41 = (x39 + x25);
- { uint64_t x42 = (uint64_t) (x41 >> 0x36);
- { uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
- { uint128_t x44 = (x42 + x24);
- { uint64_t x45 = (uint64_t) (x44 >> 0x35);
- { uint64_t x46 = ((uint64_t)x44 & 0x1fffffffffffff);
- { uint64_t x47 = (x31 + (0x9 * x45));
- { uint64_t x48 = (x47 >> 0x36);
- { uint64_t x49 = (x47 & 0x3fffffffffffff);
- { uint64_t x50 = (x48 + x34);
- { uint64_t x51 = (x50 >> 0x35);
- { uint64_t x52 = (x50 & 0x1fffffffffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e321m9/femul.v b/src/Specific/solinas64_2e321m9/femul.v
deleted file mode 100644
index c031af451..000000000
--- a/src/Specific/solinas64_2e321m9/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e321m9/femulDisplay.log b/src/Specific/solinas64_2e321m9/femulDisplay.log
deleted file mode 100644
index a5811c0f9..000000000
--- a/src/Specific/solinas64_2e321m9/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
- uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
- uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
- uint64_t x30 = (uint64_t) (x29 >> 0x36);
- uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
- uint128_t x32 = (x30 + x28);
- uint64_t x33 = (uint64_t) (x32 >> 0x35);
- uint64_t x34 = ((uint64_t)x32 & 0x1fffffffffffff);
- uint128_t x35 = (x33 + x27);
- uint64_t x36 = (uint64_t) (x35 >> 0x36);
- uint64_t x37 = ((uint64_t)x35 & 0x3fffffffffffff);
- uint128_t x38 = (x36 + x26);
- uint64_t x39 = (uint64_t) (x38 >> 0x35);
- uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
- uint128_t x41 = (x39 + x25);
- uint64_t x42 = (uint64_t) (x41 >> 0x36);
- uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
- uint128_t x44 = (x42 + x24);
- uint64_t x45 = (uint64_t) (x44 >> 0x35);
- uint64_t x46 = ((uint64_t)x44 & 0x1fffffffffffff);
- uint64_t x47 = (x31 + (0x9 * x45));
- uint64_t x48 = (x47 >> 0x36);
- uint64_t x49 = (x47 & 0x3fffffffffffff);
- uint64_t x50 = (x48 + x34);
- uint64_t x51 = (x50 >> 0x35);
- uint64_t x52 = (x50 & 0x1fffffffffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9/femulDisplay.v b/src/Specific/solinas64_2e321m9/femulDisplay.v
deleted file mode 100644
index d35d64121..000000000
--- a/src/Specific/solinas64_2e321m9/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e321m9.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e321m9/fesquare.c b/src/Specific/solinas64_2e321m9/fesquare.c
deleted file mode 100644
index b2b14b5c2..000000000
--- a/src/Specific/solinas64_2e321m9/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
- { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
- { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
- { uint64_t x17 = (uint64_t) (x16 >> 0x36);
- { uint64_t x18 = ((uint64_t)x16 & 0x3fffffffffffff);
- { uint128_t x19 = (x17 + x15);
- { uint64_t x20 = (uint64_t) (x19 >> 0x35);
- { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- { uint128_t x22 = (x20 + x14);
- { uint64_t x23 = (uint64_t) (x22 >> 0x36);
- { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
- { uint128_t x25 = (x23 + x13);
- { uint64_t x26 = (uint64_t) (x25 >> 0x35);
- { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint64_t x29 = (uint64_t) (x28 >> 0x36);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x35);
- { uint64_t x33 = ((uint64_t)x31 & 0x1fffffffffffff);
- { uint64_t x34 = (x18 + (0x9 * x32));
- { uint64_t x35 = (x34 >> 0x36);
- { uint64_t x36 = (x34 & 0x3fffffffffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x35);
- { uint64_t x39 = (x37 & 0x1fffffffffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e321m9/fesquare.v b/src/Specific/solinas64_2e321m9/fesquare.v
deleted file mode 100644
index c45849160..000000000
--- a/src/Specific/solinas64_2e321m9/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e321m9/fesquareDisplay.log b/src/Specific/solinas64_2e321m9/fesquareDisplay.log
deleted file mode 100644
index d28671d0a..000000000
--- a/src/Specific/solinas64_2e321m9/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
- uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
- uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
- uint64_t x17 = (uint64_t) (x16 >> 0x36);
- uint64_t x18 = ((uint64_t)x16 & 0x3fffffffffffff);
- uint128_t x19 = (x17 + x15);
- uint64_t x20 = (uint64_t) (x19 >> 0x35);
- uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
- uint128_t x22 = (x20 + x14);
- uint64_t x23 = (uint64_t) (x22 >> 0x36);
- uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
- uint128_t x25 = (x23 + x13);
- uint64_t x26 = (uint64_t) (x25 >> 0x35);
- uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
- uint128_t x28 = (x26 + x12);
- uint64_t x29 = (uint64_t) (x28 >> 0x36);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x35);
- uint64_t x33 = ((uint64_t)x31 & 0x1fffffffffffff);
- uint64_t x34 = (x18 + (0x9 * x32));
- uint64_t x35 = (x34 >> 0x36);
- uint64_t x36 = (x34 & 0x3fffffffffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x35);
- uint64_t x39 = (x37 & 0x1fffffffffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9/fesquareDisplay.v b/src/Specific/solinas64_2e321m9/fesquareDisplay.v
deleted file mode 100644
index c2ac28115..000000000
--- a/src/Specific/solinas64_2e321m9/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e321m9.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e321m9/fesub.c b/src/Specific/solinas64_2e321m9/fesub.c
deleted file mode 100644
index 8e1ad691e..000000000
--- a/src/Specific/solinas64_2e321m9/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0x7fffffffffffee + x5) - x15);
- out[1] = ((0x3ffffffffffffe + x7) - x17);
- out[2] = ((0x7ffffffffffffe + x9) - x19);
- out[3] = ((0x3ffffffffffffe + x11) - x21);
- out[4] = ((0x7ffffffffffffe + x13) - x23);
- out[5] = ((0x3ffffffffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e321m9/fesub.v b/src/Specific/solinas64_2e321m9/fesub.v
deleted file mode 100644
index a3bd41589..000000000
--- a/src/Specific/solinas64_2e321m9/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e321m9/fesubDisplay.log b/src/Specific/solinas64_2e321m9/fesubDisplay.log
deleted file mode 100644
index 4d9559435..000000000
--- a/src/Specific/solinas64_2e321m9/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3ffffffffffffe + x12) - x22), ((0x7ffffffffffffe + x13) - x23), ((0x3ffffffffffffe + x11) - x21), ((0x7ffffffffffffe + x9) - x19), ((0x3ffffffffffffe + x7) - x17), ((0x7fffffffffffee + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9/fesubDisplay.v b/src/Specific/solinas64_2e321m9/fesubDisplay.v
deleted file mode 100644
index 9aac1d6b9..000000000
--- a/src/Specific/solinas64_2e321m9/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e321m9.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e321m9/freeze.c b/src/Specific/solinas64_2e321m9/freeze.c
deleted file mode 100644
index 73c7dc587..000000000
--- a/src/Specific/solinas64_2e321m9/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffff7);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0x3ffffffffffff7);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0x1fffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0x3fffffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0x1fffffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0x3fffffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0x1fffffffffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e321m9/freeze.v b/src/Specific/solinas64_2e321m9/freeze.v
deleted file mode 100644
index 308011642..000000000
--- a/src/Specific/solinas64_2e321m9/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e321m9.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e321m9/freezeDisplay.log b/src/Specific/solinas64_2e321m9/freezeDisplay.log
deleted file mode 100644
index a296ea7ed..000000000
--- a/src/Specific/solinas64_2e321m9/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffff7);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0x3ffffffffffff7);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0x1fffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0x3fffffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0x1fffffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0x3fffffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0x1fffffffffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9/freezeDisplay.v b/src/Specific/solinas64_2e321m9/freezeDisplay.v
deleted file mode 100644
index 13c2961a3..000000000
--- a/src/Specific/solinas64_2e321m9/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e321m9.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e321m9/CurveParameters.v b/src/Specific/solinas64_2e321m9_6limbs/CurveParameters.v
index 4b7c0edf8..4b7c0edf8 100644
--- a/src/Specific/solinas64_2e321m9/CurveParameters.v
+++ b/src/Specific/solinas64_2e321m9_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e321m9_6limbs/Synthesis.v b/src/Specific/solinas64_2e321m9_6limbs/Synthesis.v
new file mode 100644
index 000000000..79251d829
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e321m9/compiler.sh b/src/Specific/solinas64_2e321m9_6limbs/compiler.sh
index e11dde30b..e11dde30b 100755
--- a/src/Specific/solinas64_2e321m9/compiler.sh
+++ b/src/Specific/solinas64_2e321m9_6limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e321m9/compilerxx.sh b/src/Specific/solinas64_2e321m9_6limbs/compilerxx.sh
index a790b279a..a790b279a 100755
--- a/src/Specific/solinas64_2e321m9/compilerxx.sh
+++ b/src/Specific/solinas64_2e321m9_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e321m9_6limbs/feadd.v b/src/Specific/solinas64_2e321m9_6limbs/feadd.v
new file mode 100644
index 000000000..54473dd0e
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..dff1b68d7
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/femul.v b/src/Specific/solinas64_2e321m9_6limbs/femul.v
new file mode 100644
index 000000000..76ffb701a
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.v b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.v
new file mode 100644
index 000000000..f1a4a1b94
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesquare.v b/src/Specific/solinas64_2e321m9_6limbs/fesquare.v
new file mode 100644
index 000000000..48fcc7846
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..fe859daf6
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesub.v b/src/Specific/solinas64_2e321m9_6limbs/fesub.v
new file mode 100644
index 000000000..4bfda800f
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..fe7e1f4b6
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/freeze.v b/src/Specific/solinas64_2e321m9_6limbs/freeze.v
new file mode 100644
index 000000000..1231207a8
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..38c1b0b85
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e321m9/py_interpreter.sh b/src/Specific/solinas64_2e321m9_6limbs/py_interpreter.sh
index 5fcc08b1a..5fcc08b1a 100755
--- a/src/Specific/solinas64_2e321m9/py_interpreter.sh
+++ b/src/Specific/solinas64_2e321m9_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e321m9_7limbs/CurveParameters.v b/src/Specific/solinas64_2e321m9_7limbs/CurveParameters.v
new file mode 100644
index 000000000..4be0baccc
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^321 - 9
+Base: 45 + 6/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 45 + 6/7;
+ bitwidth := 64;
+ s := 2^321;
+ c := [(1, 9)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/Synthesis.v b/src/Specific/solinas64_2e321m9_7limbs/Synthesis.v
new file mode 100644
index 000000000..5ccd10ee8
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/compiler.sh b/src/Specific/solinas64_2e321m9_7limbs/compiler.sh
new file mode 100755
index 000000000..87a012054
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas64_2e321m9_7limbs/compilerxx.sh b/src/Specific/solinas64_2e321m9_7limbs/compilerxx.sh
new file mode 100755
index 000000000..280ab2791
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{46,46,46,46,46,46,45}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<321) - 9' "$@"
diff --git a/src/Specific/solinas64_2e321m9_7limbs/feadd.v b/src/Specific/solinas64_2e321m9_7limbs/feadd.v
new file mode 100644
index 000000000..a84ecadaf
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e321m9_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..477f920ee
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/femul.v b/src/Specific/solinas64_2e321m9_7limbs/femul.v
new file mode 100644
index 000000000..1096e19ce
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/femulDisplay.v b/src/Specific/solinas64_2e321m9_7limbs/femulDisplay.v
new file mode 100644
index 000000000..67c3386bf
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesquare.v b/src/Specific/solinas64_2e321m9_7limbs/fesquare.v
new file mode 100644
index 000000000..aa89779e2
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e321m9_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9eceb7850
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesub.v b/src/Specific/solinas64_2e321m9_7limbs/fesub.v
new file mode 100644
index 000000000..55eb399e7
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..e0588703d
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/freeze.v b/src/Specific/solinas64_2e321m9_7limbs/freeze.v
new file mode 100644
index 000000000..e4b9426f0
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..ad02b0983
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e321m9_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e321m9_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e321m9_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..4c2c5df50
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**321 - 9' -Dmodulus_bytes='45 + 6/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e322m2e161m1/Synthesis.v b/src/Specific/solinas64_2e322m2e161m1/Synthesis.v
deleted file mode 100644
index 85c94a4ca..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e322m2e161m1/feadd.c b/src/Specific/solinas64_2e322m2e161m1/feadd.c
deleted file mode 100644
index 9acf97578..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e322m2e161m1/feadd.v b/src/Specific/solinas64_2e322m2e161m1/feadd.v
deleted file mode 100644
index fa619efcc..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.log b/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.log
deleted file mode 100644
index 6320440fc..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.v b/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.v
deleted file mode 100644
index 965856597..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e322m2e161m1/femul.v b/src/Specific/solinas64_2e322m2e161m1/femul.v
deleted file mode 100644
index 5e1eb88b1..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v b/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v
deleted file mode 100644
index 47333f821..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesquare.v b/src/Specific/solinas64_2e322m2e161m1/fesquare.v
deleted file mode 100644
index 018fb3e3c..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v b/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v
deleted file mode 100644
index bc5d7d18e..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesub.c b/src/Specific/solinas64_2e322m2e161m1/fesub.c
deleted file mode 100644
index 2c7591fdf..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = ((0x7ffffffffffe + x5) - x17);
- out[1] = ((0x7ffffffffffe + x7) - x19);
- out[2] = ((0x7ffffffffffe + x9) - x21);
- out[3] = ((0x7ffffefffffe + x11) - x23);
- out[4] = ((0x7ffffffffffe + x13) - x25);
- out[5] = ((0x7ffffffffffe + x15) - x27);
- out[6] = ((0x7ffffffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesub.v b/src/Specific/solinas64_2e322m2e161m1/fesub.v
deleted file mode 100644
index 68bdd50d5..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.log b/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.log
deleted file mode 100644
index 9d6ff5060..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffe + x14) - x26), ((0x7ffffffffffe + x15) - x27), ((0x7ffffffffffe + x13) - x25), ((0x7ffffefffffe + x11) - x23), ((0x7ffffffffffe + x9) - x21), ((0x7ffffffffffe + x7) - x19), ((0x7ffffffffffe + x5) - x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.v b/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.v
deleted file mode 100644
index e316000b1..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1/freeze.c b/src/Specific/solinas64_2e322m2e161m1/freeze.c
deleted file mode 100644
index f9314590d..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint64_t out[7], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffff);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffff7fffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffff);
- { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffff);
- { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & 0x3fffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint64_t x39 = (x34 & 0x3fffffffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint64_t x43 = (x34 & 0x3fffffffffff);
- { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint64_t x47 = (x34 & 0x3fffff7fffff);
- { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint64_t x51 = (x34 & 0x3fffffffffff);
- { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint64_t x55 = (x34 & 0x3fffffffffff);
- { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint64_t x59 = (x34 & 0x3fffffffffff);
- { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e322m2e161m1/freeze.v b/src/Specific/solinas64_2e322m2e161m1/freeze.v
deleted file mode 100644
index 5c9bb1c67..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.log b/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.log
deleted file mode 100644
index 08f806634..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffff);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffff7fffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffff);
- uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffff);
- uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0x3fffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint64_t x39 = (x34 & 0x3fffffffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint64_t x43 = (x34 & 0x3fffffffffff);
- uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint64_t x47 = (x34 & 0x3fffff7fffff);
- uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint64_t x51 = (x34 & 0x3fffffffffff);
- uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint64_t x55 = (x34 & 0x3fffffffffff);
- uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint64_t x59 = (x34 & 0x3fffffffffff);
- uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v b/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v
deleted file mode 100644
index c56e92ce0..000000000
--- a/src/Specific/solinas64_2e322m2e161m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e322m2e161m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/CurveParameters.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/CurveParameters.v
new file mode 100644
index 000000000..db46572db
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^322 - 2^161 - 1
+Base: 53 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 6%nat;
+ base := 53 + 2/3;
+ bitwidth := 64;
+ s := 2^322;
+ c := [(1, 1); (2^161, 1)];
+ carry_chains := Some [[2; 5]; [3; 0; 4; 1; 5; 2]; [3; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/Synthesis.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/Synthesis.v
new file mode 100644
index 000000000..e7b428df6
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/compiler.sh b/src/Specific/solinas64_2e322m2e161m1_6limbs/compiler.sh
new file mode 100755
index 000000000..25bf1f303
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,53,54,54,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1' "$@"
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/compilerxx.sh b/src/Specific/solinas64_2e322m2e161m1_6limbs/compilerxx.sh
new file mode 100755
index 000000000..6c05b36ee
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{54,54,53,54,54,53}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='41' -Dmodulus_limbs='6' -Dq_mpz='(1_mpz<<322) - (1_mpz<<161) - 1' "$@"
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.v
new file mode 100644
index 000000000..13b1fd9ae
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..a177173d1
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.v
new file mode 100644
index 000000000..e8cc40b2c
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.v
new file mode 100644
index 000000000..91300a96d
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.v
new file mode 100644
index 000000000..9fcfb3e40
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4921b3211
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.v
new file mode 100644
index 000000000..28520cbbb
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..7e2ad4d95
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.v
new file mode 100644
index 000000000..5c952a31b
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..dacc1df51
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/py_interpreter.sh b/src/Specific/solinas64_2e322m2e161m1_6limbs/py_interpreter.sh
new file mode 100755
index 000000000..c501d9d77
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**322 - 2**161 - 1' -Dmodulus_bytes='53 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e322m2e161m1/CurveParameters.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/CurveParameters.v
index 3df995a12..3df995a12 100644
--- a/src/Specific/solinas64_2e322m2e161m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/Synthesis.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/Synthesis.v
new file mode 100644
index 000000000..30b374432
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e322m2e161m1/compiler.sh b/src/Specific/solinas64_2e322m2e161m1_7limbs/compiler.sh
index 9a2b5e8c5..9a2b5e8c5 100755
--- a/src/Specific/solinas64_2e322m2e161m1/compiler.sh
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e322m2e161m1/compilerxx.sh b/src/Specific/solinas64_2e322m2e161m1_7limbs/compilerxx.sh
index ddac39855..ddac39855 100755
--- a/src/Specific/solinas64_2e322m2e161m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.v
new file mode 100644
index 000000000..a41609206
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..058197870
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/femul.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/femul.v
new file mode 100644
index 000000000..6c8ed0c52
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/femulDisplay.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/femulDisplay.v
new file mode 100644
index 000000000..8b2c7cb51
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquare.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquare.v
new file mode 100644
index 000000000..f65fc27da
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ff82a49dd
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.v
new file mode 100644
index 000000000..e349cadf3
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..439c9712a
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.v
new file mode 100644
index 000000000..df7fc36c3
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..8b4b85795
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e322m2e161m1_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e322m2e161m1/py_interpreter.sh b/src/Specific/solinas64_2e322m2e161m1_7limbs/py_interpreter.sh
index 557670f4c..557670f4c 100755
--- a/src/Specific/solinas64_2e322m2e161m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e336m17/Synthesis.v b/src/Specific/solinas64_2e336m17/Synthesis.v
deleted file mode 100644
index e4422b943..000000000
--- a/src/Specific/solinas64_2e336m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e336m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m17/feadd.c b/src/Specific/solinas64_2e336m17/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e336m17/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m17/feadd.v b/src/Specific/solinas64_2e336m17/feadd.v
deleted file mode 100644
index 4a0d24309..000000000
--- a/src/Specific/solinas64_2e336m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m17/feaddDisplay.log b/src/Specific/solinas64_2e336m17/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e336m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17/feaddDisplay.v b/src/Specific/solinas64_2e336m17/feaddDisplay.v
deleted file mode 100644
index a5ddf0f0e..000000000
--- a/src/Specific/solinas64_2e336m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e336m17/femul.c b/src/Specific/solinas64_2e336m17/femul.c
deleted file mode 100644
index 9e663e79f..000000000
--- a/src/Specific/solinas64_2e336m17/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x11 * ((uint128_t)x12 * x22)));
- { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x11 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x11 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
- { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x11 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- { uint128_t x29 = (((uint128_t)x5 * x15) + (0x11 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
- { uint128_t x30 = (x29 >> 0x38);
- { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
- { uint128_t x32 = (x30 + x28);
- { uint128_t x33 = (x32 >> 0x38);
- { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- { uint128_t x35 = (x33 + x27);
- { uint128_t x36 = (x35 >> 0x38);
- { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- { uint128_t x38 = (x36 + x26);
- { uint128_t x39 = (x38 >> 0x38);
- { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
- { uint128_t x41 = (x39 + x25);
- { uint64_t x42 = (uint64_t) (x41 >> 0x38);
- { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- { uint128_t x44 = (x42 + x24);
- { uint64_t x45 = (uint64_t) (x44 >> 0x38);
- { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- { uint128_t x47 = (x31 + ((uint128_t)0x11 * x45));
- { uint64_t x48 = (uint64_t) (x47 >> 0x38);
- { uint64_t x49 = ((uint64_t)x47 & 0xffffffffffffff);
- { uint64_t x50 = (x48 + x34);
- { uint64_t x51 = (x50 >> 0x38);
- { uint64_t x52 = (x50 & 0xffffffffffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m17/femul.v b/src/Specific/solinas64_2e336m17/femul.v
deleted file mode 100644
index 9d162fcd0..000000000
--- a/src/Specific/solinas64_2e336m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m17/femulDisplay.log b/src/Specific/solinas64_2e336m17/femulDisplay.log
deleted file mode 100644
index dba3aac29..000000000
--- a/src/Specific/solinas64_2e336m17/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x11 * ((uint128_t)x12 * x22)));
- uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x11 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x11 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
- uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x11 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- uint128_t x29 = (((uint128_t)x5 * x15) + (0x11 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
- uint128_t x30 = (x29 >> 0x38);
- uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
- uint128_t x32 = (x30 + x28);
- uint128_t x33 = (x32 >> 0x38);
- uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- uint128_t x35 = (x33 + x27);
- uint128_t x36 = (x35 >> 0x38);
- uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- uint128_t x38 = (x36 + x26);
- uint128_t x39 = (x38 >> 0x38);
- uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
- uint128_t x41 = (x39 + x25);
- uint64_t x42 = (uint64_t) (x41 >> 0x38);
- uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- uint128_t x44 = (x42 + x24);
- uint64_t x45 = (uint64_t) (x44 >> 0x38);
- uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- uint128_t x47 = (x31 + ((uint128_t)0x11 * x45));
- uint64_t x48 = (uint64_t) (x47 >> 0x38);
- uint64_t x49 = ((uint64_t)x47 & 0xffffffffffffff);
- uint64_t x50 = (x48 + x34);
- uint64_t x51 = (x50 >> 0x38);
- uint64_t x52 = (x50 & 0xffffffffffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17/femulDisplay.v b/src/Specific/solinas64_2e336m17/femulDisplay.v
deleted file mode 100644
index f91a21c57..000000000
--- a/src/Specific/solinas64_2e336m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e336m17/fesquare.c b/src/Specific/solinas64_2e336m17/fesquare.c
deleted file mode 100644
index 86e650785..000000000
--- a/src/Specific/solinas64_2e336m17/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * ((uint128_t)x9 * x9)));
- { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
- { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- { uint128_t x16 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
- { uint128_t x17 = (x16 >> 0x38);
- { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- { uint128_t x19 = (x17 + x15);
- { uint128_t x20 = (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x20 + x14);
- { uint128_t x23 = (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint128_t x25 = (x23 + x13);
- { uint128_t x26 = (x25 >> 0x38);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint64_t x29 = (uint64_t) (x28 >> 0x38);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x38);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- { uint128_t x34 = (x18 + ((uint128_t)0x11 * x32));
- { uint64_t x35 = (uint64_t) (x34 >> 0x38);
- { uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x38);
- { uint64_t x39 = (x37 & 0xffffffffffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m17/fesquare.v b/src/Specific/solinas64_2e336m17/fesquare.v
deleted file mode 100644
index 622bb2e2a..000000000
--- a/src/Specific/solinas64_2e336m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m17/fesquareDisplay.log b/src/Specific/solinas64_2e336m17/fesquareDisplay.log
deleted file mode 100644
index 582686440..000000000
--- a/src/Specific/solinas64_2e336m17/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * ((uint128_t)x9 * x9)));
- uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
- uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- uint128_t x16 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
- uint128_t x17 = (x16 >> 0x38);
- uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- uint128_t x19 = (x17 + x15);
- uint128_t x20 = (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x20 + x14);
- uint128_t x23 = (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint128_t x25 = (x23 + x13);
- uint128_t x26 = (x25 >> 0x38);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- uint128_t x28 = (x26 + x12);
- uint64_t x29 = (uint64_t) (x28 >> 0x38);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x38);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- uint128_t x34 = (x18 + ((uint128_t)0x11 * x32));
- uint64_t x35 = (uint64_t) (x34 >> 0x38);
- uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x38);
- uint64_t x39 = (x37 & 0xffffffffffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17/fesquareDisplay.v b/src/Specific/solinas64_2e336m17/fesquareDisplay.v
deleted file mode 100644
index 9aad964b3..000000000
--- a/src/Specific/solinas64_2e336m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e336m17/fesub.c b/src/Specific/solinas64_2e336m17/fesub.c
deleted file mode 100644
index 3728606e2..000000000
--- a/src/Specific/solinas64_2e336m17/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0x1ffffffffffffde + x5) - x15);
- out[1] = ((0x1fffffffffffffe + x7) - x17);
- out[2] = ((0x1fffffffffffffe + x9) - x19);
- out[3] = ((0x1fffffffffffffe + x11) - x21);
- out[4] = ((0x1fffffffffffffe + x13) - x23);
- out[5] = ((0x1fffffffffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m17/fesub.v b/src/Specific/solinas64_2e336m17/fesub.v
deleted file mode 100644
index b6d1e4a1d..000000000
--- a/src/Specific/solinas64_2e336m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m17/fesubDisplay.log b/src/Specific/solinas64_2e336m17/fesubDisplay.log
deleted file mode 100644
index 6df841701..000000000
--- a/src/Specific/solinas64_2e336m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x1fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x1ffffffffffffde + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17/fesubDisplay.v b/src/Specific/solinas64_2e336m17/fesubDisplay.v
deleted file mode 100644
index 037f3771c..000000000
--- a/src/Specific/solinas64_2e336m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e336m17/freeze.c b/src/Specific/solinas64_2e336m17/freeze.c
deleted file mode 100644
index ff74991e3..000000000
--- a/src/Specific/solinas64_2e336m17/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xffffffffffffef);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0xffffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0xffffffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0xffffffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0xffffffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0xffffffffffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m17/freeze.v b/src/Specific/solinas64_2e336m17/freeze.v
deleted file mode 100644
index 7f76aa11c..000000000
--- a/src/Specific/solinas64_2e336m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m17/freezeDisplay.log b/src/Specific/solinas64_2e336m17/freezeDisplay.log
deleted file mode 100644
index d1153b6c6..000000000
--- a/src/Specific/solinas64_2e336m17/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xffffffffffffef);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0xffffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0xffffffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0xffffffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0xffffffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0xffffffffffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17/freezeDisplay.v b/src/Specific/solinas64_2e336m17/freezeDisplay.v
deleted file mode 100644
index f6414d465..000000000
--- a/src/Specific/solinas64_2e336m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e336m17/CurveParameters.v b/src/Specific/solinas64_2e336m17_6limbs/CurveParameters.v
index 24cdbb10b..24cdbb10b 100644
--- a/src/Specific/solinas64_2e336m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e336m17_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e336m17_6limbs/Synthesis.v b/src/Specific/solinas64_2e336m17_6limbs/Synthesis.v
new file mode 100644
index 000000000..d22706404
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m17/compiler.sh b/src/Specific/solinas64_2e336m17_6limbs/compiler.sh
index f7c3593cb..f7c3593cb 100755
--- a/src/Specific/solinas64_2e336m17/compiler.sh
+++ b/src/Specific/solinas64_2e336m17_6limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e336m17/compilerxx.sh b/src/Specific/solinas64_2e336m17_6limbs/compilerxx.sh
index 358f20509..358f20509 100755
--- a/src/Specific/solinas64_2e336m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e336m17_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e336m17_6limbs/feadd.v b/src/Specific/solinas64_2e336m17_6limbs/feadd.v
new file mode 100644
index 000000000..4af6dc2fd
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..e46534032
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/femul.v b/src/Specific/solinas64_2e336m17_6limbs/femul.v
new file mode 100644
index 000000000..aa29e44ee
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.v b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.v
new file mode 100644
index 000000000..1853a8914
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesquare.v b/src/Specific/solinas64_2e336m17_6limbs/fesquare.v
new file mode 100644
index 000000000..7192a8767
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..70f4ed9c5
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesub.v b/src/Specific/solinas64_2e336m17_6limbs/fesub.v
new file mode 100644
index 000000000..2523b526e
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..a35bca8d9
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/freeze.v b/src/Specific/solinas64_2e336m17_6limbs/freeze.v
new file mode 100644
index 000000000..0e60c3a70
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..7a250dfa1
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e336m17/py_interpreter.sh b/src/Specific/solinas64_2e336m17_6limbs/py_interpreter.sh
index df56247e2..df56247e2 100755
--- a/src/Specific/solinas64_2e336m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e336m17_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e336m17_7limbs/CurveParameters.v b/src/Specific/solinas64_2e336m17_7limbs/CurveParameters.v
new file mode 100644
index 000000000..1100ca515
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^336 - 17
+Base: 48
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 48;
+ bitwidth := 64;
+ s := 2^336;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/Synthesis.v b/src/Specific/solinas64_2e336m17_7limbs/Synthesis.v
new file mode 100644
index 000000000..d1cc24048
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/compiler.sh b/src/Specific/solinas64_2e336m17_7limbs/compiler.sh
new file mode 100755
index 000000000..30752eb02
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 17' "$@"
diff --git a/src/Specific/solinas64_2e336m17_7limbs/compilerxx.sh b/src/Specific/solinas64_2e336m17_7limbs/compilerxx.sh
new file mode 100755
index 000000000..74ccab54c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 17' "$@"
diff --git a/src/Specific/solinas64_2e336m17_7limbs/feadd.v b/src/Specific/solinas64_2e336m17_7limbs/feadd.v
new file mode 100644
index 000000000..1a801bcdb
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e336m17_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..de1377cd8
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/femul.v b/src/Specific/solinas64_2e336m17_7limbs/femul.v
new file mode 100644
index 000000000..11c10b414
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/femulDisplay.v b/src/Specific/solinas64_2e336m17_7limbs/femulDisplay.v
new file mode 100644
index 000000000..fc9dafc96
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesquare.v b/src/Specific/solinas64_2e336m17_7limbs/fesquare.v
new file mode 100644
index 000000000..ea5e8947c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e336m17_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7e1ba6a4e
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesub.v b/src/Specific/solinas64_2e336m17_7limbs/fesub.v
new file mode 100644
index 000000000..ed7423714
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..f9633e193
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/freeze.v b/src/Specific/solinas64_2e336m17_7limbs/freeze.v
new file mode 100644
index 000000000..fd0be48da
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e336m17_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..1eca0ec3c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m17_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e336m17_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e336m17_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..1f3c13db5
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**336 - 17' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e336m3/Synthesis.v b/src/Specific/solinas64_2e336m3/Synthesis.v
deleted file mode 100644
index 2f0eb56dd..000000000
--- a/src/Specific/solinas64_2e336m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e336m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m3/feadd.c b/src/Specific/solinas64_2e336m3/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e336m3/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m3/feadd.v b/src/Specific/solinas64_2e336m3/feadd.v
deleted file mode 100644
index 91c55b336..000000000
--- a/src/Specific/solinas64_2e336m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m3/feaddDisplay.log b/src/Specific/solinas64_2e336m3/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e336m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3/feaddDisplay.v b/src/Specific/solinas64_2e336m3/feaddDisplay.v
deleted file mode 100644
index aca007191..000000000
--- a/src/Specific/solinas64_2e336m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e336m3/femul.c b/src/Specific/solinas64_2e336m3/femul.c
deleted file mode 100644
index 879ec974c..000000000
--- a/src/Specific/solinas64_2e336m3/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
- { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x3 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
- { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- { uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
- { uint64_t x30 = (uint64_t) (x29 >> 0x38);
- { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
- { uint128_t x32 = (x30 + x28);
- { uint64_t x33 = (uint64_t) (x32 >> 0x38);
- { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- { uint128_t x35 = (x33 + x27);
- { uint64_t x36 = (uint64_t) (x35 >> 0x38);
- { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- { uint128_t x38 = (x36 + x26);
- { uint64_t x39 = (uint64_t) (x38 >> 0x38);
- { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
- { uint128_t x41 = (x39 + x25);
- { uint64_t x42 = (uint64_t) (x41 >> 0x38);
- { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- { uint128_t x44 = (x42 + x24);
- { uint64_t x45 = (uint64_t) (x44 >> 0x38);
- { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- { uint64_t x47 = (x31 + (0x3 * x45));
- { uint64_t x48 = (x47 >> 0x38);
- { uint64_t x49 = (x47 & 0xffffffffffffff);
- { uint64_t x50 = (x48 + x34);
- { uint64_t x51 = (x50 >> 0x38);
- { uint64_t x52 = (x50 & 0xffffffffffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m3/femul.v b/src/Specific/solinas64_2e336m3/femul.v
deleted file mode 100644
index ebf445dde..000000000
--- a/src/Specific/solinas64_2e336m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m3/femulDisplay.log b/src/Specific/solinas64_2e336m3/femulDisplay.log
deleted file mode 100644
index 9540c82ee..000000000
--- a/src/Specific/solinas64_2e336m3/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
- uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
- uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x3 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
- uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
- uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
- uint64_t x30 = (uint64_t) (x29 >> 0x38);
- uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
- uint128_t x32 = (x30 + x28);
- uint64_t x33 = (uint64_t) (x32 >> 0x38);
- uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- uint128_t x35 = (x33 + x27);
- uint64_t x36 = (uint64_t) (x35 >> 0x38);
- uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- uint128_t x38 = (x36 + x26);
- uint64_t x39 = (uint64_t) (x38 >> 0x38);
- uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
- uint128_t x41 = (x39 + x25);
- uint64_t x42 = (uint64_t) (x41 >> 0x38);
- uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- uint128_t x44 = (x42 + x24);
- uint64_t x45 = (uint64_t) (x44 >> 0x38);
- uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- uint64_t x47 = (x31 + (0x3 * x45));
- uint64_t x48 = (x47 >> 0x38);
- uint64_t x49 = (x47 & 0xffffffffffffff);
- uint64_t x50 = (x48 + x34);
- uint64_t x51 = (x50 >> 0x38);
- uint64_t x52 = (x50 & 0xffffffffffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3/femulDisplay.v b/src/Specific/solinas64_2e336m3/femulDisplay.v
deleted file mode 100644
index e1a359c1f..000000000
--- a/src/Specific/solinas64_2e336m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e336m3/fesquare.c b/src/Specific/solinas64_2e336m3/fesquare.c
deleted file mode 100644
index 5ccf65c0c..000000000
--- a/src/Specific/solinas64_2e336m3/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
- { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
- { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- { uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
- { uint64_t x17 = (uint64_t) (x16 >> 0x38);
- { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- { uint128_t x19 = (x17 + x15);
- { uint64_t x20 = (uint64_t) (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x20 + x14);
- { uint64_t x23 = (uint64_t) (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint128_t x25 = (x23 + x13);
- { uint64_t x26 = (uint64_t) (x25 >> 0x38);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint64_t x29 = (uint64_t) (x28 >> 0x38);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x38);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- { uint64_t x34 = (x18 + (0x3 * x32));
- { uint64_t x35 = (x34 >> 0x38);
- { uint64_t x36 = (x34 & 0xffffffffffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x38);
- { uint64_t x39 = (x37 & 0xffffffffffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m3/fesquare.v b/src/Specific/solinas64_2e336m3/fesquare.v
deleted file mode 100644
index 11bc75324..000000000
--- a/src/Specific/solinas64_2e336m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m3/fesquareDisplay.log b/src/Specific/solinas64_2e336m3/fesquareDisplay.log
deleted file mode 100644
index 1a676031c..000000000
--- a/src/Specific/solinas64_2e336m3/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
- uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
- uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
- uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
- uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
- uint64_t x17 = (uint64_t) (x16 >> 0x38);
- uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
- uint128_t x19 = (x17 + x15);
- uint64_t x20 = (uint64_t) (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x20 + x14);
- uint64_t x23 = (uint64_t) (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint128_t x25 = (x23 + x13);
- uint64_t x26 = (uint64_t) (x25 >> 0x38);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- uint128_t x28 = (x26 + x12);
- uint64_t x29 = (uint64_t) (x28 >> 0x38);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x38);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- uint64_t x34 = (x18 + (0x3 * x32));
- uint64_t x35 = (x34 >> 0x38);
- uint64_t x36 = (x34 & 0xffffffffffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x38);
- uint64_t x39 = (x37 & 0xffffffffffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3/fesquareDisplay.v b/src/Specific/solinas64_2e336m3/fesquareDisplay.v
deleted file mode 100644
index 107bbfec4..000000000
--- a/src/Specific/solinas64_2e336m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e336m3/fesub.c b/src/Specific/solinas64_2e336m3/fesub.c
deleted file mode 100644
index f680cabb5..000000000
--- a/src/Specific/solinas64_2e336m3/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0x1fffffffffffffa + x5) - x15);
- out[1] = ((0x1fffffffffffffe + x7) - x17);
- out[2] = ((0x1fffffffffffffe + x9) - x19);
- out[3] = ((0x1fffffffffffffe + x11) - x21);
- out[4] = ((0x1fffffffffffffe + x13) - x23);
- out[5] = ((0x1fffffffffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m3/fesub.v b/src/Specific/solinas64_2e336m3/fesub.v
deleted file mode 100644
index e31f64954..000000000
--- a/src/Specific/solinas64_2e336m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m3/fesubDisplay.log b/src/Specific/solinas64_2e336m3/fesubDisplay.log
deleted file mode 100644
index f11308491..000000000
--- a/src/Specific/solinas64_2e336m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x1fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x1fffffffffffffa + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3/fesubDisplay.v b/src/Specific/solinas64_2e336m3/fesubDisplay.v
deleted file mode 100644
index fd1873d1f..000000000
--- a/src/Specific/solinas64_2e336m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e336m3/freeze.c b/src/Specific/solinas64_2e336m3/freeze.c
deleted file mode 100644
index 41a597f18..000000000
--- a/src/Specific/solinas64_2e336m3/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0xfffffffffffffd);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0xffffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0xffffffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0xffffffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0xffffffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0xffffffffffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e336m3/freeze.v b/src/Specific/solinas64_2e336m3/freeze.v
deleted file mode 100644
index d40fe4ed0..000000000
--- a/src/Specific/solinas64_2e336m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e336m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m3/freezeDisplay.log b/src/Specific/solinas64_2e336m3/freezeDisplay.log
deleted file mode 100644
index 64e67c28c..000000000
--- a/src/Specific/solinas64_2e336m3/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0xfffffffffffffd);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0xffffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0xffffffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0xffffffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0xffffffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0xffffffffffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3/freezeDisplay.v b/src/Specific/solinas64_2e336m3/freezeDisplay.v
deleted file mode 100644
index 7b8985eed..000000000
--- a/src/Specific/solinas64_2e336m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e336m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e336m3/CurveParameters.v b/src/Specific/solinas64_2e336m3_6limbs/CurveParameters.v
index a0361f045..a0361f045 100644
--- a/src/Specific/solinas64_2e336m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e336m3_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e336m3_6limbs/Synthesis.v b/src/Specific/solinas64_2e336m3_6limbs/Synthesis.v
new file mode 100644
index 000000000..1fdf7ea30
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m3/compiler.sh b/src/Specific/solinas64_2e336m3_6limbs/compiler.sh
index 343e4ba4d..343e4ba4d 100755
--- a/src/Specific/solinas64_2e336m3/compiler.sh
+++ b/src/Specific/solinas64_2e336m3_6limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e336m3/compilerxx.sh b/src/Specific/solinas64_2e336m3_6limbs/compilerxx.sh
index bdf2aa0a1..bdf2aa0a1 100755
--- a/src/Specific/solinas64_2e336m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e336m3_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e336m3_6limbs/feadd.v b/src/Specific/solinas64_2e336m3_6limbs/feadd.v
new file mode 100644
index 000000000..5dd1b610e
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..63beefc54
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/femul.v b/src/Specific/solinas64_2e336m3_6limbs/femul.v
new file mode 100644
index 000000000..a89708e6c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.v b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.v
new file mode 100644
index 000000000..30b52d933
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesquare.v b/src/Specific/solinas64_2e336m3_6limbs/fesquare.v
new file mode 100644
index 000000000..df83cde0a
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..88c2e9862
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesub.v b/src/Specific/solinas64_2e336m3_6limbs/fesub.v
new file mode 100644
index 000000000..f1413c607
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..91c533166
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/freeze.v b/src/Specific/solinas64_2e336m3_6limbs/freeze.v
new file mode 100644
index 000000000..615e49668
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..215ceb2ee
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e336m3/py_interpreter.sh b/src/Specific/solinas64_2e336m3_6limbs/py_interpreter.sh
index 304fd2c81..304fd2c81 100755
--- a/src/Specific/solinas64_2e336m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e336m3_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e336m3_7limbs/CurveParameters.v b/src/Specific/solinas64_2e336m3_7limbs/CurveParameters.v
new file mode 100644
index 000000000..bcb93cf36
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^336 - 3
+Base: 48
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 48;
+ bitwidth := 64;
+ s := 2^336;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/Synthesis.v b/src/Specific/solinas64_2e336m3_7limbs/Synthesis.v
new file mode 100644
index 000000000..d13379c8b
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/compiler.sh b/src/Specific/solinas64_2e336m3_7limbs/compiler.sh
new file mode 100755
index 000000000..42403fc5c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 3' "$@"
diff --git a/src/Specific/solinas64_2e336m3_7limbs/compilerxx.sh b/src/Specific/solinas64_2e336m3_7limbs/compilerxx.sh
new file mode 100755
index 000000000..f88b3db8b
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='42' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<336) - 3' "$@"
diff --git a/src/Specific/solinas64_2e336m3_7limbs/feadd.v b/src/Specific/solinas64_2e336m3_7limbs/feadd.v
new file mode 100644
index 000000000..5a9c7b0d0
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e336m3_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..d4966aad9
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/femul.v b/src/Specific/solinas64_2e336m3_7limbs/femul.v
new file mode 100644
index 000000000..38009144d
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/femulDisplay.v b/src/Specific/solinas64_2e336m3_7limbs/femulDisplay.v
new file mode 100644
index 000000000..030a02ebe
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesquare.v b/src/Specific/solinas64_2e336m3_7limbs/fesquare.v
new file mode 100644
index 000000000..5e71c3544
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e336m3_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1579e7ada
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesub.v b/src/Specific/solinas64_2e336m3_7limbs/fesub.v
new file mode 100644
index 000000000..4e9af0bb0
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..11496c3dc
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/freeze.v b/src/Specific/solinas64_2e336m3_7limbs/freeze.v
new file mode 100644
index 000000000..d97fc573e
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e336m3_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..1269f6672
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e336m3_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e336m3_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e336m3_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..464e7587b
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**336 - 3' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e338m15/Synthesis.v b/src/Specific/solinas64_2e338m15/Synthesis.v
deleted file mode 100644
index 92841e340..000000000
--- a/src/Specific/solinas64_2e338m15/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e338m15.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e338m15/feadd.c b/src/Specific/solinas64_2e338m15/feadd.c
deleted file mode 100644
index 4a6bfb999..000000000
--- a/src/Specific/solinas64_2e338m15/feadd.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = (x5 + x15);
- out[1] = (x7 + x17);
- out[2] = (x9 + x19);
- out[3] = (x11 + x21);
- out[4] = (x13 + x23);
- out[5] = (x12 + x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e338m15/feadd.v b/src/Specific/solinas64_2e338m15/feadd.v
deleted file mode 100644
index 64d093502..000000000
--- a/src/Specific/solinas64_2e338m15/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e338m15/feaddDisplay.log b/src/Specific/solinas64_2e338m15/feaddDisplay.log
deleted file mode 100644
index e32995a81..000000000
--- a/src/Specific/solinas64_2e338m15/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15/feaddDisplay.v b/src/Specific/solinas64_2e338m15/feaddDisplay.v
deleted file mode 100644
index 8aa27aad5..000000000
--- a/src/Specific/solinas64_2e338m15/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e338m15.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e338m15/femul.c b/src/Specific/solinas64_2e338m15/femul.c
deleted file mode 100644
index b1b0c9dbc..000000000
--- a/src/Specific/solinas64_2e338m15/femul.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- { uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
- { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xf * ((uint128_t)x12 * x22)));
- { uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xf * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
- { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0xf * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
- { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xf * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- { uint128_t x29 = (((uint128_t)x5 * x15) + (0xf * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
- { uint128_t x30 = (x29 >> 0x39);
- { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffffff);
- { uint128_t x32 = (x30 + x28);
- { uint128_t x33 = (x32 >> 0x38);
- { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- { uint128_t x35 = (x33 + x27);
- { uint128_t x36 = (x35 >> 0x38);
- { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- { uint128_t x38 = (x36 + x26);
- { uint128_t x39 = (x38 >> 0x39);
- { uint64_t x40 = ((uint64_t)x38 & 0x1ffffffffffffff);
- { uint128_t x41 = (x39 + x25);
- { uint128_t x42 = (x41 >> 0x38);
- { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- { uint128_t x44 = (x42 + x24);
- { uint64_t x45 = (uint64_t) (x44 >> 0x38);
- { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- { uint128_t x47 = (x31 + ((uint128_t)0xf * x45));
- { uint64_t x48 = (uint64_t) (x47 >> 0x39);
- { uint64_t x49 = ((uint64_t)x47 & 0x1ffffffffffffff);
- { uint64_t x50 = (x48 + x34);
- { uint64_t x51 = (x50 >> 0x38);
- { uint64_t x52 = (x50 & 0xffffffffffffff);
- out[0] = x49;
- out[1] = x52;
- out[2] = (x51 + x37);
- out[3] = x40;
- out[4] = x43;
- out[5] = x46;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e338m15/femul.v b/src/Specific/solinas64_2e338m15/femul.v
deleted file mode 100644
index df0ffe73a..000000000
--- a/src/Specific/solinas64_2e338m15/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e338m15/femulDisplay.log b/src/Specific/solinas64_2e338m15/femulDisplay.log
deleted file mode 100644
index c00b329ae..000000000
--- a/src/Specific/solinas64_2e338m15/femulDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
- uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xf * ((uint128_t)x12 * x22)));
- uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xf * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
- uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0xf * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
- uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xf * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
- uint128_t x29 = (((uint128_t)x5 * x15) + (0xf * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
- uint128_t x30 = (x29 >> 0x39);
- uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffffff);
- uint128_t x32 = (x30 + x28);
- uint128_t x33 = (x32 >> 0x38);
- uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
- uint128_t x35 = (x33 + x27);
- uint128_t x36 = (x35 >> 0x38);
- uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
- uint128_t x38 = (x36 + x26);
- uint128_t x39 = (x38 >> 0x39);
- uint64_t x40 = ((uint64_t)x38 & 0x1ffffffffffffff);
- uint128_t x41 = (x39 + x25);
- uint128_t x42 = (x41 >> 0x38);
- uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
- uint128_t x44 = (x42 + x24);
- uint64_t x45 = (uint64_t) (x44 >> 0x38);
- uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
- uint128_t x47 = (x31 + ((uint128_t)0xf * x45));
- uint64_t x48 = (uint64_t) (x47 >> 0x39);
- uint64_t x49 = ((uint64_t)x47 & 0x1ffffffffffffff);
- uint64_t x50 = (x48 + x34);
- uint64_t x51 = (x50 >> 0x38);
- uint64_t x52 = (x50 & 0xffffffffffffff);
- return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15/femulDisplay.v b/src/Specific/solinas64_2e338m15/femulDisplay.v
deleted file mode 100644
index 47397d348..000000000
--- a/src/Specific/solinas64_2e338m15/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e338m15.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e338m15/fesquare.c b/src/Specific/solinas64_2e338m15/fesquare.c
deleted file mode 100644
index 0c19e81c2..000000000
--- a/src/Specific/solinas64_2e338m15/fesquare.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
- { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xf * ((uint128_t)x9 * x9)));
- { uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xf * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
- { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
- { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- { uint128_t x16 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
- { uint128_t x17 = (x16 >> 0x39);
- { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- { uint128_t x19 = (x17 + x15);
- { uint128_t x20 = (x19 >> 0x38);
- { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- { uint128_t x22 = (x20 + x14);
- { uint128_t x23 = (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint128_t x25 = (x23 + x13);
- { uint128_t x26 = (x25 >> 0x39);
- { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- { uint128_t x28 = (x26 + x12);
- { uint128_t x29 = (x28 >> 0x38);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- { uint128_t x31 = (x29 + x11);
- { uint64_t x32 = (uint64_t) (x31 >> 0x38);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- { uint128_t x34 = (x18 + ((uint128_t)0xf * x32));
- { uint64_t x35 = (uint64_t) (x34 >> 0x39);
- { uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
- { uint64_t x37 = (x35 + x21);
- { uint64_t x38 = (x37 >> 0x38);
- { uint64_t x39 = (x37 & 0xffffffffffffff);
- out[0] = x36;
- out[1] = x39;
- out[2] = (x38 + x24);
- out[3] = x27;
- out[4] = x30;
- out[5] = x33;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e338m15/fesquare.v b/src/Specific/solinas64_2e338m15/fesquare.v
deleted file mode 100644
index 5db3b3293..000000000
--- a/src/Specific/solinas64_2e338m15/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e338m15/fesquareDisplay.log b/src/Specific/solinas64_2e338m15/fesquareDisplay.log
deleted file mode 100644
index 20434092e..000000000
--- a/src/Specific/solinas64_2e338m15/fesquareDisplay.log
+++ /dev/null
@@ -1,36 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
- uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xf * ((uint128_t)x9 * x9)));
- uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xf * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
- uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
- uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
- uint128_t x16 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
- uint128_t x17 = (x16 >> 0x39);
- uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
- uint128_t x19 = (x17 + x15);
- uint128_t x20 = (x19 >> 0x38);
- uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
- uint128_t x22 = (x20 + x14);
- uint128_t x23 = (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint128_t x25 = (x23 + x13);
- uint128_t x26 = (x25 >> 0x39);
- uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
- uint128_t x28 = (x26 + x12);
- uint128_t x29 = (x28 >> 0x38);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- uint128_t x31 = (x29 + x11);
- uint64_t x32 = (uint64_t) (x31 >> 0x38);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- uint128_t x34 = (x18 + ((uint128_t)0xf * x32));
- uint64_t x35 = (uint64_t) (x34 >> 0x39);
- uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
- uint64_t x37 = (x35 + x21);
- uint64_t x38 = (x37 >> 0x38);
- uint64_t x39 = (x37 & 0xffffffffffffff);
- return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15/fesquareDisplay.v b/src/Specific/solinas64_2e338m15/fesquareDisplay.v
deleted file mode 100644
index 1f5b1efae..000000000
--- a/src/Specific/solinas64_2e338m15/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e338m15.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e338m15/fesub.c b/src/Specific/solinas64_2e338m15/fesub.c
deleted file mode 100644
index 58f3e1e4b..000000000
--- a/src/Specific/solinas64_2e338m15/fesub.c
+++ /dev/null
@@ -1,21 +0,0 @@
-static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
- { const uint64_t x12 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x22 = in2[5];
- { const uint64_t x23 = in2[4];
- { const uint64_t x21 = in2[3];
- { const uint64_t x19 = in2[2];
- { const uint64_t x17 = in2[1];
- { const uint64_t x15 = in2[0];
- out[0] = ((0x3ffffffffffffe2 + x5) - x15);
- out[1] = ((0x1fffffffffffffe + x7) - x17);
- out[2] = ((0x1fffffffffffffe + x9) - x19);
- out[3] = ((0x3fffffffffffffe + x11) - x21);
- out[4] = ((0x1fffffffffffffe + x13) - x23);
- out[5] = ((0x1fffffffffffffe + x12) - x22);
- }}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e338m15/fesub.v b/src/Specific/solinas64_2e338m15/fesub.v
deleted file mode 100644
index 872a4253a..000000000
--- a/src/Specific/solinas64_2e338m15/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e338m15/fesubDisplay.log b/src/Specific/solinas64_2e338m15/fesubDisplay.log
deleted file mode 100644
index 9eb96c91d..000000000
--- a/src/Specific/solinas64_2e338m15/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x3fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x3ffffffffffffe2 + x5) - x15)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15/fesubDisplay.v b/src/Specific/solinas64_2e338m15/fesubDisplay.v
deleted file mode 100644
index 049d41317..000000000
--- a/src/Specific/solinas64_2e338m15/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e338m15.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e338m15/freeze.c b/src/Specific/solinas64_2e338m15/freeze.c
deleted file mode 100644
index 9163faff6..000000000
--- a/src/Specific/solinas64_2e338m15/freeze.c
+++ /dev/null
@@ -1,34 +0,0 @@
-static void freeze(uint64_t out[6], const uint64_t in1[6]) {
- { const uint64_t x9 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff1);
- { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- { uint64_t x30 = (x29 & 0x1fffffffffffff1);
- { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- { uint64_t x34 = (x29 & 0xffffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- { uint64_t x38 = (x29 & 0xffffffffffffff);
- { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- { uint64_t x42 = (x29 & 0x1ffffffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- { uint64_t x46 = (x29 & 0xffffffffffffff);
- { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- { uint64_t x50 = (x29 & 0xffffffffffffff);
- { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- out[0] = x32;
- out[1] = x36;
- out[2] = x40;
- out[3] = x44;
- out[4] = x48;
- out[5] = x52;
- }}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e338m15/freeze.v b/src/Specific/solinas64_2e338m15/freeze.v
deleted file mode 100644
index 7c101a37c..000000000
--- a/src/Specific/solinas64_2e338m15/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e338m15.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e338m15/freezeDisplay.log b/src/Specific/solinas64_2e338m15/freezeDisplay.log
deleted file mode 100644
index d2d9556a4..000000000
--- a/src/Specific/solinas64_2e338m15/freezeDisplay.log
+++ /dev/null
@@ -1,26 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x9, x10, x8, x6, x4, x2)%core,
- uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff1);
- uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
- uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
- uint64_t x30 = (x29 & 0x1fffffffffffff1);
- uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
- uint64_t x34 = (x29 & 0xffffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
- uint64_t x38 = (x29 & 0xffffffffffffff);
- uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
- uint64_t x42 = (x29 & 0x1ffffffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
- uint64_t x46 = (x29 & 0xffffffffffffff);
- uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
- uint64_t x50 = (x29 & 0xffffffffffffff);
- uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
- (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15/freezeDisplay.v b/src/Specific/solinas64_2e338m15/freezeDisplay.v
deleted file mode 100644
index 103a60d4d..000000000
--- a/src/Specific/solinas64_2e338m15/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e338m15.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e338m15/CurveParameters.v b/src/Specific/solinas64_2e338m15_6limbs/CurveParameters.v
index ddc66d0bc..ddc66d0bc 100644
--- a/src/Specific/solinas64_2e338m15/CurveParameters.v
+++ b/src/Specific/solinas64_2e338m15_6limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e338m15_6limbs/Synthesis.v b/src/Specific/solinas64_2e338m15_6limbs/Synthesis.v
new file mode 100644
index 000000000..0c3dd4429
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e338m15/compiler.sh b/src/Specific/solinas64_2e338m15_6limbs/compiler.sh
index 350e78713..350e78713 100755
--- a/src/Specific/solinas64_2e338m15/compiler.sh
+++ b/src/Specific/solinas64_2e338m15_6limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e338m15/compilerxx.sh b/src/Specific/solinas64_2e338m15_6limbs/compilerxx.sh
index 09ba4bd0e..09ba4bd0e 100755
--- a/src/Specific/solinas64_2e338m15/compilerxx.sh
+++ b/src/Specific/solinas64_2e338m15_6limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e338m15_6limbs/feadd.v b/src/Specific/solinas64_2e338m15_6limbs/feadd.v
new file mode 100644
index 000000000..d59140283
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.v b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.v
new file mode 100644
index 000000000..ddefbccf3
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/femul.v b/src/Specific/solinas64_2e338m15_6limbs/femul.v
new file mode 100644
index 000000000..32eef2b3e
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.v b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.v
new file mode 100644
index 000000000..cc67b16bf
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesquare.v b/src/Specific/solinas64_2e338m15_6limbs/fesquare.v
new file mode 100644
index 000000000..b3377a30f
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.v b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3037f5e34
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesub.v b/src/Specific/solinas64_2e338m15_6limbs/fesub.v
new file mode 100644
index 000000000..5d17019a9
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.v b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.v
new file mode 100644
index 000000000..f800aa62e
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/freeze.v b/src/Specific/solinas64_2e338m15_6limbs/freeze.v
new file mode 100644
index 000000000..cc5ae945a
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.v b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.v
new file mode 100644
index 000000000..81089266c
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_6limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e338m15/py_interpreter.sh b/src/Specific/solinas64_2e338m15_6limbs/py_interpreter.sh
index efa76fbaf..efa76fbaf 100755
--- a/src/Specific/solinas64_2e338m15/py_interpreter.sh
+++ b/src/Specific/solinas64_2e338m15_6limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e338m15_7limbs/CurveParameters.v b/src/Specific/solinas64_2e338m15_7limbs/CurveParameters.v
new file mode 100644
index 000000000..fa7bf6731
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^338 - 15
+Base: 48 + 2/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 48 + 2/7;
+ bitwidth := 64;
+ s := 2^338;
+ c := [(1, 15)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/Synthesis.v b/src/Specific/solinas64_2e338m15_7limbs/Synthesis.v
new file mode 100644
index 000000000..f0b0c827c
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/compiler.sh b/src/Specific/solinas64_2e338m15_7limbs/compiler.sh
new file mode 100755
index 000000000..ce1188ec4
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,48,49,48,48,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<338) - 15' "$@"
diff --git a/src/Specific/solinas64_2e338m15_7limbs/compilerxx.sh b/src/Specific/solinas64_2e338m15_7limbs/compilerxx.sh
new file mode 100755
index 000000000..9befc79b4
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,48,48,49,48,48,48}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1}' -Dmodulus_bytes_val='43' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<338) - 15' "$@"
diff --git a/src/Specific/solinas64_2e338m15_7limbs/feadd.v b/src/Specific/solinas64_2e338m15_7limbs/feadd.v
new file mode 100644
index 000000000..c912f6719
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e338m15_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..bfc6fa63d
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/femul.v b/src/Specific/solinas64_2e338m15_7limbs/femul.v
new file mode 100644
index 000000000..be543787f
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/femulDisplay.v b/src/Specific/solinas64_2e338m15_7limbs/femulDisplay.v
new file mode 100644
index 000000000..927e8e13a
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/fesquare.v b/src/Specific/solinas64_2e338m15_7limbs/fesquare.v
new file mode 100644
index 000000000..e0e6a10e2
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e338m15_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7db43afd1
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/fesub.v b/src/Specific/solinas64_2e338m15_7limbs/fesub.v
new file mode 100644
index 000000000..a07a1fd17
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e338m15_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..7ec292da7
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/freeze.v b/src/Specific/solinas64_2e338m15_7limbs/freeze.v
new file mode 100644
index 000000000..aa86a2590
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e338m15_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..ad1e392b0
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e338m15_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e338m15_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e338m15_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..98a4275d3
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**338 - 15' -Dmodulus_bytes='48 + 2/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e369m25/Synthesis.v b/src/Specific/solinas64_2e369m25/Synthesis.v
deleted file mode 100644
index a3faefbdd..000000000
--- a/src/Specific/solinas64_2e369m25/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e369m25.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e369m25/feadd.c b/src/Specific/solinas64_2e369m25/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e369m25/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e369m25/feadd.v b/src/Specific/solinas64_2e369m25/feadd.v
deleted file mode 100644
index d51c52eaf..000000000
--- a/src/Specific/solinas64_2e369m25/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e369m25/feaddDisplay.log b/src/Specific/solinas64_2e369m25/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e369m25/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25/feaddDisplay.v b/src/Specific/solinas64_2e369m25/feaddDisplay.v
deleted file mode 100644
index 7aae19627..000000000
--- a/src/Specific/solinas64_2e369m25/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e369m25.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e369m25/femul.c b/src/Specific/solinas64_2e369m25/femul.c
deleted file mode 100644
index 5c6fbded1..000000000
--- a/src/Specific/solinas64_2e369m25/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((0x2 * ((uint128_t)x17 * x21)) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x19 * ((uint128_t)x16 * x30)));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((uint128_t)x15 * x19)))))) + (0x19 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x19 * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (0x19 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x19 * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x19 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x19 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
- { uint64_t x40 = (uint64_t) (x39 >> 0x2f);
- { uint64_t x41 = ((uint64_t)x39 & 0x7fffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint64_t x43 = (uint64_t) (x42 >> 0x2e);
- { uint64_t x44 = ((uint64_t)x42 & 0x3fffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint64_t x46 = (uint64_t) (x45 >> 0x2e);
- { uint64_t x47 = ((uint64_t)x45 & 0x3fffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint64_t x49 = (uint64_t) (x48 >> 0x2e);
- { uint64_t x50 = ((uint64_t)x48 & 0x3fffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint64_t x52 = (uint64_t) (x51 >> 0x2e);
- { uint64_t x53 = ((uint64_t)x51 & 0x3fffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint64_t x55 = (uint64_t) (x54 >> 0x2e);
- { uint64_t x56 = ((uint64_t)x54 & 0x3fffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint64_t x58 = (uint64_t) (x57 >> 0x2e);
- { uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint64_t x61 = (uint64_t) (x60 >> 0x2e);
- { uint64_t x62 = ((uint64_t)x60 & 0x3fffffffffff);
- { uint64_t x63 = (x41 + (0x19 * x61));
- { uint64_t x64 = (x63 >> 0x2f);
- { uint64_t x65 = (x63 & 0x7fffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x2e);
- { uint64_t x68 = (x66 & 0x3fffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e369m25/femul.v b/src/Specific/solinas64_2e369m25/femul.v
deleted file mode 100644
index 9f388998b..000000000
--- a/src/Specific/solinas64_2e369m25/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e369m25/femulDisplay.log b/src/Specific/solinas64_2e369m25/femulDisplay.log
deleted file mode 100644
index 7914bb499..000000000
--- a/src/Specific/solinas64_2e369m25/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((0x2 * ((uint128_t)x17 * x21)) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x19 * ((uint128_t)x16 * x30)));
- uint128_t x34 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((uint128_t)x15 * x19)))))) + (0x19 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x19 * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (0x19 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x19 * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x19 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x19 * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
- uint64_t x40 = (uint64_t) (x39 >> 0x2f);
- uint64_t x41 = ((uint64_t)x39 & 0x7fffffffffff);
- uint128_t x42 = (x40 + x38);
- uint64_t x43 = (uint64_t) (x42 >> 0x2e);
- uint64_t x44 = ((uint64_t)x42 & 0x3fffffffffff);
- uint128_t x45 = (x43 + x37);
- uint64_t x46 = (uint64_t) (x45 >> 0x2e);
- uint64_t x47 = ((uint64_t)x45 & 0x3fffffffffff);
- uint128_t x48 = (x46 + x36);
- uint64_t x49 = (uint64_t) (x48 >> 0x2e);
- uint64_t x50 = ((uint64_t)x48 & 0x3fffffffffff);
- uint128_t x51 = (x49 + x35);
- uint64_t x52 = (uint64_t) (x51 >> 0x2e);
- uint64_t x53 = ((uint64_t)x51 & 0x3fffffffffff);
- uint128_t x54 = (x52 + x34);
- uint64_t x55 = (uint64_t) (x54 >> 0x2e);
- uint64_t x56 = ((uint64_t)x54 & 0x3fffffffffff);
- uint128_t x57 = (x55 + x33);
- uint64_t x58 = (uint64_t) (x57 >> 0x2e);
- uint64_t x59 = ((uint64_t)x57 & 0x3fffffffffff);
- uint128_t x60 = (x58 + x32);
- uint64_t x61 = (uint64_t) (x60 >> 0x2e);
- uint64_t x62 = ((uint64_t)x60 & 0x3fffffffffff);
- uint64_t x63 = (x41 + (0x19 * x61));
- uint64_t x64 = (x63 >> 0x2f);
- uint64_t x65 = (x63 & 0x7fffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x2e);
- uint64_t x68 = (x66 & 0x3fffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25/femulDisplay.v b/src/Specific/solinas64_2e369m25/femulDisplay.v
deleted file mode 100644
index f5277b77f..000000000
--- a/src/Specific/solinas64_2e369m25/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e369m25.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e369m25/fesquare.c b/src/Specific/solinas64_2e369m25/fesquare.c
deleted file mode 100644
index af582164e..000000000
--- a/src/Specific/solinas64_2e369m25/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x19 * ((uint128_t)x13 * x13)));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x19 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x19 * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x19 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x19 * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x19 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
- { uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- { uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint64_t x26 = (uint64_t) (x25 >> 0x2e);
- { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint64_t x29 = (uint64_t) (x28 >> 0x2e);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint64_t x32 = (uint64_t) (x31 >> 0x2e);
- { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint64_t x35 = (uint64_t) (x34 >> 0x2e);
- { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint64_t x38 = (uint64_t) (x37 >> 0x2e);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint64_t x41 = (uint64_t) (x40 >> 0x2e);
- { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint64_t x44 = (uint64_t) (x43 >> 0x2e);
- { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
- { uint64_t x46 = (x24 + (0x19 * x44));
- { uint64_t x47 = (x46 >> 0x2f);
- { uint64_t x48 = (x46 & 0x7fffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x2e);
- { uint64_t x51 = (x49 & 0x3fffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e369m25/fesquare.v b/src/Specific/solinas64_2e369m25/fesquare.v
deleted file mode 100644
index fbaa5da9c..000000000
--- a/src/Specific/solinas64_2e369m25/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e369m25/fesquareDisplay.log b/src/Specific/solinas64_2e369m25/fesquareDisplay.log
deleted file mode 100644
index c27dfaf7f..000000000
--- a/src/Specific/solinas64_2e369m25/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x19 * ((uint128_t)x13 * x13)));
- uint128_t x17 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x19 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x19 * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x19 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x19 * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x19 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x19 * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
- uint64_t x23 = (uint64_t) (x22 >> 0x2f);
- uint64_t x24 = ((uint64_t)x22 & 0x7fffffffffff);
- uint128_t x25 = (x23 + x21);
- uint64_t x26 = (uint64_t) (x25 >> 0x2e);
- uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffff);
- uint128_t x28 = (x26 + x20);
- uint64_t x29 = (uint64_t) (x28 >> 0x2e);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffff);
- uint128_t x31 = (x29 + x19);
- uint64_t x32 = (uint64_t) (x31 >> 0x2e);
- uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffff);
- uint128_t x34 = (x32 + x18);
- uint64_t x35 = (uint64_t) (x34 >> 0x2e);
- uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
- uint128_t x37 = (x35 + x17);
- uint64_t x38 = (uint64_t) (x37 >> 0x2e);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
- uint128_t x40 = (x38 + x16);
- uint64_t x41 = (uint64_t) (x40 >> 0x2e);
- uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
- uint128_t x43 = (x41 + x15);
- uint64_t x44 = (uint64_t) (x43 >> 0x2e);
- uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
- uint64_t x46 = (x24 + (0x19 * x44));
- uint64_t x47 = (x46 >> 0x2f);
- uint64_t x48 = (x46 & 0x7fffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x2e);
- uint64_t x51 = (x49 & 0x3fffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25/fesquareDisplay.v b/src/Specific/solinas64_2e369m25/fesquareDisplay.v
deleted file mode 100644
index 3cda19d73..000000000
--- a/src/Specific/solinas64_2e369m25/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e369m25.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e369m25/fesub.c b/src/Specific/solinas64_2e369m25/fesub.c
deleted file mode 100644
index b5ebd49a4..000000000
--- a/src/Specific/solinas64_2e369m25/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0xffffffffffce + x5) - x19);
- out[1] = ((0x7ffffffffffe + x7) - x21);
- out[2] = ((0x7ffffffffffe + x9) - x23);
- out[3] = ((0x7ffffffffffe + x11) - x25);
- out[4] = ((0x7ffffffffffe + x13) - x27);
- out[5] = ((0x7ffffffffffe + x15) - x29);
- out[6] = ((0x7ffffffffffe + x17) - x31);
- out[7] = ((0x7ffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e369m25/fesub.v b/src/Specific/solinas64_2e369m25/fesub.v
deleted file mode 100644
index bd57fb249..000000000
--- a/src/Specific/solinas64_2e369m25/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e369m25/fesubDisplay.log b/src/Specific/solinas64_2e369m25/fesubDisplay.log
deleted file mode 100644
index 4001ced5a..000000000
--- a/src/Specific/solinas64_2e369m25/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x7ffffffffffe + x16) - x30), ((0x7ffffffffffe + x17) - x31), ((0x7ffffffffffe + x15) - x29), ((0x7ffffffffffe + x13) - x27), ((0x7ffffffffffe + x11) - x25), ((0x7ffffffffffe + x9) - x23), ((0x7ffffffffffe + x7) - x21), ((0xffffffffffce + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25/fesubDisplay.v b/src/Specific/solinas64_2e369m25/fesubDisplay.v
deleted file mode 100644
index 30a4d279a..000000000
--- a/src/Specific/solinas64_2e369m25/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e369m25.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e369m25/freeze.c b/src/Specific/solinas64_2e369m25/freeze.c
deleted file mode 100644
index 975828002..000000000
--- a/src/Specific/solinas64_2e369m25/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffe7);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3fffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3fffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0x7fffffffffe7);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0x3fffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0x3fffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0x3fffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0x3fffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0x3fffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0x3fffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0x3fffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e369m25/freeze.v b/src/Specific/solinas64_2e369m25/freeze.v
deleted file mode 100644
index adf81969b..000000000
--- a/src/Specific/solinas64_2e369m25/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e369m25.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e369m25/freezeDisplay.log b/src/Specific/solinas64_2e369m25/freezeDisplay.log
deleted file mode 100644
index 576115614..000000000
--- a/src/Specific/solinas64_2e369m25/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffe7);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3fffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x3fffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3fffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x3fffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3fffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x3fffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3fffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0x7fffffffffe7);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0x3fffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0x3fffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0x3fffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0x3fffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0x3fffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0x3fffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0x3fffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e369m25/freezeDisplay.v b/src/Specific/solinas64_2e369m25/freezeDisplay.v
deleted file mode 100644
index 32a7789d4..000000000
--- a/src/Specific/solinas64_2e369m25/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e369m25.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/CurveParameters.v b/src/Specific/solinas64_2e369m25_7limbs/CurveParameters.v
new file mode 100644
index 000000000..6a782a1a4
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^369 - 25
+Base: 52 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 52 + 5/7;
+ bitwidth := 64;
+ s := 2^369;
+ c := [(1, 25)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/Synthesis.v b/src/Specific/solinas64_2e369m25_7limbs/Synthesis.v
new file mode 100644
index 000000000..6866bed39
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/compiler.sh b/src/Specific/solinas64_2e369m25_7limbs/compiler.sh
new file mode 100755
index 000000000..51acfcd90
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,52,53,53,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<369) - 25' "$@"
diff --git a/src/Specific/solinas64_2e369m25_7limbs/compilerxx.sh b/src/Specific/solinas64_2e369m25_7limbs/compilerxx.sh
new file mode 100755
index 000000000..8961b3e39
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{53,53,53,52,53,53,52}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7}' -Dmodulus_bytes_val='47' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<369) - 25' "$@"
diff --git a/src/Specific/solinas64_2e369m25_7limbs/feadd.v b/src/Specific/solinas64_2e369m25_7limbs/feadd.v
new file mode 100644
index 000000000..c850e8993
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e369m25_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..a7499777f
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/femul.v b/src/Specific/solinas64_2e369m25_7limbs/femul.v
new file mode 100644
index 000000000..ad364cacd
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/femulDisplay.v b/src/Specific/solinas64_2e369m25_7limbs/femulDisplay.v
new file mode 100644
index 000000000..e1a6bbd51
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesquare.v b/src/Specific/solinas64_2e369m25_7limbs/fesquare.v
new file mode 100644
index 000000000..d0533cb57
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e369m25_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f7d5daeb2
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesub.v b/src/Specific/solinas64_2e369m25_7limbs/fesub.v
new file mode 100644
index 000000000..6c50a52e7
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..c0b36068e
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/freeze.v b/src/Specific/solinas64_2e369m25_7limbs/freeze.v
new file mode 100644
index 000000000..5433019dc
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..b1b3ccfb4
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e369m25_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e369m25_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..96bb01399
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**369 - 25' -Dmodulus_bytes='52 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e369m25/CurveParameters.v b/src/Specific/solinas64_2e369m25_8limbs/CurveParameters.v
index f44d54162..f44d54162 100644
--- a/src/Specific/solinas64_2e369m25/CurveParameters.v
+++ b/src/Specific/solinas64_2e369m25_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e369m25_8limbs/Synthesis.v b/src/Specific/solinas64_2e369m25_8limbs/Synthesis.v
new file mode 100644
index 000000000..ad0218535
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e369m25/compiler.sh b/src/Specific/solinas64_2e369m25_8limbs/compiler.sh
index c3e5dba59..c3e5dba59 100755
--- a/src/Specific/solinas64_2e369m25/compiler.sh
+++ b/src/Specific/solinas64_2e369m25_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e369m25/compilerxx.sh b/src/Specific/solinas64_2e369m25_8limbs/compilerxx.sh
index 5fdf87bf5..5fdf87bf5 100755
--- a/src/Specific/solinas64_2e369m25/compilerxx.sh
+++ b/src/Specific/solinas64_2e369m25_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e369m25_8limbs/feadd.v b/src/Specific/solinas64_2e369m25_8limbs/feadd.v
new file mode 100644
index 000000000..c1892f146
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e369m25_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..d926617fc
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/femul.v b/src/Specific/solinas64_2e369m25_8limbs/femul.v
new file mode 100644
index 000000000..e0482f432
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/femulDisplay.v b/src/Specific/solinas64_2e369m25_8limbs/femulDisplay.v
new file mode 100644
index 000000000..66d409d42
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/fesquare.v b/src/Specific/solinas64_2e369m25_8limbs/fesquare.v
new file mode 100644
index 000000000..7c6b393ea
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e369m25_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3fc296ae4
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/fesub.v b/src/Specific/solinas64_2e369m25_8limbs/fesub.v
new file mode 100644
index 000000000..a11d8ce05
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e369m25_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..0fbf5f29c
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/freeze.v b/src/Specific/solinas64_2e369m25_8limbs/freeze.v
new file mode 100644
index 000000000..bdb85ed3f
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e369m25_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e369m25_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..c792e1d68
--- /dev/null
+++ b/src/Specific/solinas64_2e369m25_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e369m25_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e369m25/py_interpreter.sh b/src/Specific/solinas64_2e369m25_8limbs/py_interpreter.sh
index e58511182..e58511182 100755
--- a/src/Specific/solinas64_2e369m25/py_interpreter.sh
+++ b/src/Specific/solinas64_2e369m25_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e379m19/Synthesis.v b/src/Specific/solinas64_2e379m19/Synthesis.v
deleted file mode 100644
index 589f0b341..000000000
--- a/src/Specific/solinas64_2e379m19/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e379m19.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e379m19/feadd.c b/src/Specific/solinas64_2e379m19/feadd.c
deleted file mode 100644
index 9acf97578..000000000
--- a/src/Specific/solinas64_2e379m19/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e379m19/feadd.v b/src/Specific/solinas64_2e379m19/feadd.v
deleted file mode 100644
index cb70c5177..000000000
--- a/src/Specific/solinas64_2e379m19/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e379m19/feaddDisplay.log b/src/Specific/solinas64_2e379m19/feaddDisplay.log
deleted file mode 100644
index 6320440fc..000000000
--- a/src/Specific/solinas64_2e379m19/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19/feaddDisplay.v b/src/Specific/solinas64_2e379m19/feaddDisplay.v
deleted file mode 100644
index 6a416329b..000000000
--- a/src/Specific/solinas64_2e379m19/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e379m19.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e379m19/femul.c b/src/Specific/solinas64_2e379m19/femul.c
deleted file mode 100644
index 13915c820..000000000
--- a/src/Specific/solinas64_2e379m19/femul.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint128_t x28 = (((uint128_t)x5 * x26) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((0x2 * ((uint128_t)x15 * x19)) + ((uint128_t)x14 * x17)))))));
- { uint128_t x29 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + ((uint128_t)x15 * x17)))))) + (0x13 * ((uint128_t)x14 * x26)));
- { uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x13 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
- { uint128_t x31 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x19)) + ((uint128_t)x11 * x17)))) + (0x13 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- { uint128_t x32 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((uint128_t)x9 * x17))) + (0x13 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
- { uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x13 * (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
- { uint128_t x34 = (((uint128_t)x5 * x17) + (0x13 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
- { uint128_t x35 = (x34 >> 0x37);
- { uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- { uint128_t x37 = (x35 + x33);
- { uint128_t x38 = (x37 >> 0x36);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- { uint128_t x40 = (x38 + x32);
- { uint64_t x41 = (uint64_t) (x40 >> 0x36);
- { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
- { uint128_t x43 = (x41 + x31);
- { uint64_t x44 = (uint64_t) (x43 >> 0x36);
- { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
- { uint128_t x46 = (x44 + x30);
- { uint64_t x47 = (uint64_t) (x46 >> 0x36);
- { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
- { uint128_t x49 = (x47 + x29);
- { uint64_t x50 = (uint64_t) (x49 >> 0x36);
- { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
- { uint128_t x52 = (x50 + x28);
- { uint64_t x53 = (uint64_t) (x52 >> 0x36);
- { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
- { uint128_t x55 = (x36 + ((uint128_t)0x13 * x53));
- { uint64_t x56 = (uint64_t) (x55 >> 0x37);
- { uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
- { uint64_t x58 = (x56 + x39);
- { uint64_t x59 = (x58 >> 0x36);
- { uint64_t x60 = (x58 & 0x3fffffffffffff);
- out[0] = x57;
- out[1] = x60;
- out[2] = (x59 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e379m19/femul.v b/src/Specific/solinas64_2e379m19/femul.v
deleted file mode 100644
index bf674cdac..000000000
--- a/src/Specific/solinas64_2e379m19/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e379m19/femulDisplay.log b/src/Specific/solinas64_2e379m19/femulDisplay.log
deleted file mode 100644
index dabe48b5c..000000000
--- a/src/Specific/solinas64_2e379m19/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint128_t x28 = (((uint128_t)x5 * x26) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((0x2 * ((uint128_t)x15 * x19)) + ((uint128_t)x14 * x17)))))));
- uint128_t x29 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + ((uint128_t)x15 * x17)))))) + (0x13 * ((uint128_t)x14 * x26)));
- uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x13 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
- uint128_t x31 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x19)) + ((uint128_t)x11 * x17)))) + (0x13 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- uint128_t x32 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((uint128_t)x9 * x17))) + (0x13 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
- uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x13 * (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
- uint128_t x34 = (((uint128_t)x5 * x17) + (0x13 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
- uint128_t x35 = (x34 >> 0x37);
- uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- uint128_t x37 = (x35 + x33);
- uint128_t x38 = (x37 >> 0x36);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- uint128_t x40 = (x38 + x32);
- uint64_t x41 = (uint64_t) (x40 >> 0x36);
- uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
- uint128_t x43 = (x41 + x31);
- uint64_t x44 = (uint64_t) (x43 >> 0x36);
- uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
- uint128_t x46 = (x44 + x30);
- uint64_t x47 = (uint64_t) (x46 >> 0x36);
- uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
- uint128_t x49 = (x47 + x29);
- uint64_t x50 = (uint64_t) (x49 >> 0x36);
- uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
- uint128_t x52 = (x50 + x28);
- uint64_t x53 = (uint64_t) (x52 >> 0x36);
- uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
- uint128_t x55 = (x36 + ((uint128_t)0x13 * x53));
- uint64_t x56 = (uint64_t) (x55 >> 0x37);
- uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
- uint64_t x58 = (x56 + x39);
- uint64_t x59 = (x58 >> 0x36);
- uint64_t x60 = (x58 & 0x3fffffffffffff);
- return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19/femulDisplay.v b/src/Specific/solinas64_2e379m19/femulDisplay.v
deleted file mode 100644
index 356e36caf..000000000
--- a/src/Specific/solinas64_2e379m19/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e379m19.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e379m19/fesquare.c b/src/Specific/solinas64_2e379m19/fesquare.c
deleted file mode 100644
index e2ddf49ac..000000000
--- a/src/Specific/solinas64_2e379m19/fesquare.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x13 = (((uint128_t)x2 * x11) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x11 * x2)))))));
- { uint128_t x14 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x13 * ((uint128_t)x11 * x11)));
- { uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
- { uint128_t x16 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- { uint128_t x17 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
- { uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
- { uint128_t x19 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
- { uint128_t x20 = (x19 >> 0x37);
- { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- { uint128_t x22 = (x20 + x18);
- { uint128_t x23 = (x22 >> 0x36);
- { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint64_t x26 = (uint64_t) (x25 >> 0x36);
- { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint64_t x29 = (uint64_t) (x28 >> 0x36);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- { uint128_t x31 = (x29 + x15);
- { uint64_t x32 = (uint64_t) (x31 >> 0x36);
- { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
- { uint128_t x34 = (x32 + x14);
- { uint64_t x35 = (uint64_t) (x34 >> 0x36);
- { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
- { uint128_t x37 = (x35 + x13);
- { uint64_t x38 = (uint64_t) (x37 >> 0x36);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- { uint128_t x40 = (x21 + ((uint128_t)0x13 * x38));
- { uint64_t x41 = (uint64_t) (x40 >> 0x37);
- { uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
- { uint64_t x43 = (x41 + x24);
- { uint64_t x44 = (x43 >> 0x36);
- { uint64_t x45 = (x43 & 0x3fffffffffffff);
- out[0] = x42;
- out[1] = x45;
- out[2] = (x44 + x27);
- out[3] = x30;
- out[4] = x33;
- out[5] = x36;
- out[6] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e379m19/fesquare.v b/src/Specific/solinas64_2e379m19/fesquare.v
deleted file mode 100644
index 786de8c38..000000000
--- a/src/Specific/solinas64_2e379m19/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e379m19/fesquareDisplay.log b/src/Specific/solinas64_2e379m19/fesquareDisplay.log
deleted file mode 100644
index 90ba6043f..000000000
--- a/src/Specific/solinas64_2e379m19/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x13 = (((uint128_t)x2 * x11) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x11 * x2)))))));
- uint128_t x14 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x13 * ((uint128_t)x11 * x11)));
- uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
- uint128_t x16 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- uint128_t x17 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
- uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
- uint128_t x19 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
- uint128_t x20 = (x19 >> 0x37);
- uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
- uint128_t x22 = (x20 + x18);
- uint128_t x23 = (x22 >> 0x36);
- uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint64_t x26 = (uint64_t) (x25 >> 0x36);
- uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint64_t x29 = (uint64_t) (x28 >> 0x36);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- uint128_t x31 = (x29 + x15);
- uint64_t x32 = (uint64_t) (x31 >> 0x36);
- uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
- uint128_t x34 = (x32 + x14);
- uint64_t x35 = (uint64_t) (x34 >> 0x36);
- uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
- uint128_t x37 = (x35 + x13);
- uint64_t x38 = (uint64_t) (x37 >> 0x36);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- uint128_t x40 = (x21 + ((uint128_t)0x13 * x38));
- uint64_t x41 = (uint64_t) (x40 >> 0x37);
- uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
- uint64_t x43 = (x41 + x24);
- uint64_t x44 = (x43 >> 0x36);
- uint64_t x45 = (x43 & 0x3fffffffffffff);
- return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19/fesquareDisplay.v b/src/Specific/solinas64_2e379m19/fesquareDisplay.v
deleted file mode 100644
index d653e4ca4..000000000
--- a/src/Specific/solinas64_2e379m19/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e379m19.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e379m19/fesub.c b/src/Specific/solinas64_2e379m19/fesub.c
deleted file mode 100644
index e888ad3f0..000000000
--- a/src/Specific/solinas64_2e379m19/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = ((0xffffffffffffda + x5) - x17);
- out[1] = ((0x7ffffffffffffe + x7) - x19);
- out[2] = ((0x7ffffffffffffe + x9) - x21);
- out[3] = ((0x7ffffffffffffe + x11) - x23);
- out[4] = ((0x7ffffffffffffe + x13) - x25);
- out[5] = ((0x7ffffffffffffe + x15) - x27);
- out[6] = ((0x7ffffffffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e379m19/fesub.v b/src/Specific/solinas64_2e379m19/fesub.v
deleted file mode 100644
index d8945e2dd..000000000
--- a/src/Specific/solinas64_2e379m19/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e379m19/fesubDisplay.log b/src/Specific/solinas64_2e379m19/fesubDisplay.log
deleted file mode 100644
index 30992c3d8..000000000
--- a/src/Specific/solinas64_2e379m19/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0x7ffffffffffffe + x14) - x26), ((0x7ffffffffffffe + x15) - x27), ((0x7ffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0x7ffffffffffffe + x9) - x21), ((0x7ffffffffffffe + x7) - x19), ((0xffffffffffffda + x5) - x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19/fesubDisplay.v b/src/Specific/solinas64_2e379m19/fesubDisplay.v
deleted file mode 100644
index 786c4b59a..000000000
--- a/src/Specific/solinas64_2e379m19/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e379m19.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e379m19/freeze.c b/src/Specific/solinas64_2e379m19/freeze.c
deleted file mode 100644
index f1a2abbfb..000000000
--- a/src/Specific/solinas64_2e379m19/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint64_t out[7], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffed);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffffff);
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffffff);
- { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
- { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & 0x7fffffffffffed);
- { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint64_t x39 = (x34 & 0x3fffffffffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint64_t x43 = (x34 & 0x3fffffffffffff);
- { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint64_t x47 = (x34 & 0x3fffffffffffff);
- { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint64_t x51 = (x34 & 0x3fffffffffffff);
- { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint64_t x55 = (x34 & 0x3fffffffffffff);
- { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint64_t x59 = (x34 & 0x3fffffffffffff);
- { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e379m19/freeze.v b/src/Specific/solinas64_2e379m19/freeze.v
deleted file mode 100644
index 72f6e1d54..000000000
--- a/src/Specific/solinas64_2e379m19/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e379m19.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e379m19/freezeDisplay.log b/src/Specific/solinas64_2e379m19/freezeDisplay.log
deleted file mode 100644
index bd8d59c3b..000000000
--- a/src/Specific/solinas64_2e379m19/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffed);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffffff);
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffffff);
- uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
- uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0x7fffffffffffed);
- uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint64_t x39 = (x34 & 0x3fffffffffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint64_t x43 = (x34 & 0x3fffffffffffff);
- uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint64_t x47 = (x34 & 0x3fffffffffffff);
- uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint64_t x51 = (x34 & 0x3fffffffffffff);
- uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint64_t x55 = (x34 & 0x3fffffffffffff);
- uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint64_t x59 = (x34 & 0x3fffffffffffff);
- uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19/freezeDisplay.v b/src/Specific/solinas64_2e379m19/freezeDisplay.v
deleted file mode 100644
index 8157591b3..000000000
--- a/src/Specific/solinas64_2e379m19/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e379m19.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e379m19/CurveParameters.v b/src/Specific/solinas64_2e379m19_7limbs/CurveParameters.v
index b7b223fa9..b7b223fa9 100644
--- a/src/Specific/solinas64_2e379m19/CurveParameters.v
+++ b/src/Specific/solinas64_2e379m19_7limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e379m19_7limbs/Synthesis.v b/src/Specific/solinas64_2e379m19_7limbs/Synthesis.v
new file mode 100644
index 000000000..ebefcf71e
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e379m19/compiler.sh b/src/Specific/solinas64_2e379m19_7limbs/compiler.sh
index 8941d9f66..8941d9f66 100755
--- a/src/Specific/solinas64_2e379m19/compiler.sh
+++ b/src/Specific/solinas64_2e379m19_7limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e379m19/compilerxx.sh b/src/Specific/solinas64_2e379m19_7limbs/compilerxx.sh
index eaa2217a4..eaa2217a4 100755
--- a/src/Specific/solinas64_2e379m19/compilerxx.sh
+++ b/src/Specific/solinas64_2e379m19_7limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e379m19_7limbs/feadd.v b/src/Specific/solinas64_2e379m19_7limbs/feadd.v
new file mode 100644
index 000000000..c69094f7d
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..55239d2cb
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/femul.v b/src/Specific/solinas64_2e379m19_7limbs/femul.v
new file mode 100644
index 000000000..b528319c3
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.v b/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.v
new file mode 100644
index 000000000..767090b57
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesquare.v b/src/Specific/solinas64_2e379m19_7limbs/fesquare.v
new file mode 100644
index 000000000..e5a68b2e8
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..5d0faf2e1
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesub.v b/src/Specific/solinas64_2e379m19_7limbs/fesub.v
new file mode 100644
index 000000000..c6a487129
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..6acfaf740
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/freeze.v b/src/Specific/solinas64_2e379m19_7limbs/freeze.v
new file mode 100644
index 000000000..32fd6de2b
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..9ab093afc
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e379m19/py_interpreter.sh b/src/Specific/solinas64_2e379m19_7limbs/py_interpreter.sh
index 36bc36aaa..36bc36aaa 100755
--- a/src/Specific/solinas64_2e379m19/py_interpreter.sh
+++ b/src/Specific/solinas64_2e379m19_7limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e379m19_8limbs/CurveParameters.v b/src/Specific/solinas64_2e379m19_8limbs/CurveParameters.v
new file mode 100644
index 000000000..4e0f43636
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^379 - 19
+Base: 47.375
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 47 + 3/8;
+ bitwidth := 64;
+ s := 2^379;
+ c := [(1, 19)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/Synthesis.v b/src/Specific/solinas64_2e379m19_8limbs/Synthesis.v
new file mode 100644
index 000000000..36b68dc57
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/compiler.sh b/src/Specific/solinas64_2e379m19_8limbs/compiler.sh
new file mode 100755
index 000000000..457db1763
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,47,48,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas64_2e379m19_8limbs/compilerxx.sh b/src/Specific/solinas64_2e379m19_8limbs/compilerxx.sh
new file mode 100755
index 000000000..8cee8886d
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,47,48,47,47,48,47,47}' -Dmodulus_array='{0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xed}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<379) - 19' "$@"
diff --git a/src/Specific/solinas64_2e379m19_8limbs/feadd.v b/src/Specific/solinas64_2e379m19_8limbs/feadd.v
new file mode 100644
index 000000000..a2e5a5093
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e379m19_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..20961224c
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/femul.v b/src/Specific/solinas64_2e379m19_8limbs/femul.v
new file mode 100644
index 000000000..b54cab6ec
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/femulDisplay.v b/src/Specific/solinas64_2e379m19_8limbs/femulDisplay.v
new file mode 100644
index 000000000..d9ceb9662
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/fesquare.v b/src/Specific/solinas64_2e379m19_8limbs/fesquare.v
new file mode 100644
index 000000000..1933cbfe3
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e379m19_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..855f1fa4f
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/fesub.v b/src/Specific/solinas64_2e379m19_8limbs/fesub.v
new file mode 100644
index 000000000..e0f6e3c7b
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e379m19_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..244f4e94d
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/freeze.v b/src/Specific/solinas64_2e379m19_8limbs/freeze.v
new file mode 100644
index 000000000..eb58d51a9
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e379m19_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..a4179d4c4
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e379m19_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e379m19_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e379m19_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..279252eba
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**379 - 19' -Dmodulus_bytes='47.375' -Da24='121665'
diff --git a/src/Specific/solinas64_2e382m105/CurveParameters.v b/src/Specific/solinas64_2e382m105/CurveParameters.v
deleted file mode 100644
index be7f65910..000000000
--- a/src/Specific/solinas64_2e382m105/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^382 - 105
-Base: 38.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 38 + 1/5;
- bitwidth := 64;
- s := 2^382;
- c := [(1, 105)];
- carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e382m105/Synthesis.v b/src/Specific/solinas64_2e382m105/Synthesis.v
deleted file mode 100644
index bbfd31260..000000000
--- a/src/Specific/solinas64_2e382m105/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e382m105.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e382m105/compiler.sh b/src/Specific/solinas64_2e382m105/compiler.sh
deleted file mode 100755
index 166483097..000000000
--- a/src/Specific/solinas64_2e382m105/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,38,38,38,39,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105/compilerxx.sh b/src/Specific/solinas64_2e382m105/compilerxx.sh
deleted file mode 100755
index 924ad0a72..000000000
--- a/src/Specific/solinas64_2e382m105/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,38,38,38,39,38,38,38,38}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105/feadd.c b/src/Specific/solinas64_2e382m105/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e382m105/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e382m105/feadd.v b/src/Specific/solinas64_2e382m105/feadd.v
deleted file mode 100644
index f367a7e1c..000000000
--- a/src/Specific/solinas64_2e382m105/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e382m105/feaddDisplay.log b/src/Specific/solinas64_2e382m105/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e382m105/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105/feaddDisplay.v b/src/Specific/solinas64_2e382m105/feaddDisplay.v
deleted file mode 100644
index dee7f18ad..000000000
--- a/src/Specific/solinas64_2e382m105/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e382m105.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e382m105/femul.c b/src/Specific/solinas64_2e382m105/femul.c
deleted file mode 100644
index 79692f2a0..000000000
--- a/src/Specific/solinas64_2e382m105/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- { uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x69 * ((uint128_t)x20 * x38)));
- { uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x69 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- { uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x69 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x69 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
- { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x69 * (((uint128_t)x15 * x38) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((uint128_t)x20 * x33)))))));
- { uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x69 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x69 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + ((0x2 * ((uint128_t)x17 * x35)) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x69 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- { uint128_t x49 = (((uint128_t)x5 * x23) + (0x69 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- { uint64_t x50 = (uint64_t) (x49 >> 0x27);
- { uint64_t x51 = ((uint64_t)x49 & 0x7fffffffff);
- { uint128_t x52 = (x50 + x48);
- { uint64_t x53 = (uint64_t) (x52 >> 0x26);
- { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffff);
- { uint128_t x55 = (x53 + x47);
- { uint64_t x56 = (uint64_t) (x55 >> 0x26);
- { uint64_t x57 = ((uint64_t)x55 & 0x3fffffffff);
- { uint128_t x58 = (x56 + x46);
- { uint64_t x59 = (uint64_t) (x58 >> 0x26);
- { uint64_t x60 = ((uint64_t)x58 & 0x3fffffffff);
- { uint128_t x61 = (x59 + x45);
- { uint64_t x62 = (uint64_t) (x61 >> 0x26);
- { uint64_t x63 = ((uint64_t)x61 & 0x3fffffffff);
- { uint128_t x64 = (x62 + x44);
- { uint64_t x65 = (uint64_t) (x64 >> 0x27);
- { uint64_t x66 = ((uint64_t)x64 & 0x7fffffffff);
- { uint128_t x67 = (x65 + x43);
- { uint64_t x68 = (uint64_t) (x67 >> 0x26);
- { uint64_t x69 = ((uint64_t)x67 & 0x3fffffffff);
- { uint128_t x70 = (x68 + x42);
- { uint64_t x71 = (uint64_t) (x70 >> 0x26);
- { uint64_t x72 = ((uint64_t)x70 & 0x3fffffffff);
- { uint128_t x73 = (x71 + x41);
- { uint64_t x74 = (uint64_t) (x73 >> 0x26);
- { uint64_t x75 = ((uint64_t)x73 & 0x3fffffffff);
- { uint128_t x76 = (x74 + x40);
- { uint64_t x77 = (uint64_t) (x76 >> 0x26);
- { uint64_t x78 = ((uint64_t)x76 & 0x3fffffffff);
- { uint64_t x79 = (x51 + (0x69 * x77));
- { uint64_t x80 = (x79 >> 0x27);
- { uint64_t x81 = (x79 & 0x7fffffffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x26);
- { uint64_t x84 = (x82 & 0x3fffffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e382m105/femul.v b/src/Specific/solinas64_2e382m105/femul.v
deleted file mode 100644
index f60f85b90..000000000
--- a/src/Specific/solinas64_2e382m105/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e382m105/femulDisplay.log b/src/Specific/solinas64_2e382m105/femulDisplay.log
deleted file mode 100644
index 4548b39ef..000000000
--- a/src/Specific/solinas64_2e382m105/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x69 * ((uint128_t)x20 * x38)));
- uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x69 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x69 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x69 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
- uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x69 * (((uint128_t)x15 * x38) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((uint128_t)x20 * x33)))))));
- uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x69 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x69 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + ((0x2 * ((uint128_t)x17 * x35)) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x69 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- uint128_t x49 = (((uint128_t)x5 * x23) + (0x69 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- uint64_t x50 = (uint64_t) (x49 >> 0x27);
- uint64_t x51 = ((uint64_t)x49 & 0x7fffffffff);
- uint128_t x52 = (x50 + x48);
- uint64_t x53 = (uint64_t) (x52 >> 0x26);
- uint64_t x54 = ((uint64_t)x52 & 0x3fffffffff);
- uint128_t x55 = (x53 + x47);
- uint64_t x56 = (uint64_t) (x55 >> 0x26);
- uint64_t x57 = ((uint64_t)x55 & 0x3fffffffff);
- uint128_t x58 = (x56 + x46);
- uint64_t x59 = (uint64_t) (x58 >> 0x26);
- uint64_t x60 = ((uint64_t)x58 & 0x3fffffffff);
- uint128_t x61 = (x59 + x45);
- uint64_t x62 = (uint64_t) (x61 >> 0x26);
- uint64_t x63 = ((uint64_t)x61 & 0x3fffffffff);
- uint128_t x64 = (x62 + x44);
- uint64_t x65 = (uint64_t) (x64 >> 0x27);
- uint64_t x66 = ((uint64_t)x64 & 0x7fffffffff);
- uint128_t x67 = (x65 + x43);
- uint64_t x68 = (uint64_t) (x67 >> 0x26);
- uint64_t x69 = ((uint64_t)x67 & 0x3fffffffff);
- uint128_t x70 = (x68 + x42);
- uint64_t x71 = (uint64_t) (x70 >> 0x26);
- uint64_t x72 = ((uint64_t)x70 & 0x3fffffffff);
- uint128_t x73 = (x71 + x41);
- uint64_t x74 = (uint64_t) (x73 >> 0x26);
- uint64_t x75 = ((uint64_t)x73 & 0x3fffffffff);
- uint128_t x76 = (x74 + x40);
- uint64_t x77 = (uint64_t) (x76 >> 0x26);
- uint64_t x78 = ((uint64_t)x76 & 0x3fffffffff);
- uint64_t x79 = (x51 + (0x69 * x77));
- uint64_t x80 = (x79 >> 0x27);
- uint64_t x81 = (x79 & 0x7fffffffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x26);
- uint64_t x84 = (x82 & 0x3fffffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105/femulDisplay.v b/src/Specific/solinas64_2e382m105/femulDisplay.v
deleted file mode 100644
index ff5f054d2..000000000
--- a/src/Specific/solinas64_2e382m105/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e382m105.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e382m105/fesquare.c b/src/Specific/solinas64_2e382m105/fesquare.c
deleted file mode 100644
index d88749b03..000000000
--- a/src/Specific/solinas64_2e382m105/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x69 * ((uint128_t)x17 * x17)));
- { uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x69 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- { uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x69 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x69 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
- { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x69 * (((uint128_t)x12 * x17) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + ((uint128_t)x17 * x12)))))));
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x69 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x69 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x69 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- { uint128_t x28 = (((uint128_t)x2 * x2) + (0x69 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- { uint64_t x29 = (uint64_t) (x28 >> 0x27);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffff);
- { uint128_t x31 = (x29 + x27);
- { uint64_t x32 = (uint64_t) (x31 >> 0x26);
- { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffff);
- { uint128_t x34 = (x32 + x26);
- { uint64_t x35 = (uint64_t) (x34 >> 0x26);
- { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffff);
- { uint128_t x37 = (x35 + x25);
- { uint64_t x38 = (uint64_t) (x37 >> 0x26);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffff);
- { uint128_t x40 = (x38 + x24);
- { uint64_t x41 = (uint64_t) (x40 >> 0x26);
- { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffff);
- { uint128_t x43 = (x41 + x23);
- { uint64_t x44 = (uint64_t) (x43 >> 0x27);
- { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffff);
- { uint128_t x46 = (x44 + x22);
- { uint64_t x47 = (uint64_t) (x46 >> 0x26);
- { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffff);
- { uint128_t x49 = (x47 + x21);
- { uint64_t x50 = (uint64_t) (x49 >> 0x26);
- { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffff);
- { uint128_t x52 = (x50 + x20);
- { uint64_t x53 = (uint64_t) (x52 >> 0x26);
- { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffff);
- { uint128_t x55 = (x53 + x19);
- { uint64_t x56 = (uint64_t) (x55 >> 0x26);
- { uint64_t x57 = ((uint64_t)x55 & 0x3fffffffff);
- { uint64_t x58 = (x30 + (0x69 * x56));
- { uint64_t x59 = (x58 >> 0x27);
- { uint64_t x60 = (x58 & 0x7fffffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x26);
- { uint64_t x63 = (x61 & 0x3fffffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e382m105/fesquare.v b/src/Specific/solinas64_2e382m105/fesquare.v
deleted file mode 100644
index 0c7767474..000000000
--- a/src/Specific/solinas64_2e382m105/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e382m105/fesquareDisplay.log b/src/Specific/solinas64_2e382m105/fesquareDisplay.log
deleted file mode 100644
index 1a6bcabd9..000000000
--- a/src/Specific/solinas64_2e382m105/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x69 * ((uint128_t)x17 * x17)));
- uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x69 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x69 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x69 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
- uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x69 * (((uint128_t)x12 * x17) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + ((uint128_t)x17 * x12)))))));
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x69 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x69 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x69 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- uint128_t x28 = (((uint128_t)x2 * x2) + (0x69 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- uint64_t x29 = (uint64_t) (x28 >> 0x27);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffff);
- uint128_t x31 = (x29 + x27);
- uint64_t x32 = (uint64_t) (x31 >> 0x26);
- uint64_t x33 = ((uint64_t)x31 & 0x3fffffffff);
- uint128_t x34 = (x32 + x26);
- uint64_t x35 = (uint64_t) (x34 >> 0x26);
- uint64_t x36 = ((uint64_t)x34 & 0x3fffffffff);
- uint128_t x37 = (x35 + x25);
- uint64_t x38 = (uint64_t) (x37 >> 0x26);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffff);
- uint128_t x40 = (x38 + x24);
- uint64_t x41 = (uint64_t) (x40 >> 0x26);
- uint64_t x42 = ((uint64_t)x40 & 0x3fffffffff);
- uint128_t x43 = (x41 + x23);
- uint64_t x44 = (uint64_t) (x43 >> 0x27);
- uint64_t x45 = ((uint64_t)x43 & 0x7fffffffff);
- uint128_t x46 = (x44 + x22);
- uint64_t x47 = (uint64_t) (x46 >> 0x26);
- uint64_t x48 = ((uint64_t)x46 & 0x3fffffffff);
- uint128_t x49 = (x47 + x21);
- uint64_t x50 = (uint64_t) (x49 >> 0x26);
- uint64_t x51 = ((uint64_t)x49 & 0x3fffffffff);
- uint128_t x52 = (x50 + x20);
- uint64_t x53 = (uint64_t) (x52 >> 0x26);
- uint64_t x54 = ((uint64_t)x52 & 0x3fffffffff);
- uint128_t x55 = (x53 + x19);
- uint64_t x56 = (uint64_t) (x55 >> 0x26);
- uint64_t x57 = ((uint64_t)x55 & 0x3fffffffff);
- uint64_t x58 = (x30 + (0x69 * x56));
- uint64_t x59 = (x58 >> 0x27);
- uint64_t x60 = (x58 & 0x7fffffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x26);
- uint64_t x63 = (x61 & 0x3fffffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105/fesquareDisplay.v b/src/Specific/solinas64_2e382m105/fesquareDisplay.v
deleted file mode 100644
index 363312d3a..000000000
--- a/src/Specific/solinas64_2e382m105/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e382m105.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e382m105/fesub.c b/src/Specific/solinas64_2e382m105/fesub.c
deleted file mode 100644
index 6716f8a9a..000000000
--- a/src/Specific/solinas64_2e382m105/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0xffffffff2e + x5) - x23);
- out[1] = ((0x7ffffffffe + x7) - x25);
- out[2] = ((0x7ffffffffe + x9) - x27);
- out[3] = ((0x7ffffffffe + x11) - x29);
- out[4] = ((0x7ffffffffe + x13) - x31);
- out[5] = ((0xfffffffffe + x15) - x33);
- out[6] = ((0x7ffffffffe + x17) - x35);
- out[7] = ((0x7ffffffffe + x19) - x37);
- out[8] = ((0x7ffffffffe + x21) - x39);
- out[9] = ((0x7ffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e382m105/fesub.v b/src/Specific/solinas64_2e382m105/fesub.v
deleted file mode 100644
index 2874edc0b..000000000
--- a/src/Specific/solinas64_2e382m105/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e382m105/fesubDisplay.log b/src/Specific/solinas64_2e382m105/fesubDisplay.log
deleted file mode 100644
index afaf245f9..000000000
--- a/src/Specific/solinas64_2e382m105/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x7ffffffffe + x20) - x38), ((0x7ffffffffe + x21) - x39), ((0x7ffffffffe + x19) - x37), ((0x7ffffffffe + x17) - x35), ((0xfffffffffe + x15) - x33), ((0x7ffffffffe + x13) - x31), ((0x7ffffffffe + x11) - x29), ((0x7ffffffffe + x9) - x27), ((0x7ffffffffe + x7) - x25), ((0xffffffff2e + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105/fesubDisplay.v b/src/Specific/solinas64_2e382m105/fesubDisplay.v
deleted file mode 100644
index 7d62744f8..000000000
--- a/src/Specific/solinas64_2e382m105/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e382m105.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e382m105/freeze.c b/src/Specific/solinas64_2e382m105/freeze.c
deleted file mode 100644
index ef05f2f5a..000000000
--- a/src/Specific/solinas64_2e382m105/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffff97);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffffffff);
- { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffffffff);
- { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffffffff);
- { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffffffff);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0x7fffffff97);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0x3fffffffff);
- { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint64_t x58 = (x49 & 0x3fffffffff);
- { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint64_t x62 = (x49 & 0x3fffffffff);
- { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint64_t x66 = (x49 & 0x3fffffffff);
- { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint64_t x70 = (x49 & 0x7fffffffff);
- { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint64_t x74 = (x49 & 0x3fffffffff);
- { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint64_t x78 = (x49 & 0x3fffffffff);
- { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint64_t x82 = (x49 & 0x3fffffffff);
- { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint64_t x86 = (x49 & 0x3fffffffff);
- { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e382m105/freeze.v b/src/Specific/solinas64_2e382m105/freeze.v
deleted file mode 100644
index f3e53ea57..000000000
--- a/src/Specific/solinas64_2e382m105/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e382m105.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e382m105/freezeDisplay.log b/src/Specific/solinas64_2e382m105/freezeDisplay.log
deleted file mode 100644
index 7c9373d9c..000000000
--- a/src/Specific/solinas64_2e382m105/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffff97);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0x3fffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0x3fffffffff);
- uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0x3fffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0x3fffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0x7fffffffff);
- uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0x3fffffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0x3fffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0x3fffffffff);
- uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0x3fffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0x7fffffff97);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0x3fffffffff);
- uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint64_t x58 = (x49 & 0x3fffffffff);
- uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint64_t x62 = (x49 & 0x3fffffffff);
- uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint64_t x66 = (x49 & 0x3fffffffff);
- uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint64_t x70 = (x49 & 0x7fffffffff);
- uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint64_t x74 = (x49 & 0x3fffffffff);
- uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint64_t x78 = (x49 & 0x3fffffffff);
- uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint64_t x82 = (x49 & 0x3fffffffff);
- uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint64_t x86 = (x49 & 0x3fffffffff);
- uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e382m105/freezeDisplay.v b/src/Specific/solinas64_2e382m105/freezeDisplay.v
deleted file mode 100644
index 5a37b74f5..000000000
--- a/src/Specific/solinas64_2e382m105/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e382m105.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e382m105/py_interpreter.sh b/src/Specific/solinas64_2e382m105/py_interpreter.sh
deleted file mode 100755
index 762b01e2d..000000000
--- a/src/Specific/solinas64_2e382m105/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='38.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e382m105_7limbs/CurveParameters.v b/src/Specific/solinas64_2e382m105_7limbs/CurveParameters.v
new file mode 100644
index 000000000..3950c97b9
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^382 - 105
+Base: 54 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 54 + 4/7;
+ bitwidth := 64;
+ s := 2^382;
+ c := [(1, 105)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/Synthesis.v b/src/Specific/solinas64_2e382m105_7limbs/Synthesis.v
new file mode 100644
index 000000000..da24a3a1c
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/compiler.sh b/src/Specific/solinas64_2e382m105_7limbs/compiler.sh
new file mode 100755
index 000000000..5e59a8b54
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,54,55,54,55,54}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105_7limbs/compilerxx.sh b/src/Specific/solinas64_2e382m105_7limbs/compilerxx.sh
new file mode 100755
index 000000000..6df3552cf
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,54,55,54,55,54}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105_7limbs/feadd.v b/src/Specific/solinas64_2e382m105_7limbs/feadd.v
new file mode 100644
index 000000000..6eaa6a8df
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e382m105_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..b27bd7055
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/femul.v b/src/Specific/solinas64_2e382m105_7limbs/femul.v
new file mode 100644
index 000000000..0242cb12b
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/femulDisplay.v b/src/Specific/solinas64_2e382m105_7limbs/femulDisplay.v
new file mode 100644
index 000000000..418306f4c
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesquare.v b/src/Specific/solinas64_2e382m105_7limbs/fesquare.v
new file mode 100644
index 000000000..5634dae7c
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e382m105_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..bb48e85bd
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesub.v b/src/Specific/solinas64_2e382m105_7limbs/fesub.v
new file mode 100644
index 000000000..1290cc03d
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..2b04dc7aa
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/freeze.v b/src/Specific/solinas64_2e382m105_7limbs/freeze.v
new file mode 100644
index 000000000..da10aea0d
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..d11092580
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e382m105_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e382m105_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..5ffe26225
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='54 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e382m105_8limbs/CurveParameters.v b/src/Specific/solinas64_2e382m105_8limbs/CurveParameters.v
new file mode 100644
index 000000000..4064c34f0
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^382 - 105
+Base: 47.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 47 + 3/4;
+ bitwidth := 64;
+ s := 2^382;
+ c := [(1, 105)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/Synthesis.v b/src/Specific/solinas64_2e382m105_8limbs/Synthesis.v
new file mode 100644
index 000000000..79ea7b524
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/compiler.sh b/src/Specific/solinas64_2e382m105_8limbs/compiler.sh
new file mode 100755
index 000000000..bf6c3997e
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47,48,48,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105_8limbs/compilerxx.sh b/src/Specific/solinas64_2e382m105_8limbs/compilerxx.sh
new file mode 100755
index 000000000..988edccd1
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,47,48,48,48,47}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<382) - 105' "$@"
diff --git a/src/Specific/solinas64_2e382m105_8limbs/feadd.v b/src/Specific/solinas64_2e382m105_8limbs/feadd.v
new file mode 100644
index 000000000..5d53d93ae
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e382m105_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..eda67cc68
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/femul.v b/src/Specific/solinas64_2e382m105_8limbs/femul.v
new file mode 100644
index 000000000..3fb97b283
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/femulDisplay.v b/src/Specific/solinas64_2e382m105_8limbs/femulDisplay.v
new file mode 100644
index 000000000..d0f93d830
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesquare.v b/src/Specific/solinas64_2e382m105_8limbs/fesquare.v
new file mode 100644
index 000000000..34c319658
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e382m105_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f2ee41da1
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesub.v b/src/Specific/solinas64_2e382m105_8limbs/fesub.v
new file mode 100644
index 000000000..a10d39c14
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..cb54fb183
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/freeze.v b/src/Specific/solinas64_2e382m105_8limbs/freeze.v
new file mode 100644
index 000000000..d3ee99e38
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..d6126d342
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e382m105_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e382m105_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e382m105_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..d7996d642
--- /dev/null
+++ b/src/Specific/solinas64_2e382m105_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**382 - 105' -Dmodulus_bytes='47.75' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m187_7limbs/CurveParameters.v b/src/Specific/solinas64_2e383m187_7limbs/CurveParameters.v
new file mode 100644
index 000000000..ed10bccfc
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 187
+Base: 54 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 54 + 5/7;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/Synthesis.v b/src/Specific/solinas64_2e383m187_7limbs/Synthesis.v
new file mode 100644
index 000000000..9bfb8bf7f
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/compiler.sh b/src/Specific/solinas64_2e383m187_7limbs/compiler.sh
new file mode 100755
index 000000000..f7fd65777
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas64_2e383m187_7limbs/compilerxx.sh b/src/Specific/solinas64_2e383m187_7limbs/compilerxx.sh
new file mode 100755
index 000000000..aa8557652
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas64_2e383m187_7limbs/feadd.v b/src/Specific/solinas64_2e383m187_7limbs/feadd.v
new file mode 100644
index 000000000..9126c3f76
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m187_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..33a1eee95
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/femul.v b/src/Specific/solinas64_2e383m187_7limbs/femul.v
new file mode 100644
index 000000000..b3f09b3d2
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/femulDisplay.v b/src/Specific/solinas64_2e383m187_7limbs/femulDisplay.v
new file mode 100644
index 000000000..9526ffb86
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesquare.v b/src/Specific/solinas64_2e383m187_7limbs/fesquare.v
new file mode 100644
index 000000000..f93cdfc8f
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m187_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6af4ae910
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesub.v b/src/Specific/solinas64_2e383m187_7limbs/fesub.v
new file mode 100644
index 000000000..aece35a2a
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..e0a75b471
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/freeze.v b/src/Specific/solinas64_2e383m187_7limbs/freeze.v
new file mode 100644
index 000000000..be7977ef4
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..9a8ce3901
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m187_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m187_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..49c917f75
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 187' -Dmodulus_bytes='54 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m187_8limbs/CurveParameters.v b/src/Specific/solinas64_2e383m187_8limbs/CurveParameters.v
new file mode 100644
index 000000000..4da41aae4
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 187
+Base: 47.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 47 + 7/8;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/Synthesis.v b/src/Specific/solinas64_2e383m187_8limbs/Synthesis.v
new file mode 100644
index 000000000..0388bc28d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/compiler.sh b/src/Specific/solinas64_2e383m187_8limbs/compiler.sh
new file mode 100755
index 000000000..a39e493e5
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas64_2e383m187_8limbs/compilerxx.sh b/src/Specific/solinas64_2e383m187_8limbs/compilerxx.sh
new file mode 100755
index 000000000..6a9d28e75
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 187' "$@"
diff --git a/src/Specific/solinas64_2e383m187_8limbs/feadd.v b/src/Specific/solinas64_2e383m187_8limbs/feadd.v
new file mode 100644
index 000000000..40b19f0a0
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m187_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..1363a2e32
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/femul.v b/src/Specific/solinas64_2e383m187_8limbs/femul.v
new file mode 100644
index 000000000..606d9b137
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/femulDisplay.v b/src/Specific/solinas64_2e383m187_8limbs/femulDisplay.v
new file mode 100644
index 000000000..26cbc0d14
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesquare.v b/src/Specific/solinas64_2e383m187_8limbs/fesquare.v
new file mode 100644
index 000000000..745a8a49d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m187_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3753eadf4
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesub.v b/src/Specific/solinas64_2e383m187_8limbs/fesub.v
new file mode 100644
index 000000000..cb5edd9de
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..a68c5f2a0
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/freeze.v b/src/Specific/solinas64_2e383m187_8limbs/freeze.v
new file mode 100644
index 000000000..c821e0af9
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..8a7f722eb
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m187_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m187_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m187_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..1de42f7c0
--- /dev/null
+++ b/src/Specific/solinas64_2e383m187_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 187' -Dmodulus_bytes='47.875' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m31_7limbs/CurveParameters.v b/src/Specific/solinas64_2e383m31_7limbs/CurveParameters.v
new file mode 100644
index 000000000..13e2d3521
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 31
+Base: 54 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 54 + 5/7;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/Synthesis.v b/src/Specific/solinas64_2e383m31_7limbs/Synthesis.v
new file mode 100644
index 000000000..0a677b269
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/compiler.sh b/src/Specific/solinas64_2e383m31_7limbs/compiler.sh
new file mode 100755
index 000000000..e7feb3c1d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas64_2e383m31_7limbs/compilerxx.sh b/src/Specific/solinas64_2e383m31_7limbs/compilerxx.sh
new file mode 100755
index 000000000..be9fcfba4
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas64_2e383m31_7limbs/feadd.v b/src/Specific/solinas64_2e383m31_7limbs/feadd.v
new file mode 100644
index 000000000..71c17a987
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m31_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..811360d90
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/femul.v b/src/Specific/solinas64_2e383m31_7limbs/femul.v
new file mode 100644
index 000000000..1263eccbf
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/femulDisplay.v b/src/Specific/solinas64_2e383m31_7limbs/femulDisplay.v
new file mode 100644
index 000000000..448f19ae0
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/fesquare.v b/src/Specific/solinas64_2e383m31_7limbs/fesquare.v
new file mode 100644
index 000000000..9c368dcf3
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m31_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..af63f8a8c
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/fesub.v b/src/Specific/solinas64_2e383m31_7limbs/fesub.v
new file mode 100644
index 000000000..d9052eea3
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m31_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..20646ab70
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/freeze.v b/src/Specific/solinas64_2e383m31_7limbs/freeze.v
new file mode 100644
index 000000000..cdb82b5f3
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m31_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..ebafce527
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m31_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m31_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..70d2eeadd
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 31' -Dmodulus_bytes='54 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m31_8limbs/CurveParameters.v b/src/Specific/solinas64_2e383m31_8limbs/CurveParameters.v
new file mode 100644
index 000000000..f60ab95d7
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 31
+Base: 47.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 47 + 7/8;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/Synthesis.v b/src/Specific/solinas64_2e383m31_8limbs/Synthesis.v
new file mode 100644
index 000000000..c9d873339
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/compiler.sh b/src/Specific/solinas64_2e383m31_8limbs/compiler.sh
new file mode 100755
index 000000000..0906ec842
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas64_2e383m31_8limbs/compilerxx.sh b/src/Specific/solinas64_2e383m31_8limbs/compilerxx.sh
new file mode 100755
index 000000000..d32f1f355
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 31' "$@"
diff --git a/src/Specific/solinas64_2e383m31_8limbs/feadd.v b/src/Specific/solinas64_2e383m31_8limbs/feadd.v
new file mode 100644
index 000000000..ef4498016
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m31_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..ebe068960
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/femul.v b/src/Specific/solinas64_2e383m31_8limbs/femul.v
new file mode 100644
index 000000000..08556a8ab
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/femulDisplay.v b/src/Specific/solinas64_2e383m31_8limbs/femulDisplay.v
new file mode 100644
index 000000000..8dc03935b
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesquare.v b/src/Specific/solinas64_2e383m31_8limbs/fesquare.v
new file mode 100644
index 000000000..85b2fa0f2
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m31_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4c435d694
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesub.v b/src/Specific/solinas64_2e383m31_8limbs/fesub.v
new file mode 100644
index 000000000..7c560bef9
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..acab0f004
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/freeze.v b/src/Specific/solinas64_2e383m31_8limbs/freeze.v
new file mode 100644
index 000000000..db8f97b6c
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..441f208fa
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m31_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m31_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m31_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..184caee1d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m31_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 31' -Dmodulus_bytes='47.875' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m421_7limbs/CurveParameters.v b/src/Specific/solinas64_2e383m421_7limbs/CurveParameters.v
new file mode 100644
index 000000000..5698b6f1b
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 421
+Base: 54 + 5/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 54 + 5/7;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 421)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/Synthesis.v b/src/Specific/solinas64_2e383m421_7limbs/Synthesis.v
new file mode 100644
index 000000000..788b2784a
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/compiler.sh b/src/Specific/solinas64_2e383m421_7limbs/compiler.sh
new file mode 100755
index 000000000..6c75e4ea8
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas64_2e383m421_7limbs/compilerxx.sh b/src/Specific/solinas64_2e383m421_7limbs/compilerxx.sh
new file mode 100755
index 000000000..38d8c415d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,54,55,55,54}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas64_2e383m421_7limbs/feadd.v b/src/Specific/solinas64_2e383m421_7limbs/feadd.v
new file mode 100644
index 000000000..2414a06f4
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m421_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..e260162af
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/femul.v b/src/Specific/solinas64_2e383m421_7limbs/femul.v
new file mode 100644
index 000000000..c87e6a216
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.v b/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.v
new file mode 100644
index 000000000..32b4678fa
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesquare.v b/src/Specific/solinas64_2e383m421_7limbs/fesquare.v
new file mode 100644
index 000000000..26be7d209
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..11f071682
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesub.v b/src/Specific/solinas64_2e383m421_7limbs/fesub.v
new file mode 100644
index 000000000..f0a652f4e
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..ebbf7d69d
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/freeze.v b/src/Specific/solinas64_2e383m421_7limbs/freeze.v
new file mode 100644
index 000000000..da69a6c67
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..93c8f12a5
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m421_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m421_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..ad63014d1
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 421' -Dmodulus_bytes='54 + 5/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e383m421_8limbs/CurveParameters.v b/src/Specific/solinas64_2e383m421_8limbs/CurveParameters.v
new file mode 100644
index 000000000..741a93431
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^383 - 421
+Base: 47.875
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 47 + 7/8;
+ bitwidth := 64;
+ s := 2^383;
+ c := [(1, 421)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/Synthesis.v b/src/Specific/solinas64_2e383m421_8limbs/Synthesis.v
new file mode 100644
index 000000000..7f6603bad
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/compiler.sh b/src/Specific/solinas64_2e383m421_8limbs/compiler.sh
new file mode 100755
index 000000000..3e6458e76
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas64_2e383m421_8limbs/compilerxx.sh b/src/Specific/solinas64_2e383m421_8limbs/compilerxx.sh
new file mode 100755
index 000000000..8d47b2e5e
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,47}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x5b}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<383) - 421' "$@"
diff --git a/src/Specific/solinas64_2e383m421_8limbs/feadd.v b/src/Specific/solinas64_2e383m421_8limbs/feadd.v
new file mode 100644
index 000000000..09fc93d80
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e383m421_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..e1c1bcb24
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/femul.v b/src/Specific/solinas64_2e383m421_8limbs/femul.v
new file mode 100644
index 000000000..a7931cd90
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.v b/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.v
new file mode 100644
index 000000000..8dfa66a40
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesquare.v b/src/Specific/solinas64_2e383m421_8limbs/fesquare.v
new file mode 100644
index 000000000..0d0ab2797
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..86b0c77e9
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesub.v b/src/Specific/solinas64_2e383m421_8limbs/fesub.v
new file mode 100644
index 000000000..4150c2898
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..e88f24693
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/freeze.v b/src/Specific/solinas64_2e383m421_8limbs/freeze.v
new file mode 100644
index 000000000..0d47e43f3
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..80b076dc3
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e383m421_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e383m421_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e383m421_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..c511faa73
--- /dev/null
+++ b/src/Specific/solinas64_2e383m421_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**383 - 421' -Dmodulus_bytes='47.875' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v
deleted file mode 100644
index d32f419fd..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
-Base: 48
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 48;
- bitwidth := 64;
- s := 2^384;
- c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
- carry_chains := Some [[1; 1; 7; 7]; [2; 0; 3; 1; 4; 5; 6; 7]; [2; 2; 0; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v
deleted file mode 100644
index 3a26cd0a2..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh
deleted file mode 100755
index 85a03ccd9..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compilerxx.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compilerxx.sh
deleted file mode 100755
index acfa268ba..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.c b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.v
deleted file mode 100644
index 198aadfb7..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.log b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.v
deleted file mode 100644
index 2b58185e8..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v
deleted file mode 100644
index 390bb085d..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v
deleted file mode 100644
index d4e6ec27b..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v
deleted file mode 100644
index 63a5c7b39..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v
deleted file mode 100644
index 513458e7b..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesub.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesub.v
deleted file mode 100644
index 36f1dadee..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesubDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesubDisplay.v
deleted file mode 100644
index 4da939d6b..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.c b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.c
deleted file mode 100644
index dc50d30d8..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.c
+++ /dev/null
@@ -1,43 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, ℤ x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0xffffffff);
- { uint64_t x19, ℤ x20 = Op (Syntax.SubWithGetBorrow 48 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x17, Return x4, 0x0);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffeffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, 0x0);
- { uint64_t x47 = (x39 & 0xfffeffffffff);
- { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x22, Return x47);
- { uint64_t x51 = (x39 & 0xffffffffffff);
- { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x25, Return x51);
- { uint64_t x55 = (x39 & 0xffffffffffff);
- { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x28, Return x55);
- { uint64_t x59 = (x39 & 0xffffffffffff);
- { uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x31, Return x59);
- { uint64_t x63 = (x39 & 0xffffffffffff);
- { uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x34, Return x63);
- { uint64_t x67 = (x39 & 0xffffffffffff);
- { uint64_t x69, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x37, Return x67);
- out[0] = x42;
- out[1] = x45;
- out[2] = x49;
- out[3] = x53;
- out[4] = x57;
- out[5] = x61;
- out[6] = x65;
- out[7] = x69;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v
deleted file mode 100644
index 6c492eb1b..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.log b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.log
deleted file mode 100644
index c67300686..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.log
+++ /dev/null
@@ -1,31 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, ℤ x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0xffffffff);
- uint64_t x19, ℤ x20 = Op (Syntax.SubWithGetBorrow 48 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x17, Return x4, 0x0);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffeffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, 0x0);
- uint64_t x47 = (x39 & 0xfffeffffffff);
- uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x22, Return x47);
- uint64_t x51 = (x39 & 0xffffffffffff);
- uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x25, Return x51);
- uint64_t x55 = (x39 & 0xffffffffffff);
- uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x28, Return x55);
- uint64_t x59 = (x39 & 0xffffffffffff);
- uint64_t x61, uint8_t x62 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x31, Return x59);
- uint64_t x63 = (x39 & 0xffffffffffff);
- uint64_t x65, uint8_t x66 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x62, Return x34, Return x63);
- uint64_t x67 = (x39 & 0xffffffffffff);
- uint64_t x69, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x37, Return x67);
- (Return x69, Return x65, Return x61, Return x57, Return x53, Return x49, Return x45, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v
deleted file mode 100644
index 5ff2ae298..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/py_interpreter.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/py_interpreter.sh
deleted file mode 100755
index 137b7cc48..000000000
--- a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/CurveParameters.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..26e99e21e
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
+Base: 38.4
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 38 + 2/5;
+ bitwidth := 64;
+ s := 2^384;
+ c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
+ carry_chains := Some [[2; 1; 9; 9]; [3; 2; 0; 4; 1; 5; 6; 7; 8; 9]; [3; 2; 0; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/Synthesis.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..ec5a624b5
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compiler.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compiler.sh
new file mode 100755
index 000000000..0c75c8376
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38,39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compilerxx.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..7565a6cf8
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{39,38,39,38,38,39,38,39,38,38}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feadd.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feadd.v
new file mode 100644
index 000000000..0f756700d
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..62054f4dd
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femul.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femul.v
new file mode 100644
index 000000000..d4e32c795
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femulDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..720bf4d90
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquare.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquare.v
new file mode 100644
index 000000000..a6d4de3c4
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f5553f5ba
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesub.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesub.v
new file mode 100644
index 000000000..0c12ddf2b
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..f0e1a7c6e
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freeze.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freeze.v
new file mode 100644
index 000000000..6f7aaccfa
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..d91d85aac
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..c454b518c
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='38.4' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/CurveParameters.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/CurveParameters.v
new file mode 100644
index 000000000..9e20d5e3d
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 2^128 - 2^96 + 2^32 - 1
+Base: 42 + 2/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 42 + 2/3;
+ bitwidth := 64;
+ s := 2^384;
+ c := [(1, 1); (2^32, -1); (2^96, 1); (2^128, 1)];
+ carry_chains := Some [[2; 1; 8; 8]; [3; 2; 0; 4; 1; 5; 6; 7; 8]; [3; 2; 0; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/Synthesis.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/Synthesis.v
new file mode 100644
index 000000000..f9f63c9d2
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compiler.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compiler.sh
new file mode 100755
index 000000000..c7efa4bd4
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compilerxx.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compilerxx.sh
new file mode 100755
index 000000000..ed6f8dc7a
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{43,43,42,43,43,42,43,43,42}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<384) - (1_mpz<<128) - (1_mpz<<96) + (1_mpz<<32) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feadd.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feadd.v
new file mode 100644
index 000000000..0668550fa
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..560180261
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femul.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femul.v
new file mode 100644
index 000000000..a6332407f
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femulDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femulDisplay.v
new file mode 100644
index 000000000..ea88f51b7
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquare.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquare.v
new file mode 100644
index 000000000..a2bef86b9
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8044d295d
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesub.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesub.v
new file mode 100644
index 000000000..c20247e45
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..5d367897f
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freeze.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freeze.v
new file mode 100644
index 000000000..fc919578f
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..cc2807a51
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m2e128m2e96p2e32m1_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..2ce0c8e92
--- /dev/null
+++ b/src/Specific/solinas64_2e384m2e128m2e96p2e32m1_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 2**128 - 2**96 + 2**32 - 1' -Dmodulus_bytes='42 + 2/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m317/Synthesis.v b/src/Specific/solinas64_2e384m317/Synthesis.v
deleted file mode 100644
index 729b085cc..000000000
--- a/src/Specific/solinas64_2e384m317/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e384m317.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m317/feadd.c b/src/Specific/solinas64_2e384m317/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e384m317/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m317/feadd.v b/src/Specific/solinas64_2e384m317/feadd.v
deleted file mode 100644
index 17de7483c..000000000
--- a/src/Specific/solinas64_2e384m317/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m317/feaddDisplay.log b/src/Specific/solinas64_2e384m317/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e384m317/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317/feaddDisplay.v b/src/Specific/solinas64_2e384m317/feaddDisplay.v
deleted file mode 100644
index a8749988e..000000000
--- a/src/Specific/solinas64_2e384m317/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m317.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e384m317/femul.c b/src/Specific/solinas64_2e384m317/femul.c
deleted file mode 100644
index a28b9a126..000000000
--- a/src/Specific/solinas64_2e384m317/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (0x13d * ((uint128_t)x16 * x30)));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x13d * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (0x13d * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x13d * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (0x13d * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x13d * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x13d * (((uint128_t)x7 * x30) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x16 * x21)))))))));
- { uint64_t x40 = (uint64_t) (x39 >> 0x30);
- { uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint64_t x43 = (uint64_t) (x42 >> 0x30);
- { uint64_t x44 = ((uint64_t)x42 & 0xffffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint64_t x46 = (uint64_t) (x45 >> 0x30);
- { uint64_t x47 = ((uint64_t)x45 & 0xffffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint64_t x49 = (uint64_t) (x48 >> 0x30);
- { uint64_t x50 = ((uint64_t)x48 & 0xffffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint64_t x52 = (uint64_t) (x51 >> 0x30);
- { uint64_t x53 = ((uint64_t)x51 & 0xffffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint64_t x55 = (uint64_t) (x54 >> 0x30);
- { uint64_t x56 = ((uint64_t)x54 & 0xffffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint64_t x58 = (uint64_t) (x57 >> 0x30);
- { uint64_t x59 = ((uint64_t)x57 & 0xffffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint64_t x61 = (uint64_t) (x60 >> 0x30);
- { uint64_t x62 = ((uint64_t)x60 & 0xffffffffffff);
- { uint64_t x63 = (x41 + (0x13d * x61));
- { uint64_t x64 = (x63 >> 0x30);
- { uint64_t x65 = (x63 & 0xffffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x30);
- { uint64_t x68 = (x66 & 0xffffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m317/femul.v b/src/Specific/solinas64_2e384m317/femul.v
deleted file mode 100644
index dfaa5d2e0..000000000
--- a/src/Specific/solinas64_2e384m317/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m317/femulDisplay.log b/src/Specific/solinas64_2e384m317/femulDisplay.log
deleted file mode 100644
index a9357bb1e..000000000
--- a/src/Specific/solinas64_2e384m317/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x17 * x19))))))) + (0x13d * ((uint128_t)x16 * x30)));
- uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x13d * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + ((uint128_t)x13 * x19))))) + (0x13d * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x13d * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (0x13d * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x13d * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x13d * (((uint128_t)x7 * x30) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x16 * x21)))))))));
- uint64_t x40 = (uint64_t) (x39 >> 0x30);
- uint64_t x41 = ((uint64_t)x39 & 0xffffffffffff);
- uint128_t x42 = (x40 + x38);
- uint64_t x43 = (uint64_t) (x42 >> 0x30);
- uint64_t x44 = ((uint64_t)x42 & 0xffffffffffff);
- uint128_t x45 = (x43 + x37);
- uint64_t x46 = (uint64_t) (x45 >> 0x30);
- uint64_t x47 = ((uint64_t)x45 & 0xffffffffffff);
- uint128_t x48 = (x46 + x36);
- uint64_t x49 = (uint64_t) (x48 >> 0x30);
- uint64_t x50 = ((uint64_t)x48 & 0xffffffffffff);
- uint128_t x51 = (x49 + x35);
- uint64_t x52 = (uint64_t) (x51 >> 0x30);
- uint64_t x53 = ((uint64_t)x51 & 0xffffffffffff);
- uint128_t x54 = (x52 + x34);
- uint64_t x55 = (uint64_t) (x54 >> 0x30);
- uint64_t x56 = ((uint64_t)x54 & 0xffffffffffff);
- uint128_t x57 = (x55 + x33);
- uint64_t x58 = (uint64_t) (x57 >> 0x30);
- uint64_t x59 = ((uint64_t)x57 & 0xffffffffffff);
- uint128_t x60 = (x58 + x32);
- uint64_t x61 = (uint64_t) (x60 >> 0x30);
- uint64_t x62 = ((uint64_t)x60 & 0xffffffffffff);
- uint64_t x63 = (x41 + (0x13d * x61));
- uint64_t x64 = (x63 >> 0x30);
- uint64_t x65 = (x63 & 0xffffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x30);
- uint64_t x68 = (x66 & 0xffffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317/femulDisplay.v b/src/Specific/solinas64_2e384m317/femulDisplay.v
deleted file mode 100644
index 77ffb589d..000000000
--- a/src/Specific/solinas64_2e384m317/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m317.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e384m317/fesquare.c b/src/Specific/solinas64_2e384m317/fesquare.c
deleted file mode 100644
index 87644b008..000000000
--- a/src/Specific/solinas64_2e384m317/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x13d * ((uint128_t)x13 * x13)));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x13d * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x13d * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13d * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x13d * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13d * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x13d * (((uint128_t)x4 * x13) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + ((uint128_t)x13 * x4)))))))));
- { uint64_t x23 = (uint64_t) (x22 >> 0x30);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint64_t x26 = (uint64_t) (x25 >> 0x30);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint64_t x29 = (uint64_t) (x28 >> 0x30);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint64_t x32 = (uint64_t) (x31 >> 0x30);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint64_t x35 = (uint64_t) (x34 >> 0x30);
- { uint64_t x36 = ((uint64_t)x34 & 0xffffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint64_t x38 = (uint64_t) (x37 >> 0x30);
- { uint64_t x39 = ((uint64_t)x37 & 0xffffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint64_t x41 = (uint64_t) (x40 >> 0x30);
- { uint64_t x42 = ((uint64_t)x40 & 0xffffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint64_t x44 = (uint64_t) (x43 >> 0x30);
- { uint64_t x45 = ((uint64_t)x43 & 0xffffffffffff);
- { uint64_t x46 = (x24 + (0x13d * x44));
- { uint64_t x47 = (x46 >> 0x30);
- { uint64_t x48 = (x46 & 0xffffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x30);
- { uint64_t x51 = (x49 & 0xffffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m317/fesquare.v b/src/Specific/solinas64_2e384m317/fesquare.v
deleted file mode 100644
index 0a21797c0..000000000
--- a/src/Specific/solinas64_2e384m317/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m317/fesquareDisplay.log b/src/Specific/solinas64_2e384m317/fesquareDisplay.log
deleted file mode 100644
index 25c7fd4d2..000000000
--- a/src/Specific/solinas64_2e384m317/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x13d * ((uint128_t)x13 * x13)));
- uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x13d * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x13d * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13d * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x13d * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13d * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x13d * (((uint128_t)x4 * x13) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + ((uint128_t)x13 * x4)))))))));
- uint64_t x23 = (uint64_t) (x22 >> 0x30);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
- uint128_t x25 = (x23 + x21);
- uint64_t x26 = (uint64_t) (x25 >> 0x30);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
- uint128_t x28 = (x26 + x20);
- uint64_t x29 = (uint64_t) (x28 >> 0x30);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
- uint128_t x31 = (x29 + x19);
- uint64_t x32 = (uint64_t) (x31 >> 0x30);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff);
- uint128_t x34 = (x32 + x18);
- uint64_t x35 = (uint64_t) (x34 >> 0x30);
- uint64_t x36 = ((uint64_t)x34 & 0xffffffffffff);
- uint128_t x37 = (x35 + x17);
- uint64_t x38 = (uint64_t) (x37 >> 0x30);
- uint64_t x39 = ((uint64_t)x37 & 0xffffffffffff);
- uint128_t x40 = (x38 + x16);
- uint64_t x41 = (uint64_t) (x40 >> 0x30);
- uint64_t x42 = ((uint64_t)x40 & 0xffffffffffff);
- uint128_t x43 = (x41 + x15);
- uint64_t x44 = (uint64_t) (x43 >> 0x30);
- uint64_t x45 = ((uint64_t)x43 & 0xffffffffffff);
- uint64_t x46 = (x24 + (0x13d * x44));
- uint64_t x47 = (x46 >> 0x30);
- uint64_t x48 = (x46 & 0xffffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x30);
- uint64_t x51 = (x49 & 0xffffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317/fesquareDisplay.v b/src/Specific/solinas64_2e384m317/fesquareDisplay.v
deleted file mode 100644
index 1cdcdb913..000000000
--- a/src/Specific/solinas64_2e384m317/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m317.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e384m317/fesub.c b/src/Specific/solinas64_2e384m317/fesub.c
deleted file mode 100644
index f924ee599..000000000
--- a/src/Specific/solinas64_2e384m317/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1fffffffffd86 + x5) - x19);
- out[1] = ((0x1fffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffe + x11) - x25);
- out[4] = ((0x1fffffffffffe + x13) - x27);
- out[5] = ((0x1fffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffe + x17) - x31);
- out[7] = ((0x1fffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m317/fesub.v b/src/Specific/solinas64_2e384m317/fesub.v
deleted file mode 100644
index 5f04add1e..000000000
--- a/src/Specific/solinas64_2e384m317/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m317/fesubDisplay.log b/src/Specific/solinas64_2e384m317/fesubDisplay.log
deleted file mode 100644
index 61c5edf9e..000000000
--- a/src/Specific/solinas64_2e384m317/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1fffffffffd86 + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317/fesubDisplay.v b/src/Specific/solinas64_2e384m317/fesubDisplay.v
deleted file mode 100644
index 5b7e0bd5f..000000000
--- a/src/Specific/solinas64_2e384m317/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m317.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e384m317/freeze.c b/src/Specific/solinas64_2e384m317/freeze.c
deleted file mode 100644
index c037a517a..000000000
--- a/src/Specific/solinas64_2e384m317/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffec3);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xfffffffffec3);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m317/freeze.v b/src/Specific/solinas64_2e384m317/freeze.v
deleted file mode 100644
index 749872ffa..000000000
--- a/src/Specific/solinas64_2e384m317/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m317.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m317/freezeDisplay.log b/src/Specific/solinas64_2e384m317/freezeDisplay.log
deleted file mode 100644
index c7cb86cad..000000000
--- a/src/Specific/solinas64_2e384m317/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffec3);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xfffffffffec3);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m317/freezeDisplay.v b/src/Specific/solinas64_2e384m317/freezeDisplay.v
deleted file mode 100644
index fe549f5a9..000000000
--- a/src/Specific/solinas64_2e384m317/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m317.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/CurveParameters.v b/src/Specific/solinas64_2e384m317_7limbs/CurveParameters.v
new file mode 100644
index 000000000..776d2fb21
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^384 - 317
+Base: 54 + 6/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 54 + 6/7;
+ bitwidth := 64;
+ s := 2^384;
+ c := [(1, 317)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/Synthesis.v b/src/Specific/solinas64_2e384m317_7limbs/Synthesis.v
new file mode 100644
index 000000000..b6a636db5
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/compiler.sh b/src/Specific/solinas64_2e384m317_7limbs/compiler.sh
new file mode 100755
index 000000000..3a1ab08d6
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<384) - 317' "$@"
diff --git a/src/Specific/solinas64_2e384m317_7limbs/compilerxx.sh b/src/Specific/solinas64_2e384m317_7limbs/compilerxx.sh
new file mode 100755
index 000000000..dc72d66d9
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,55,55,55,55,55,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xc3}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<384) - 317' "$@"
diff --git a/src/Specific/solinas64_2e384m317_7limbs/feadd.v b/src/Specific/solinas64_2e384m317_7limbs/feadd.v
new file mode 100644
index 000000000..d958799ff
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e384m317_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..7facdb37e
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/femul.v b/src/Specific/solinas64_2e384m317_7limbs/femul.v
new file mode 100644
index 000000000..8228d1769
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/femulDisplay.v b/src/Specific/solinas64_2e384m317_7limbs/femulDisplay.v
new file mode 100644
index 000000000..997397bbf
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesquare.v b/src/Specific/solinas64_2e384m317_7limbs/fesquare.v
new file mode 100644
index 000000000..86c95af67
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e384m317_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9801aa4c8
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesub.v b/src/Specific/solinas64_2e384m317_7limbs/fesub.v
new file mode 100644
index 000000000..f3b7cab3e
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..3a6062eb6
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/freeze.v b/src/Specific/solinas64_2e384m317_7limbs/freeze.v
new file mode 100644
index 000000000..7fec27e3d
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..b8ee9d708
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e384m317_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e384m317_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..2ed7ddec3
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**384 - 317' -Dmodulus_bytes='54 + 6/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m317/CurveParameters.v b/src/Specific/solinas64_2e384m317_8limbs/CurveParameters.v
index 5378ea206..5378ea206 100644
--- a/src/Specific/solinas64_2e384m317/CurveParameters.v
+++ b/src/Specific/solinas64_2e384m317_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e384m317_8limbs/Synthesis.v b/src/Specific/solinas64_2e384m317_8limbs/Synthesis.v
new file mode 100644
index 000000000..3ae52d4b9
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m317/compiler.sh b/src/Specific/solinas64_2e384m317_8limbs/compiler.sh
index d63503375..d63503375 100755
--- a/src/Specific/solinas64_2e384m317/compiler.sh
+++ b/src/Specific/solinas64_2e384m317_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e384m317/compilerxx.sh b/src/Specific/solinas64_2e384m317_8limbs/compilerxx.sh
index 53444ad29..53444ad29 100755
--- a/src/Specific/solinas64_2e384m317/compilerxx.sh
+++ b/src/Specific/solinas64_2e384m317_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e384m317_8limbs/feadd.v b/src/Specific/solinas64_2e384m317_8limbs/feadd.v
new file mode 100644
index 000000000..4753f72be
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e384m317_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..5f2ad44a7
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/femul.v b/src/Specific/solinas64_2e384m317_8limbs/femul.v
new file mode 100644
index 000000000..4fb26d110
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/femulDisplay.v b/src/Specific/solinas64_2e384m317_8limbs/femulDisplay.v
new file mode 100644
index 000000000..3deec2a74
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/fesquare.v b/src/Specific/solinas64_2e384m317_8limbs/fesquare.v
new file mode 100644
index 000000000..a7ae338e1
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e384m317_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..47d366cee
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/fesub.v b/src/Specific/solinas64_2e384m317_8limbs/fesub.v
new file mode 100644
index 000000000..007378c14
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e384m317_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..eb4a29fbd
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/freeze.v b/src/Specific/solinas64_2e384m317_8limbs/freeze.v
new file mode 100644
index 000000000..e8fa01fc3
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m317_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e384m317_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..7928f01d5
--- /dev/null
+++ b/src/Specific/solinas64_2e384m317_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e384m317_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e384m317/py_interpreter.sh b/src/Specific/solinas64_2e384m317_8limbs/py_interpreter.sh
index cd282638b..cd282638b 100755
--- a/src/Specific/solinas64_2e384m317/py_interpreter.sh
+++ b/src/Specific/solinas64_2e384m317_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/CurveParameters.v b/src/Specific/solinas64_2e384m5x2e368m1/CurveParameters.v
deleted file mode 100644
index e3713eb11..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 5*2^368 - 1
-Base: 48
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 48;
- bitwidth := 64;
- s := 2^384;
- c := [(1, 1); (5, 2^368)];
- carry_chains := Some [[6; 7]; [7; 0; 1; 2; 3; 4; 5; 6]; [7; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/Synthesis.v b/src/Specific/solinas64_2e384m5x2e368m1/Synthesis.v
deleted file mode 100644
index fe074620c..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/compiler.sh b/src/Specific/solinas64_2e384m5x2e368m1/compiler.sh
deleted file mode 100755
index f2cb2f74b..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/compilerxx.sh b/src/Specific/solinas64_2e384m5x2e368m1/compilerxx.sh
deleted file mode 100755
index 25fe9ae97..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 5*(1_mpz<<368) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/feadd.c b/src/Specific/solinas64_2e384m5x2e368m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/feadd.v b/src/Specific/solinas64_2e384m5x2e368m1/feadd.v
deleted file mode 100644
index 52e081a4c..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.log b/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.v b/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.v
deleted file mode 100644
index da91657b6..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/femul.v b/src/Specific/solinas64_2e384m5x2e368m1/femul.v
deleted file mode 100644
index 43a736efb..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/femulDisplay.v b/src/Specific/solinas64_2e384m5x2e368m1/femulDisplay.v
deleted file mode 100644
index c4fcbc719..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesquare.v b/src/Specific/solinas64_2e384m5x2e368m1/fesquare.v
deleted file mode 100644
index 720b3d6e9..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesquareDisplay.v b/src/Specific/solinas64_2e384m5x2e368m1/fesquareDisplay.v
deleted file mode 100644
index 5bf19f297..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesub.c b/src/Specific/solinas64_2e384m5x2e368m1/fesub.c
deleted file mode 100644
index 5684f011a..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1fffffffffffe + x5) - x19);
- out[1] = ((0x1fffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffe + x11) - x25);
- out[4] = ((0x1fffffffffffe + x13) - x27);
- out[5] = ((0x1fffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffe + x17) - x31);
- out[7] = ((0x1fff5fffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesub.v b/src/Specific/solinas64_2e384m5x2e368m1/fesub.v
deleted file mode 100644
index 12a237939..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.log b/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.log
deleted file mode 100644
index 5f33a6593..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fff5fffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1fffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.v b/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.v
deleted file mode 100644
index 5d6fe330b..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/freeze.c b/src/Specific/solinas64_2e384m5x2e368m1/freeze.c
deleted file mode 100644
index 59dc1b18d..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffaffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xfffaffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/freeze.v b/src/Specific/solinas64_2e384m5x2e368m1/freeze.v
deleted file mode 100644
index 50e555fdc..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.log b/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.log
deleted file mode 100644
index 6768fe30c..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffaffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xfffaffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.v b/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.v
deleted file mode 100644
index 21c87b18f..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m5x2e368m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e384m5x2e368m1/py_interpreter.sh b/src/Specific/solinas64_2e384m5x2e368m1/py_interpreter.sh
deleted file mode 100755
index 29078981a..000000000
--- a/src/Specific/solinas64_2e384m5x2e368m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 5*2**368 - 1' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/CurveParameters.v b/src/Specific/solinas64_2e384m79x2e376m1/CurveParameters.v
deleted file mode 100644
index bb124cd64..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^384 - 79*2^376 - 1
-Base: 48
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 8%nat;
- base := 48;
- bitwidth := 64;
- s := 2^384;
- c := [(1, 1); (79, 2^376)];
- carry_chains := Some [[6; 7]; [7; 0; 1; 2; 3; 4; 5; 6]; [7; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/Synthesis.v b/src/Specific/solinas64_2e384m79x2e376m1/Synthesis.v
deleted file mode 100644
index 2bdc27685..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/compiler.sh b/src/Specific/solinas64_2e384m79x2e376m1/compiler.sh
deleted file mode 100755
index cd80c24b4..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/compilerxx.sh b/src/Specific/solinas64_2e384m79x2e376m1/compilerxx.sh
deleted file mode 100755
index 092eae8f9..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xb0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='48' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<384) - 79*(1_mpz<<376) - 1' "$@"
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/feadd.c b/src/Specific/solinas64_2e384m79x2e376m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/feadd.v b/src/Specific/solinas64_2e384m79x2e376m1/feadd.v
deleted file mode 100644
index 05d394ea2..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.log b/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.v b/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.v
deleted file mode 100644
index 37dcb8849..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/femul.v b/src/Specific/solinas64_2e384m79x2e376m1/femul.v
deleted file mode 100644
index 5b2fbc588..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/femulDisplay.v b/src/Specific/solinas64_2e384m79x2e376m1/femulDisplay.v
deleted file mode 100644
index 684d130b1..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesquare.v b/src/Specific/solinas64_2e384m79x2e376m1/fesquare.v
deleted file mode 100644
index c1b626bd0..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesquareDisplay.v b/src/Specific/solinas64_2e384m79x2e376m1/fesquareDisplay.v
deleted file mode 100644
index 52a40f6af..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesub.c b/src/Specific/solinas64_2e384m79x2e376m1/fesub.c
deleted file mode 100644
index ff6b61d87..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1fffffffffffe + x5) - x19);
- out[1] = ((0x1fffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffe + x11) - x25);
- out[4] = ((0x1fffffffffffe + x13) - x27);
- out[5] = ((0x1fffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffe + x17) - x31);
- out[7] = ((0x161fffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesub.v b/src/Specific/solinas64_2e384m79x2e376m1/fesub.v
deleted file mode 100644
index ee8c2349c..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.log b/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.log
deleted file mode 100644
index 36f2cfdf8..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x161fffffffffe + x16) - x30), ((0x1fffffffffffe + x17) - x31), ((0x1fffffffffffe + x15) - x29), ((0x1fffffffffffe + x13) - x27), ((0x1fffffffffffe + x11) - x25), ((0x1fffffffffffe + x9) - x23), ((0x1fffffffffffe + x7) - x21), ((0x1fffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.v b/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.v
deleted file mode 100644
index b8b0ec5ff..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/freeze.c b/src/Specific/solinas64_2e384m79x2e376m1/freeze.c
deleted file mode 100644
index 270b845ec..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xb0ffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xb0ffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/freeze.v b/src/Specific/solinas64_2e384m79x2e376m1/freeze.v
deleted file mode 100644
index 63d49ad6d..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.log b/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.log
deleted file mode 100644
index 94e0f473a..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xb0ffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xb0ffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.v b/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.v
deleted file mode 100644
index 26e596ebf..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e384m79x2e376m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e384m79x2e376m1/py_interpreter.sh b/src/Specific/solinas64_2e384m79x2e376m1/py_interpreter.sh
deleted file mode 100755
index 9b25b66d3..000000000
--- a/src/Specific/solinas64_2e384m79x2e376m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**384 - 79*2**376 - 1' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e389m21_7limbs/CurveParameters.v b/src/Specific/solinas64_2e389m21_7limbs/CurveParameters.v
new file mode 100644
index 000000000..7e6d0c5ab
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^389 - 21
+Base: 55 + 4/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 55 + 4/7;
+ bitwidth := 64;
+ s := 2^389;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/Synthesis.v b/src/Specific/solinas64_2e389m21_7limbs/Synthesis.v
new file mode 100644
index 000000000..d9704633d
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/compiler.sh b/src/Specific/solinas64_2e389m21_7limbs/compiler.sh
new file mode 100755
index 000000000..948c7c9f2
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,55,56,55,56,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas64_2e389m21_7limbs/compilerxx.sh b/src/Specific/solinas64_2e389m21_7limbs/compilerxx.sh
new file mode 100755
index 000000000..2f41acb76
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{56,56,55,56,55,56,55}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas64_2e389m21_7limbs/feadd.v b/src/Specific/solinas64_2e389m21_7limbs/feadd.v
new file mode 100644
index 000000000..881bf7a1a
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e389m21_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..e01e03180
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/femul.v b/src/Specific/solinas64_2e389m21_7limbs/femul.v
new file mode 100644
index 000000000..c2580322a
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/femulDisplay.v b/src/Specific/solinas64_2e389m21_7limbs/femulDisplay.v
new file mode 100644
index 000000000..42c74f7e1
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesquare.v b/src/Specific/solinas64_2e389m21_7limbs/fesquare.v
new file mode 100644
index 000000000..7b85781fe
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e389m21_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..2eb0c5273
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesub.v b/src/Specific/solinas64_2e389m21_7limbs/fesub.v
new file mode 100644
index 000000000..e5fa69dfe
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..21d7e4d84
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/freeze.v b/src/Specific/solinas64_2e389m21_7limbs/freeze.v
new file mode 100644
index 000000000..b426214a1
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..9c6ca3a22
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e389m21_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e389m21_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..c01b25cf2
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**389 - 21' -Dmodulus_bytes='55 + 4/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e389m21_8limbs/CurveParameters.v b/src/Specific/solinas64_2e389m21_8limbs/CurveParameters.v
new file mode 100644
index 000000000..fb8574e2f
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^389 - 21
+Base: 48.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 48 + 5/8;
+ bitwidth := 64;
+ s := 2^389;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/Synthesis.v b/src/Specific/solinas64_2e389m21_8limbs/Synthesis.v
new file mode 100644
index 000000000..fac478a05
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/compiler.sh b/src/Specific/solinas64_2e389m21_8limbs/compiler.sh
new file mode 100755
index 000000000..e2537608d
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,49,48,49,48}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas64_2e389m21_8limbs/compilerxx.sh b/src/Specific/solinas64_2e389m21_8limbs/compilerxx.sh
new file mode 100755
index 000000000..f164bc21b
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,48,49,49,48,49,48}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='49' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<389) - 21' "$@"
diff --git a/src/Specific/solinas64_2e389m21_8limbs/feadd.v b/src/Specific/solinas64_2e389m21_8limbs/feadd.v
new file mode 100644
index 000000000..5d5e98058
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e389m21_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..50f87c189
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/femul.v b/src/Specific/solinas64_2e389m21_8limbs/femul.v
new file mode 100644
index 000000000..3ebb51385
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/femulDisplay.v b/src/Specific/solinas64_2e389m21_8limbs/femulDisplay.v
new file mode 100644
index 000000000..a954c1f9f
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesquare.v b/src/Specific/solinas64_2e389m21_8limbs/fesquare.v
new file mode 100644
index 000000000..578b525f0
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e389m21_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..384447ca3
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesub.v b/src/Specific/solinas64_2e389m21_8limbs/fesub.v
new file mode 100644
index 000000000..39552b91f
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..83097447f
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/freeze.v b/src/Specific/solinas64_2e389m21_8limbs/freeze.v
new file mode 100644
index 000000000..33e6fb425
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..9b138d13f
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e389m21_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e389m21_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e389m21_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..e371f7aba
--- /dev/null
+++ b/src/Specific/solinas64_2e389m21_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**389 - 21' -Dmodulus_bytes='48.625' -Da24='121665'
diff --git a/src/Specific/solinas64_2e401m31/Synthesis.v b/src/Specific/solinas64_2e401m31/Synthesis.v
deleted file mode 100644
index 57a7ecb81..000000000
--- a/src/Specific/solinas64_2e401m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e401m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e401m31/feadd.c b/src/Specific/solinas64_2e401m31/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e401m31/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e401m31/feadd.v b/src/Specific/solinas64_2e401m31/feadd.v
deleted file mode 100644
index 2e265ff4b..000000000
--- a/src/Specific/solinas64_2e401m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e401m31/feaddDisplay.log b/src/Specific/solinas64_2e401m31/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e401m31/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31/feaddDisplay.v b/src/Specific/solinas64_2e401m31/feaddDisplay.v
deleted file mode 100644
index 819a3f51b..000000000
--- a/src/Specific/solinas64_2e401m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e401m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e401m31/femul.c b/src/Specific/solinas64_2e401m31/femul.c
deleted file mode 100644
index e9f8d6aef..000000000
--- a/src/Specific/solinas64_2e401m31/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((0x2 * ((uint128_t)x17 * x21)) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x1f * ((uint128_t)x16 * x30)));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((uint128_t)x15 * x19)))))) + (0x1f * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x1f * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (0x1f * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x1f * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x1f * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x1f * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
- { uint64_t x40 = (uint64_t) (x39 >> 0x33);
- { uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint64_t x43 = (uint64_t) (x42 >> 0x32);
- { uint64_t x44 = ((uint64_t)x42 & 0x3ffffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint64_t x46 = (uint64_t) (x45 >> 0x32);
- { uint64_t x47 = ((uint64_t)x45 & 0x3ffffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint64_t x49 = (uint64_t) (x48 >> 0x32);
- { uint64_t x50 = ((uint64_t)x48 & 0x3ffffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint64_t x52 = (uint64_t) (x51 >> 0x32);
- { uint64_t x53 = ((uint64_t)x51 & 0x3ffffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint64_t x55 = (uint64_t) (x54 >> 0x32);
- { uint64_t x56 = ((uint64_t)x54 & 0x3ffffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint64_t x58 = (uint64_t) (x57 >> 0x32);
- { uint64_t x59 = ((uint64_t)x57 & 0x3ffffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint64_t x61 = (uint64_t) (x60 >> 0x32);
- { uint64_t x62 = ((uint64_t)x60 & 0x3ffffffffffff);
- { uint64_t x63 = (x41 + (0x1f * x61));
- { uint64_t x64 = (x63 >> 0x33);
- { uint64_t x65 = (x63 & 0x7ffffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x32);
- { uint64_t x68 = (x66 & 0x3ffffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e401m31/femul.v b/src/Specific/solinas64_2e401m31/femul.v
deleted file mode 100644
index 57a494bd3..000000000
--- a/src/Specific/solinas64_2e401m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e401m31/femulDisplay.log b/src/Specific/solinas64_2e401m31/femulDisplay.log
deleted file mode 100644
index f2fe04251..000000000
--- a/src/Specific/solinas64_2e401m31/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((0x2 * ((uint128_t)x17 * x21)) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x1f * ((uint128_t)x16 * x30)));
- uint128_t x34 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((uint128_t)x15 * x19)))))) + (0x1f * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x1f * (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (0x1f * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x1f * (((uint128_t)x11 * x30) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + ((uint128_t)x16 * x25)))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x1f * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x1f * ((0x2 * ((uint128_t)x7 * x30)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((0x2 * ((uint128_t)x17 * x23)) + (0x2 * ((uint128_t)x16 * x21))))))))));
- uint64_t x40 = (uint64_t) (x39 >> 0x33);
- uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffff);
- uint128_t x42 = (x40 + x38);
- uint64_t x43 = (uint64_t) (x42 >> 0x32);
- uint64_t x44 = ((uint64_t)x42 & 0x3ffffffffffff);
- uint128_t x45 = (x43 + x37);
- uint64_t x46 = (uint64_t) (x45 >> 0x32);
- uint64_t x47 = ((uint64_t)x45 & 0x3ffffffffffff);
- uint128_t x48 = (x46 + x36);
- uint64_t x49 = (uint64_t) (x48 >> 0x32);
- uint64_t x50 = ((uint64_t)x48 & 0x3ffffffffffff);
- uint128_t x51 = (x49 + x35);
- uint64_t x52 = (uint64_t) (x51 >> 0x32);
- uint64_t x53 = ((uint64_t)x51 & 0x3ffffffffffff);
- uint128_t x54 = (x52 + x34);
- uint64_t x55 = (uint64_t) (x54 >> 0x32);
- uint64_t x56 = ((uint64_t)x54 & 0x3ffffffffffff);
- uint128_t x57 = (x55 + x33);
- uint64_t x58 = (uint64_t) (x57 >> 0x32);
- uint64_t x59 = ((uint64_t)x57 & 0x3ffffffffffff);
- uint128_t x60 = (x58 + x32);
- uint64_t x61 = (uint64_t) (x60 >> 0x32);
- uint64_t x62 = ((uint64_t)x60 & 0x3ffffffffffff);
- uint64_t x63 = (x41 + (0x1f * x61));
- uint64_t x64 = (x63 >> 0x33);
- uint64_t x65 = (x63 & 0x7ffffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x32);
- uint64_t x68 = (x66 & 0x3ffffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31/femulDisplay.v b/src/Specific/solinas64_2e401m31/femulDisplay.v
deleted file mode 100644
index 74068f906..000000000
--- a/src/Specific/solinas64_2e401m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e401m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e401m31/fesquare.c b/src/Specific/solinas64_2e401m31/fesquare.c
deleted file mode 100644
index b36782beb..000000000
--- a/src/Specific/solinas64_2e401m31/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1f * ((uint128_t)x13 * x13)));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1f * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1f * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x1f * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
- { uint64_t x23 = (uint64_t) (x22 >> 0x33);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint64_t x26 = (uint64_t) (x25 >> 0x32);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint64_t x29 = (uint64_t) (x28 >> 0x32);
- { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint64_t x32 = (uint64_t) (x31 >> 0x32);
- { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint64_t x35 = (uint64_t) (x34 >> 0x32);
- { uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint64_t x38 = (uint64_t) (x37 >> 0x32);
- { uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint64_t x41 = (uint64_t) (x40 >> 0x32);
- { uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint64_t x44 = (uint64_t) (x43 >> 0x32);
- { uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffff);
- { uint64_t x46 = (x24 + (0x1f * x44));
- { uint64_t x47 = (x46 >> 0x33);
- { uint64_t x48 = (x46 & 0x7ffffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x32);
- { uint64_t x51 = (x49 & 0x3ffffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e401m31/fesquare.v b/src/Specific/solinas64_2e401m31/fesquare.v
deleted file mode 100644
index 9e47f3f43..000000000
--- a/src/Specific/solinas64_2e401m31/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e401m31/fesquareDisplay.log b/src/Specific/solinas64_2e401m31/fesquareDisplay.log
deleted file mode 100644
index 60c16004d..000000000
--- a/src/Specific/solinas64_2e401m31/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1f * ((uint128_t)x13 * x13)));
- uint128_t x17 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1f * (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1f * (((uint128_t)x8 * x13) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + ((uint128_t)x13 * x8)))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x1f * ((0x2 * ((uint128_t)x4 * x13)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + (0x2 * ((uint128_t)x13 * x4))))))))));
- uint64_t x23 = (uint64_t) (x22 >> 0x33);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffff);
- uint128_t x25 = (x23 + x21);
- uint64_t x26 = (uint64_t) (x25 >> 0x32);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffff);
- uint128_t x28 = (x26 + x20);
- uint64_t x29 = (uint64_t) (x28 >> 0x32);
- uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffffff);
- uint128_t x31 = (x29 + x19);
- uint64_t x32 = (uint64_t) (x31 >> 0x32);
- uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffff);
- uint128_t x34 = (x32 + x18);
- uint64_t x35 = (uint64_t) (x34 >> 0x32);
- uint64_t x36 = ((uint64_t)x34 & 0x3ffffffffffff);
- uint128_t x37 = (x35 + x17);
- uint64_t x38 = (uint64_t) (x37 >> 0x32);
- uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffff);
- uint128_t x40 = (x38 + x16);
- uint64_t x41 = (uint64_t) (x40 >> 0x32);
- uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffffff);
- uint128_t x43 = (x41 + x15);
- uint64_t x44 = (uint64_t) (x43 >> 0x32);
- uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffff);
- uint64_t x46 = (x24 + (0x1f * x44));
- uint64_t x47 = (x46 >> 0x33);
- uint64_t x48 = (x46 & 0x7ffffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x32);
- uint64_t x51 = (x49 & 0x3ffffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31/fesquareDisplay.v b/src/Specific/solinas64_2e401m31/fesquareDisplay.v
deleted file mode 100644
index ddbf5d13e..000000000
--- a/src/Specific/solinas64_2e401m31/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e401m31.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e401m31/fesub.c b/src/Specific/solinas64_2e401m31/fesub.c
deleted file mode 100644
index fa2135cce..000000000
--- a/src/Specific/solinas64_2e401m31/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0xfffffffffffc2 + x5) - x19);
- out[1] = ((0x7fffffffffffe + x7) - x21);
- out[2] = ((0x7fffffffffffe + x9) - x23);
- out[3] = ((0x7fffffffffffe + x11) - x25);
- out[4] = ((0x7fffffffffffe + x13) - x27);
- out[5] = ((0x7fffffffffffe + x15) - x29);
- out[6] = ((0x7fffffffffffe + x17) - x31);
- out[7] = ((0x7fffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e401m31/fesub.v b/src/Specific/solinas64_2e401m31/fesub.v
deleted file mode 100644
index 3749fd9f7..000000000
--- a/src/Specific/solinas64_2e401m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e401m31/fesubDisplay.log b/src/Specific/solinas64_2e401m31/fesubDisplay.log
deleted file mode 100644
index 1130a3297..000000000
--- a/src/Specific/solinas64_2e401m31/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x7fffffffffffe + x16) - x30), ((0x7fffffffffffe + x17) - x31), ((0x7fffffffffffe + x15) - x29), ((0x7fffffffffffe + x13) - x27), ((0x7fffffffffffe + x11) - x25), ((0x7fffffffffffe + x9) - x23), ((0x7fffffffffffe + x7) - x21), ((0xfffffffffffc2 + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31/fesubDisplay.v b/src/Specific/solinas64_2e401m31/fesubDisplay.v
deleted file mode 100644
index d90932b5e..000000000
--- a/src/Specific/solinas64_2e401m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e401m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e401m31/freeze.c b/src/Specific/solinas64_2e401m31/freeze.c
deleted file mode 100644
index 2bc280725..000000000
--- a/src/Specific/solinas64_2e401m31/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16; uint8_t x17 = _subborrow_u51(0x0, x2, 0x7ffffffffffe1, &x16);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x3ffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x3ffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0x7ffffffffffe1);
- { uint64_t x42; uint8_t x43 = _addcarryx_u51(0x0, x16, x40, &x42);
- { uint64_t x44 = (x39 & 0x3ffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0x3ffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0x3ffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0x3ffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0x3ffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0x3ffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0x3ffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e401m31/freeze.v b/src/Specific/solinas64_2e401m31/freeze.v
deleted file mode 100644
index 903d88e01..000000000
--- a/src/Specific/solinas64_2e401m31/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e401m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e401m31/freezeDisplay.log b/src/Specific/solinas64_2e401m31/freezeDisplay.log
deleted file mode 100644
index b4ce1612e..000000000
--- a/src/Specific/solinas64_2e401m31/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = subborrow_u51(0x0, x2, 0x7ffffffffffe1);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x3ffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x3ffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x3ffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0x7ffffffffffe1);
- uint64_t x42, uint8_t x43 = addcarryx_u51(0x0, x16, x40);
- uint64_t x44 = (x39 & 0x3ffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0x3ffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0x3ffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0x3ffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0x3ffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0x3ffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0x3ffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e401m31/freezeDisplay.v b/src/Specific/solinas64_2e401m31/freezeDisplay.v
deleted file mode 100644
index 672bcc545..000000000
--- a/src/Specific/solinas64_2e401m31/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e401m31.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/CurveParameters.v b/src/Specific/solinas64_2e401m31_7limbs/CurveParameters.v
new file mode 100644
index 000000000..149e49d4b
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^401 - 31
+Base: 57 + 2/7
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 7%nat;
+ base := 57 + 2/7;
+ bitwidth := 64;
+ s := 2^401;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 7); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/Synthesis.v b/src/Specific/solinas64_2e401m31_7limbs/Synthesis.v
new file mode 100644
index 000000000..c09e91014
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/compiler.sh b/src/Specific/solinas64_2e401m31_7limbs/compiler.sh
new file mode 100755
index 000000000..3e673ede7
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,57,58,57,57,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31' "$@"
diff --git a/src/Specific/solinas64_2e401m31_7limbs/compilerxx.sh b/src/Specific/solinas64_2e401m31_7limbs/compilerxx.sh
new file mode 100755
index 000000000..0d1830d11
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,57,57,58,57,57,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='51' -Dmodulus_limbs='7' -Dq_mpz='(1_mpz<<401) - 31' "$@"
diff --git a/src/Specific/solinas64_2e401m31_7limbs/feadd.v b/src/Specific/solinas64_2e401m31_7limbs/feadd.v
new file mode 100644
index 000000000..5bcf6e157
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e401m31_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..2af4fb540
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/femul.v b/src/Specific/solinas64_2e401m31_7limbs/femul.v
new file mode 100644
index 000000000..22b329808
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/femulDisplay.v b/src/Specific/solinas64_2e401m31_7limbs/femulDisplay.v
new file mode 100644
index 000000000..bc7dfb5f8
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesquare.v b/src/Specific/solinas64_2e401m31_7limbs/fesquare.v
new file mode 100644
index 000000000..4a1687d32
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e401m31_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..7e0ce4d0b
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesub.v b/src/Specific/solinas64_2e401m31_7limbs/fesub.v
new file mode 100644
index 000000000..47bac02b7
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..56bb75537
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/freeze.v b/src/Specific/solinas64_2e401m31_7limbs/freeze.v
new file mode 100644
index 000000000..579d50c72
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..a1135ded2
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e401m31_7limbs/py_interpreter.sh b/src/Specific/solinas64_2e401m31_7limbs/py_interpreter.sh
new file mode 100755
index 000000000..c7b8cb3cc
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_7limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**401 - 31' -Dmodulus_bytes='57 + 2/7' -Da24='121665'
diff --git a/src/Specific/solinas64_2e401m31/CurveParameters.v b/src/Specific/solinas64_2e401m31_8limbs/CurveParameters.v
index 0d6d08d4c..0d6d08d4c 100644
--- a/src/Specific/solinas64_2e401m31/CurveParameters.v
+++ b/src/Specific/solinas64_2e401m31_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e401m31_8limbs/Synthesis.v b/src/Specific/solinas64_2e401m31_8limbs/Synthesis.v
new file mode 100644
index 000000000..6ee943ecc
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e401m31/compiler.sh b/src/Specific/solinas64_2e401m31_8limbs/compiler.sh
index fd31fc435..fd31fc435 100755
--- a/src/Specific/solinas64_2e401m31/compiler.sh
+++ b/src/Specific/solinas64_2e401m31_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e401m31/compilerxx.sh b/src/Specific/solinas64_2e401m31_8limbs/compilerxx.sh
index eb8c5b658..eb8c5b658 100755
--- a/src/Specific/solinas64_2e401m31/compilerxx.sh
+++ b/src/Specific/solinas64_2e401m31_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e401m31_8limbs/feadd.v b/src/Specific/solinas64_2e401m31_8limbs/feadd.v
new file mode 100644
index 000000000..8e86f3f21
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e401m31_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..77e27e5b3
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/femul.v b/src/Specific/solinas64_2e401m31_8limbs/femul.v
new file mode 100644
index 000000000..7ff6e5890
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/femulDisplay.v b/src/Specific/solinas64_2e401m31_8limbs/femulDisplay.v
new file mode 100644
index 000000000..2e466c6b2
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/fesquare.v b/src/Specific/solinas64_2e401m31_8limbs/fesquare.v
new file mode 100644
index 000000000..aaee20b69
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e401m31_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e7decd022
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/fesub.v b/src/Specific/solinas64_2e401m31_8limbs/fesub.v
new file mode 100644
index 000000000..5b2b9a83e
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e401m31_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..9977fd4d6
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/freeze.v b/src/Specific/solinas64_2e401m31_8limbs/freeze.v
new file mode 100644
index 000000000..ac47dade4
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e401m31_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e401m31_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..7e747fc10
--- /dev/null
+++ b/src/Specific/solinas64_2e401m31_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e401m31_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e401m31/py_interpreter.sh b/src/Specific/solinas64_2e401m31_8limbs/py_interpreter.sh
index 9b040565a..9b040565a 100755
--- a/src/Specific/solinas64_2e401m31/py_interpreter.sh
+++ b/src/Specific/solinas64_2e401m31_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e413m21/Synthesis.v b/src/Specific/solinas64_2e413m21/Synthesis.v
deleted file mode 100644
index 90ef5bc02..000000000
--- a/src/Specific/solinas64_2e413m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e413m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e413m21/feadd.c b/src/Specific/solinas64_2e413m21/feadd.c
deleted file mode 100644
index 9acf97578..000000000
--- a/src/Specific/solinas64_2e413m21/feadd.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = (x5 + x17);
- out[1] = (x7 + x19);
- out[2] = (x9 + x21);
- out[3] = (x11 + x23);
- out[4] = (x13 + x25);
- out[5] = (x15 + x27);
- out[6] = (x14 + x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e413m21/feadd.v b/src/Specific/solinas64_2e413m21/feadd.v
deleted file mode 100644
index 4811c8fa2..000000000
--- a/src/Specific/solinas64_2e413m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e413m21/feaddDisplay.log b/src/Specific/solinas64_2e413m21/feaddDisplay.log
deleted file mode 100644
index 6320440fc..000000000
--- a/src/Specific/solinas64_2e413m21/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21/feaddDisplay.v b/src/Specific/solinas64_2e413m21/feaddDisplay.v
deleted file mode 100644
index 67f1a51a2..000000000
--- a/src/Specific/solinas64_2e413m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e413m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e413m21/femul.c b/src/Specific/solinas64_2e413m21/femul.c
deleted file mode 100644
index 6fbb37ad9..000000000
--- a/src/Specific/solinas64_2e413m21/femul.c
+++ /dev/null
@@ -1,57 +0,0 @@
-static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- { uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
- { uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x15 * ((uint128_t)x14 * x26)));
- { uint128_t x30 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((uint128_t)x13 * x17))))) + (0x15 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
- { uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x15 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- { uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x15 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
- { ℤ x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) +ℤ (0x15 *ℤ (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
- { ℤ x34 = (((uint128_t)x5 * x17) +ℤ (0x15 *ℤ (((uint128_t)x7 * x26) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x14 * x19))))))));
- { uint128_t x35 = (x34 >> 0x3b);
- { uint64_t x36 = (x34 & 0x7ffffffffffffff);
- { ℤ x37 = (x35 +ℤ x33);
- { uint128_t x38 = (x37 >> 0x3b);
- { uint64_t x39 = (x37 & 0x7ffffffffffffff);
- { uint128_t x40 = (x38 + x32);
- { uint128_t x41 = (x40 >> 0x3b);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- { uint128_t x43 = (x41 + x31);
- { uint128_t x44 = (x43 >> 0x3b);
- { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffffff);
- { uint128_t x46 = (x44 + x30);
- { uint128_t x47 = (x46 >> 0x3b);
- { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
- { uint128_t x49 = (x47 + x29);
- { uint128_t x50 = (x49 >> 0x3b);
- { uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffffff);
- { uint128_t x52 = (x50 + x28);
- { uint128_t x53 = (x52 >> 0x3b);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffffff);
- { uint128_t x55 = (x36 + (0x15 * x53));
- { uint64_t x56 = (uint64_t) (x55 >> 0x3b);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffffff);
- { uint64_t x58 = (x56 + x39);
- { uint64_t x59 = (x58 >> 0x3b);
- { uint64_t x60 = (x58 & 0x7ffffffffffffff);
- out[0] = x57;
- out[1] = x60;
- out[2] = (x59 + x42);
- out[3] = x45;
- out[4] = x48;
- out[5] = x51;
- out[6] = x54;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e413m21/femul.v b/src/Specific/solinas64_2e413m21/femul.v
deleted file mode 100644
index 4e83757fa..000000000
--- a/src/Specific/solinas64_2e413m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e413m21/femulDisplay.log b/src/Specific/solinas64_2e413m21/femulDisplay.log
deleted file mode 100644
index 79be934ac..000000000
--- a/src/Specific/solinas64_2e413m21/femulDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
- uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x15 * ((uint128_t)x14 * x26)));
- uint128_t x30 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((uint128_t)x13 * x17))))) + (0x15 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
- uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x15 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
- uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x15 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
- ℤ x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) +ℤ (0x15 *ℤ (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
- ℤ x34 = (((uint128_t)x5 * x17) +ℤ (0x15 *ℤ (((uint128_t)x7 * x26) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x14 * x19))))))));
- uint128_t x35 = (x34 >> 0x3b);
- uint64_t x36 = (x34 & 0x7ffffffffffffff);
- ℤ x37 = (x35 +ℤ x33);
- uint128_t x38 = (x37 >> 0x3b);
- uint64_t x39 = (x37 & 0x7ffffffffffffff);
- uint128_t x40 = (x38 + x32);
- uint128_t x41 = (x40 >> 0x3b);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- uint128_t x43 = (x41 + x31);
- uint128_t x44 = (x43 >> 0x3b);
- uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffffff);
- uint128_t x46 = (x44 + x30);
- uint128_t x47 = (x46 >> 0x3b);
- uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
- uint128_t x49 = (x47 + x29);
- uint128_t x50 = (x49 >> 0x3b);
- uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffffff);
- uint128_t x52 = (x50 + x28);
- uint128_t x53 = (x52 >> 0x3b);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffffff);
- uint128_t x55 = (x36 + (0x15 * x53));
- uint64_t x56 = (uint64_t) (x55 >> 0x3b);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffffff);
- uint64_t x58 = (x56 + x39);
- uint64_t x59 = (x58 >> 0x3b);
- uint64_t x60 = (x58 & 0x7ffffffffffffff);
- return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21/femulDisplay.v b/src/Specific/solinas64_2e413m21/femulDisplay.v
deleted file mode 100644
index 308ef6091..000000000
--- a/src/Specific/solinas64_2e413m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e413m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e413m21/fesquare.c b/src/Specific/solinas64_2e413m21/fesquare.c
deleted file mode 100644
index c3e0d7d32..000000000
--- a/src/Specific/solinas64_2e413m21/fesquare.c
+++ /dev/null
@@ -1,50 +0,0 @@
-static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
- { uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((uint128_t)x11 * x11)));
- { uint128_t x15 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
- { uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- { uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
- { ℤ x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ (0x15 *ℤ (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
- { ℤ x19 = (((uint128_t)x2 * x2) +ℤ (0x15 *ℤ (((uint128_t)x4 * x11) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((uint128_t)x11 * x4))))))));
- { uint128_t x20 = (x19 >> 0x3b);
- { uint64_t x21 = (x19 & 0x7ffffffffffffff);
- { ℤ x22 = (x20 +ℤ x18);
- { uint128_t x23 = (x22 >> 0x3b);
- { uint64_t x24 = (x22 & 0x7ffffffffffffff);
- { uint128_t x25 = (x23 + x17);
- { uint128_t x26 = (x25 >> 0x3b);
- { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffffff);
- { uint128_t x28 = (x26 + x16);
- { uint128_t x29 = (x28 >> 0x3b);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- { uint128_t x31 = (x29 + x15);
- { uint128_t x32 = (x31 >> 0x3b);
- { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffffff);
- { uint128_t x34 = (x32 + x14);
- { uint128_t x35 = (x34 >> 0x3b);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
- { uint128_t x37 = (x35 + x13);
- { uint128_t x38 = (x37 >> 0x3b);
- { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffffff);
- { uint128_t x40 = (x21 + (0x15 * x38));
- { uint64_t x41 = (uint64_t) (x40 >> 0x3b);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- { uint64_t x43 = (x41 + x24);
- { uint64_t x44 = (x43 >> 0x3b);
- { uint64_t x45 = (x43 & 0x7ffffffffffffff);
- out[0] = x42;
- out[1] = x45;
- out[2] = (x44 + x27);
- out[3] = x30;
- out[4] = x33;
- out[5] = x36;
- out[6] = x39;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e413m21/fesquare.v b/src/Specific/solinas64_2e413m21/fesquare.v
deleted file mode 100644
index b2a54684c..000000000
--- a/src/Specific/solinas64_2e413m21/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e413m21/fesquareDisplay.log b/src/Specific/solinas64_2e413m21/fesquareDisplay.log
deleted file mode 100644
index a76b27178..000000000
--- a/src/Specific/solinas64_2e413m21/fesquareDisplay.log
+++ /dev/null
@@ -1,40 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
- uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((uint128_t)x11 * x11)));
- uint128_t x15 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
- uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
- uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
- ℤ x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ (0x15 *ℤ (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
- ℤ x19 = (((uint128_t)x2 * x2) +ℤ (0x15 *ℤ (((uint128_t)x4 * x11) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((uint128_t)x11 * x4))))))));
- uint128_t x20 = (x19 >> 0x3b);
- uint64_t x21 = (x19 & 0x7ffffffffffffff);
- ℤ x22 = (x20 +ℤ x18);
- uint128_t x23 = (x22 >> 0x3b);
- uint64_t x24 = (x22 & 0x7ffffffffffffff);
- uint128_t x25 = (x23 + x17);
- uint128_t x26 = (x25 >> 0x3b);
- uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffffff);
- uint128_t x28 = (x26 + x16);
- uint128_t x29 = (x28 >> 0x3b);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- uint128_t x31 = (x29 + x15);
- uint128_t x32 = (x31 >> 0x3b);
- uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffffff);
- uint128_t x34 = (x32 + x14);
- uint128_t x35 = (x34 >> 0x3b);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
- uint128_t x37 = (x35 + x13);
- uint128_t x38 = (x37 >> 0x3b);
- uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffffff);
- uint128_t x40 = (x21 + (0x15 * x38));
- uint64_t x41 = (uint64_t) (x40 >> 0x3b);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- uint64_t x43 = (x41 + x24);
- uint64_t x44 = (x43 >> 0x3b);
- uint64_t x45 = (x43 & 0x7ffffffffffffff);
- return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21/fesquareDisplay.v b/src/Specific/solinas64_2e413m21/fesquareDisplay.v
deleted file mode 100644
index a90a9b1ad..000000000
--- a/src/Specific/solinas64_2e413m21/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e413m21.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e413m21/fesub.c b/src/Specific/solinas64_2e413m21/fesub.c
deleted file mode 100644
index b548e713b..000000000
--- a/src/Specific/solinas64_2e413m21/fesub.c
+++ /dev/null
@@ -1,24 +0,0 @@
-static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
- { const uint64_t x14 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x26 = in2[6];
- { const uint64_t x27 = in2[5];
- { const uint64_t x25 = in2[4];
- { const uint64_t x23 = in2[3];
- { const uint64_t x21 = in2[2];
- { const uint64_t x19 = in2[1];
- { const uint64_t x17 = in2[0];
- out[0] = ((0xfffffffffffffd6 + x5) - x17);
- out[1] = ((0xffffffffffffffe + x7) - x19);
- out[2] = ((0xffffffffffffffe + x9) - x21);
- out[3] = ((0xffffffffffffffe + x11) - x23);
- out[4] = ((0xffffffffffffffe + x13) - x25);
- out[5] = ((0xffffffffffffffe + x15) - x27);
- out[6] = ((0xffffffffffffffe + x14) - x26);
- }}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e413m21/fesub.v b/src/Specific/solinas64_2e413m21/fesub.v
deleted file mode 100644
index 295dee681..000000000
--- a/src/Specific/solinas64_2e413m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e413m21/fesubDisplay.log b/src/Specific/solinas64_2e413m21/fesubDisplay.log
deleted file mode 100644
index ebf049655..000000000
--- a/src/Specific/solinas64_2e413m21/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
- (((0xffffffffffffffe + x14) - x26), ((0xffffffffffffffe + x15) - x27), ((0xffffffffffffffe + x13) - x25), ((0xffffffffffffffe + x11) - x23), ((0xffffffffffffffe + x9) - x21), ((0xffffffffffffffe + x7) - x19), ((0xfffffffffffffd6 + x5) - x17)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21/fesubDisplay.v b/src/Specific/solinas64_2e413m21/fesubDisplay.v
deleted file mode 100644
index 1f932feb9..000000000
--- a/src/Specific/solinas64_2e413m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e413m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e413m21/freeze.c b/src/Specific/solinas64_2e413m21/freeze.c
deleted file mode 100644
index 8d63463bc..000000000
--- a/src/Specific/solinas64_2e413m21/freeze.c
+++ /dev/null
@@ -1,39 +0,0 @@
-static void freeze(uint64_t out[7], const uint64_t in1[7]) {
- { const uint64_t x11 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffeb);
- { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffffffffffff);
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffffffffffff);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffffffffffff);
- { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffffffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffffffffffff);
- { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- { uint64_t x35 = (x34 & 0x7ffffffffffffeb);
- { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- { uint64_t x39 = (x34 & 0x7ffffffffffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- { uint64_t x43 = (x34 & 0x7ffffffffffffff);
- { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- { uint64_t x47 = (x34 & 0x7ffffffffffffff);
- { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- { uint64_t x51 = (x34 & 0x7ffffffffffffff);
- { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- { uint64_t x55 = (x34 & 0x7ffffffffffffff);
- { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- { uint64_t x59 = (x34 & 0x7ffffffffffffff);
- { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- out[0] = x37;
- out[1] = x41;
- out[2] = x45;
- out[3] = x49;
- out[4] = x53;
- out[5] = x57;
- out[6] = x61;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e413m21/freeze.v b/src/Specific/solinas64_2e413m21/freeze.v
deleted file mode 100644
index ba2d0beaa..000000000
--- a/src/Specific/solinas64_2e413m21/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e413m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e413m21/freezeDisplay.log b/src/Specific/solinas64_2e413m21/freezeDisplay.log
deleted file mode 100644
index e69dc348c..000000000
--- a/src/Specific/solinas64_2e413m21/freezeDisplay.log
+++ /dev/null
@@ -1,29 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x11, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffeb);
- uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffffffffffff);
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffffffffffff);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffffffffffff);
- uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffffffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffffffffffff);
- uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
- uint64_t x35 = (x34 & 0x7ffffffffffffeb);
- uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
- uint64_t x39 = (x34 & 0x7ffffffffffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
- uint64_t x43 = (x34 & 0x7ffffffffffffff);
- uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
- uint64_t x47 = (x34 & 0x7ffffffffffffff);
- uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
- uint64_t x51 = (x34 & 0x7ffffffffffffff);
- uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
- uint64_t x55 = (x34 & 0x7ffffffffffffff);
- uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
- uint64_t x59 = (x34 & 0x7ffffffffffffff);
- uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
- (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21/freezeDisplay.v b/src/Specific/solinas64_2e413m21/freezeDisplay.v
deleted file mode 100644
index 6bbcfba54..000000000
--- a/src/Specific/solinas64_2e413m21/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e413m21.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e413m21/CurveParameters.v b/src/Specific/solinas64_2e413m21_7limbs/CurveParameters.v
index a438267f2..a438267f2 100644
--- a/src/Specific/solinas64_2e413m21/CurveParameters.v
+++ b/src/Specific/solinas64_2e413m21_7limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e413m21_7limbs/Synthesis.v b/src/Specific/solinas64_2e413m21_7limbs/Synthesis.v
new file mode 100644
index 000000000..1ba1141ee
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e413m21/compiler.sh b/src/Specific/solinas64_2e413m21_7limbs/compiler.sh
index 16654438f..16654438f 100755
--- a/src/Specific/solinas64_2e413m21/compiler.sh
+++ b/src/Specific/solinas64_2e413m21_7limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e413m21/compilerxx.sh b/src/Specific/solinas64_2e413m21_7limbs/compilerxx.sh
index 6160ede07..6160ede07 100755
--- a/src/Specific/solinas64_2e413m21/compilerxx.sh
+++ b/src/Specific/solinas64_2e413m21_7limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e413m21_7limbs/feadd.v b/src/Specific/solinas64_2e413m21_7limbs/feadd.v
new file mode 100644
index 000000000..4f084ebc8
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.v b/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.v
new file mode 100644
index 000000000..732dda844
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/femul.v b/src/Specific/solinas64_2e413m21_7limbs/femul.v
new file mode 100644
index 000000000..f66ab43a7
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.v b/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.v
new file mode 100644
index 000000000..4a2ca9f64
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesquare.v b/src/Specific/solinas64_2e413m21_7limbs/fesquare.v
new file mode 100644
index 000000000..2fc57c04a
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.v b/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1aa4a7219
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesub.v b/src/Specific/solinas64_2e413m21_7limbs/fesub.v
new file mode 100644
index 000000000..a7555e264
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.v b/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.v
new file mode 100644
index 000000000..7806b4d66
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/freeze.v b/src/Specific/solinas64_2e413m21_7limbs/freeze.v
new file mode 100644
index 000000000..0720ad367
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.v b/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.v
new file mode 100644
index 000000000..7d37a865e
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_7limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e413m21/py_interpreter.sh b/src/Specific/solinas64_2e413m21_7limbs/py_interpreter.sh
index 01e4933a1..01e4933a1 100755
--- a/src/Specific/solinas64_2e413m21/py_interpreter.sh
+++ b/src/Specific/solinas64_2e413m21_7limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e413m21_8limbs/CurveParameters.v b/src/Specific/solinas64_2e413m21_8limbs/CurveParameters.v
new file mode 100644
index 000000000..ecbfee66f
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^413 - 21
+Base: 51.625
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 51 + 5/8;
+ bitwidth := 64;
+ s := 2^413;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/Synthesis.v b/src/Specific/solinas64_2e413m21_8limbs/Synthesis.v
new file mode 100644
index 000000000..313c87563
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/compiler.sh b/src/Specific/solinas64_2e413m21_8limbs/compiler.sh
new file mode 100755
index 000000000..a428fbadc
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,51,52,52,51,52,51}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas64_2e413m21_8limbs/compilerxx.sh b/src/Specific/solinas64_2e413m21_8limbs/compilerxx.sh
new file mode 100755
index 000000000..66384205e
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,51,52,52,51,52,51}' -Dmodulus_array='{0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<413) - 21' "$@"
diff --git a/src/Specific/solinas64_2e413m21_8limbs/feadd.v b/src/Specific/solinas64_2e413m21_8limbs/feadd.v
new file mode 100644
index 000000000..dc239411e
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e413m21_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..96294562a
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/femul.v b/src/Specific/solinas64_2e413m21_8limbs/femul.v
new file mode 100644
index 000000000..3aae424d9
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/femulDisplay.v b/src/Specific/solinas64_2e413m21_8limbs/femulDisplay.v
new file mode 100644
index 000000000..973f2c3a1
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesquare.v b/src/Specific/solinas64_2e413m21_8limbs/fesquare.v
new file mode 100644
index 000000000..0522eb251
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e413m21_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f47630fa4
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesub.v b/src/Specific/solinas64_2e413m21_8limbs/fesub.v
new file mode 100644
index 000000000..a29aa29d4
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..26993d578
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/freeze.v b/src/Specific/solinas64_2e413m21_8limbs/freeze.v
new file mode 100644
index 000000000..286bd65cd
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..31da58108
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e413m21_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e413m21_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e413m21_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..7208e6f21
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**413 - 21' -Dmodulus_bytes='51.625' -Da24='121665'
diff --git a/src/Specific/solinas64_2e414m17/Synthesis.v b/src/Specific/solinas64_2e414m17/Synthesis.v
deleted file mode 100644
index d1b6aebc4..000000000
--- a/src/Specific/solinas64_2e414m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e414m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e414m17/feadd.c b/src/Specific/solinas64_2e414m17/feadd.c
deleted file mode 100644
index 98ab4434c..000000000
--- a/src/Specific/solinas64_2e414m17/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e414m17/feadd.v b/src/Specific/solinas64_2e414m17/feadd.v
deleted file mode 100644
index a81b5f3e4..000000000
--- a/src/Specific/solinas64_2e414m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e414m17/feaddDisplay.log b/src/Specific/solinas64_2e414m17/feaddDisplay.log
deleted file mode 100644
index 3b92b1c5c..000000000
--- a/src/Specific/solinas64_2e414m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e414m17/feaddDisplay.v b/src/Specific/solinas64_2e414m17/feaddDisplay.v
deleted file mode 100644
index 5c74ccfdd..000000000
--- a/src/Specific/solinas64_2e414m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e414m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e414m17/femul.c b/src/Specific/solinas64_2e414m17/femul.c
deleted file mode 100644
index 1a394a727..000000000
--- a/src/Specific/solinas64_2e414m17/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- { uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
- { uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
- { uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
- { uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
- { uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x11 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- { uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
- { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
- { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- { uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
- { uint64_t x45 = (uint64_t) (x44 >> 0x2e);
- { uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffff);
- { uint128_t x47 = (x45 + x43);
- { uint64_t x48 = (uint64_t) (x47 >> 0x2e);
- { uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffff);
- { uint128_t x50 = (x48 + x42);
- { uint64_t x51 = (uint64_t) (x50 >> 0x2e);
- { uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffff);
- { uint128_t x53 = (x51 + x41);
- { uint64_t x54 = (uint64_t) (x53 >> 0x2e);
- { uint64_t x55 = ((uint64_t)x53 & 0x3fffffffffff);
- { uint128_t x56 = (x54 + x40);
- { uint64_t x57 = (uint64_t) (x56 >> 0x2e);
- { uint64_t x58 = ((uint64_t)x56 & 0x3fffffffffff);
- { uint128_t x59 = (x57 + x39);
- { uint64_t x60 = (uint64_t) (x59 >> 0x2e);
- { uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffff);
- { uint128_t x62 = (x60 + x38);
- { uint64_t x63 = (uint64_t) (x62 >> 0x2e);
- { uint64_t x64 = ((uint64_t)x62 & 0x3fffffffffff);
- { uint128_t x65 = (x63 + x37);
- { uint64_t x66 = (uint64_t) (x65 >> 0x2e);
- { uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffff);
- { uint128_t x68 = (x66 + x36);
- { uint64_t x69 = (uint64_t) (x68 >> 0x2e);
- { uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffff);
- { uint64_t x71 = (x46 + (0x11 * x69));
- { uint64_t x72 = (x71 >> 0x2e);
- { uint64_t x73 = (x71 & 0x3fffffffffff);
- { uint64_t x74 = (x72 + x49);
- { uint64_t x75 = (x74 >> 0x2e);
- { uint64_t x76 = (x74 & 0x3fffffffffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e414m17/femul.v b/src/Specific/solinas64_2e414m17/femul.v
deleted file mode 100644
index 1b95a5859..000000000
--- a/src/Specific/solinas64_2e414m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e414m17/femulDisplay.log b/src/Specific/solinas64_2e414m17/femulDisplay.log
deleted file mode 100644
index 0a1c91fcd..000000000
--- a/src/Specific/solinas64_2e414m17/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
- uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x11 * ((uint128_t)x18 * x34)));
- uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x11 * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
- uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x11 * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
- uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x11 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x11 * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
- uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x11 * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
- uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x11 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- uint128_t x44 = (((uint128_t)x5 * x21) + (0x11 * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
- uint64_t x45 = (uint64_t) (x44 >> 0x2e);
- uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffff);
- uint128_t x47 = (x45 + x43);
- uint64_t x48 = (uint64_t) (x47 >> 0x2e);
- uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffff);
- uint128_t x50 = (x48 + x42);
- uint64_t x51 = (uint64_t) (x50 >> 0x2e);
- uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffff);
- uint128_t x53 = (x51 + x41);
- uint64_t x54 = (uint64_t) (x53 >> 0x2e);
- uint64_t x55 = ((uint64_t)x53 & 0x3fffffffffff);
- uint128_t x56 = (x54 + x40);
- uint64_t x57 = (uint64_t) (x56 >> 0x2e);
- uint64_t x58 = ((uint64_t)x56 & 0x3fffffffffff);
- uint128_t x59 = (x57 + x39);
- uint64_t x60 = (uint64_t) (x59 >> 0x2e);
- uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffff);
- uint128_t x62 = (x60 + x38);
- uint64_t x63 = (uint64_t) (x62 >> 0x2e);
- uint64_t x64 = ((uint64_t)x62 & 0x3fffffffffff);
- uint128_t x65 = (x63 + x37);
- uint64_t x66 = (uint64_t) (x65 >> 0x2e);
- uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffff);
- uint128_t x68 = (x66 + x36);
- uint64_t x69 = (uint64_t) (x68 >> 0x2e);
- uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffff);
- uint64_t x71 = (x46 + (0x11 * x69));
- uint64_t x72 = (x71 >> 0x2e);
- uint64_t x73 = (x71 & 0x3fffffffffff);
- uint64_t x74 = (x72 + x49);
- uint64_t x75 = (x74 >> 0x2e);
- uint64_t x76 = (x74 & 0x3fffffffffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e414m17/femulDisplay.v b/src/Specific/solinas64_2e414m17/femulDisplay.v
deleted file mode 100644
index 8343041fa..000000000
--- a/src/Specific/solinas64_2e414m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e414m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e414m17/fesquare.c b/src/Specific/solinas64_2e414m17/fesquare.c
deleted file mode 100644
index 596e43cf7..000000000
--- a/src/Specific/solinas64_2e414m17/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
- { uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
- { uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
- { uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
- { uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- { uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
- { uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
- { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- { uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
- { uint64_t x26 = (uint64_t) (x25 >> 0x2e);
- { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffff);
- { uint128_t x28 = (x26 + x24);
- { uint64_t x29 = (uint64_t) (x28 >> 0x2e);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffff);
- { uint128_t x31 = (x29 + x23);
- { uint64_t x32 = (uint64_t) (x31 >> 0x2e);
- { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffff);
- { uint128_t x34 = (x32 + x22);
- { uint64_t x35 = (uint64_t) (x34 >> 0x2e);
- { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
- { uint128_t x37 = (x35 + x21);
- { uint64_t x38 = (uint64_t) (x37 >> 0x2e);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
- { uint128_t x40 = (x38 + x20);
- { uint64_t x41 = (uint64_t) (x40 >> 0x2e);
- { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
- { uint128_t x43 = (x41 + x19);
- { uint64_t x44 = (uint64_t) (x43 >> 0x2e);
- { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
- { uint128_t x46 = (x44 + x18);
- { uint64_t x47 = (uint64_t) (x46 >> 0x2e);
- { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
- { uint128_t x49 = (x47 + x17);
- { uint64_t x50 = (uint64_t) (x49 >> 0x2e);
- { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffff);
- { uint64_t x52 = (x27 + (0x11 * x50));
- { uint64_t x53 = (x52 >> 0x2e);
- { uint64_t x54 = (x52 & 0x3fffffffffff);
- { uint64_t x55 = (x53 + x30);
- { uint64_t x56 = (x55 >> 0x2e);
- { uint64_t x57 = (x55 & 0x3fffffffffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e414m17/fesquare.v b/src/Specific/solinas64_2e414m17/fesquare.v
deleted file mode 100644
index de9cbbd8c..000000000
--- a/src/Specific/solinas64_2e414m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e414m17/fesquareDisplay.log b/src/Specific/solinas64_2e414m17/fesquareDisplay.log
deleted file mode 100644
index add6dcff0..000000000
--- a/src/Specific/solinas64_2e414m17/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
- uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * ((uint128_t)x15 * x15)));
- uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
- uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
- uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
- uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
- uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- uint128_t x25 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
- uint64_t x26 = (uint64_t) (x25 >> 0x2e);
- uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffff);
- uint128_t x28 = (x26 + x24);
- uint64_t x29 = (uint64_t) (x28 >> 0x2e);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffff);
- uint128_t x31 = (x29 + x23);
- uint64_t x32 = (uint64_t) (x31 >> 0x2e);
- uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffff);
- uint128_t x34 = (x32 + x22);
- uint64_t x35 = (uint64_t) (x34 >> 0x2e);
- uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffff);
- uint128_t x37 = (x35 + x21);
- uint64_t x38 = (uint64_t) (x37 >> 0x2e);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffff);
- uint128_t x40 = (x38 + x20);
- uint64_t x41 = (uint64_t) (x40 >> 0x2e);
- uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffff);
- uint128_t x43 = (x41 + x19);
- uint64_t x44 = (uint64_t) (x43 >> 0x2e);
- uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffff);
- uint128_t x46 = (x44 + x18);
- uint64_t x47 = (uint64_t) (x46 >> 0x2e);
- uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffff);
- uint128_t x49 = (x47 + x17);
- uint64_t x50 = (uint64_t) (x49 >> 0x2e);
- uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffff);
- uint64_t x52 = (x27 + (0x11 * x50));
- uint64_t x53 = (x52 >> 0x2e);
- uint64_t x54 = (x52 & 0x3fffffffffff);
- uint64_t x55 = (x53 + x30);
- uint64_t x56 = (x55 >> 0x2e);
- uint64_t x57 = (x55 & 0x3fffffffffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e414m17/fesquareDisplay.v b/src/Specific/solinas64_2e414m17/fesquareDisplay.v
deleted file mode 100644
index 86d21ac2f..000000000
--- a/src/Specific/solinas64_2e414m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e414m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e414m17/fesub.c b/src/Specific/solinas64_2e414m17/fesub.c
deleted file mode 100644
index a655dc081..000000000
--- a/src/Specific/solinas64_2e414m17/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = ((0x7fffffffffde + x5) - x21);
- out[1] = ((0x7ffffffffffe + x7) - x23);
- out[2] = ((0x7ffffffffffe + x9) - x25);
- out[3] = ((0x7ffffffffffe + x11) - x27);
- out[4] = ((0x7ffffffffffe + x13) - x29);
- out[5] = ((0x7ffffffffffe + x15) - x31);
- out[6] = ((0x7ffffffffffe + x17) - x33);
- out[7] = ((0x7ffffffffffe + x19) - x35);
- out[8] = ((0x7ffffffffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e414m17/fesub.v b/src/Specific/solinas64_2e414m17/fesub.v
deleted file mode 100644
index d201e4480..000000000
--- a/src/Specific/solinas64_2e414m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e414m17/fesubDisplay.log b/src/Specific/solinas64_2e414m17/fesubDisplay.log
deleted file mode 100644
index b87ea5ac5..000000000
--- a/src/Specific/solinas64_2e414m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7ffffffffffe + x18) - x34), ((0x7ffffffffffe + x19) - x35), ((0x7ffffffffffe + x17) - x33), ((0x7ffffffffffe + x15) - x31), ((0x7ffffffffffe + x13) - x29), ((0x7ffffffffffe + x11) - x27), ((0x7ffffffffffe + x9) - x25), ((0x7ffffffffffe + x7) - x23), ((0x7fffffffffde + x5) - x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e414m17/fesubDisplay.v b/src/Specific/solinas64_2e414m17/fesubDisplay.v
deleted file mode 100644
index 6003c1cab..000000000
--- a/src/Specific/solinas64_2e414m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e414m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e414m17/freeze.c b/src/Specific/solinas64_2e414m17/freeze.c
deleted file mode 100644
index 28c8008cd..000000000
--- a/src/Specific/solinas64_2e414m17/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffef);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffffffffff);
- { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffff);
- { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- { uint64_t x45 = (x44 & 0x3fffffffffef);
- { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint64_t x49 = (x44 & 0x3fffffffffff);
- { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint64_t x53 = (x44 & 0x3fffffffffff);
- { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint64_t x57 = (x44 & 0x3fffffffffff);
- { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint64_t x61 = (x44 & 0x3fffffffffff);
- { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint64_t x65 = (x44 & 0x3fffffffffff);
- { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint64_t x69 = (x44 & 0x3fffffffffff);
- { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint64_t x73 = (x44 & 0x3fffffffffff);
- { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint64_t x77 = (x44 & 0x3fffffffffff);
- { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e414m17/freeze.v b/src/Specific/solinas64_2e414m17/freeze.v
deleted file mode 100644
index 7574a70dd..000000000
--- a/src/Specific/solinas64_2e414m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e414m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e414m17/freezeDisplay.log b/src/Specific/solinas64_2e414m17/freezeDisplay.log
deleted file mode 100644
index bb142d9dd..000000000
--- a/src/Specific/solinas64_2e414m17/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffef);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x3fffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffffffffff);
- uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x3fffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffff);
- uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- uint64_t x45 = (x44 & 0x3fffffffffef);
- uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint64_t x49 = (x44 & 0x3fffffffffff);
- uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint64_t x53 = (x44 & 0x3fffffffffff);
- uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint64_t x57 = (x44 & 0x3fffffffffff);
- uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint64_t x61 = (x44 & 0x3fffffffffff);
- uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint64_t x65 = (x44 & 0x3fffffffffff);
- uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint64_t x69 = (x44 & 0x3fffffffffff);
- uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint64_t x73 = (x44 & 0x3fffffffffff);
- uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint64_t x77 = (x44 & 0x3fffffffffff);
- uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e414m17/freezeDisplay.v b/src/Specific/solinas64_2e414m17/freezeDisplay.v
deleted file mode 100644
index 4c84f66e2..000000000
--- a/src/Specific/solinas64_2e414m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e414m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/CurveParameters.v b/src/Specific/solinas64_2e414m17_8limbs/CurveParameters.v
new file mode 100644
index 000000000..079887992
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^414 - 17
+Base: 51.75
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 8%nat;
+ base := 51 + 3/4;
+ bitwidth := 64;
+ s := 2^414;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 8); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/Synthesis.v b/src/Specific/solinas64_2e414m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..269b06586
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/compiler.sh b/src/Specific/solinas64_2e414m17_8limbs/compiler.sh
new file mode 100755
index 000000000..45e717a9c
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,51,52,52,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas64_2e414m17_8limbs/compilerxx.sh b/src/Specific/solinas64_2e414m17_8limbs/compilerxx.sh
new file mode 100755
index 000000000..80dcd2d54
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,51,52,52,52,51}' -Dmodulus_array='{0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='8' -Dq_mpz='(1_mpz<<414) - 17' "$@"
diff --git a/src/Specific/solinas64_2e414m17_8limbs/feadd.v b/src/Specific/solinas64_2e414m17_8limbs/feadd.v
new file mode 100644
index 000000000..e97057889
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e414m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..414bcde1c
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/femul.v b/src/Specific/solinas64_2e414m17_8limbs/femul.v
new file mode 100644
index 000000000..f89c1d239
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/femulDisplay.v b/src/Specific/solinas64_2e414m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..82d267026
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesquare.v b/src/Specific/solinas64_2e414m17_8limbs/fesquare.v
new file mode 100644
index 000000000..d014136de
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e414m17_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f671b0ac2
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesub.v b/src/Specific/solinas64_2e414m17_8limbs/fesub.v
new file mode 100644
index 000000000..584e148bf
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..975673e68
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/freeze.v b/src/Specific/solinas64_2e414m17_8limbs/freeze.v
new file mode 100644
index 000000000..c8429350e
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e414m17_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..55b0dd379
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e414m17_8limbs/py_interpreter.sh b/src/Specific/solinas64_2e414m17_8limbs/py_interpreter.sh
new file mode 100755
index 000000000..8533481fd
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_8limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**414 - 17' -Dmodulus_bytes='51.75' -Da24='121665'
diff --git a/src/Specific/solinas64_2e414m17/CurveParameters.v b/src/Specific/solinas64_2e414m17_9limbs/CurveParameters.v
index 0567d0263..0567d0263 100644
--- a/src/Specific/solinas64_2e414m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e414m17_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e414m17_9limbs/Synthesis.v b/src/Specific/solinas64_2e414m17_9limbs/Synthesis.v
new file mode 100644
index 000000000..6c1790a28
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e414m17/compiler.sh b/src/Specific/solinas64_2e414m17_9limbs/compiler.sh
index 3cea8fe3c..3cea8fe3c 100755
--- a/src/Specific/solinas64_2e414m17/compiler.sh
+++ b/src/Specific/solinas64_2e414m17_9limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e414m17/compilerxx.sh b/src/Specific/solinas64_2e414m17_9limbs/compilerxx.sh
index a37fd93fa..a37fd93fa 100755
--- a/src/Specific/solinas64_2e414m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e414m17_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e414m17_9limbs/feadd.v b/src/Specific/solinas64_2e414m17_9limbs/feadd.v
new file mode 100644
index 000000000..7b234fbe0
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e414m17_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..d70976340
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/femul.v b/src/Specific/solinas64_2e414m17_9limbs/femul.v
new file mode 100644
index 000000000..93bd82561
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/femulDisplay.v b/src/Specific/solinas64_2e414m17_9limbs/femulDisplay.v
new file mode 100644
index 000000000..2b62b2c03
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/fesquare.v b/src/Specific/solinas64_2e414m17_9limbs/fesquare.v
new file mode 100644
index 000000000..c94ae6843
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e414m17_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..26c16f457
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/fesub.v b/src/Specific/solinas64_2e414m17_9limbs/fesub.v
new file mode 100644
index 000000000..9911a5d7c
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e414m17_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..c36c7dd31
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/freeze.v b/src/Specific/solinas64_2e414m17_9limbs/freeze.v
new file mode 100644
index 000000000..10de9168f
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e414m17_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e414m17_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..85fa4f71d
--- /dev/null
+++ b/src/Specific/solinas64_2e414m17_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e414m17_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e414m17/py_interpreter.sh b/src/Specific/solinas64_2e414m17_9limbs/py_interpreter.sh
index c4fc58e3c..c4fc58e3c 100755
--- a/src/Specific/solinas64_2e414m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e414m17_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e416m2e208m1/Synthesis.v b/src/Specific/solinas64_2e416m2e208m1/Synthesis.v
deleted file mode 100644
index f36fcabec..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e416m2e208m1/feadd.c b/src/Specific/solinas64_2e416m2e208m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e416m2e208m1/feadd.v b/src/Specific/solinas64_2e416m2e208m1/feadd.v
deleted file mode 100644
index 3b9192f02..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.log b/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.v b/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.v
deleted file mode 100644
index 58a5b9ed4..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e416m2e208m1/femul.c b/src/Specific/solinas64_2e416m2e208m1/femul.c
deleted file mode 100644
index f86ca1d3f..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/femul.c
+++ /dev/null
@@ -1,81 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- { uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- { uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- { uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- { uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- { uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- { uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- { uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- { uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- { uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- { uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- { uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- { uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- { uint64_t x46 = (uint64_t) (x42 >> 0x34);
- { uint64_t x47 = ((uint64_t)x42 & 0xfffffffffffff);
- { uint64_t x48 = (uint64_t) (x35 >> 0x34);
- { uint64_t x49 = ((uint64_t)x35 & 0xfffffffffffff);
- { uint128_t x50 = (((uint128_t)0x10000000000000 * x48) + x49);
- { uint64_t x51 = (uint64_t) (x50 >> 0x34);
- { uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffff);
- { uint128_t x53 = ((x46 + x41) + x51);
- { uint64_t x54 = (uint64_t) (x53 >> 0x34);
- { uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffff);
- { uint128_t x56 = (x45 + x51);
- { uint64_t x57 = (uint64_t) (x56 >> 0x34);
- { uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffff);
- { uint128_t x59 = (x54 + x40);
- { uint64_t x60 = (uint64_t) (x59 >> 0x34);
- { uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffff);
- { uint128_t x62 = (x57 + x44);
- { uint64_t x63 = (uint64_t) (x62 >> 0x34);
- { uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffff);
- { uint128_t x65 = (x60 + x39);
- { uint64_t x66 = (uint64_t) (x65 >> 0x34);
- { uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffff);
- { uint128_t x68 = (x63 + x43);
- { uint64_t x69 = (uint64_t) (x68 >> 0x34);
- { uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffff);
- { uint64_t x71 = (x66 + x52);
- { uint64_t x72 = (x71 >> 0x34);
- { uint64_t x73 = (x71 & 0xfffffffffffff);
- { uint64_t x74 = (x69 + x47);
- { uint64_t x75 = (x74 >> 0x34);
- { uint64_t x76 = (x74 & 0xfffffffffffff);
- { uint64_t x77 = ((0x10000000000000 * x72) + x73);
- { uint64_t x78 = (x77 >> 0x34);
- { uint64_t x79 = (x77 & 0xfffffffffffff);
- { uint64_t x80 = ((x75 + x55) + x78);
- { uint64_t x81 = (x80 >> 0x34);
- { uint64_t x82 = (x80 & 0xfffffffffffff);
- { uint64_t x83 = (x58 + x78);
- { uint64_t x84 = (x83 >> 0x34);
- { uint64_t x85 = (x83 & 0xfffffffffffff);
- out[0] = x85;
- out[1] = (x84 + x64);
- out[2] = x70;
- out[3] = x76;
- out[4] = x82;
- out[5] = (x81 + x61);
- out[6] = x67;
- out[7] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e416m2e208m1/femul.v b/src/Specific/solinas64_2e416m2e208m1/femul.v
deleted file mode 100644
index 6bfc5be2f..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1/femulDisplay.log b/src/Specific/solinas64_2e416m2e208m1/femulDisplay.log
deleted file mode 100644
index b80ae858e..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- uint64_t x46 = (uint64_t) (x42 >> 0x34);
- uint64_t x47 = ((uint64_t)x42 & 0xfffffffffffff);
- uint64_t x48 = (uint64_t) (x35 >> 0x34);
- uint64_t x49 = ((uint64_t)x35 & 0xfffffffffffff);
- uint128_t x50 = (((uint128_t)0x10000000000000 * x48) + x49);
- uint64_t x51 = (uint64_t) (x50 >> 0x34);
- uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffff);
- uint128_t x53 = ((x46 + x41) + x51);
- uint64_t x54 = (uint64_t) (x53 >> 0x34);
- uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffff);
- uint128_t x56 = (x45 + x51);
- uint64_t x57 = (uint64_t) (x56 >> 0x34);
- uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffff);
- uint128_t x59 = (x54 + x40);
- uint64_t x60 = (uint64_t) (x59 >> 0x34);
- uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffff);
- uint128_t x62 = (x57 + x44);
- uint64_t x63 = (uint64_t) (x62 >> 0x34);
- uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffff);
- uint128_t x65 = (x60 + x39);
- uint64_t x66 = (uint64_t) (x65 >> 0x34);
- uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffff);
- uint128_t x68 = (x63 + x43);
- uint64_t x69 = (uint64_t) (x68 >> 0x34);
- uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffff);
- uint64_t x71 = (x66 + x52);
- uint64_t x72 = (x71 >> 0x34);
- uint64_t x73 = (x71 & 0xfffffffffffff);
- uint64_t x74 = (x69 + x47);
- uint64_t x75 = (x74 >> 0x34);
- uint64_t x76 = (x74 & 0xfffffffffffff);
- uint64_t x77 = ((0x10000000000000 * x72) + x73);
- uint64_t x78 = (x77 >> 0x34);
- uint64_t x79 = (x77 & 0xfffffffffffff);
- uint64_t x80 = ((x75 + x55) + x78);
- uint64_t x81 = (x80 >> 0x34);
- uint64_t x82 = (x80 & 0xfffffffffffff);
- uint64_t x83 = (x58 + x78);
- uint64_t x84 = (x83 >> 0x34);
- uint64_t x85 = (x83 & 0xfffffffffffff);
- return (Return x79, Return x67, (x81 + x61), Return x82, Return x76, Return x70, (x84 + x64), Return x85))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v b/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v
deleted file mode 100644
index 5331972c2..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquare.c b/src/Specific/solinas64_2e416m2e208m1/fesquare.c
deleted file mode 100644
index 16272c033..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesquare.c
+++ /dev/null
@@ -1,73 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- { uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- { uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- { uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- { uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- { uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- { uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- { uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- { uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- { uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- { uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- { uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- { uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- { uint64_t x29 = (uint64_t) (x25 >> 0x34);
- { uint64_t x30 = ((uint64_t)x25 & 0xfffffffffffff);
- { uint64_t x31 = (uint64_t) (x18 >> 0x34);
- { uint64_t x32 = ((uint64_t)x18 & 0xfffffffffffff);
- { uint128_t x33 = (((uint128_t)0x10000000000000 * x31) + x32);
- { uint64_t x34 = (uint64_t) (x33 >> 0x34);
- { uint64_t x35 = ((uint64_t)x33 & 0xfffffffffffff);
- { uint128_t x36 = ((x29 + x24) + x34);
- { uint64_t x37 = (uint64_t) (x36 >> 0x34);
- { uint64_t x38 = ((uint64_t)x36 & 0xfffffffffffff);
- { uint128_t x39 = (x28 + x34);
- { uint64_t x40 = (uint64_t) (x39 >> 0x34);
- { uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffff);
- { uint128_t x42 = (x37 + x23);
- { uint64_t x43 = (uint64_t) (x42 >> 0x34);
- { uint64_t x44 = ((uint64_t)x42 & 0xfffffffffffff);
- { uint128_t x45 = (x40 + x27);
- { uint64_t x46 = (uint64_t) (x45 >> 0x34);
- { uint64_t x47 = ((uint64_t)x45 & 0xfffffffffffff);
- { uint128_t x48 = (x43 + x22);
- { uint64_t x49 = (uint64_t) (x48 >> 0x34);
- { uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffff);
- { uint128_t x51 = (x46 + x26);
- { uint64_t x52 = (uint64_t) (x51 >> 0x34);
- { uint64_t x53 = ((uint64_t)x51 & 0xfffffffffffff);
- { uint64_t x54 = (x49 + x35);
- { uint64_t x55 = (x54 >> 0x34);
- { uint64_t x56 = (x54 & 0xfffffffffffff);
- { uint64_t x57 = (x52 + x30);
- { uint64_t x58 = (x57 >> 0x34);
- { uint64_t x59 = (x57 & 0xfffffffffffff);
- { uint64_t x60 = ((0x10000000000000 * x55) + x56);
- { uint64_t x61 = (x60 >> 0x34);
- { uint64_t x62 = (x60 & 0xfffffffffffff);
- { uint64_t x63 = ((x58 + x38) + x61);
- { uint64_t x64 = (x63 >> 0x34);
- { uint64_t x65 = (x63 & 0xfffffffffffff);
- { uint64_t x66 = (x41 + x61);
- { uint64_t x67 = (x66 >> 0x34);
- { uint64_t x68 = (x66 & 0xfffffffffffff);
- out[0] = x68;
- out[1] = (x67 + x47);
- out[2] = x53;
- out[3] = x59;
- out[4] = x65;
- out[5] = (x64 + x44);
- out[6] = x50;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquare.v b/src/Specific/solinas64_2e416m2e208m1/fesquare.v
deleted file mode 100644
index db50753e7..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.log b/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.log
deleted file mode 100644
index 104992b7a..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- uint64_t x29 = (uint64_t) (x25 >> 0x34);
- uint64_t x30 = ((uint64_t)x25 & 0xfffffffffffff);
- uint64_t x31 = (uint64_t) (x18 >> 0x34);
- uint64_t x32 = ((uint64_t)x18 & 0xfffffffffffff);
- uint128_t x33 = (((uint128_t)0x10000000000000 * x31) + x32);
- uint64_t x34 = (uint64_t) (x33 >> 0x34);
- uint64_t x35 = ((uint64_t)x33 & 0xfffffffffffff);
- uint128_t x36 = ((x29 + x24) + x34);
- uint64_t x37 = (uint64_t) (x36 >> 0x34);
- uint64_t x38 = ((uint64_t)x36 & 0xfffffffffffff);
- uint128_t x39 = (x28 + x34);
- uint64_t x40 = (uint64_t) (x39 >> 0x34);
- uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffff);
- uint128_t x42 = (x37 + x23);
- uint64_t x43 = (uint64_t) (x42 >> 0x34);
- uint64_t x44 = ((uint64_t)x42 & 0xfffffffffffff);
- uint128_t x45 = (x40 + x27);
- uint64_t x46 = (uint64_t) (x45 >> 0x34);
- uint64_t x47 = ((uint64_t)x45 & 0xfffffffffffff);
- uint128_t x48 = (x43 + x22);
- uint64_t x49 = (uint64_t) (x48 >> 0x34);
- uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffff);
- uint128_t x51 = (x46 + x26);
- uint64_t x52 = (uint64_t) (x51 >> 0x34);
- uint64_t x53 = ((uint64_t)x51 & 0xfffffffffffff);
- uint64_t x54 = (x49 + x35);
- uint64_t x55 = (x54 >> 0x34);
- uint64_t x56 = (x54 & 0xfffffffffffff);
- uint64_t x57 = (x52 + x30);
- uint64_t x58 = (x57 >> 0x34);
- uint64_t x59 = (x57 & 0xfffffffffffff);
- uint64_t x60 = ((0x10000000000000 * x55) + x56);
- uint64_t x61 = (x60 >> 0x34);
- uint64_t x62 = (x60 & 0xfffffffffffff);
- uint64_t x63 = ((x58 + x38) + x61);
- uint64_t x64 = (x63 >> 0x34);
- uint64_t x65 = (x63 & 0xfffffffffffff);
- uint64_t x66 = (x41 + x61);
- uint64_t x67 = (x66 >> 0x34);
- uint64_t x68 = (x66 & 0xfffffffffffff);
- return (Return x62, Return x50, (x64 + x44), Return x65, Return x59, Return x53, (x67 + x47), Return x68))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v b/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v
deleted file mode 100644
index 9c649ca70..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesub.c b/src/Specific/solinas64_2e416m2e208m1/fesub.c
deleted file mode 100644
index 062dbfba7..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1ffffffffffffe + x5) - x19);
- out[1] = ((0x1ffffffffffffe + x7) - x21);
- out[2] = ((0x1ffffffffffffe + x9) - x23);
- out[3] = ((0x1ffffffffffffe + x11) - x25);
- out[4] = ((0x1ffffffffffffc + x13) - x27);
- out[5] = ((0x1ffffffffffffe + x15) - x29);
- out[6] = ((0x1ffffffffffffe + x17) - x31);
- out[7] = ((0x1ffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesub.v b/src/Specific/solinas64_2e416m2e208m1/fesub.v
deleted file mode 100644
index f3947d83d..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.log b/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.log
deleted file mode 100644
index d2e418157..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1ffffffffffffe + x16) - x30), ((0x1ffffffffffffe + x17) - x31), ((0x1ffffffffffffe + x15) - x29), ((0x1ffffffffffffc + x13) - x27), ((0x1ffffffffffffe + x11) - x25), ((0x1ffffffffffffe + x9) - x23), ((0x1ffffffffffffe + x7) - x21), ((0x1ffffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.v b/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.v
deleted file mode 100644
index 155e5c00d..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1/freeze.c b/src/Specific/solinas64_2e416m2e208m1/freeze.c
deleted file mode 100644
index 9c2472af2..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffe);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xfffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xfffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xfffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xfffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffffe);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xfffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xfffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xfffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e416m2e208m1/freeze.v b/src/Specific/solinas64_2e416m2e208m1/freeze.v
deleted file mode 100644
index 363cb2fd5..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.log b/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.log
deleted file mode 100644
index 69c2c9bb3..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffe);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xfffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xfffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xfffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xfffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffffe);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xfffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xfffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xfffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v b/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v
deleted file mode 100644
index a7b62b2a4..000000000
--- a/src/Specific/solinas64_2e416m2e208m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e416m2e208m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1/CurveParameters.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/CurveParameters.v
index d8528c1df..d8528c1df 100644
--- a/src/Specific/solinas64_2e416m2e208m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/Synthesis.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..787f818c6
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e416m2e208m1/compiler.sh b/src/Specific/solinas64_2e416m2e208m1_8limbs/compiler.sh
index cbe6f48e0..cbe6f48e0 100755
--- a/src/Specific/solinas64_2e416m2e208m1/compiler.sh
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e416m2e208m1/compilerxx.sh b/src/Specific/solinas64_2e416m2e208m1_8limbs/compilerxx.sh
index 6749ee906..6749ee906 100755
--- a/src/Specific/solinas64_2e416m2e208m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/feadd.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/feadd.v
new file mode 100644
index 000000000..142556819
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..e7175914c
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/femul.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/femul.v
new file mode 100644
index 000000000..d7d8bde2b
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/femulDisplay.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..b4bcf0ae7
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquare.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquare.v
new file mode 100644
index 000000000..b999a7185
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..69b43c499
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/fesub.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesub.v
new file mode 100644
index 000000000..6beeb6097
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..2b528a81e
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/freeze.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/freeze.v
new file mode 100644
index 000000000..8a138284c
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e416m2e208m1_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..63753e120
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1/py_interpreter.sh b/src/Specific/solinas64_2e416m2e208m1_8limbs/py_interpreter.sh
index 6071e4353..6071e4353 100755
--- a/src/Specific/solinas64_2e416m2e208m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e416m2e208m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/CurveParameters.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/CurveParameters.v
new file mode 100644
index 000000000..cedac9027
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^416 - 2^208 - 1
+Base: 46 + 2/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 46 + 2/9;
+ bitwidth := 64;
+ s := 2^416;
+ c := [(1, 1); (2^208, 1)];
+ carry_chains := Some [[3; 8]; [4; 0; 5; 1; 6; 2; 7; 3; 8]; [4; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/Synthesis.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/Synthesis.v
new file mode 100644
index 000000000..756a7b9a7
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/compiler.sh b/src/Specific/solinas64_2e416m2e208m1_9limbs/compiler.sh
new file mode 100755
index 000000000..4b6d95a3e
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,47,46,46,46,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1' "$@"
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/compilerxx.sh b/src/Specific/solinas64_2e416m2e208m1_9limbs/compilerxx.sh
new file mode 100755
index 000000000..c532d42db
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,46,46,47,46,46,46,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='52' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<416) - (1_mpz<<208) - 1' "$@"
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/feadd.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/feadd.v
new file mode 100644
index 000000000..4ffeda906
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..da893766e
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/femul.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/femul.v
new file mode 100644
index 000000000..cf8274d11
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/femulDisplay.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/femulDisplay.v
new file mode 100644
index 000000000..1e28b3376
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquare.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquare.v
new file mode 100644
index 000000000..9a2b32d83
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..e2035e25b
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.v
new file mode 100644
index 000000000..bd0cb2eef
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..e665443fe
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.v
new file mode 100644
index 000000000..a0c5a8941
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..91f8418bb
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e416m2e208m1_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e416m2e208m1_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e416m2e208m1_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..268bc14e4
--- /dev/null
+++ b/src/Specific/solinas64_2e416m2e208m1_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**416 - 2**208 - 1' -Dmodulus_bytes='46 + 2/9' -Da24='121665'
diff --git a/src/Specific/solinas64_2e444m17/Synthesis.v b/src/Specific/solinas64_2e444m17/Synthesis.v
deleted file mode 100644
index 4ba5af55f..000000000
--- a/src/Specific/solinas64_2e444m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e444m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e444m17/feadd.c b/src/Specific/solinas64_2e444m17/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e444m17/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e444m17/feadd.v b/src/Specific/solinas64_2e444m17/feadd.v
deleted file mode 100644
index 61c4afbc6..000000000
--- a/src/Specific/solinas64_2e444m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e444m17/feaddDisplay.log b/src/Specific/solinas64_2e444m17/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e444m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e444m17/feaddDisplay.v b/src/Specific/solinas64_2e444m17/feaddDisplay.v
deleted file mode 100644
index 71e6d7289..000000000
--- a/src/Specific/solinas64_2e444m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e444m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e444m17/femul.c b/src/Specific/solinas64_2e444m17/femul.c
deleted file mode 100644
index 5c0dca159..000000000
--- a/src/Specific/solinas64_2e444m17/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint128_t)x16 * x30))));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x11 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x11 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x11 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x11 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x11 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- { uint128_t x40 = (x39 >> 0x38);
- { uint64_t x41 = ((uint64_t)x39 & 0xffffffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint128_t x43 = (x42 >> 0x37);
- { uint64_t x44 = ((uint64_t)x42 & 0x7fffffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint128_t x46 = (x45 >> 0x38);
- { uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint128_t x49 = (x48 >> 0x37);
- { uint64_t x50 = ((uint64_t)x48 & 0x7fffffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint128_t x52 = (x51 >> 0x38);
- { uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint128_t x55 = (x54 >> 0x37);
- { uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint64_t x58 = (uint64_t) (x57 >> 0x38);
- { uint64_t x59 = ((uint64_t)x57 & 0xffffffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint64_t x61 = (uint64_t) (x60 >> 0x37);
- { uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffffff);
- { uint128_t x63 = (x41 + ((uint128_t)0x11 * x61));
- { uint64_t x64 = (uint64_t) (x63 >> 0x38);
- { uint64_t x65 = ((uint64_t)x63 & 0xffffffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x37);
- { uint64_t x68 = (x66 & 0x7fffffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e444m17/femul.v b/src/Specific/solinas64_2e444m17/femul.v
deleted file mode 100644
index 02bf481fc..000000000
--- a/src/Specific/solinas64_2e444m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e444m17/femulDisplay.log b/src/Specific/solinas64_2e444m17/femulDisplay.log
deleted file mode 100644
index 09148bf5d..000000000
--- a/src/Specific/solinas64_2e444m17/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint128_t)x16 * x30))));
- uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x11 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x11 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x11 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x11 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x11 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- uint128_t x40 = (x39 >> 0x38);
- uint64_t x41 = ((uint64_t)x39 & 0xffffffffffffff);
- uint128_t x42 = (x40 + x38);
- uint128_t x43 = (x42 >> 0x37);
- uint64_t x44 = ((uint64_t)x42 & 0x7fffffffffffff);
- uint128_t x45 = (x43 + x37);
- uint128_t x46 = (x45 >> 0x38);
- uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- uint128_t x48 = (x46 + x36);
- uint128_t x49 = (x48 >> 0x37);
- uint64_t x50 = ((uint64_t)x48 & 0x7fffffffffffff);
- uint128_t x51 = (x49 + x35);
- uint128_t x52 = (x51 >> 0x38);
- uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- uint128_t x54 = (x52 + x34);
- uint128_t x55 = (x54 >> 0x37);
- uint64_t x56 = ((uint64_t)x54 & 0x7fffffffffffff);
- uint128_t x57 = (x55 + x33);
- uint64_t x58 = (uint64_t) (x57 >> 0x38);
- uint64_t x59 = ((uint64_t)x57 & 0xffffffffffffff);
- uint128_t x60 = (x58 + x32);
- uint64_t x61 = (uint64_t) (x60 >> 0x37);
- uint64_t x62 = ((uint64_t)x60 & 0x7fffffffffffff);
- uint128_t x63 = (x41 + ((uint128_t)0x11 * x61));
- uint64_t x64 = (uint64_t) (x63 >> 0x38);
- uint64_t x65 = ((uint64_t)x63 & 0xffffffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x37);
- uint64_t x68 = (x66 & 0x7fffffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e444m17/femulDisplay.v b/src/Specific/solinas64_2e444m17/femulDisplay.v
deleted file mode 100644
index 9c919d1b3..000000000
--- a/src/Specific/solinas64_2e444m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e444m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e444m17/fesquare.c b/src/Specific/solinas64_2e444m17/fesquare.c
deleted file mode 100644
index a07f1f07a..000000000
--- a/src/Specific/solinas64_2e444m17/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint128_t)x13 * x13))));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- { uint128_t x23 = (x22 >> 0x38);
- { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint128_t x26 = (x25 >> 0x37);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint128_t x29 = (x28 >> 0x38);
- { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint128_t x32 = (x31 >> 0x37);
- { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint128_t x35 = (x34 >> 0x38);
- { uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint128_t x38 = (x37 >> 0x37);
- { uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint64_t x41 = (uint64_t) (x40 >> 0x38);
- { uint64_t x42 = ((uint64_t)x40 & 0xffffffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint64_t x44 = (uint64_t) (x43 >> 0x37);
- { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- { uint128_t x46 = (x24 + ((uint128_t)0x11 * x44));
- { uint64_t x47 = (uint64_t) (x46 >> 0x38);
- { uint64_t x48 = ((uint64_t)x46 & 0xffffffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x37);
- { uint64_t x51 = (x49 & 0x7fffffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e444m17/fesquare.v b/src/Specific/solinas64_2e444m17/fesquare.v
deleted file mode 100644
index 783ed74f9..000000000
--- a/src/Specific/solinas64_2e444m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e444m17/fesquareDisplay.log b/src/Specific/solinas64_2e444m17/fesquareDisplay.log
deleted file mode 100644
index 0dedb616c..000000000
--- a/src/Specific/solinas64_2e444m17/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint128_t)x13 * x13))));
- uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- uint128_t x23 = (x22 >> 0x38);
- uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
- uint128_t x25 = (x23 + x21);
- uint128_t x26 = (x25 >> 0x37);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- uint128_t x28 = (x26 + x20);
- uint128_t x29 = (x28 >> 0x38);
- uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
- uint128_t x31 = (x29 + x19);
- uint128_t x32 = (x31 >> 0x37);
- uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffffff);
- uint128_t x34 = (x32 + x18);
- uint128_t x35 = (x34 >> 0x38);
- uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
- uint128_t x37 = (x35 + x17);
- uint128_t x38 = (x37 >> 0x37);
- uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
- uint128_t x40 = (x38 + x16);
- uint64_t x41 = (uint64_t) (x40 >> 0x38);
- uint64_t x42 = ((uint64_t)x40 & 0xffffffffffffff);
- uint128_t x43 = (x41 + x15);
- uint64_t x44 = (uint64_t) (x43 >> 0x37);
- uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- uint128_t x46 = (x24 + ((uint128_t)0x11 * x44));
- uint64_t x47 = (uint64_t) (x46 >> 0x38);
- uint64_t x48 = ((uint64_t)x46 & 0xffffffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x37);
- uint64_t x51 = (x49 & 0x7fffffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e444m17/fesquareDisplay.v b/src/Specific/solinas64_2e444m17/fesquareDisplay.v
deleted file mode 100644
index 9de1f9f80..000000000
--- a/src/Specific/solinas64_2e444m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e444m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e444m17/fesub.c b/src/Specific/solinas64_2e444m17/fesub.c
deleted file mode 100644
index 2fdfd6d8c..000000000
--- a/src/Specific/solinas64_2e444m17/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1ffffffffffffde + x5) - x19);
- out[1] = ((0xfffffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffffe + x9) - x23);
- out[3] = ((0xfffffffffffffe + x11) - x25);
- out[4] = ((0x1fffffffffffffe + x13) - x27);
- out[5] = ((0xfffffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffffe + x17) - x31);
- out[7] = ((0xfffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e444m17/fesub.v b/src/Specific/solinas64_2e444m17/fesub.v
deleted file mode 100644
index 84bb4f088..000000000
--- a/src/Specific/solinas64_2e444m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e444m17/fesubDisplay.log b/src/Specific/solinas64_2e444m17/fesubDisplay.log
deleted file mode 100644
index 5278335c6..000000000
--- a/src/Specific/solinas64_2e444m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0xfffffffffffffe + x16) - x30), ((0x1fffffffffffffe + x17) - x31), ((0xfffffffffffffe + x15) - x29), ((0x1fffffffffffffe + x13) - x27), ((0xfffffffffffffe + x11) - x25), ((0x1fffffffffffffe + x9) - x23), ((0xfffffffffffffe + x7) - x21), ((0x1ffffffffffffde + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e444m17/fesubDisplay.v b/src/Specific/solinas64_2e444m17/fesubDisplay.v
deleted file mode 100644
index 941c03a9f..000000000
--- a/src/Specific/solinas64_2e444m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e444m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e444m17/freeze.c b/src/Specific/solinas64_2e444m17/freeze.c
deleted file mode 100644
index 0d9ba24b8..000000000
--- a/src/Specific/solinas64_2e444m17/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x7fffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x7fffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xffffffffffffef);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0x7fffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0x7fffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0x7fffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0x7fffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e444m17/freeze.v b/src/Specific/solinas64_2e444m17/freeze.v
deleted file mode 100644
index 00a6a22c7..000000000
--- a/src/Specific/solinas64_2e444m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e444m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e444m17/freezeDisplay.log b/src/Specific/solinas64_2e444m17/freezeDisplay.log
deleted file mode 100644
index dc8ee9522..000000000
--- a/src/Specific/solinas64_2e444m17/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x7fffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x7fffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x7fffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x7fffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffef);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0x7fffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0x7fffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0x7fffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0x7fffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e444m17/freezeDisplay.v b/src/Specific/solinas64_2e444m17/freezeDisplay.v
deleted file mode 100644
index e2c35d43b..000000000
--- a/src/Specific/solinas64_2e444m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e444m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e444m17/CurveParameters.v b/src/Specific/solinas64_2e444m17_8limbs/CurveParameters.v
index 3b463bfb8..3b463bfb8 100644
--- a/src/Specific/solinas64_2e444m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e444m17_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e444m17_8limbs/Synthesis.v b/src/Specific/solinas64_2e444m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..5aa11ee85
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e444m17/compiler.sh b/src/Specific/solinas64_2e444m17_8limbs/compiler.sh
index 4a7dbf9ae..4a7dbf9ae 100755
--- a/src/Specific/solinas64_2e444m17/compiler.sh
+++ b/src/Specific/solinas64_2e444m17_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e444m17/compilerxx.sh b/src/Specific/solinas64_2e444m17_8limbs/compilerxx.sh
index 02fae4af0..02fae4af0 100755
--- a/src/Specific/solinas64_2e444m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e444m17_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e444m17_8limbs/feadd.v b/src/Specific/solinas64_2e444m17_8limbs/feadd.v
new file mode 100644
index 000000000..66b44fc16
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e444m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..e3b05033b
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/femul.v b/src/Specific/solinas64_2e444m17_8limbs/femul.v
new file mode 100644
index 000000000..e34252016
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/femulDisplay.v b/src/Specific/solinas64_2e444m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..bf6d16f07
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/fesquare.v b/src/Specific/solinas64_2e444m17_8limbs/fesquare.v
new file mode 100644
index 000000000..89ed54d86
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e444m17_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..6f4b45f5d
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/fesub.v b/src/Specific/solinas64_2e444m17_8limbs/fesub.v
new file mode 100644
index 000000000..34e7e62a2
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e444m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..a9f05892a
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/freeze.v b/src/Specific/solinas64_2e444m17_8limbs/freeze.v
new file mode 100644
index 000000000..c9d6d1d8f
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e444m17_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e444m17_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..13b76cdc3
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e444m17/py_interpreter.sh b/src/Specific/solinas64_2e444m17_8limbs/py_interpreter.sh
index 2e96732a6..2e96732a6 100755
--- a/src/Specific/solinas64_2e444m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e444m17_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e444m17_9limbs/CurveParameters.v b/src/Specific/solinas64_2e444m17_9limbs/CurveParameters.v
new file mode 100644
index 000000000..651fbaaa3
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^444 - 17
+Base: 49 + 1/3
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 49 + 1/3;
+ bitwidth := 64;
+ s := 2^444;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/Synthesis.v b/src/Specific/solinas64_2e444m17_9limbs/Synthesis.v
new file mode 100644
index 000000000..25a98b518
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/compiler.sh b/src/Specific/solinas64_2e444m17_9limbs/compiler.sh
new file mode 100755
index 000000000..7145de19b
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,49,50,49,49,50,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas64_2e444m17_9limbs/compilerxx.sh b/src/Specific/solinas64_2e444m17_9limbs/compilerxx.sh
new file mode 100755
index 000000000..6e1b33854
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,49,50,49,49,50,49,49}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<444) - 17' "$@"
diff --git a/src/Specific/solinas64_2e444m17_9limbs/feadd.v b/src/Specific/solinas64_2e444m17_9limbs/feadd.v
new file mode 100644
index 000000000..4d3c5ccc3
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e444m17_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..9e602ade3
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/femul.v b/src/Specific/solinas64_2e444m17_9limbs/femul.v
new file mode 100644
index 000000000..3ce978a7e
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/femulDisplay.v b/src/Specific/solinas64_2e444m17_9limbs/femulDisplay.v
new file mode 100644
index 000000000..1c5db36dc
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/fesquare.v b/src/Specific/solinas64_2e444m17_9limbs/fesquare.v
new file mode 100644
index 000000000..0ce1f5222
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e444m17_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ddfd2934c
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/fesub.v b/src/Specific/solinas64_2e444m17_9limbs/fesub.v
new file mode 100644
index 000000000..6ca41a278
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e444m17_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..2c17bd558
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/freeze.v b/src/Specific/solinas64_2e444m17_9limbs/freeze.v
new file mode 100644
index 000000000..b1fcd1329
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e444m17_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..970ab79ea
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e444m17_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e444m17_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e444m17_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..f79978a5c
--- /dev/null
+++ b/src/Specific/solinas64_2e444m17_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**444 - 17' -Dmodulus_bytes='49 + 1/3' -Da24='121665'
diff --git a/src/Specific/solinas64_2e448m2e224m1/Synthesis.v b/src/Specific/solinas64_2e448m2e224m1/Synthesis.v
deleted file mode 100644
index b805360d8..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e448m2e224m1/feadd.c b/src/Specific/solinas64_2e448m2e224m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e448m2e224m1/feadd.v b/src/Specific/solinas64_2e448m2e224m1/feadd.v
deleted file mode 100644
index 14601d11c..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.log b/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.v b/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.v
deleted file mode 100644
index b8be7f256..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e448m2e224m1/femul.c b/src/Specific/solinas64_2e448m2e224m1/femul.c
deleted file mode 100644
index 9dc18d44a..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/femul.c
+++ /dev/null
@@ -1,81 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- { uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- { uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- { uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- { uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- { uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- { uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- { uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- { uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- { uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- { uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- { uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- { uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- { uint64_t x46 = (uint64_t) (x42 >> 0x38);
- { uint64_t x47 = ((uint64_t)x42 & 0xffffffffffffff);
- { uint64_t x48 = (uint64_t) (x35 >> 0x38);
- { uint64_t x49 = ((uint64_t)x35 & 0xffffffffffffff);
- { uint128_t x50 = (((uint128_t)0x100000000000000 * x48) + x49);
- { uint64_t x51 = (uint64_t) (x50 >> 0x38);
- { uint64_t x52 = ((uint64_t)x50 & 0xffffffffffffff);
- { uint128_t x53 = ((x46 + x41) + x51);
- { uint64_t x54 = (uint64_t) (x53 >> 0x38);
- { uint64_t x55 = ((uint64_t)x53 & 0xffffffffffffff);
- { uint128_t x56 = (x45 + x51);
- { uint64_t x57 = (uint64_t) (x56 >> 0x38);
- { uint64_t x58 = ((uint64_t)x56 & 0xffffffffffffff);
- { uint128_t x59 = (x54 + x40);
- { uint64_t x60 = (uint64_t) (x59 >> 0x38);
- { uint64_t x61 = ((uint64_t)x59 & 0xffffffffffffff);
- { uint128_t x62 = (x57 + x44);
- { uint64_t x63 = (uint64_t) (x62 >> 0x38);
- { uint64_t x64 = ((uint64_t)x62 & 0xffffffffffffff);
- { uint128_t x65 = (x60 + x39);
- { uint64_t x66 = (uint64_t) (x65 >> 0x38);
- { uint64_t x67 = ((uint64_t)x65 & 0xffffffffffffff);
- { uint128_t x68 = (x63 + x43);
- { uint64_t x69 = (uint64_t) (x68 >> 0x38);
- { uint64_t x70 = ((uint64_t)x68 & 0xffffffffffffff);
- { uint64_t x71 = (x66 + x52);
- { uint64_t x72 = (x71 >> 0x38);
- { uint64_t x73 = (x71 & 0xffffffffffffff);
- { uint64_t x74 = (x69 + x47);
- { uint64_t x75 = (x74 >> 0x38);
- { uint64_t x76 = (x74 & 0xffffffffffffff);
- { uint64_t x77 = ((0x100000000000000 * x72) + x73);
- { uint64_t x78 = (x77 >> 0x38);
- { uint64_t x79 = (x77 & 0xffffffffffffff);
- { uint64_t x80 = ((x75 + x55) + x78);
- { uint64_t x81 = (x80 >> 0x38);
- { uint64_t x82 = (x80 & 0xffffffffffffff);
- { uint64_t x83 = (x58 + x78);
- { uint64_t x84 = (x83 >> 0x38);
- { uint64_t x85 = (x83 & 0xffffffffffffff);
- out[0] = x85;
- out[1] = (x84 + x64);
- out[2] = x70;
- out[3] = x76;
- out[4] = x82;
- out[5] = (x81 + x61);
- out[6] = x67;
- out[7] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e448m2e224m1/femul.v b/src/Specific/solinas64_2e448m2e224m1/femul.v
deleted file mode 100644
index 9a88a5c55..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1/femulDisplay.log b/src/Specific/solinas64_2e448m2e224m1/femulDisplay.log
deleted file mode 100644
index f2d1600ca..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- uint64_t x46 = (uint64_t) (x42 >> 0x38);
- uint64_t x47 = ((uint64_t)x42 & 0xffffffffffffff);
- uint64_t x48 = (uint64_t) (x35 >> 0x38);
- uint64_t x49 = ((uint64_t)x35 & 0xffffffffffffff);
- uint128_t x50 = (((uint128_t)0x100000000000000 * x48) + x49);
- uint64_t x51 = (uint64_t) (x50 >> 0x38);
- uint64_t x52 = ((uint64_t)x50 & 0xffffffffffffff);
- uint128_t x53 = ((x46 + x41) + x51);
- uint64_t x54 = (uint64_t) (x53 >> 0x38);
- uint64_t x55 = ((uint64_t)x53 & 0xffffffffffffff);
- uint128_t x56 = (x45 + x51);
- uint64_t x57 = (uint64_t) (x56 >> 0x38);
- uint64_t x58 = ((uint64_t)x56 & 0xffffffffffffff);
- uint128_t x59 = (x54 + x40);
- uint64_t x60 = (uint64_t) (x59 >> 0x38);
- uint64_t x61 = ((uint64_t)x59 & 0xffffffffffffff);
- uint128_t x62 = (x57 + x44);
- uint64_t x63 = (uint64_t) (x62 >> 0x38);
- uint64_t x64 = ((uint64_t)x62 & 0xffffffffffffff);
- uint128_t x65 = (x60 + x39);
- uint64_t x66 = (uint64_t) (x65 >> 0x38);
- uint64_t x67 = ((uint64_t)x65 & 0xffffffffffffff);
- uint128_t x68 = (x63 + x43);
- uint64_t x69 = (uint64_t) (x68 >> 0x38);
- uint64_t x70 = ((uint64_t)x68 & 0xffffffffffffff);
- uint64_t x71 = (x66 + x52);
- uint64_t x72 = (x71 >> 0x38);
- uint64_t x73 = (x71 & 0xffffffffffffff);
- uint64_t x74 = (x69 + x47);
- uint64_t x75 = (x74 >> 0x38);
- uint64_t x76 = (x74 & 0xffffffffffffff);
- uint64_t x77 = ((0x100000000000000 * x72) + x73);
- uint64_t x78 = (x77 >> 0x38);
- uint64_t x79 = (x77 & 0xffffffffffffff);
- uint64_t x80 = ((x75 + x55) + x78);
- uint64_t x81 = (x80 >> 0x38);
- uint64_t x82 = (x80 & 0xffffffffffffff);
- uint64_t x83 = (x58 + x78);
- uint64_t x84 = (x83 >> 0x38);
- uint64_t x85 = (x83 & 0xffffffffffffff);
- return (Return x79, Return x67, (x81 + x61), Return x82, Return x76, Return x70, (x84 + x64), Return x85))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v b/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v
deleted file mode 100644
index bc30635a5..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquare.c b/src/Specific/solinas64_2e448m2e224m1/fesquare.c
deleted file mode 100644
index cfb66f0aa..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesquare.c
+++ /dev/null
@@ -1,73 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- { uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- { uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- { uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- { uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- { uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- { uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- { uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- { uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- { uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- { uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- { uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- { uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- { uint64_t x29 = (uint64_t) (x25 >> 0x38);
- { uint64_t x30 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint64_t x31 = (uint64_t) (x18 >> 0x38);
- { uint64_t x32 = ((uint64_t)x18 & 0xffffffffffffff);
- { uint128_t x33 = (((uint128_t)0x100000000000000 * x31) + x32);
- { uint64_t x34 = (uint64_t) (x33 >> 0x38);
- { uint64_t x35 = ((uint64_t)x33 & 0xffffffffffffff);
- { uint128_t x36 = ((x29 + x24) + x34);
- { uint64_t x37 = (uint64_t) (x36 >> 0x38);
- { uint64_t x38 = ((uint64_t)x36 & 0xffffffffffffff);
- { uint128_t x39 = (x28 + x34);
- { uint64_t x40 = (uint64_t) (x39 >> 0x38);
- { uint64_t x41 = ((uint64_t)x39 & 0xffffffffffffff);
- { uint128_t x42 = (x37 + x23);
- { uint64_t x43 = (uint64_t) (x42 >> 0x38);
- { uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- { uint128_t x45 = (x40 + x27);
- { uint64_t x46 = (uint64_t) (x45 >> 0x38);
- { uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- { uint128_t x48 = (x43 + x22);
- { uint64_t x49 = (uint64_t) (x48 >> 0x38);
- { uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- { uint128_t x51 = (x46 + x26);
- { uint64_t x52 = (uint64_t) (x51 >> 0x38);
- { uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- { uint64_t x54 = (x49 + x35);
- { uint64_t x55 = (x54 >> 0x38);
- { uint64_t x56 = (x54 & 0xffffffffffffff);
- { uint64_t x57 = (x52 + x30);
- { uint64_t x58 = (x57 >> 0x38);
- { uint64_t x59 = (x57 & 0xffffffffffffff);
- { uint64_t x60 = ((0x100000000000000 * x55) + x56);
- { uint64_t x61 = (x60 >> 0x38);
- { uint64_t x62 = (x60 & 0xffffffffffffff);
- { uint64_t x63 = ((x58 + x38) + x61);
- { uint64_t x64 = (x63 >> 0x38);
- { uint64_t x65 = (x63 & 0xffffffffffffff);
- { uint64_t x66 = (x41 + x61);
- { uint64_t x67 = (x66 >> 0x38);
- { uint64_t x68 = (x66 & 0xffffffffffffff);
- out[0] = x68;
- out[1] = (x67 + x47);
- out[2] = x53;
- out[3] = x59;
- out[4] = x65;
- out[5] = (x64 + x44);
- out[6] = x50;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquare.v b/src/Specific/solinas64_2e448m2e224m1/fesquare.v
deleted file mode 100644
index 6e54d709a..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.log b/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.log
deleted file mode 100644
index 786925670..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- uint64_t x29 = (uint64_t) (x25 >> 0x38);
- uint64_t x30 = ((uint64_t)x25 & 0xffffffffffffff);
- uint64_t x31 = (uint64_t) (x18 >> 0x38);
- uint64_t x32 = ((uint64_t)x18 & 0xffffffffffffff);
- uint128_t x33 = (((uint128_t)0x100000000000000 * x31) + x32);
- uint64_t x34 = (uint64_t) (x33 >> 0x38);
- uint64_t x35 = ((uint64_t)x33 & 0xffffffffffffff);
- uint128_t x36 = ((x29 + x24) + x34);
- uint64_t x37 = (uint64_t) (x36 >> 0x38);
- uint64_t x38 = ((uint64_t)x36 & 0xffffffffffffff);
- uint128_t x39 = (x28 + x34);
- uint64_t x40 = (uint64_t) (x39 >> 0x38);
- uint64_t x41 = ((uint64_t)x39 & 0xffffffffffffff);
- uint128_t x42 = (x37 + x23);
- uint64_t x43 = (uint64_t) (x42 >> 0x38);
- uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- uint128_t x45 = (x40 + x27);
- uint64_t x46 = (uint64_t) (x45 >> 0x38);
- uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- uint128_t x48 = (x43 + x22);
- uint64_t x49 = (uint64_t) (x48 >> 0x38);
- uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- uint128_t x51 = (x46 + x26);
- uint64_t x52 = (uint64_t) (x51 >> 0x38);
- uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- uint64_t x54 = (x49 + x35);
- uint64_t x55 = (x54 >> 0x38);
- uint64_t x56 = (x54 & 0xffffffffffffff);
- uint64_t x57 = (x52 + x30);
- uint64_t x58 = (x57 >> 0x38);
- uint64_t x59 = (x57 & 0xffffffffffffff);
- uint64_t x60 = ((0x100000000000000 * x55) + x56);
- uint64_t x61 = (x60 >> 0x38);
- uint64_t x62 = (x60 & 0xffffffffffffff);
- uint64_t x63 = ((x58 + x38) + x61);
- uint64_t x64 = (x63 >> 0x38);
- uint64_t x65 = (x63 & 0xffffffffffffff);
- uint64_t x66 = (x41 + x61);
- uint64_t x67 = (x66 >> 0x38);
- uint64_t x68 = (x66 & 0xffffffffffffff);
- return (Return x62, Return x50, (x64 + x44), Return x65, Return x59, Return x53, (x67 + x47), Return x68))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v b/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v
deleted file mode 100644
index ed85edf82..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesub.c b/src/Specific/solinas64_2e448m2e224m1/fesub.c
deleted file mode 100644
index d42ae623f..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1fffffffffffffe + x5) - x19);
- out[1] = ((0x1fffffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffffe + x11) - x25);
- out[4] = ((0x1fffffffffffffc + x13) - x27);
- out[5] = ((0x1fffffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffffe + x17) - x31);
- out[7] = ((0x1fffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesub.v b/src/Specific/solinas64_2e448m2e224m1/fesub.v
deleted file mode 100644
index fefc68b95..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.log b/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.log
deleted file mode 100644
index 35a6385e4..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffffffffffe + x16) - x30), ((0x1fffffffffffffe + x17) - x31), ((0x1fffffffffffffe + x15) - x29), ((0x1fffffffffffffc + x13) - x27), ((0x1fffffffffffffe + x11) - x25), ((0x1fffffffffffffe + x9) - x23), ((0x1fffffffffffffe + x7) - x21), ((0x1fffffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.v b/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.v
deleted file mode 100644
index 3e498bdcf..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1/freeze.c b/src/Specific/solinas64_2e448m2e224m1/freeze.c
deleted file mode 100644
index e59953182..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffffffffffe);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xffffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xfffffffffffffe);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xffffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e448m2e224m1/freeze.v b/src/Specific/solinas64_2e448m2e224m1/freeze.v
deleted file mode 100644
index 0feac9060..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.log b/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.log
deleted file mode 100644
index 1dfd2b0cb..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xfffffffffffffe);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xffffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xfffffffffffffe);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xffffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v b/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v
deleted file mode 100644
index 113720b68..000000000
--- a/src/Specific/solinas64_2e448m2e224m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e448m2e224m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/CurveParameters.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..aeafa11e0
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^448 - 2^224 - 1
+Base: 44.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 44 + 4/5;
+ bitwidth := 64;
+ s := 2^448;
+ c := [(1, 1); (2^224, 1)];
+ carry_chains := Some [[4; 9]; [5; 0; 6; 1; 7; 2; 8; 3; 9; 4]; [5; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/Synthesis.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..5ac37f3ce
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/compiler.sh b/src/Specific/solinas64_2e448m2e224m1_10limbs/compiler.sh
new file mode 100755
index 000000000..c42b0a954
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44,45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1' "$@"
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/compilerxx.sh b/src/Specific/solinas64_2e448m2e224m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..faeff58af
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,44,45,45,45,45,44}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='56' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<448) - (1_mpz<<224) - 1' "$@"
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/feadd.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/feadd.v
new file mode 100644
index 000000000..f779333c5
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..0076cc218
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/femul.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/femul.v
new file mode 100644
index 000000000..fee16d9fe
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/femulDisplay.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..c02273c99
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquare.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquare.v
new file mode 100644
index 000000000..30028e25a
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8a5163cb5
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.v
new file mode 100644
index 000000000..c9380077b
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..3555ad2f7
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/freeze.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/freeze.v
new file mode 100644
index 000000000..5585530a5
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e448m2e224m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..88df95057
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e448m2e224m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..2b218dea9
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**448 - 2**224 - 1' -Dmodulus_bytes='44.8' -Da24='121665'
diff --git a/src/Specific/solinas64_2e448m2e224m1/CurveParameters.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/CurveParameters.v
index 4c48e54cc..4c48e54cc 100644
--- a/src/Specific/solinas64_2e448m2e224m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/Synthesis.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..36861b97b
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e448m2e224m1/compiler.sh b/src/Specific/solinas64_2e448m2e224m1_8limbs/compiler.sh
index 81d2dec4a..81d2dec4a 100755
--- a/src/Specific/solinas64_2e448m2e224m1/compiler.sh
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e448m2e224m1/compilerxx.sh b/src/Specific/solinas64_2e448m2e224m1_8limbs/compilerxx.sh
index 0910fd9bb..0910fd9bb 100755
--- a/src/Specific/solinas64_2e448m2e224m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/feadd.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/feadd.v
new file mode 100644
index 000000000..1f9e8f276
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..b1f971338
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/femul.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/femul.v
new file mode 100644
index 000000000..592ff9742
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/femulDisplay.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..00e215c0a
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquare.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquare.v
new file mode 100644
index 000000000..c2686f12d
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..33de1471b
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/fesub.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesub.v
new file mode 100644
index 000000000..b71d56ca2
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..eb1301c72
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/freeze.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/freeze.v
new file mode 100644
index 000000000..36590c4fa
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e448m2e224m1_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..78dfadc9f
--- /dev/null
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e448m2e224m1_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e448m2e224m1/py_interpreter.sh b/src/Specific/solinas64_2e448m2e224m1_8limbs/py_interpreter.sh
index afd8e8956..afd8e8956 100755
--- a/src/Specific/solinas64_2e448m2e224m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e448m2e224m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e450m2e225m1/Synthesis.v b/src/Specific/solinas64_2e450m2e225m1/Synthesis.v
deleted file mode 100644
index 30663b0fa..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e450m2e225m1/feadd.c b/src/Specific/solinas64_2e450m2e225m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e450m2e225m1/feadd.v b/src/Specific/solinas64_2e450m2e225m1/feadd.v
deleted file mode 100644
index 23ad28ce7..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.log b/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.v b/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.v
deleted file mode 100644
index 6d15e740e..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e450m2e225m1/femul.c b/src/Specific/solinas64_2e450m2e225m1/femul.c
deleted file mode 100644
index 5412ab232..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/femul.c
+++ /dev/null
@@ -1,81 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- { uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- { uint128_t x34 = (((0x2 * ((uint128_t)(x7 + x15) * (x25 + x30))) + ((0x2 * ((uint128_t)(x9 + x17) * (x23 + x31))) + (0x2 * ((uint128_t)(x11 + x16) * (x21 + x29))))) - ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + (0x2 * ((uint128_t)x11 * x21)))));
- { uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + ((0x2 * ((uint128_t)(x7 + x15) * (x23 + x31))) + ((0x2 * ((uint128_t)(x9 + x17) * (x21 + x29))) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))));
- { uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + ((0x2 * ((uint128_t)(x7 + x15) * (x21 + x29))) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))));
- { uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- { uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- { uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- { uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- { uint128_t x41 = (((((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + (0x2 * ((uint128_t)x11 * x21)))) + ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))) + x38) + x34);
- { uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((uint128_t)x16 * x27)))));
- { uint128_t x43 = (((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + ((uint128_t)x17 * x27)))) + x32);
- { uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- { uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- { uint64_t x46 = (uint64_t) (x42 >> 0x38);
- { uint64_t x47 = ((uint64_t)x42 & 0xffffffffffffff);
- { uint128_t x48 = (x35 >> 0x38);
- { uint64_t x49 = ((uint64_t)x35 & 0xffffffffffffff);
- { uint128_t x50 = ((0x100000000000000 * x48) + x49);
- { uint128_t x51 = (x50 >> 0x38);
- { uint64_t x52 = ((uint64_t)x50 & 0xffffffffffffff);
- { uint128_t x53 = ((x46 + x41) + x51);
- { uint64_t x54 = (uint64_t) (x53 >> 0x39);
- { uint64_t x55 = ((uint64_t)x53 & 0x1ffffffffffffff);
- { uint128_t x56 = (x45 + x51);
- { uint64_t x57 = (uint64_t) (x56 >> 0x39);
- { uint64_t x58 = ((uint64_t)x56 & 0x1ffffffffffffff);
- { uint128_t x59 = (x54 + x40);
- { uint64_t x60 = (uint64_t) (x59 >> 0x38);
- { uint64_t x61 = ((uint64_t)x59 & 0xffffffffffffff);
- { uint128_t x62 = (x57 + x44);
- { uint64_t x63 = (uint64_t) (x62 >> 0x38);
- { uint64_t x64 = ((uint64_t)x62 & 0xffffffffffffff);
- { uint128_t x65 = (x60 + x39);
- { uint128_t x66 = (x65 >> 0x38);
- { uint64_t x67 = ((uint64_t)x65 & 0xffffffffffffff);
- { uint128_t x68 = (x63 + x43);
- { uint64_t x69 = (uint64_t) (x68 >> 0x38);
- { uint64_t x70 = ((uint64_t)x68 & 0xffffffffffffff);
- { uint128_t x71 = (x66 + x52);
- { uint64_t x72 = (uint64_t) (x71 >> 0x38);
- { uint64_t x73 = ((uint64_t)x71 & 0xffffffffffffff);
- { uint64_t x74 = (x69 + x47);
- { uint64_t x75 = (x74 >> 0x38);
- { uint64_t x76 = (x74 & 0xffffffffffffff);
- { uint128_t x77 = (((uint128_t)0x100000000000000 * x72) + x73);
- { uint64_t x78 = (uint64_t) (x77 >> 0x38);
- { uint64_t x79 = ((uint64_t)x77 & 0xffffffffffffff);
- { uint64_t x80 = ((x75 + x55) + x78);
- { uint64_t x81 = (x80 >> 0x39);
- { uint64_t x82 = (x80 & 0x1ffffffffffffff);
- { uint64_t x83 = (x58 + x78);
- { uint64_t x84 = (x83 >> 0x39);
- { uint64_t x85 = (x83 & 0x1ffffffffffffff);
- out[0] = x85;
- out[1] = (x84 + x64);
- out[2] = x70;
- out[3] = x76;
- out[4] = x82;
- out[5] = (x81 + x61);
- out[6] = x67;
- out[7] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e450m2e225m1/femul.v b/src/Specific/solinas64_2e450m2e225m1/femul.v
deleted file mode 100644
index ff762ce82..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1/femulDisplay.log b/src/Specific/solinas64_2e450m2e225m1/femulDisplay.log
deleted file mode 100644
index 6b97da104..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- uint128_t x34 = (((0x2 * ((uint128_t)(x7 + x15) * (x25 + x30))) + ((0x2 * ((uint128_t)(x9 + x17) * (x23 + x31))) + (0x2 * ((uint128_t)(x11 + x16) * (x21 + x29))))) - ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + (0x2 * ((uint128_t)x11 * x21)))));
- uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + ((0x2 * ((uint128_t)(x7 + x15) * (x23 + x31))) + ((0x2 * ((uint128_t)(x9 + x17) * (x21 + x29))) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))));
- uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + ((0x2 * ((uint128_t)(x7 + x15) * (x21 + x29))) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))));
- uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- uint128_t x41 = (((((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + (0x2 * ((uint128_t)x11 * x21)))) + ((0x2 * ((uint128_t)x15 * x30)) + ((0x2 * ((uint128_t)x17 * x31)) + (0x2 * ((uint128_t)x16 * x29))))) + x38) + x34);
- uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((uint128_t)x16 * x27)))));
- uint128_t x43 = (((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + ((uint128_t)x17 * x27)))) + x32);
- uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- uint64_t x46 = (uint64_t) (x42 >> 0x38);
- uint64_t x47 = ((uint64_t)x42 & 0xffffffffffffff);
- uint128_t x48 = (x35 >> 0x38);
- uint64_t x49 = ((uint64_t)x35 & 0xffffffffffffff);
- uint128_t x50 = ((0x100000000000000 * x48) + x49);
- uint128_t x51 = (x50 >> 0x38);
- uint64_t x52 = ((uint64_t)x50 & 0xffffffffffffff);
- uint128_t x53 = ((x46 + x41) + x51);
- uint64_t x54 = (uint64_t) (x53 >> 0x39);
- uint64_t x55 = ((uint64_t)x53 & 0x1ffffffffffffff);
- uint128_t x56 = (x45 + x51);
- uint64_t x57 = (uint64_t) (x56 >> 0x39);
- uint64_t x58 = ((uint64_t)x56 & 0x1ffffffffffffff);
- uint128_t x59 = (x54 + x40);
- uint64_t x60 = (uint64_t) (x59 >> 0x38);
- uint64_t x61 = ((uint64_t)x59 & 0xffffffffffffff);
- uint128_t x62 = (x57 + x44);
- uint64_t x63 = (uint64_t) (x62 >> 0x38);
- uint64_t x64 = ((uint64_t)x62 & 0xffffffffffffff);
- uint128_t x65 = (x60 + x39);
- uint128_t x66 = (x65 >> 0x38);
- uint64_t x67 = ((uint64_t)x65 & 0xffffffffffffff);
- uint128_t x68 = (x63 + x43);
- uint64_t x69 = (uint64_t) (x68 >> 0x38);
- uint64_t x70 = ((uint64_t)x68 & 0xffffffffffffff);
- uint128_t x71 = (x66 + x52);
- uint64_t x72 = (uint64_t) (x71 >> 0x38);
- uint64_t x73 = ((uint64_t)x71 & 0xffffffffffffff);
- uint64_t x74 = (x69 + x47);
- uint64_t x75 = (x74 >> 0x38);
- uint64_t x76 = (x74 & 0xffffffffffffff);
- uint128_t x77 = (((uint128_t)0x100000000000000 * x72) + x73);
- uint64_t x78 = (uint64_t) (x77 >> 0x38);
- uint64_t x79 = ((uint64_t)x77 & 0xffffffffffffff);
- uint64_t x80 = ((x75 + x55) + x78);
- uint64_t x81 = (x80 >> 0x39);
- uint64_t x82 = (x80 & 0x1ffffffffffffff);
- uint64_t x83 = (x58 + x78);
- uint64_t x84 = (x83 >> 0x39);
- uint64_t x85 = (x83 & 0x1ffffffffffffff);
- return (Return x79, Return x67, (x81 + x61), Return x82, Return x76, Return x70, (x84 + x64), Return x85))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v b/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v
deleted file mode 100644
index 3512d83ff..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquare.c b/src/Specific/solinas64_2e450m2e225m1/fesquare.c
deleted file mode 100644
index 4b85e2ea5..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesquare.c
+++ /dev/null
@@ -1,73 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- { uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- { uint128_t x17 = (((0x2 * ((uint128_t)(x4 + x12) * (x8 + x13))) + ((0x2 * ((uint128_t)(x6 + x14) * (x6 + x14))) + (0x2 * ((uint128_t)(x8 + x13) * (x4 + x12))))) - ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x8 * x4)))));
- { uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + ((0x2 * ((uint128_t)(x4 + x12) * (x6 + x14))) + ((0x2 * ((uint128_t)(x6 + x14) * (x4 + x12))) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))));
- { uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + ((0x2 * ((uint128_t)(x4 + x12) * (x4 + x12))) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))));
- { uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- { uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- { uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- { uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- { uint128_t x24 = (((((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x8 * x4)))) + ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))) + x21) + x17);
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((uint128_t)x13 * x10)))));
- { uint128_t x26 = (((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + ((uint128_t)x14 * x10)))) + x15);
- { uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- { uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- { uint64_t x29 = (uint64_t) (x25 >> 0x38);
- { uint64_t x30 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint128_t x31 = (x18 >> 0x38);
- { uint64_t x32 = ((uint64_t)x18 & 0xffffffffffffff);
- { uint128_t x33 = ((0x100000000000000 * x31) + x32);
- { uint128_t x34 = (x33 >> 0x38);
- { uint64_t x35 = ((uint64_t)x33 & 0xffffffffffffff);
- { uint128_t x36 = ((x29 + x24) + x34);
- { uint64_t x37 = (uint64_t) (x36 >> 0x39);
- { uint64_t x38 = ((uint64_t)x36 & 0x1ffffffffffffff);
- { uint128_t x39 = (x28 + x34);
- { uint64_t x40 = (uint64_t) (x39 >> 0x39);
- { uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- { uint128_t x42 = (x37 + x23);
- { uint64_t x43 = (uint64_t) (x42 >> 0x38);
- { uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- { uint128_t x45 = (x40 + x27);
- { uint64_t x46 = (uint64_t) (x45 >> 0x38);
- { uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- { uint128_t x48 = (x43 + x22);
- { uint128_t x49 = (x48 >> 0x38);
- { uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- { uint128_t x51 = (x46 + x26);
- { uint64_t x52 = (uint64_t) (x51 >> 0x38);
- { uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- { uint128_t x54 = (x49 + x35);
- { uint64_t x55 = (uint64_t) (x54 >> 0x38);
- { uint64_t x56 = ((uint64_t)x54 & 0xffffffffffffff);
- { uint64_t x57 = (x52 + x30);
- { uint64_t x58 = (x57 >> 0x38);
- { uint64_t x59 = (x57 & 0xffffffffffffff);
- { uint128_t x60 = (((uint128_t)0x100000000000000 * x55) + x56);
- { uint64_t x61 = (uint64_t) (x60 >> 0x38);
- { uint64_t x62 = ((uint64_t)x60 & 0xffffffffffffff);
- { uint64_t x63 = ((x58 + x38) + x61);
- { uint64_t x64 = (x63 >> 0x39);
- { uint64_t x65 = (x63 & 0x1ffffffffffffff);
- { uint64_t x66 = (x41 + x61);
- { uint64_t x67 = (x66 >> 0x39);
- { uint64_t x68 = (x66 & 0x1ffffffffffffff);
- out[0] = x68;
- out[1] = (x67 + x47);
- out[2] = x53;
- out[3] = x59;
- out[4] = x65;
- out[5] = (x64 + x44);
- out[6] = x50;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquare.v b/src/Specific/solinas64_2e450m2e225m1/fesquare.v
deleted file mode 100644
index ec82ce793..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.log b/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.log
deleted file mode 100644
index cbb6438b3..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- uint128_t x17 = (((0x2 * ((uint128_t)(x4 + x12) * (x8 + x13))) + ((0x2 * ((uint128_t)(x6 + x14) * (x6 + x14))) + (0x2 * ((uint128_t)(x8 + x13) * (x4 + x12))))) - ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x8 * x4)))));
- uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + ((0x2 * ((uint128_t)(x4 + x12) * (x6 + x14))) + ((0x2 * ((uint128_t)(x6 + x14) * (x4 + x12))) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))));
- uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + ((0x2 * ((uint128_t)(x4 + x12) * (x4 + x12))) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))));
- uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- uint128_t x24 = (((((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x8 * x4)))) + ((0x2 * ((uint128_t)x12 * x13)) + ((0x2 * ((uint128_t)x14 * x14)) + (0x2 * ((uint128_t)x13 * x12))))) + x21) + x17);
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + ((0x2 * ((uint128_t)x12 * x14)) + ((0x2 * ((uint128_t)x14 * x12)) + ((uint128_t)x13 * x10)))));
- uint128_t x26 = (((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + ((uint128_t)x14 * x10)))) + x15);
- uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- uint64_t x29 = (uint64_t) (x25 >> 0x38);
- uint64_t x30 = ((uint64_t)x25 & 0xffffffffffffff);
- uint128_t x31 = (x18 >> 0x38);
- uint64_t x32 = ((uint64_t)x18 & 0xffffffffffffff);
- uint128_t x33 = ((0x100000000000000 * x31) + x32);
- uint128_t x34 = (x33 >> 0x38);
- uint64_t x35 = ((uint64_t)x33 & 0xffffffffffffff);
- uint128_t x36 = ((x29 + x24) + x34);
- uint64_t x37 = (uint64_t) (x36 >> 0x39);
- uint64_t x38 = ((uint64_t)x36 & 0x1ffffffffffffff);
- uint128_t x39 = (x28 + x34);
- uint64_t x40 = (uint64_t) (x39 >> 0x39);
- uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- uint128_t x42 = (x37 + x23);
- uint64_t x43 = (uint64_t) (x42 >> 0x38);
- uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- uint128_t x45 = (x40 + x27);
- uint64_t x46 = (uint64_t) (x45 >> 0x38);
- uint64_t x47 = ((uint64_t)x45 & 0xffffffffffffff);
- uint128_t x48 = (x43 + x22);
- uint128_t x49 = (x48 >> 0x38);
- uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- uint128_t x51 = (x46 + x26);
- uint64_t x52 = (uint64_t) (x51 >> 0x38);
- uint64_t x53 = ((uint64_t)x51 & 0xffffffffffffff);
- uint128_t x54 = (x49 + x35);
- uint64_t x55 = (uint64_t) (x54 >> 0x38);
- uint64_t x56 = ((uint64_t)x54 & 0xffffffffffffff);
- uint64_t x57 = (x52 + x30);
- uint64_t x58 = (x57 >> 0x38);
- uint64_t x59 = (x57 & 0xffffffffffffff);
- uint128_t x60 = (((uint128_t)0x100000000000000 * x55) + x56);
- uint64_t x61 = (uint64_t) (x60 >> 0x38);
- uint64_t x62 = ((uint64_t)x60 & 0xffffffffffffff);
- uint64_t x63 = ((x58 + x38) + x61);
- uint64_t x64 = (x63 >> 0x39);
- uint64_t x65 = (x63 & 0x1ffffffffffffff);
- uint64_t x66 = (x41 + x61);
- uint64_t x67 = (x66 >> 0x39);
- uint64_t x68 = (x66 & 0x1ffffffffffffff);
- return (Return x62, Return x50, (x64 + x44), Return x65, Return x59, Return x53, (x67 + x47), Return x68))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v b/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v
deleted file mode 100644
index d6e79071a..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesub.c b/src/Specific/solinas64_2e450m2e225m1/fesub.c
deleted file mode 100644
index 0032ef5bc..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x3fffffffffffffe + x5) - x19);
- out[1] = ((0x1fffffffffffffe + x7) - x21);
- out[2] = ((0x1fffffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffffe + x11) - x25);
- out[4] = ((0x3fffffffffffffc + x13) - x27);
- out[5] = ((0x1fffffffffffffe + x15) - x29);
- out[6] = ((0x1fffffffffffffe + x17) - x31);
- out[7] = ((0x1fffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesub.v b/src/Specific/solinas64_2e450m2e225m1/fesub.v
deleted file mode 100644
index 250c1f1d3..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.log b/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.log
deleted file mode 100644
index 948e27940..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffffffffffe + x16) - x30), ((0x1fffffffffffffe + x17) - x31), ((0x1fffffffffffffe + x15) - x29), ((0x3fffffffffffffc + x13) - x27), ((0x1fffffffffffffe + x11) - x25), ((0x1fffffffffffffe + x9) - x23), ((0x1fffffffffffffe + x7) - x21), ((0x3fffffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.v b/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.v
deleted file mode 100644
index 23b572cac..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1/freeze.c b/src/Specific/solinas64_2e450m2e225m1/freeze.c
deleted file mode 100644
index 064b11eba..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffffffffffffe);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0x1ffffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0x1fffffffffffffe);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xffffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e450m2e225m1/freeze.v b/src/Specific/solinas64_2e450m2e225m1/freeze.v
deleted file mode 100644
index 52b623183..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.log b/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.log
deleted file mode 100644
index 50e964eeb..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x1fffffffffffffe);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0x1ffffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0x1fffffffffffffe);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xffffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v b/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v
deleted file mode 100644
index cc013c23e..000000000
--- a/src/Specific/solinas64_2e450m2e225m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e450m2e225m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/CurveParameters.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..497a47cc6
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^450 - 2^225 - 1
+Base: 45
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 45;
+ bitwidth := 64;
+ s := 2^450;
+ c := [(1, 1); (2^225, 1)];
+ carry_chains := Some [[4; 9]; [5; 0; 6; 1; 7; 2; 8; 3; 9; 4]; [5; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/Synthesis.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..595a7df5c
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/compiler.sh b/src/Specific/solinas64_2e450m2e225m1_10limbs/compiler.sh
new file mode 100755
index 000000000..6feda2492
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,45,45,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/compilerxx.sh b/src/Specific/solinas64_2e450m2e225m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..5259e93b1
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{45,45,45,45,45,45,45,45,45,45}' -Dmodulus_array='{0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<450) - (1_mpz<<225) - 1' "$@"
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/feadd.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/feadd.v
new file mode 100644
index 000000000..cf575fc02
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..2ca3de98d
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.v
new file mode 100644
index 000000000..da8ebd697
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..ed34604e7
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquare.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquare.v
new file mode 100644
index 000000000..0a110440b
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ba613bf22
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.v
new file mode 100644
index 000000000..93b8e4d84
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..2001d4bd5
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/freeze.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/freeze.v
new file mode 100644
index 000000000..e4f9f4ea0
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e450m2e225m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..e6d44a427
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e450m2e225m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..d4019d0b3
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**450 - 2**225 - 1' -Dmodulus_bytes='45' -Da24='121665'
diff --git a/src/Specific/solinas64_2e450m2e225m1/CurveParameters.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/CurveParameters.v
index e251b6d9f..e251b6d9f 100644
--- a/src/Specific/solinas64_2e450m2e225m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/Synthesis.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..38aee7fc9
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e450m2e225m1/compiler.sh b/src/Specific/solinas64_2e450m2e225m1_8limbs/compiler.sh
index c6d1fe67c..c6d1fe67c 100755
--- a/src/Specific/solinas64_2e450m2e225m1/compiler.sh
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e450m2e225m1/compilerxx.sh b/src/Specific/solinas64_2e450m2e225m1_8limbs/compilerxx.sh
index 4e63fa1ae..4e63fa1ae 100755
--- a/src/Specific/solinas64_2e450m2e225m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/feadd.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/feadd.v
new file mode 100644
index 000000000..de44ead98
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..36c462be8
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/femul.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/femul.v
new file mode 100644
index 000000000..86204141d
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/femulDisplay.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..2e6524dae
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquare.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquare.v
new file mode 100644
index 000000000..f7a938a98
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a066dae8e
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/fesub.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesub.v
new file mode 100644
index 000000000..c6b306b85
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..0fcfd6fc8
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/freeze.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/freeze.v
new file mode 100644
index 000000000..2081eb536
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e450m2e225m1_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..5235b60da
--- /dev/null
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e450m2e225m1_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e450m2e225m1/py_interpreter.sh b/src/Specific/solinas64_2e450m2e225m1_8limbs/py_interpreter.sh
index 3c28d032a..3c28d032a 100755
--- a/src/Specific/solinas64_2e450m2e225m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e450m2e225m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e452m3/Synthesis.v b/src/Specific/solinas64_2e452m3/Synthesis.v
deleted file mode 100644
index e8af183c2..000000000
--- a/src/Specific/solinas64_2e452m3/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e452m3.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e452m3/feadd.c b/src/Specific/solinas64_2e452m3/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e452m3/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e452m3/feadd.v b/src/Specific/solinas64_2e452m3/feadd.v
deleted file mode 100644
index 842fd09c4..000000000
--- a/src/Specific/solinas64_2e452m3/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e452m3/feaddDisplay.log b/src/Specific/solinas64_2e452m3/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e452m3/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3/feaddDisplay.v b/src/Specific/solinas64_2e452m3/feaddDisplay.v
deleted file mode 100644
index c4ff0728e..000000000
--- a/src/Specific/solinas64_2e452m3/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e452m3.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e452m3/femul.c b/src/Specific/solinas64_2e452m3/femul.c
deleted file mode 100644
index f36a466ea..000000000
--- a/src/Specific/solinas64_2e452m3/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint128_t)x16 * x30))));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x3 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x3 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x3 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x3 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x3 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- { uint128_t x40 = (x39 >> 0x39);
- { uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint128_t x43 = (x42 >> 0x38);
- { uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint128_t x46 = (x45 >> 0x39);
- { uint64_t x47 = ((uint64_t)x45 & 0x1ffffffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint128_t x49 = (x48 >> 0x38);
- { uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint64_t x52 = (uint64_t) (x51 >> 0x39);
- { uint64_t x53 = ((uint64_t)x51 & 0x1ffffffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint128_t x55 = (x54 >> 0x38);
- { uint64_t x56 = ((uint64_t)x54 & 0xffffffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint64_t x58 = (uint64_t) (x57 >> 0x39);
- { uint64_t x59 = ((uint64_t)x57 & 0x1ffffffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint64_t x61 = (uint64_t) (x60 >> 0x38);
- { uint64_t x62 = ((uint64_t)x60 & 0xffffffffffffff);
- { uint128_t x63 = (x41 + ((uint128_t)0x3 * x61));
- { uint64_t x64 = (uint64_t) (x63 >> 0x39);
- { uint64_t x65 = ((uint64_t)x63 & 0x1ffffffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x38);
- { uint64_t x68 = (x66 & 0xffffffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e452m3/femul.v b/src/Specific/solinas64_2e452m3/femul.v
deleted file mode 100644
index 100f26ca8..000000000
--- a/src/Specific/solinas64_2e452m3/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e452m3/femulDisplay.log b/src/Specific/solinas64_2e452m3/femulDisplay.log
deleted file mode 100644
index 633c8f963..000000000
--- a/src/Specific/solinas64_2e452m3/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x3 * (0x2 * ((uint128_t)x16 * x30))));
- uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x3 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x3 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x3 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x3 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x3 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x3 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- uint128_t x40 = (x39 >> 0x39);
- uint64_t x41 = ((uint64_t)x39 & 0x1ffffffffffffff);
- uint128_t x42 = (x40 + x38);
- uint128_t x43 = (x42 >> 0x38);
- uint64_t x44 = ((uint64_t)x42 & 0xffffffffffffff);
- uint128_t x45 = (x43 + x37);
- uint128_t x46 = (x45 >> 0x39);
- uint64_t x47 = ((uint64_t)x45 & 0x1ffffffffffffff);
- uint128_t x48 = (x46 + x36);
- uint128_t x49 = (x48 >> 0x38);
- uint64_t x50 = ((uint64_t)x48 & 0xffffffffffffff);
- uint128_t x51 = (x49 + x35);
- uint64_t x52 = (uint64_t) (x51 >> 0x39);
- uint64_t x53 = ((uint64_t)x51 & 0x1ffffffffffffff);
- uint128_t x54 = (x52 + x34);
- uint128_t x55 = (x54 >> 0x38);
- uint64_t x56 = ((uint64_t)x54 & 0xffffffffffffff);
- uint128_t x57 = (x55 + x33);
- uint64_t x58 = (uint64_t) (x57 >> 0x39);
- uint64_t x59 = ((uint64_t)x57 & 0x1ffffffffffffff);
- uint128_t x60 = (x58 + x32);
- uint64_t x61 = (uint64_t) (x60 >> 0x38);
- uint64_t x62 = ((uint64_t)x60 & 0xffffffffffffff);
- uint128_t x63 = (x41 + ((uint128_t)0x3 * x61));
- uint64_t x64 = (uint64_t) (x63 >> 0x39);
- uint64_t x65 = ((uint64_t)x63 & 0x1ffffffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x38);
- uint64_t x68 = (x66 & 0xffffffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3/femulDisplay.v b/src/Specific/solinas64_2e452m3/femulDisplay.v
deleted file mode 100644
index e961c04b3..000000000
--- a/src/Specific/solinas64_2e452m3/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e452m3.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e452m3/fesquare.c b/src/Specific/solinas64_2e452m3/fesquare.c
deleted file mode 100644
index 18c217c71..000000000
--- a/src/Specific/solinas64_2e452m3/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint128_t)x13 * x13))));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x3 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- { uint128_t x23 = (x22 >> 0x39);
- { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint128_t x26 = (x25 >> 0x38);
- { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint128_t x29 = (x28 >> 0x39);
- { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint128_t x32 = (x31 >> 0x38);
- { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint64_t x35 = (uint64_t) (x34 >> 0x39);
- { uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint128_t x38 = (x37 >> 0x38);
- { uint64_t x39 = ((uint64_t)x37 & 0xffffffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint64_t x41 = (uint64_t) (x40 >> 0x39);
- { uint64_t x42 = ((uint64_t)x40 & 0x1ffffffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint64_t x44 = (uint64_t) (x43 >> 0x38);
- { uint64_t x45 = ((uint64_t)x43 & 0xffffffffffffff);
- { uint128_t x46 = (x24 + ((uint128_t)0x3 * x44));
- { uint64_t x47 = (uint64_t) (x46 >> 0x39);
- { uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x38);
- { uint64_t x51 = (x49 & 0xffffffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e452m3/fesquare.v b/src/Specific/solinas64_2e452m3/fesquare.v
deleted file mode 100644
index dcb3873e6..000000000
--- a/src/Specific/solinas64_2e452m3/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e452m3/fesquareDisplay.log b/src/Specific/solinas64_2e452m3/fesquareDisplay.log
deleted file mode 100644
index 50d394689..000000000
--- a/src/Specific/solinas64_2e452m3/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x3 * (0x2 * ((uint128_t)x13 * x13))));
- uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x3 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x3 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- uint128_t x23 = (x22 >> 0x39);
- uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffffff);
- uint128_t x25 = (x23 + x21);
- uint128_t x26 = (x25 >> 0x38);
- uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
- uint128_t x28 = (x26 + x20);
- uint128_t x29 = (x28 >> 0x39);
- uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffffff);
- uint128_t x31 = (x29 + x19);
- uint128_t x32 = (x31 >> 0x38);
- uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
- uint128_t x34 = (x32 + x18);
- uint64_t x35 = (uint64_t) (x34 >> 0x39);
- uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
- uint128_t x37 = (x35 + x17);
- uint128_t x38 = (x37 >> 0x38);
- uint64_t x39 = ((uint64_t)x37 & 0xffffffffffffff);
- uint128_t x40 = (x38 + x16);
- uint64_t x41 = (uint64_t) (x40 >> 0x39);
- uint64_t x42 = ((uint64_t)x40 & 0x1ffffffffffffff);
- uint128_t x43 = (x41 + x15);
- uint64_t x44 = (uint64_t) (x43 >> 0x38);
- uint64_t x45 = ((uint64_t)x43 & 0xffffffffffffff);
- uint128_t x46 = (x24 + ((uint128_t)0x3 * x44));
- uint64_t x47 = (uint64_t) (x46 >> 0x39);
- uint64_t x48 = ((uint64_t)x46 & 0x1ffffffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x38);
- uint64_t x51 = (x49 & 0xffffffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3/fesquareDisplay.v b/src/Specific/solinas64_2e452m3/fesquareDisplay.v
deleted file mode 100644
index 210b25d02..000000000
--- a/src/Specific/solinas64_2e452m3/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e452m3.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e452m3/fesub.c b/src/Specific/solinas64_2e452m3/fesub.c
deleted file mode 100644
index 93d63ff22..000000000
--- a/src/Specific/solinas64_2e452m3/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x3fffffffffffffa + x5) - x19);
- out[1] = ((0x1fffffffffffffe + x7) - x21);
- out[2] = ((0x3fffffffffffffe + x9) - x23);
- out[3] = ((0x1fffffffffffffe + x11) - x25);
- out[4] = ((0x3fffffffffffffe + x13) - x27);
- out[5] = ((0x1fffffffffffffe + x15) - x29);
- out[6] = ((0x3fffffffffffffe + x17) - x31);
- out[7] = ((0x1fffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e452m3/fesub.v b/src/Specific/solinas64_2e452m3/fesub.v
deleted file mode 100644
index 971cac7cf..000000000
--- a/src/Specific/solinas64_2e452m3/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e452m3/fesubDisplay.log b/src/Specific/solinas64_2e452m3/fesubDisplay.log
deleted file mode 100644
index 540d6117a..000000000
--- a/src/Specific/solinas64_2e452m3/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1fffffffffffffe + x16) - x30), ((0x3fffffffffffffe + x17) - x31), ((0x1fffffffffffffe + x15) - x29), ((0x3fffffffffffffe + x13) - x27), ((0x1fffffffffffffe + x11) - x25), ((0x3fffffffffffffe + x9) - x23), ((0x1fffffffffffffe + x7) - x21), ((0x3fffffffffffffa + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3/fesubDisplay.v b/src/Specific/solinas64_2e452m3/fesubDisplay.v
deleted file mode 100644
index e0474e711..000000000
--- a/src/Specific/solinas64_2e452m3/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e452m3.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e452m3/freeze.c b/src/Specific/solinas64_2e452m3/freeze.c
deleted file mode 100644
index 6af79c058..000000000
--- a/src/Specific/solinas64_2e452m3/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffffd);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x1ffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0x1fffffffffffffd);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xffffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0x1ffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xffffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0x1ffffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xffffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0x1ffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xffffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e452m3/freeze.v b/src/Specific/solinas64_2e452m3/freeze.v
deleted file mode 100644
index 99f6281f7..000000000
--- a/src/Specific/solinas64_2e452m3/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e452m3.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e452m3/freezeDisplay.log b/src/Specific/solinas64_2e452m3/freezeDisplay.log
deleted file mode 100644
index b2eeefa09..000000000
--- a/src/Specific/solinas64_2e452m3/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffffd);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x1ffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xffffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x1ffffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xffffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x1ffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xffffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0x1fffffffffffffd);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xffffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0x1ffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xffffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0x1ffffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xffffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0x1ffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xffffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e452m3/freezeDisplay.v b/src/Specific/solinas64_2e452m3/freezeDisplay.v
deleted file mode 100644
index 5c814dd81..000000000
--- a/src/Specific/solinas64_2e452m3/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e452m3.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e452m3/CurveParameters.v b/src/Specific/solinas64_2e452m3_8limbs/CurveParameters.v
index e51728504..e51728504 100644
--- a/src/Specific/solinas64_2e452m3/CurveParameters.v
+++ b/src/Specific/solinas64_2e452m3_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e452m3_8limbs/Synthesis.v b/src/Specific/solinas64_2e452m3_8limbs/Synthesis.v
new file mode 100644
index 000000000..8aac00fe1
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e452m3/compiler.sh b/src/Specific/solinas64_2e452m3_8limbs/compiler.sh
index 309f2cc27..309f2cc27 100755
--- a/src/Specific/solinas64_2e452m3/compiler.sh
+++ b/src/Specific/solinas64_2e452m3_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e452m3/compilerxx.sh b/src/Specific/solinas64_2e452m3_8limbs/compilerxx.sh
index 1de86d182..1de86d182 100755
--- a/src/Specific/solinas64_2e452m3/compilerxx.sh
+++ b/src/Specific/solinas64_2e452m3_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e452m3_8limbs/feadd.v b/src/Specific/solinas64_2e452m3_8limbs/feadd.v
new file mode 100644
index 000000000..5e46a48da
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e452m3_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..41f006cf6
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/femul.v b/src/Specific/solinas64_2e452m3_8limbs/femul.v
new file mode 100644
index 000000000..07d2f96d9
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/femulDisplay.v b/src/Specific/solinas64_2e452m3_8limbs/femulDisplay.v
new file mode 100644
index 000000000..a96492a18
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/fesquare.v b/src/Specific/solinas64_2e452m3_8limbs/fesquare.v
new file mode 100644
index 000000000..16f066555
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e452m3_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..ccc525256
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/fesub.v b/src/Specific/solinas64_2e452m3_8limbs/fesub.v
new file mode 100644
index 000000000..304c71edc
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e452m3_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..6cad6bb6c
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/freeze.v b/src/Specific/solinas64_2e452m3_8limbs/freeze.v
new file mode 100644
index 000000000..6606b5a04
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e452m3_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e452m3_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..2d2971dfa
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e452m3/py_interpreter.sh b/src/Specific/solinas64_2e452m3_8limbs/py_interpreter.sh
index 33994d0a9..33994d0a9 100755
--- a/src/Specific/solinas64_2e452m3/py_interpreter.sh
+++ b/src/Specific/solinas64_2e452m3_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e452m3_9limbs/CurveParameters.v b/src/Specific/solinas64_2e452m3_9limbs/CurveParameters.v
new file mode 100644
index 000000000..320a9d2ec
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^452 - 3
+Base: 50 + 2/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 50 + 2/9;
+ bitwidth := 64;
+ s := 2^452;
+ c := [(1, 3)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/Synthesis.v b/src/Specific/solinas64_2e452m3_9limbs/Synthesis.v
new file mode 100644
index 000000000..e25716f90
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/compiler.sh b/src/Specific/solinas64_2e452m3_9limbs/compiler.sh
new file mode 100755
index 000000000..f6741ffb1
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,51,50,50,50,50}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas64_2e452m3_9limbs/compilerxx.sh b/src/Specific/solinas64_2e452m3_9limbs/compilerxx.sh
new file mode 100755
index 000000000..9f23e6320
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,50,50,50,51,50,50,50,50}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd}' -Dmodulus_bytes_val='57' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<452) - 3' "$@"
diff --git a/src/Specific/solinas64_2e452m3_9limbs/feadd.v b/src/Specific/solinas64_2e452m3_9limbs/feadd.v
new file mode 100644
index 000000000..03444dcf3
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e452m3_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..f2e5ccd2e
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/femul.v b/src/Specific/solinas64_2e452m3_9limbs/femul.v
new file mode 100644
index 000000000..50c3d4262
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/femulDisplay.v b/src/Specific/solinas64_2e452m3_9limbs/femulDisplay.v
new file mode 100644
index 000000000..0cf015121
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesquare.v b/src/Specific/solinas64_2e452m3_9limbs/fesquare.v
new file mode 100644
index 000000000..6bef74b62
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e452m3_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..98c66c5f9
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesub.v b/src/Specific/solinas64_2e452m3_9limbs/fesub.v
new file mode 100644
index 000000000..068e9ec16
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..841090f1f
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/freeze.v b/src/Specific/solinas64_2e452m3_9limbs/freeze.v
new file mode 100644
index 000000000..14713b91d
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..6c23a6bba
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e452m3_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e452m3_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e452m3_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..b293203e6
--- /dev/null
+++ b/src/Specific/solinas64_2e452m3_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**452 - 3' -Dmodulus_bytes='50 + 2/9' -Da24='121665'
diff --git a/src/Specific/solinas64_2e468m17/Synthesis.v b/src/Specific/solinas64_2e468m17/Synthesis.v
deleted file mode 100644
index 1eb192892..000000000
--- a/src/Specific/solinas64_2e468m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e468m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e468m17/feadd.c b/src/Specific/solinas64_2e468m17/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e468m17/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e468m17/feadd.v b/src/Specific/solinas64_2e468m17/feadd.v
deleted file mode 100644
index d26b0d407..000000000
--- a/src/Specific/solinas64_2e468m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e468m17/feaddDisplay.log b/src/Specific/solinas64_2e468m17/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e468m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17/feaddDisplay.v b/src/Specific/solinas64_2e468m17/feaddDisplay.v
deleted file mode 100644
index 8a232b14e..000000000
--- a/src/Specific/solinas64_2e468m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e468m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e468m17/femul.c b/src/Specific/solinas64_2e468m17/femul.c
deleted file mode 100644
index 577cfa76f..000000000
--- a/src/Specific/solinas64_2e468m17/femul.c
+++ /dev/null
@@ -1,64 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- { uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint128_t)x16 * x30))));
- { uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x11 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- { uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- { uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x11 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- { uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x11 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- { uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x11 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- { uint128_t x39 = (((uint128_t)x5 * x19) + (0x11 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- { uint128_t x40 = (x39 >> 0x3b);
- { uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffffff);
- { uint128_t x42 = (x40 + x38);
- { uint128_t x43 = (x42 >> 0x3a);
- { uint64_t x44 = ((uint64_t)x42 & 0x3ffffffffffffff);
- { uint128_t x45 = (x43 + x37);
- { uint128_t x46 = (x45 >> 0x3b);
- { uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffffff);
- { uint128_t x48 = (x46 + x36);
- { uint128_t x49 = (x48 >> 0x3a);
- { uint64_t x50 = ((uint64_t)x48 & 0x3ffffffffffffff);
- { uint128_t x51 = (x49 + x35);
- { uint128_t x52 = (x51 >> 0x3b);
- { uint64_t x53 = ((uint64_t)x51 & 0x7ffffffffffffff);
- { uint128_t x54 = (x52 + x34);
- { uint128_t x55 = (x54 >> 0x3a);
- { uint64_t x56 = ((uint64_t)x54 & 0x3ffffffffffffff);
- { uint128_t x57 = (x55 + x33);
- { uint128_t x58 = (x57 >> 0x3b);
- { uint64_t x59 = ((uint64_t)x57 & 0x7ffffffffffffff);
- { uint128_t x60 = (x58 + x32);
- { uint128_t x61 = (x60 >> 0x3a);
- { uint64_t x62 = ((uint64_t)x60 & 0x3ffffffffffffff);
- { uint128_t x63 = (x41 + (0x11 * x61));
- { uint64_t x64 = (uint64_t) (x63 >> 0x3b);
- { uint64_t x65 = ((uint64_t)x63 & 0x7ffffffffffffff);
- { uint64_t x66 = (x64 + x44);
- { uint64_t x67 = (x66 >> 0x3a);
- { uint64_t x68 = (x66 & 0x3ffffffffffffff);
- out[0] = x65;
- out[1] = x68;
- out[2] = (x67 + x47);
- out[3] = x50;
- out[4] = x53;
- out[5] = x56;
- out[6] = x59;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e468m17/femul.v b/src/Specific/solinas64_2e468m17/femul.v
deleted file mode 100644
index 42e990b58..000000000
--- a/src/Specific/solinas64_2e468m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e468m17/femulDisplay.log b/src/Specific/solinas64_2e468m17/femulDisplay.log
deleted file mode 100644
index 0b24105fb..000000000
--- a/src/Specific/solinas64_2e468m17/femulDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)x5 * x30) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + (((uint128_t)x17 * x21) + ((uint128_t)x16 * x19))))))));
- uint128_t x33 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + ((0x2 * ((uint128_t)x11 * x25)) + (((uint128_t)x13 * x23) + ((0x2 * ((uint128_t)x15 * x21)) + ((uint128_t)x17 * x19))))))) + (0x11 * (0x2 * ((uint128_t)x16 * x30))));
- uint128_t x34 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x15 * x19)))))) + (0x11 * (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))));
- uint128_t x35 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + ((uint128_t)x13 * x19))))) + (0x11 * ((0x2 * ((uint128_t)x15 * x30)) + (((uint128_t)x17 * x31) + (0x2 * ((uint128_t)x16 * x29))))));
- uint128_t x36 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (0x11 * (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27))))));
- uint128_t x37 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((uint128_t)x9 * x19))) + (0x11 * ((0x2 * ((uint128_t)x11 * x30)) + (((uint128_t)x13 * x31) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + (0x2 * ((uint128_t)x16 * x25))))))));
- uint128_t x38 = ((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (0x11 * (((uint128_t)x9 * x30) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((uint128_t)x16 * x23))))))));
- uint128_t x39 = (((uint128_t)x5 * x19) + (0x11 * ((0x2 * ((uint128_t)x7 * x30)) + (((uint128_t)x9 * x31) + ((0x2 * ((uint128_t)x11 * x29)) + (((uint128_t)x13 * x27) + ((0x2 * ((uint128_t)x15 * x25)) + (((uint128_t)x17 * x23) + (0x2 * ((uint128_t)x16 * x21))))))))));
- uint128_t x40 = (x39 >> 0x3b);
- uint64_t x41 = ((uint64_t)x39 & 0x7ffffffffffffff);
- uint128_t x42 = (x40 + x38);
- uint128_t x43 = (x42 >> 0x3a);
- uint64_t x44 = ((uint64_t)x42 & 0x3ffffffffffffff);
- uint128_t x45 = (x43 + x37);
- uint128_t x46 = (x45 >> 0x3b);
- uint64_t x47 = ((uint64_t)x45 & 0x7ffffffffffffff);
- uint128_t x48 = (x46 + x36);
- uint128_t x49 = (x48 >> 0x3a);
- uint64_t x50 = ((uint64_t)x48 & 0x3ffffffffffffff);
- uint128_t x51 = (x49 + x35);
- uint128_t x52 = (x51 >> 0x3b);
- uint64_t x53 = ((uint64_t)x51 & 0x7ffffffffffffff);
- uint128_t x54 = (x52 + x34);
- uint128_t x55 = (x54 >> 0x3a);
- uint64_t x56 = ((uint64_t)x54 & 0x3ffffffffffffff);
- uint128_t x57 = (x55 + x33);
- uint128_t x58 = (x57 >> 0x3b);
- uint64_t x59 = ((uint64_t)x57 & 0x7ffffffffffffff);
- uint128_t x60 = (x58 + x32);
- uint128_t x61 = (x60 >> 0x3a);
- uint64_t x62 = ((uint64_t)x60 & 0x3ffffffffffffff);
- uint128_t x63 = (x41 + (0x11 * x61));
- uint64_t x64 = (uint64_t) (x63 >> 0x3b);
- uint64_t x65 = ((uint64_t)x63 & 0x7ffffffffffffff);
- uint64_t x66 = (x64 + x44);
- uint64_t x67 = (x66 >> 0x3a);
- uint64_t x68 = (x66 & 0x3ffffffffffffff);
- return (Return x62, Return x59, Return x56, Return x53, Return x50, (x67 + x47), Return x68, Return x65))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17/femulDisplay.v b/src/Specific/solinas64_2e468m17/femulDisplay.v
deleted file mode 100644
index dcc968520..000000000
--- a/src/Specific/solinas64_2e468m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e468m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e468m17/fesquare.c b/src/Specific/solinas64_2e468m17/fesquare.c
deleted file mode 100644
index edce105d8..000000000
--- a/src/Specific/solinas64_2e468m17/fesquare.c
+++ /dev/null
@@ -1,56 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- { uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint128_t)x13 * x13))));
- { uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- { uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- { uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- { uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- { uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- { uint128_t x22 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- { uint128_t x23 = (x22 >> 0x3b);
- { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffffff);
- { uint128_t x25 = (x23 + x21);
- { uint128_t x26 = (x25 >> 0x3a);
- { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- { uint128_t x28 = (x26 + x20);
- { uint128_t x29 = (x28 >> 0x3b);
- { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- { uint128_t x31 = (x29 + x19);
- { uint128_t x32 = (x31 >> 0x3a);
- { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
- { uint128_t x34 = (x32 + x18);
- { uint128_t x35 = (x34 >> 0x3b);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
- { uint128_t x37 = (x35 + x17);
- { uint128_t x38 = (x37 >> 0x3a);
- { uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffffff);
- { uint128_t x40 = (x38 + x16);
- { uint128_t x41 = (x40 >> 0x3b);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- { uint128_t x43 = (x41 + x15);
- { uint128_t x44 = (x43 >> 0x3a);
- { uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffffff);
- { uint128_t x46 = (x24 + (0x11 * x44));
- { uint64_t x47 = (uint64_t) (x46 >> 0x3b);
- { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
- { uint64_t x49 = (x47 + x27);
- { uint64_t x50 = (x49 >> 0x3a);
- { uint64_t x51 = (x49 & 0x3ffffffffffffff);
- out[0] = x48;
- out[1] = x51;
- out[2] = (x50 + x30);
- out[3] = x33;
- out[4] = x36;
- out[5] = x39;
- out[6] = x42;
- out[7] = x45;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e468m17/fesquare.v b/src/Specific/solinas64_2e468m17/fesquare.v
deleted file mode 100644
index 79094299e..000000000
--- a/src/Specific/solinas64_2e468m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e468m17/fesquareDisplay.log b/src/Specific/solinas64_2e468m17/fesquareDisplay.log
deleted file mode 100644
index 1bdd98b58..000000000
--- a/src/Specific/solinas64_2e468m17/fesquareDisplay.log
+++ /dev/null
@@ -1,44 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)x2 * x13) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x13 * x2))))))));
- uint128_t x16 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (0x2 * ((uint128_t)x13 * x13))));
- uint128_t x17 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))));
- uint128_t x18 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * ((0x2 * ((uint128_t)x12 * x13)) + (((uint128_t)x14 * x14) + (0x2 * ((uint128_t)x13 * x12))))));
- uint128_t x19 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10))))));
- uint128_t x20 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * ((0x2 * ((uint128_t)x8 * x13)) + (((uint128_t)x10 * x14) + ((0x2 * ((uint128_t)x12 * x12)) + (((uint128_t)x14 * x10) + (0x2 * ((uint128_t)x13 * x8))))))));
- uint128_t x21 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x13) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + ((uint128_t)x13 * x6))))))));
- uint128_t x22 = (((uint128_t)x2 * x2) + (0x11 * ((0x2 * ((uint128_t)x4 * x13)) + (((uint128_t)x6 * x14) + ((0x2 * ((uint128_t)x8 * x12)) + (((uint128_t)x10 * x10) + ((0x2 * ((uint128_t)x12 * x8)) + (((uint128_t)x14 * x6) + (0x2 * ((uint128_t)x13 * x4))))))))));
- uint128_t x23 = (x22 >> 0x3b);
- uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffffffff);
- uint128_t x25 = (x23 + x21);
- uint128_t x26 = (x25 >> 0x3a);
- uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffffffff);
- uint128_t x28 = (x26 + x20);
- uint128_t x29 = (x28 >> 0x3b);
- uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
- uint128_t x31 = (x29 + x19);
- uint128_t x32 = (x31 >> 0x3a);
- uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffffffff);
- uint128_t x34 = (x32 + x18);
- uint128_t x35 = (x34 >> 0x3b);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
- uint128_t x37 = (x35 + x17);
- uint128_t x38 = (x37 >> 0x3a);
- uint64_t x39 = ((uint64_t)x37 & 0x3ffffffffffffff);
- uint128_t x40 = (x38 + x16);
- uint128_t x41 = (x40 >> 0x3b);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
- uint128_t x43 = (x41 + x15);
- uint128_t x44 = (x43 >> 0x3a);
- uint64_t x45 = ((uint64_t)x43 & 0x3ffffffffffffff);
- uint128_t x46 = (x24 + (0x11 * x44));
- uint64_t x47 = (uint64_t) (x46 >> 0x3b);
- uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
- uint64_t x49 = (x47 + x27);
- uint64_t x50 = (x49 >> 0x3a);
- uint64_t x51 = (x49 & 0x3ffffffffffffff);
- return (Return x45, Return x42, Return x39, Return x36, Return x33, (x50 + x30), Return x51, Return x48))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17/fesquareDisplay.v b/src/Specific/solinas64_2e468m17/fesquareDisplay.v
deleted file mode 100644
index e00af9ad5..000000000
--- a/src/Specific/solinas64_2e468m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e468m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e468m17/fesub.c b/src/Specific/solinas64_2e468m17/fesub.c
deleted file mode 100644
index 8e9e5a81d..000000000
--- a/src/Specific/solinas64_2e468m17/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0xfffffffffffffde + x5) - x19);
- out[1] = ((0x7fffffffffffffe + x7) - x21);
- out[2] = ((0xffffffffffffffe + x9) - x23);
- out[3] = ((0x7fffffffffffffe + x11) - x25);
- out[4] = ((0xffffffffffffffe + x13) - x27);
- out[5] = ((0x7fffffffffffffe + x15) - x29);
- out[6] = ((0xffffffffffffffe + x17) - x31);
- out[7] = ((0x7fffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e468m17/fesub.v b/src/Specific/solinas64_2e468m17/fesub.v
deleted file mode 100644
index e636e82cb..000000000
--- a/src/Specific/solinas64_2e468m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e468m17/fesubDisplay.log b/src/Specific/solinas64_2e468m17/fesubDisplay.log
deleted file mode 100644
index 4164d6bf6..000000000
--- a/src/Specific/solinas64_2e468m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x7fffffffffffffe + x16) - x30), ((0xffffffffffffffe + x17) - x31), ((0x7fffffffffffffe + x15) - x29), ((0xffffffffffffffe + x13) - x27), ((0x7fffffffffffffe + x11) - x25), ((0xffffffffffffffe + x9) - x23), ((0x7fffffffffffffe + x7) - x21), ((0xfffffffffffffde + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17/fesubDisplay.v b/src/Specific/solinas64_2e468m17/fesubDisplay.v
deleted file mode 100644
index c8a64ab31..000000000
--- a/src/Specific/solinas64_2e468m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e468m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e468m17/freeze.c b/src/Specific/solinas64_2e468m17/freeze.c
deleted file mode 100644
index a623a2a1e..000000000
--- a/src/Specific/solinas64_2e468m17/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffef);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffffffffffff);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0x7ffffffffffffef);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0x3ffffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0x7ffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0x3ffffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0x7ffffffffffffff);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0x3ffffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0x7ffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0x3ffffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e468m17/freeze.v b/src/Specific/solinas64_2e468m17/freeze.v
deleted file mode 100644
index bd87e27e8..000000000
--- a/src/Specific/solinas64_2e468m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e468m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e468m17/freezeDisplay.log b/src/Specific/solinas64_2e468m17/freezeDisplay.log
deleted file mode 100644
index f54fa802d..000000000
--- a/src/Specific/solinas64_2e468m17/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffef);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0x3ffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0x7ffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0x3ffffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0x7ffffffffffffff);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0x3ffffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0x7ffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0x3ffffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0x7ffffffffffffef);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0x3ffffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0x7ffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0x3ffffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0x7ffffffffffffff);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0x3ffffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0x7ffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0x3ffffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e468m17/freezeDisplay.v b/src/Specific/solinas64_2e468m17/freezeDisplay.v
deleted file mode 100644
index 0f0e4891e..000000000
--- a/src/Specific/solinas64_2e468m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e468m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e468m17/CurveParameters.v b/src/Specific/solinas64_2e468m17_8limbs/CurveParameters.v
index 0ed707400..0ed707400 100644
--- a/src/Specific/solinas64_2e468m17/CurveParameters.v
+++ b/src/Specific/solinas64_2e468m17_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e468m17_8limbs/Synthesis.v b/src/Specific/solinas64_2e468m17_8limbs/Synthesis.v
new file mode 100644
index 000000000..c5b46a658
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e468m17/compiler.sh b/src/Specific/solinas64_2e468m17_8limbs/compiler.sh
index 024db880b..024db880b 100755
--- a/src/Specific/solinas64_2e468m17/compiler.sh
+++ b/src/Specific/solinas64_2e468m17_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e468m17/compilerxx.sh b/src/Specific/solinas64_2e468m17_8limbs/compilerxx.sh
index ebc809049..ebc809049 100755
--- a/src/Specific/solinas64_2e468m17/compilerxx.sh
+++ b/src/Specific/solinas64_2e468m17_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e468m17_8limbs/feadd.v b/src/Specific/solinas64_2e468m17_8limbs/feadd.v
new file mode 100644
index 000000000..efa83eeb5
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e468m17_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..0007d0b4b
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/femul.v b/src/Specific/solinas64_2e468m17_8limbs/femul.v
new file mode 100644
index 000000000..13af29679
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/femulDisplay.v b/src/Specific/solinas64_2e468m17_8limbs/femulDisplay.v
new file mode 100644
index 000000000..26268ffe9
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/fesquare.v b/src/Specific/solinas64_2e468m17_8limbs/fesquare.v
new file mode 100644
index 000000000..91f199d83
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e468m17_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..0aafaa527
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/fesub.v b/src/Specific/solinas64_2e468m17_8limbs/fesub.v
new file mode 100644
index 000000000..7321060b2
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e468m17_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..585800f40
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/freeze.v b/src/Specific/solinas64_2e468m17_8limbs/freeze.v
new file mode 100644
index 000000000..33f6f5cc1
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e468m17_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e468m17_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..179f8ec3b
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e468m17/py_interpreter.sh b/src/Specific/solinas64_2e468m17_8limbs/py_interpreter.sh
index 699e598f0..699e598f0 100755
--- a/src/Specific/solinas64_2e468m17/py_interpreter.sh
+++ b/src/Specific/solinas64_2e468m17_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e468m17_9limbs/CurveParameters.v b/src/Specific/solinas64_2e468m17_9limbs/CurveParameters.v
new file mode 100644
index 000000000..29223e90e
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^468 - 17
+Base: 52
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 52;
+ bitwidth := 64;
+ s := 2^468;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/Synthesis.v b/src/Specific/solinas64_2e468m17_9limbs/Synthesis.v
new file mode 100644
index 000000000..3dd36977a
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/compiler.sh b/src/Specific/solinas64_2e468m17_9limbs/compiler.sh
new file mode 100755
index 000000000..4b8e39ad0
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<468) - 17' "$@"
diff --git a/src/Specific/solinas64_2e468m17_9limbs/compilerxx.sh b/src/Specific/solinas64_2e468m17_9limbs/compilerxx.sh
new file mode 100755
index 000000000..b0dfb98fe
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,52,52,52,52,52,52,52,52}' -Dmodulus_array='{0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='59' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<468) - 17' "$@"
diff --git a/src/Specific/solinas64_2e468m17_9limbs/feadd.v b/src/Specific/solinas64_2e468m17_9limbs/feadd.v
new file mode 100644
index 000000000..e453dfb66
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e468m17_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..57fb231ad
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/femul.v b/src/Specific/solinas64_2e468m17_9limbs/femul.v
new file mode 100644
index 000000000..6244783f1
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.v b/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.v
new file mode 100644
index 000000000..981abf301
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesquare.v b/src/Specific/solinas64_2e468m17_9limbs/fesquare.v
new file mode 100644
index 000000000..f4d98b87a
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..01f04d759
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesub.v b/src/Specific/solinas64_2e468m17_9limbs/fesub.v
new file mode 100644
index 000000000..4023e3f2b
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..8eed31191
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/freeze.v b/src/Specific/solinas64_2e468m17_9limbs/freeze.v
new file mode 100644
index 000000000..c98268b78
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..362e38e38
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e468m17_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e468m17_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e468m17_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..9a8a23861
--- /dev/null
+++ b/src/Specific/solinas64_2e468m17_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**468 - 17' -Dmodulus_bytes='52' -Da24='121665'
diff --git a/src/Specific/solinas64_2e480m2e240m1/Synthesis.v b/src/Specific/solinas64_2e480m2e240m1/Synthesis.v
deleted file mode 100644
index dbacea146..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e480m2e240m1/feadd.c b/src/Specific/solinas64_2e480m2e240m1/feadd.c
deleted file mode 100644
index 4def6ee9c..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/feadd.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void feadd(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = (x5 + x19);
- out[1] = (x7 + x21);
- out[2] = (x9 + x23);
- out[3] = (x11 + x25);
- out[4] = (x13 + x27);
- out[5] = (x15 + x29);
- out[6] = (x17 + x31);
- out[7] = (x16 + x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e480m2e240m1/feadd.v b/src/Specific/solinas64_2e480m2e240m1/feadd.v
deleted file mode 100644
index 92cb9a6e0..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.log b/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.log
deleted file mode 100644
index 023fc8a31..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- ((x16 + x30), (x17 + x31), (x15 + x29), (x13 + x27), (x11 + x25), (x9 + x23), (x7 + x21), (x5 + x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.v b/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.v
deleted file mode 100644
index b1898a3d0..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e480m2e240m1/femul.c b/src/Specific/solinas64_2e480m2e240m1/femul.c
deleted file mode 100644
index f76985cfd..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/femul.c
+++ /dev/null
@@ -1,81 +0,0 @@
-static void femul(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- { uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- { uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- { uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- { uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- { uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- { uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- { uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- { uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- { uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- { uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- { uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- { uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- { uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- { uint128_t x46 = (x42 >> 0x3c);
- { uint64_t x47 = ((uint64_t)x42 & 0xfffffffffffffff);
- { uint128_t x48 = (x35 >> 0x3c);
- { uint64_t x49 = ((uint64_t)x35 & 0xfffffffffffffff);
- { uint128_t x50 = ((0x1000000000000000 * x48) + x49);
- { uint128_t x51 = (x50 >> 0x3c);
- { uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffffff);
- { uint128_t x53 = ((x46 + x41) + x51);
- { uint128_t x54 = (x53 >> 0x3c);
- { uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffffff);
- { uint128_t x56 = (x45 + x51);
- { uint128_t x57 = (x56 >> 0x3c);
- { uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffffff);
- { uint128_t x59 = (x54 + x40);
- { uint128_t x60 = (x59 >> 0x3c);
- { uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffffff);
- { uint128_t x62 = (x57 + x44);
- { uint128_t x63 = (x62 >> 0x3c);
- { uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffffff);
- { uint128_t x65 = (x60 + x39);
- { uint128_t x66 = (x65 >> 0x3c);
- { uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffffff);
- { uint128_t x68 = (x63 + x43);
- { uint128_t x69 = (x68 >> 0x3c);
- { uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffffff);
- { uint128_t x71 = (x66 + x52);
- { uint64_t x72 = (uint64_t) (x71 >> 0x3c);
- { uint64_t x73 = ((uint64_t)x71 & 0xfffffffffffffff);
- { uint128_t x74 = (x69 + x47);
- { uint64_t x75 = (uint64_t) (x74 >> 0x3c);
- { uint64_t x76 = ((uint64_t)x74 & 0xfffffffffffffff);
- { uint128_t x77 = (((uint128_t)0x1000000000000000 * x72) + x73);
- { uint64_t x78 = (uint64_t) (x77 >> 0x3c);
- { uint64_t x79 = ((uint64_t)x77 & 0xfffffffffffffff);
- { uint64_t x80 = ((x75 + x55) + x78);
- { uint64_t x81 = (x80 >> 0x3c);
- { uint64_t x82 = (x80 & 0xfffffffffffffff);
- { uint64_t x83 = (x58 + x78);
- { uint64_t x84 = (x83 >> 0x3c);
- { uint64_t x85 = (x83 & 0xfffffffffffffff);
- out[0] = x85;
- out[1] = (x84 + x64);
- out[2] = x70;
- out[3] = x76;
- out[4] = x82;
- out[5] = (x81 + x61);
- out[6] = x67;
- out[7] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e480m2e240m1/femul.v b/src/Specific/solinas64_2e480m2e240m1/femul.v
deleted file mode 100644
index 558485a84..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1/femulDisplay.log b/src/Specific/solinas64_2e480m2e240m1/femulDisplay.log
deleted file mode 100644
index 3b4d06e2c..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/femulDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- uint128_t x32 = (((uint128_t)(x11 + x16) * (x25 + x30)) - ((uint128_t)x11 * x25));
- uint128_t x33 = ((((uint128_t)(x9 + x17) * (x25 + x30)) + ((uint128_t)(x11 + x16) * (x23 + x31))) - (((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)));
- uint128_t x34 = ((((uint128_t)(x7 + x15) * (x25 + x30)) + (((uint128_t)(x9 + x17) * (x23 + x31)) + ((uint128_t)(x11 + x16) * (x21 + x29)))) - (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))));
- uint128_t x35 = ((((uint128_t)(x5 + x13) * (x25 + x30)) + (((uint128_t)(x7 + x15) * (x23 + x31)) + (((uint128_t)(x9 + x17) * (x21 + x29)) + ((uint128_t)(x11 + x16) * (x19 + x27))))) - (((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))));
- uint128_t x36 = ((((uint128_t)(x5 + x13) * (x23 + x31)) + (((uint128_t)(x7 + x15) * (x21 + x29)) + ((uint128_t)(x9 + x17) * (x19 + x27)))) - (((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))));
- uint128_t x37 = ((((uint128_t)(x5 + x13) * (x21 + x29)) + ((uint128_t)(x7 + x15) * (x19 + x27))) - (((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)));
- uint128_t x38 = (((uint128_t)(x5 + x13) * (x19 + x27)) - ((uint128_t)x5 * x19));
- uint128_t x39 = (((((uint128_t)x11 * x25) + ((uint128_t)x16 * x30)) + x36) + x32);
- uint128_t x40 = ((((((uint128_t)x9 * x25) + ((uint128_t)x11 * x23)) + (((uint128_t)x17 * x30) + ((uint128_t)x16 * x31))) + x37) + x33);
- uint128_t x41 = ((((((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21))) + (((uint128_t)x15 * x30) + (((uint128_t)x17 * x31) + ((uint128_t)x16 * x29)))) + x38) + x34);
- uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + ((uint128_t)x11 * x19)))) + (((uint128_t)x13 * x30) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + ((uint128_t)x16 * x27)))));
- uint128_t x43 = (((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((uint128_t)x9 * x19))) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((uint128_t)x17 * x27)))) + x32);
- uint128_t x44 = (((((uint128_t)x5 * x21) + ((uint128_t)x7 * x19)) + (((uint128_t)x13 * x29) + ((uint128_t)x15 * x27))) + x33);
- uint128_t x45 = ((((uint128_t)x5 * x19) + ((uint128_t)x13 * x27)) + x34);
- uint128_t x46 = (x42 >> 0x3c);
- uint64_t x47 = ((uint64_t)x42 & 0xfffffffffffffff);
- uint128_t x48 = (x35 >> 0x3c);
- uint64_t x49 = ((uint64_t)x35 & 0xfffffffffffffff);
- uint128_t x50 = ((0x1000000000000000 * x48) + x49);
- uint128_t x51 = (x50 >> 0x3c);
- uint64_t x52 = ((uint64_t)x50 & 0xfffffffffffffff);
- uint128_t x53 = ((x46 + x41) + x51);
- uint128_t x54 = (x53 >> 0x3c);
- uint64_t x55 = ((uint64_t)x53 & 0xfffffffffffffff);
- uint128_t x56 = (x45 + x51);
- uint128_t x57 = (x56 >> 0x3c);
- uint64_t x58 = ((uint64_t)x56 & 0xfffffffffffffff);
- uint128_t x59 = (x54 + x40);
- uint128_t x60 = (x59 >> 0x3c);
- uint64_t x61 = ((uint64_t)x59 & 0xfffffffffffffff);
- uint128_t x62 = (x57 + x44);
- uint128_t x63 = (x62 >> 0x3c);
- uint64_t x64 = ((uint64_t)x62 & 0xfffffffffffffff);
- uint128_t x65 = (x60 + x39);
- uint128_t x66 = (x65 >> 0x3c);
- uint64_t x67 = ((uint64_t)x65 & 0xfffffffffffffff);
- uint128_t x68 = (x63 + x43);
- uint128_t x69 = (x68 >> 0x3c);
- uint64_t x70 = ((uint64_t)x68 & 0xfffffffffffffff);
- uint128_t x71 = (x66 + x52);
- uint64_t x72 = (uint64_t) (x71 >> 0x3c);
- uint64_t x73 = ((uint64_t)x71 & 0xfffffffffffffff);
- uint128_t x74 = (x69 + x47);
- uint64_t x75 = (uint64_t) (x74 >> 0x3c);
- uint64_t x76 = ((uint64_t)x74 & 0xfffffffffffffff);
- uint128_t x77 = (((uint128_t)0x1000000000000000 * x72) + x73);
- uint64_t x78 = (uint64_t) (x77 >> 0x3c);
- uint64_t x79 = ((uint64_t)x77 & 0xfffffffffffffff);
- uint64_t x80 = ((x75 + x55) + x78);
- uint64_t x81 = (x80 >> 0x3c);
- uint64_t x82 = (x80 & 0xfffffffffffffff);
- uint64_t x83 = (x58 + x78);
- uint64_t x84 = (x83 >> 0x3c);
- uint64_t x85 = (x83 & 0xfffffffffffffff);
- return (Return x79, Return x67, (x81 + x61), Return x82, Return x76, Return x70, (x84 + x64), Return x85))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v b/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v
deleted file mode 100644
index 68a771916..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquare.c b/src/Specific/solinas64_2e480m2e240m1/fesquare.c
deleted file mode 100644
index 83913c4a7..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesquare.c
+++ /dev/null
@@ -1,73 +0,0 @@
-static void fesquare(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- { uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- { uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- { uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- { uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- { uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- { uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- { uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- { uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- { uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- { uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- { uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- { uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- { uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- { uint128_t x29 = (x25 >> 0x3c);
- { uint64_t x30 = ((uint64_t)x25 & 0xfffffffffffffff);
- { uint128_t x31 = (x18 >> 0x3c);
- { uint64_t x32 = ((uint64_t)x18 & 0xfffffffffffffff);
- { uint128_t x33 = ((0x1000000000000000 * x31) + x32);
- { uint128_t x34 = (x33 >> 0x3c);
- { uint64_t x35 = ((uint64_t)x33 & 0xfffffffffffffff);
- { uint128_t x36 = ((x29 + x24) + x34);
- { uint128_t x37 = (x36 >> 0x3c);
- { uint64_t x38 = ((uint64_t)x36 & 0xfffffffffffffff);
- { uint128_t x39 = (x28 + x34);
- { uint128_t x40 = (x39 >> 0x3c);
- { uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffffff);
- { uint128_t x42 = (x37 + x23);
- { uint128_t x43 = (x42 >> 0x3c);
- { uint64_t x44 = ((uint64_t)x42 & 0xfffffffffffffff);
- { uint128_t x45 = (x40 + x27);
- { uint128_t x46 = (x45 >> 0x3c);
- { uint64_t x47 = ((uint64_t)x45 & 0xfffffffffffffff);
- { uint128_t x48 = (x43 + x22);
- { uint128_t x49 = (x48 >> 0x3c);
- { uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffffff);
- { uint128_t x51 = (x46 + x26);
- { uint128_t x52 = (x51 >> 0x3c);
- { uint64_t x53 = ((uint64_t)x51 & 0xfffffffffffffff);
- { uint128_t x54 = (x49 + x35);
- { uint64_t x55 = (uint64_t) (x54 >> 0x3c);
- { uint64_t x56 = ((uint64_t)x54 & 0xfffffffffffffff);
- { uint128_t x57 = (x52 + x30);
- { uint64_t x58 = (uint64_t) (x57 >> 0x3c);
- { uint64_t x59 = ((uint64_t)x57 & 0xfffffffffffffff);
- { uint128_t x60 = (((uint128_t)0x1000000000000000 * x55) + x56);
- { uint64_t x61 = (uint64_t) (x60 >> 0x3c);
- { uint64_t x62 = ((uint64_t)x60 & 0xfffffffffffffff);
- { uint64_t x63 = ((x58 + x38) + x61);
- { uint64_t x64 = (x63 >> 0x3c);
- { uint64_t x65 = (x63 & 0xfffffffffffffff);
- { uint64_t x66 = (x41 + x61);
- { uint64_t x67 = (x66 >> 0x3c);
- { uint64_t x68 = (x66 & 0xfffffffffffffff);
- out[0] = x68;
- out[1] = (x67 + x47);
- out[2] = x53;
- out[3] = x59;
- out[4] = x65;
- out[5] = (x64 + x44);
- out[6] = x50;
- out[7] = x62;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquare.v b/src/Specific/solinas64_2e480m2e240m1/fesquare.v
deleted file mode 100644
index 7966e35a9..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.log b/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.log
deleted file mode 100644
index f383847c9..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.log
+++ /dev/null
@@ -1,61 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x15 = (((uint128_t)(x8 + x13) * (x8 + x13)) - ((uint128_t)x8 * x8));
- uint128_t x16 = ((((uint128_t)(x6 + x14) * (x8 + x13)) + ((uint128_t)(x8 + x13) * (x6 + x14))) - (((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)));
- uint128_t x17 = ((((uint128_t)(x4 + x12) * (x8 + x13)) + (((uint128_t)(x6 + x14) * (x6 + x14)) + ((uint128_t)(x8 + x13) * (x4 + x12)))) - (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))));
- uint128_t x18 = ((((uint128_t)(x2 + x10) * (x8 + x13)) + (((uint128_t)(x4 + x12) * (x6 + x14)) + (((uint128_t)(x6 + x14) * (x4 + x12)) + ((uint128_t)(x8 + x13) * (x2 + x10))))) - (((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))));
- uint128_t x19 = ((((uint128_t)(x2 + x10) * (x6 + x14)) + (((uint128_t)(x4 + x12) * (x4 + x12)) + ((uint128_t)(x6 + x14) * (x2 + x10)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
- uint128_t x20 = ((((uint128_t)(x2 + x10) * (x4 + x12)) + ((uint128_t)(x4 + x12) * (x2 + x10))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
- uint128_t x21 = (((uint128_t)(x2 + x10) * (x2 + x10)) - ((uint128_t)x2 * x2));
- uint128_t x22 = (((((uint128_t)x8 * x8) + ((uint128_t)x13 * x13)) + x19) + x15);
- uint128_t x23 = ((((((uint128_t)x6 * x8) + ((uint128_t)x8 * x6)) + (((uint128_t)x14 * x13) + ((uint128_t)x13 * x14))) + x20) + x16);
- uint128_t x24 = ((((((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + ((uint128_t)x8 * x4))) + (((uint128_t)x12 * x13) + (((uint128_t)x14 * x14) + ((uint128_t)x13 * x12)))) + x21) + x17);
- uint128_t x25 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x13) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((uint128_t)x13 * x10)))));
- uint128_t x26 = (((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + ((uint128_t)x14 * x10)))) + x15);
- uint128_t x27 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x10 * x12) + ((uint128_t)x12 * x10))) + x16);
- uint128_t x28 = ((((uint128_t)x2 * x2) + ((uint128_t)x10 * x10)) + x17);
- uint128_t x29 = (x25 >> 0x3c);
- uint64_t x30 = ((uint64_t)x25 & 0xfffffffffffffff);
- uint128_t x31 = (x18 >> 0x3c);
- uint64_t x32 = ((uint64_t)x18 & 0xfffffffffffffff);
- uint128_t x33 = ((0x1000000000000000 * x31) + x32);
- uint128_t x34 = (x33 >> 0x3c);
- uint64_t x35 = ((uint64_t)x33 & 0xfffffffffffffff);
- uint128_t x36 = ((x29 + x24) + x34);
- uint128_t x37 = (x36 >> 0x3c);
- uint64_t x38 = ((uint64_t)x36 & 0xfffffffffffffff);
- uint128_t x39 = (x28 + x34);
- uint128_t x40 = (x39 >> 0x3c);
- uint64_t x41 = ((uint64_t)x39 & 0xfffffffffffffff);
- uint128_t x42 = (x37 + x23);
- uint128_t x43 = (x42 >> 0x3c);
- uint64_t x44 = ((uint64_t)x42 & 0xfffffffffffffff);
- uint128_t x45 = (x40 + x27);
- uint128_t x46 = (x45 >> 0x3c);
- uint64_t x47 = ((uint64_t)x45 & 0xfffffffffffffff);
- uint128_t x48 = (x43 + x22);
- uint128_t x49 = (x48 >> 0x3c);
- uint64_t x50 = ((uint64_t)x48 & 0xfffffffffffffff);
- uint128_t x51 = (x46 + x26);
- uint128_t x52 = (x51 >> 0x3c);
- uint64_t x53 = ((uint64_t)x51 & 0xfffffffffffffff);
- uint128_t x54 = (x49 + x35);
- uint64_t x55 = (uint64_t) (x54 >> 0x3c);
- uint64_t x56 = ((uint64_t)x54 & 0xfffffffffffffff);
- uint128_t x57 = (x52 + x30);
- uint64_t x58 = (uint64_t) (x57 >> 0x3c);
- uint64_t x59 = ((uint64_t)x57 & 0xfffffffffffffff);
- uint128_t x60 = (((uint128_t)0x1000000000000000 * x55) + x56);
- uint64_t x61 = (uint64_t) (x60 >> 0x3c);
- uint64_t x62 = ((uint64_t)x60 & 0xfffffffffffffff);
- uint64_t x63 = ((x58 + x38) + x61);
- uint64_t x64 = (x63 >> 0x3c);
- uint64_t x65 = (x63 & 0xfffffffffffffff);
- uint64_t x66 = (x41 + x61);
- uint64_t x67 = (x66 >> 0x3c);
- uint64_t x68 = (x66 & 0xfffffffffffffff);
- return (Return x62, Return x50, (x64 + x44), Return x65, Return x59, Return x53, (x67 + x47), Return x68))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v b/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v
deleted file mode 100644
index 0e58e172f..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesub.c b/src/Specific/solinas64_2e480m2e240m1/fesub.c
deleted file mode 100644
index cc9d13c37..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesub.c
+++ /dev/null
@@ -1,27 +0,0 @@
-static void fesub(uint64_t out[8], const uint64_t in1[8], const uint64_t in2[8]) {
- { const uint64_t x16 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x30 = in2[7];
- { const uint64_t x31 = in2[6];
- { const uint64_t x29 = in2[5];
- { const uint64_t x27 = in2[4];
- { const uint64_t x25 = in2[3];
- { const uint64_t x23 = in2[2];
- { const uint64_t x21 = in2[1];
- { const uint64_t x19 = in2[0];
- out[0] = ((0x1ffffffffffffffe + x5) - x19);
- out[1] = ((0x1ffffffffffffffe + x7) - x21);
- out[2] = ((0x1ffffffffffffffe + x9) - x23);
- out[3] = ((0x1ffffffffffffffe + x11) - x25);
- out[4] = ((0x1ffffffffffffffc + x13) - x27);
- out[5] = ((0x1ffffffffffffffe + x15) - x29);
- out[6] = ((0x1ffffffffffffffe + x17) - x31);
- out[7] = ((0x1ffffffffffffffe + x16) - x30);
- }}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesub.v b/src/Specific/solinas64_2e480m2e240m1/fesub.v
deleted file mode 100644
index 99ebe178d..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.log b/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.log
deleted file mode 100644
index de0b3ae96..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x16, x17, x15, x13, x11, x9, x7, x5, (x30, x31, x29, x27, x25, x23, x21, x19))%core,
- (((0x1ffffffffffffffe + x16) - x30), ((0x1ffffffffffffffe + x17) - x31), ((0x1ffffffffffffffe + x15) - x29), ((0x1ffffffffffffffc + x13) - x27), ((0x1ffffffffffffffe + x11) - x25), ((0x1ffffffffffffffe + x9) - x23), ((0x1ffffffffffffffe + x7) - x21), ((0x1ffffffffffffffe + x5) - x19)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.v b/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.v
deleted file mode 100644
index 36375786b..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1/freeze.c b/src/Specific/solinas64_2e480m2e240m1/freeze.c
deleted file mode 100644
index 3173ddc8a..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/freeze.c
+++ /dev/null
@@ -1,44 +0,0 @@
-static void freeze(uint64_t out[8], const uint64_t in1[8]) {
- { const uint64_t x13 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffff);
- { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffffff);
- { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffffffffffff);
- { uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffffff);
- { uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffffe);
- { uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffffffffffff);
- { uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffffff);
- { uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffffffffffff);
- { uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- { uint64_t x40 = (x39 & 0xfffffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- { uint64_t x44 = (x39 & 0xfffffffffffffff);
- { uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- { uint64_t x48 = (x39 & 0xfffffffffffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- { uint64_t x52 = (x39 & 0xfffffffffffffff);
- { uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- { uint64_t x56 = (x39 & 0xffffffffffffffe);
- { uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- { uint64_t x60 = (x39 & 0xfffffffffffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- { uint64_t x64 = (x39 & 0xfffffffffffffff);
- { uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- { uint64_t x68 = (x39 & 0xfffffffffffffff);
- { uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- out[0] = x42;
- out[1] = x46;
- out[2] = x50;
- out[3] = x54;
- out[4] = x58;
- out[5] = x62;
- out[6] = x66;
- out[7] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e480m2e240m1/freeze.v b/src/Specific/solinas64_2e480m2e240m1/freeze.v
deleted file mode 100644
index 65e4a4fc0..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.log b/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.log
deleted file mode 100644
index 44be6a8b2..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.log
+++ /dev/null
@@ -1,32 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x13, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffff);
- uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x4, 0xfffffffffffffff);
- uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x6, 0xfffffffffffffff);
- uint64_t x25, uint8_t x26 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x8, 0xfffffffffffffff);
- uint64_t x28, uint8_t x29 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x26, Return x10, 0xffffffffffffffe);
- uint64_t x31, uint8_t x32 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x29, Return x12, 0xfffffffffffffff);
- uint64_t x34, uint8_t x35 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x14, 0xfffffffffffffff);
- uint64_t x37, uint8_t x38 = Op (Syntax.SubWithGetBorrow 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x13, 0xfffffffffffffff);
- uint64_t x39 = cmovznz64(x38, 0x0, 0xffffffffffffffffL);
- uint64_t x40 = (x39 & 0xfffffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x16, Return x40);
- uint64_t x44 = (x39 & 0xfffffffffffffff);
- uint64_t x46, uint8_t x47 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x43, Return x19, Return x44);
- uint64_t x48 = (x39 & 0xfffffffffffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x47, Return x22, Return x48);
- uint64_t x52 = (x39 & 0xfffffffffffffff);
- uint64_t x54, uint8_t x55 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x25, Return x52);
- uint64_t x56 = (x39 & 0xffffffffffffffe);
- uint64_t x58, uint8_t x59 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x55, Return x28, Return x56);
- uint64_t x60 = (x39 & 0xfffffffffffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x59, Return x31, Return x60);
- uint64_t x64 = (x39 & 0xfffffffffffffff);
- uint64_t x66, uint8_t x67 = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x34, Return x64);
- uint64_t x68 = (x39 & 0xfffffffffffffff);
- uint64_t x70, uint8_t _ = Op (Syntax.AddWithGetCarry 60 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x67, Return x37, Return x68);
- (Return x70, Return x66, Return x62, Return x58, Return x54, Return x50, Return x46, Return x42))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v b/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v
deleted file mode 100644
index f4027debf..000000000
--- a/src/Specific/solinas64_2e480m2e240m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e480m2e240m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/CurveParameters.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/CurveParameters.v
new file mode 100644
index 000000000..c56f45689
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^480 - 2^240 - 1
+Base: 48
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 48;
+ bitwidth := 64;
+ s := 2^480;
+ c := [(1, 1); (2^240, 1)];
+ carry_chains := Some [[4; 9]; [5; 0; 6; 1; 7; 2; 8; 3; 9; 4]; [5; 0]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := Some true;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/Synthesis.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..27de625e7
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/compiler.sh b/src/Specific/solinas64_2e480m2e240m1_10limbs/compiler.sh
new file mode 100755
index 000000000..9f9857cbc
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/compilerxx.sh b/src/Specific/solinas64_2e480m2e240m1_10limbs/compilerxx.sh
new file mode 100755
index 000000000..14ee9066e
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{48,48,48,48,48,48,48,48,48,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='60' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<480) - (1_mpz<<240) - 1' "$@"
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.v
new file mode 100644
index 000000000..77ed601b9
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..f7de22d7d
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.v
new file mode 100644
index 000000000..e5dc6f56c
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..db2a0b007
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.v
new file mode 100644
index 000000000..f2c985618
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..f6de5ed9e
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.v
new file mode 100644
index 000000000..b3279e26a
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..9eae98e08
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.v
new file mode 100644
index 000000000..83959734d
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..94b76ba47
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e480m2e240m1_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..86e137507
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**480 - 2**240 - 1' -Dmodulus_bytes='48' -Da24='121665'
diff --git a/src/Specific/solinas64_2e480m2e240m1/CurveParameters.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/CurveParameters.v
index e4fd7f1e8..e4fd7f1e8 100644
--- a/src/Specific/solinas64_2e480m2e240m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/Synthesis.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/Synthesis.v
new file mode 100644
index 000000000..9bf5c1a05
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e480m2e240m1/compiler.sh b/src/Specific/solinas64_2e480m2e240m1_8limbs/compiler.sh
index c3f85f793..c3f85f793 100755
--- a/src/Specific/solinas64_2e480m2e240m1/compiler.sh
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e480m2e240m1/compilerxx.sh b/src/Specific/solinas64_2e480m2e240m1_8limbs/compilerxx.sh
index 016fcd2fc..016fcd2fc 100755
--- a/src/Specific/solinas64_2e480m2e240m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/feadd.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/feadd.v
new file mode 100644
index 000000000..1f856b831
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/feaddDisplay.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/feaddDisplay.v
new file mode 100644
index 000000000..cb3330c27
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/femul.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/femul.v
new file mode 100644
index 000000000..bf8d33d2d
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/femulDisplay.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/femulDisplay.v
new file mode 100644
index 000000000..12bd10d1d
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquare.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquare.v
new file mode 100644
index 000000000..3737337b8
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquareDisplay.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c854ed773
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/fesub.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesub.v
new file mode 100644
index 000000000..fa5b4cff5
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/fesubDisplay.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesubDisplay.v
new file mode 100644
index 000000000..eff1ca171
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/freeze.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/freeze.v
new file mode 100644
index 000000000..3ebae16cb
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1_8limbs/freezeDisplay.v b/src/Specific/solinas64_2e480m2e240m1_8limbs/freezeDisplay.v
new file mode 100644
index 000000000..d69999f59
--- /dev/null
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e480m2e240m1_8limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e480m2e240m1/py_interpreter.sh b/src/Specific/solinas64_2e480m2e240m1_8limbs/py_interpreter.sh
index acdafd45b..acdafd45b 100755
--- a/src/Specific/solinas64_2e480m2e240m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e480m2e240m1_8limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e488m17/CurveParameters.v b/src/Specific/solinas64_2e488m17/CurveParameters.v
deleted file mode 100644
index 1bb8100c7..000000000
--- a/src/Specific/solinas64_2e488m17/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^488 - 17
-Base: 30.5
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 16%nat;
- base := 30 + 1/2;
- bitwidth := 64;
- s := 2^488;
- c := [(1, 17)];
- carry_chains := Some [seq 0 (pred 16); [0; 1]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e488m17/Synthesis.v b/src/Specific/solinas64_2e488m17/Synthesis.v
deleted file mode 100644
index 6c84b57b2..000000000
--- a/src/Specific/solinas64_2e488m17/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e488m17.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e488m17/compiler.sh b/src/Specific/solinas64_2e488m17/compiler.sh
deleted file mode 100755
index 34cc5882f..000000000
--- a/src/Specific/solinas64_2e488m17/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{31,30,31,30,31,30,31,30,31,30,31,30,31,30,31,30}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17/compilerxx.sh b/src/Specific/solinas64_2e488m17/compilerxx.sh
deleted file mode 100755
index e89ebd7a0..000000000
--- a/src/Specific/solinas64_2e488m17/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{31,30,31,30,31,30,31,30,31,30,31,30,31,30,31,30}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='16' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17/feadd.c b/src/Specific/solinas64_2e488m17/feadd.c
deleted file mode 100644
index 89267745e..000000000
--- a/src/Specific/solinas64_2e488m17/feadd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void feadd(uint64_t out[16], const uint64_t in1[16], const uint64_t in2[16]) {
- { const uint64_t x32 = in1[15];
- { const uint64_t x33 = in1[14];
- { const uint64_t x31 = in1[13];
- { const uint64_t x29 = in1[12];
- { const uint64_t x27 = in1[11];
- { const uint64_t x25 = in1[10];
- { const uint64_t x23 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x62 = in2[15];
- { const uint64_t x63 = in2[14];
- { const uint64_t x61 = in2[13];
- { const uint64_t x59 = in2[12];
- { const uint64_t x57 = in2[11];
- { const uint64_t x55 = in2[10];
- { const uint64_t x53 = in2[9];
- { const uint64_t x51 = in2[8];
- { const uint64_t x49 = in2[7];
- { const uint64_t x47 = in2[6];
- { const uint64_t x45 = in2[5];
- { const uint64_t x43 = in2[4];
- { const uint64_t x41 = in2[3];
- { const uint64_t x39 = in2[2];
- { const uint64_t x37 = in2[1];
- { const uint64_t x35 = in2[0];
- out[0] = (x5 + x35);
- out[1] = (x7 + x37);
- out[2] = (x9 + x39);
- out[3] = (x11 + x41);
- out[4] = (x13 + x43);
- out[5] = (x15 + x45);
- out[6] = (x17 + x47);
- out[7] = (x19 + x49);
- out[8] = (x21 + x51);
- out[9] = (x23 + x53);
- out[10] = (x25 + x55);
- out[11] = (x27 + x57);
- out[12] = (x29 + x59);
- out[13] = (x31 + x61);
- out[14] = (x33 + x63);
- out[15] = (x32 + x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e488m17/feadd.v b/src/Specific/solinas64_2e488m17/feadd.v
deleted file mode 100644
index 961ee8f35..000000000
--- a/src/Specific/solinas64_2e488m17/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e488m17/feaddDisplay.log b/src/Specific/solinas64_2e488m17/feaddDisplay.log
deleted file mode 100644
index 65c57ff77..000000000
--- a/src/Specific/solinas64_2e488m17/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- ((x32 + x62), (x33 + x63), (x31 + x61), (x29 + x59), (x27 + x57), (x25 + x55), (x23 + x53), (x21 + x51), (x19 + x49), (x17 + x47), (x15 + x45), (x13 + x43), (x11 + x41), (x9 + x39), (x7 + x37), (x5 + x35)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17/feaddDisplay.v b/src/Specific/solinas64_2e488m17/feaddDisplay.v
deleted file mode 100644
index 9558fc709..000000000
--- a/src/Specific/solinas64_2e488m17/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e488m17.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e488m17/femul.c b/src/Specific/solinas64_2e488m17/femul.c
deleted file mode 100644
index 9f28e5742..000000000
--- a/src/Specific/solinas64_2e488m17/femul.c
+++ /dev/null
@@ -1,120 +0,0 @@
-static void femul(uint64_t out[16], const uint64_t in1[16], const uint64_t in2[16]) {
- { const uint64_t x32 = in1[15];
- { const uint64_t x33 = in1[14];
- { const uint64_t x31 = in1[13];
- { const uint64_t x29 = in1[12];
- { const uint64_t x27 = in1[11];
- { const uint64_t x25 = in1[10];
- { const uint64_t x23 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x62 = in2[15];
- { const uint64_t x63 = in2[14];
- { const uint64_t x61 = in2[13];
- { const uint64_t x59 = in2[12];
- { const uint64_t x57 = in2[11];
- { const uint64_t x55 = in2[10];
- { const uint64_t x53 = in2[9];
- { const uint64_t x51 = in2[8];
- { const uint64_t x49 = in2[7];
- { const uint64_t x47 = in2[6];
- { const uint64_t x45 = in2[5];
- { const uint64_t x43 = in2[4];
- { const uint64_t x41 = in2[3];
- { const uint64_t x39 = in2[2];
- { const uint64_t x37 = in2[1];
- { const uint64_t x35 = in2[0];
- { uint128_t x64 = (((uint128_t)x5 * x62) + (((uint128_t)x7 * x63) + (((uint128_t)x9 * x61) + (((uint128_t)x11 * x59) + (((uint128_t)x13 * x57) + (((uint128_t)x15 * x55) + (((uint128_t)x17 * x53) + (((uint128_t)x19 * x51) + (((uint128_t)x21 * x49) + (((uint128_t)x23 * x47) + (((uint128_t)x25 * x45) + (((uint128_t)x27 * x43) + (((uint128_t)x29 * x41) + (((uint128_t)x31 * x39) + (((uint128_t)x33 * x37) + ((uint128_t)x32 * x35))))))))))))))));
- { uint128_t x65 = ((((uint128_t)x5 * x63) + (((uint128_t)0x2 * (x7 * x61)) + (((uint128_t)x9 * x59) + (((uint128_t)0x2 * (x11 * x57)) + (((uint128_t)x13 * x55) + (((uint128_t)0x2 * (x15 * x53)) + (((uint128_t)x17 * x51) + (((uint128_t)0x2 * (x19 * x49)) + (((uint128_t)x21 * x47) + (((uint128_t)0x2 * (x23 * x45)) + (((uint128_t)x25 * x43) + (((uint128_t)0x2 * (x27 * x41)) + (((uint128_t)x29 * x39) + (((uint128_t)0x2 * (x31 * x37)) + ((uint128_t)x33 * x35))))))))))))))) + (0x11 * ((uint128_t)0x2 * (x32 * x62))));
- { uint128_t x66 = ((((uint128_t)x5 * x61) + (((uint128_t)x7 * x59) + (((uint128_t)x9 * x57) + (((uint128_t)x11 * x55) + (((uint128_t)x13 * x53) + (((uint128_t)x15 * x51) + (((uint128_t)x17 * x49) + (((uint128_t)x19 * x47) + (((uint128_t)x21 * x45) + (((uint128_t)x23 * x43) + (((uint128_t)x25 * x41) + (((uint128_t)x27 * x39) + (((uint128_t)x29 * x37) + ((uint128_t)x31 * x35)))))))))))))) + (0x11 * (((uint128_t)x33 * x62) + ((uint128_t)x32 * x63))));
- { uint128_t x67 = ((((uint128_t)x5 * x59) + (((uint128_t)0x2 * (x7 * x57)) + (((uint128_t)x9 * x55) + (((uint128_t)0x2 * (x11 * x53)) + (((uint128_t)x13 * x51) + (((uint128_t)0x2 * (x15 * x49)) + (((uint128_t)x17 * x47) + (((uint128_t)0x2 * (x19 * x45)) + (((uint128_t)x21 * x43) + (((uint128_t)0x2 * (x23 * x41)) + (((uint128_t)x25 * x39) + (((uint128_t)0x2 * (x27 * x37)) + ((uint128_t)x29 * x35))))))))))))) + (0x11 * (((uint128_t)0x2 * (x31 * x62)) + (((uint128_t)x33 * x63) + ((uint128_t)0x2 * (x32 * x61))))));
- { uint128_t x68 = ((((uint128_t)x5 * x57) + (((uint128_t)x7 * x55) + (((uint128_t)x9 * x53) + (((uint128_t)x11 * x51) + (((uint128_t)x13 * x49) + (((uint128_t)x15 * x47) + (((uint128_t)x17 * x45) + (((uint128_t)x19 * x43) + (((uint128_t)x21 * x41) + (((uint128_t)x23 * x39) + (((uint128_t)x25 * x37) + ((uint128_t)x27 * x35)))))))))))) + (0x11 * (((uint128_t)x29 * x62) + (((uint128_t)x31 * x63) + (((uint128_t)x33 * x61) + ((uint128_t)x32 * x59))))));
- { uint128_t x69 = ((((uint128_t)x5 * x55) + (((uint128_t)0x2 * (x7 * x53)) + (((uint128_t)x9 * x51) + (((uint128_t)0x2 * (x11 * x49)) + (((uint128_t)x13 * x47) + (((uint128_t)0x2 * (x15 * x45)) + (((uint128_t)x17 * x43) + (((uint128_t)0x2 * (x19 * x41)) + (((uint128_t)x21 * x39) + (((uint128_t)0x2 * (x23 * x37)) + ((uint128_t)x25 * x35))))))))))) + (0x11 * (((uint128_t)0x2 * (x27 * x62)) + (((uint128_t)x29 * x63) + (((uint128_t)0x2 * (x31 * x61)) + (((uint128_t)x33 * x59) + ((uint128_t)0x2 * (x32 * x57))))))));
- { uint128_t x70 = ((((uint128_t)x5 * x53) + (((uint128_t)x7 * x51) + (((uint128_t)x9 * x49) + (((uint128_t)x11 * x47) + (((uint128_t)x13 * x45) + (((uint128_t)x15 * x43) + (((uint128_t)x17 * x41) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x23 * x35)))))))))) + (0x11 * (((uint128_t)x25 * x62) + (((uint128_t)x27 * x63) + (((uint128_t)x29 * x61) + (((uint128_t)x31 * x59) + (((uint128_t)x33 * x57) + ((uint128_t)x32 * x55))))))));
- { uint128_t x71 = ((((uint128_t)x5 * x51) + (((uint128_t)0x2 * (x7 * x49)) + (((uint128_t)x9 * x47) + (((uint128_t)0x2 * (x11 * x45)) + (((uint128_t)x13 * x43) + (((uint128_t)0x2 * (x15 * x41)) + (((uint128_t)x17 * x39) + (((uint128_t)0x2 * (x19 * x37)) + ((uint128_t)x21 * x35))))))))) + (0x11 * (((uint128_t)0x2 * (x23 * x62)) + (((uint128_t)x25 * x63) + (((uint128_t)0x2 * (x27 * x61)) + (((uint128_t)x29 * x59) + (((uint128_t)0x2 * (x31 * x57)) + (((uint128_t)x33 * x55) + ((uint128_t)0x2 * (x32 * x53))))))))));
- { uint128_t x72 = ((((uint128_t)x5 * x49) + (((uint128_t)x7 * x47) + (((uint128_t)x9 * x45) + (((uint128_t)x11 * x43) + (((uint128_t)x13 * x41) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + ((uint128_t)x19 * x35)))))))) + (0x11 * (((uint128_t)x21 * x62) + (((uint128_t)x23 * x63) + (((uint128_t)x25 * x61) + (((uint128_t)x27 * x59) + (((uint128_t)x29 * x57) + (((uint128_t)x31 * x55) + (((uint128_t)x33 * x53) + ((uint128_t)x32 * x51))))))))));
- { uint128_t x73 = ((((uint128_t)x5 * x47) + (((uint128_t)0x2 * (x7 * x45)) + (((uint128_t)x9 * x43) + (((uint128_t)0x2 * (x11 * x41)) + (((uint128_t)x13 * x39) + (((uint128_t)0x2 * (x15 * x37)) + ((uint128_t)x17 * x35))))))) + (0x11 * (((uint128_t)0x2 * (x19 * x62)) + (((uint128_t)x21 * x63) + (((uint128_t)0x2 * (x23 * x61)) + (((uint128_t)x25 * x59) + (((uint128_t)0x2 * (x27 * x57)) + (((uint128_t)x29 * x55) + (((uint128_t)0x2 * (x31 * x53)) + (((uint128_t)x33 * x51) + ((uint128_t)0x2 * (x32 * x49))))))))))));
- { uint128_t x74 = ((((uint128_t)x5 * x45) + (((uint128_t)x7 * x43) + (((uint128_t)x9 * x41) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + ((uint128_t)x15 * x35)))))) + (0x11 * (((uint128_t)x17 * x62) + (((uint128_t)x19 * x63) + (((uint128_t)x21 * x61) + (((uint128_t)x23 * x59) + (((uint128_t)x25 * x57) + (((uint128_t)x27 * x55) + (((uint128_t)x29 * x53) + (((uint128_t)x31 * x51) + (((uint128_t)x33 * x49) + ((uint128_t)x32 * x47))))))))))));
- { uint128_t x75 = ((((uint128_t)x5 * x43) + (((uint128_t)0x2 * (x7 * x41)) + (((uint128_t)x9 * x39) + (((uint128_t)0x2 * (x11 * x37)) + ((uint128_t)x13 * x35))))) + (0x11 * (((uint128_t)0x2 * (x15 * x62)) + (((uint128_t)x17 * x63) + (((uint128_t)0x2 * (x19 * x61)) + (((uint128_t)x21 * x59) + (((uint128_t)0x2 * (x23 * x57)) + (((uint128_t)x25 * x55) + (((uint128_t)0x2 * (x27 * x53)) + (((uint128_t)x29 * x51) + (((uint128_t)0x2 * (x31 * x49)) + (((uint128_t)x33 * x47) + ((uint128_t)0x2 * (x32 * x45))))))))))))));
- { uint128_t x76 = ((((uint128_t)x5 * x41) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + ((uint128_t)x11 * x35)))) + (0x11 * (((uint128_t)x13 * x62) + (((uint128_t)x15 * x63) + (((uint128_t)x17 * x61) + (((uint128_t)x19 * x59) + (((uint128_t)x21 * x57) + (((uint128_t)x23 * x55) + (((uint128_t)x25 * x53) + (((uint128_t)x27 * x51) + (((uint128_t)x29 * x49) + (((uint128_t)x31 * x47) + (((uint128_t)x33 * x45) + ((uint128_t)x32 * x43))))))))))))));
- { uint128_t x77 = ((((uint128_t)x5 * x39) + (((uint128_t)0x2 * (x7 * x37)) + ((uint128_t)x9 * x35))) + (0x11 * (((uint128_t)0x2 * (x11 * x62)) + (((uint128_t)x13 * x63) + (((uint128_t)0x2 * (x15 * x61)) + (((uint128_t)x17 * x59) + (((uint128_t)0x2 * (x19 * x57)) + (((uint128_t)x21 * x55) + (((uint128_t)0x2 * (x23 * x53)) + (((uint128_t)x25 * x51) + (((uint128_t)0x2 * (x27 * x49)) + (((uint128_t)x29 * x47) + (((uint128_t)0x2 * (x31 * x45)) + (((uint128_t)x33 * x43) + ((uint128_t)0x2 * (x32 * x41))))))))))))))));
- { uint128_t x78 = ((((uint128_t)x5 * x37) + ((uint128_t)x7 * x35)) + (0x11 * (((uint128_t)x9 * x62) + (((uint128_t)x11 * x63) + (((uint128_t)x13 * x61) + (((uint128_t)x15 * x59) + (((uint128_t)x17 * x57) + (((uint128_t)x19 * x55) + (((uint128_t)x21 * x53) + (((uint128_t)x23 * x51) + (((uint128_t)x25 * x49) + (((uint128_t)x27 * x47) + (((uint128_t)x29 * x45) + (((uint128_t)x31 * x43) + (((uint128_t)x33 * x41) + ((uint128_t)x32 * x39))))))))))))))));
- { uint128_t x79 = (((uint128_t)x5 * x35) + (0x11 * (((uint128_t)0x2 * (x7 * x62)) + (((uint128_t)x9 * x63) + (((uint128_t)0x2 * (x11 * x61)) + (((uint128_t)x13 * x59) + (((uint128_t)0x2 * (x15 * x57)) + (((uint128_t)x17 * x55) + (((uint128_t)0x2 * (x19 * x53)) + (((uint128_t)x21 * x51) + (((uint128_t)0x2 * (x23 * x49)) + (((uint128_t)x25 * x47) + (((uint128_t)0x2 * (x27 * x45)) + (((uint128_t)x29 * x43) + (((uint128_t)0x2 * (x31 * x41)) + (((uint128_t)x33 * x39) + ((uint128_t)0x2 * (x32 * x37))))))))))))))))));
- { uint64_t x80 = (uint64_t) (x79 >> 0x1f);
- { uint64_t x81 = ((uint64_t)x79 & 0x7fffffff);
- { uint128_t x82 = (x80 + x78);
- { uint64_t x83 = (uint64_t) (x82 >> 0x1e);
- { uint64_t x84 = ((uint64_t)x82 & 0x3fffffff);
- { uint128_t x85 = (x83 + x77);
- { uint64_t x86 = (uint64_t) (x85 >> 0x1f);
- { uint64_t x87 = ((uint64_t)x85 & 0x7fffffff);
- { uint128_t x88 = (x86 + x76);
- { uint64_t x89 = (uint64_t) (x88 >> 0x1e);
- { uint64_t x90 = ((uint64_t)x88 & 0x3fffffff);
- { uint128_t x91 = (x89 + x75);
- { uint64_t x92 = (uint64_t) (x91 >> 0x1f);
- { uint64_t x93 = ((uint64_t)x91 & 0x7fffffff);
- { uint128_t x94 = (x92 + x74);
- { uint64_t x95 = (uint64_t) (x94 >> 0x1e);
- { uint64_t x96 = ((uint64_t)x94 & 0x3fffffff);
- { uint128_t x97 = (x95 + x73);
- { uint64_t x98 = (uint64_t) (x97 >> 0x1f);
- { uint64_t x99 = ((uint64_t)x97 & 0x7fffffff);
- { uint128_t x100 = (x98 + x72);
- { uint64_t x101 = (uint64_t) (x100 >> 0x1e);
- { uint64_t x102 = ((uint64_t)x100 & 0x3fffffff);
- { uint128_t x103 = (x101 + x71);
- { uint64_t x104 = (uint64_t) (x103 >> 0x1f);
- { uint64_t x105 = ((uint64_t)x103 & 0x7fffffff);
- { uint128_t x106 = (x104 + x70);
- { uint64_t x107 = (uint64_t) (x106 >> 0x1e);
- { uint64_t x108 = ((uint64_t)x106 & 0x3fffffff);
- { uint128_t x109 = (x107 + x69);
- { uint64_t x110 = (uint64_t) (x109 >> 0x1f);
- { uint64_t x111 = ((uint64_t)x109 & 0x7fffffff);
- { uint128_t x112 = (x110 + x68);
- { uint64_t x113 = (uint64_t) (x112 >> 0x1e);
- { uint64_t x114 = ((uint64_t)x112 & 0x3fffffff);
- { uint128_t x115 = (x113 + x67);
- { uint64_t x116 = (uint64_t) (x115 >> 0x1f);
- { uint64_t x117 = ((uint64_t)x115 & 0x7fffffff);
- { uint128_t x118 = (x116 + x66);
- { uint64_t x119 = (uint64_t) (x118 >> 0x1e);
- { uint64_t x120 = ((uint64_t)x118 & 0x3fffffff);
- { uint128_t x121 = (x119 + x65);
- { uint64_t x122 = (uint64_t) (x121 >> 0x1f);
- { uint64_t x123 = ((uint64_t)x121 & 0x7fffffff);
- { uint128_t x124 = (x122 + x64);
- { uint64_t x125 = (uint64_t) (x124 >> 0x1e);
- { uint64_t x126 = ((uint64_t)x124 & 0x3fffffff);
- { uint64_t x127 = (x81 + (0x11 * x125));
- { uint64_t x128 = (x127 >> 0x1f);
- { uint64_t x129 = (x127 & 0x7fffffff);
- { uint64_t x130 = (x128 + x84);
- { uint64_t x131 = (x130 >> 0x1e);
- { uint64_t x132 = (x130 & 0x3fffffff);
- out[0] = x129;
- out[1] = x132;
- out[2] = (x131 + x87);
- out[3] = x90;
- out[4] = x93;
- out[5] = x96;
- out[6] = x99;
- out[7] = x102;
- out[8] = x105;
- out[9] = x108;
- out[10] = x111;
- out[11] = x114;
- out[12] = x117;
- out[13] = x120;
- out[14] = x123;
- out[15] = x126;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e488m17/femul.v b/src/Specific/solinas64_2e488m17/femul.v
deleted file mode 100644
index b7445508a..000000000
--- a/src/Specific/solinas64_2e488m17/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e488m17/femulDisplay.log b/src/Specific/solinas64_2e488m17/femulDisplay.log
deleted file mode 100644
index 1a52d2920..000000000
--- a/src/Specific/solinas64_2e488m17/femulDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- uint128_t x64 = (((uint128_t)x5 * x62) + (((uint128_t)x7 * x63) + (((uint128_t)x9 * x61) + (((uint128_t)x11 * x59) + (((uint128_t)x13 * x57) + (((uint128_t)x15 * x55) + (((uint128_t)x17 * x53) + (((uint128_t)x19 * x51) + (((uint128_t)x21 * x49) + (((uint128_t)x23 * x47) + (((uint128_t)x25 * x45) + (((uint128_t)x27 * x43) + (((uint128_t)x29 * x41) + (((uint128_t)x31 * x39) + (((uint128_t)x33 * x37) + ((uint128_t)x32 * x35))))))))))))))));
- uint128_t x65 = ((((uint128_t)x5 * x63) + (((uint128_t)0x2 * (x7 * x61)) + (((uint128_t)x9 * x59) + (((uint128_t)0x2 * (x11 * x57)) + (((uint128_t)x13 * x55) + (((uint128_t)0x2 * (x15 * x53)) + (((uint128_t)x17 * x51) + (((uint128_t)0x2 * (x19 * x49)) + (((uint128_t)x21 * x47) + (((uint128_t)0x2 * (x23 * x45)) + (((uint128_t)x25 * x43) + (((uint128_t)0x2 * (x27 * x41)) + (((uint128_t)x29 * x39) + (((uint128_t)0x2 * (x31 * x37)) + ((uint128_t)x33 * x35))))))))))))))) + (0x11 * ((uint128_t)0x2 * (x32 * x62))));
- uint128_t x66 = ((((uint128_t)x5 * x61) + (((uint128_t)x7 * x59) + (((uint128_t)x9 * x57) + (((uint128_t)x11 * x55) + (((uint128_t)x13 * x53) + (((uint128_t)x15 * x51) + (((uint128_t)x17 * x49) + (((uint128_t)x19 * x47) + (((uint128_t)x21 * x45) + (((uint128_t)x23 * x43) + (((uint128_t)x25 * x41) + (((uint128_t)x27 * x39) + (((uint128_t)x29 * x37) + ((uint128_t)x31 * x35)))))))))))))) + (0x11 * (((uint128_t)x33 * x62) + ((uint128_t)x32 * x63))));
- uint128_t x67 = ((((uint128_t)x5 * x59) + (((uint128_t)0x2 * (x7 * x57)) + (((uint128_t)x9 * x55) + (((uint128_t)0x2 * (x11 * x53)) + (((uint128_t)x13 * x51) + (((uint128_t)0x2 * (x15 * x49)) + (((uint128_t)x17 * x47) + (((uint128_t)0x2 * (x19 * x45)) + (((uint128_t)x21 * x43) + (((uint128_t)0x2 * (x23 * x41)) + (((uint128_t)x25 * x39) + (((uint128_t)0x2 * (x27 * x37)) + ((uint128_t)x29 * x35))))))))))))) + (0x11 * (((uint128_t)0x2 * (x31 * x62)) + (((uint128_t)x33 * x63) + ((uint128_t)0x2 * (x32 * x61))))));
- uint128_t x68 = ((((uint128_t)x5 * x57) + (((uint128_t)x7 * x55) + (((uint128_t)x9 * x53) + (((uint128_t)x11 * x51) + (((uint128_t)x13 * x49) + (((uint128_t)x15 * x47) + (((uint128_t)x17 * x45) + (((uint128_t)x19 * x43) + (((uint128_t)x21 * x41) + (((uint128_t)x23 * x39) + (((uint128_t)x25 * x37) + ((uint128_t)x27 * x35)))))))))))) + (0x11 * (((uint128_t)x29 * x62) + (((uint128_t)x31 * x63) + (((uint128_t)x33 * x61) + ((uint128_t)x32 * x59))))));
- uint128_t x69 = ((((uint128_t)x5 * x55) + (((uint128_t)0x2 * (x7 * x53)) + (((uint128_t)x9 * x51) + (((uint128_t)0x2 * (x11 * x49)) + (((uint128_t)x13 * x47) + (((uint128_t)0x2 * (x15 * x45)) + (((uint128_t)x17 * x43) + (((uint128_t)0x2 * (x19 * x41)) + (((uint128_t)x21 * x39) + (((uint128_t)0x2 * (x23 * x37)) + ((uint128_t)x25 * x35))))))))))) + (0x11 * (((uint128_t)0x2 * (x27 * x62)) + (((uint128_t)x29 * x63) + (((uint128_t)0x2 * (x31 * x61)) + (((uint128_t)x33 * x59) + ((uint128_t)0x2 * (x32 * x57))))))));
- uint128_t x70 = ((((uint128_t)x5 * x53) + (((uint128_t)x7 * x51) + (((uint128_t)x9 * x49) + (((uint128_t)x11 * x47) + (((uint128_t)x13 * x45) + (((uint128_t)x15 * x43) + (((uint128_t)x17 * x41) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x23 * x35)))))))))) + (0x11 * (((uint128_t)x25 * x62) + (((uint128_t)x27 * x63) + (((uint128_t)x29 * x61) + (((uint128_t)x31 * x59) + (((uint128_t)x33 * x57) + ((uint128_t)x32 * x55))))))));
- uint128_t x71 = ((((uint128_t)x5 * x51) + (((uint128_t)0x2 * (x7 * x49)) + (((uint128_t)x9 * x47) + (((uint128_t)0x2 * (x11 * x45)) + (((uint128_t)x13 * x43) + (((uint128_t)0x2 * (x15 * x41)) + (((uint128_t)x17 * x39) + (((uint128_t)0x2 * (x19 * x37)) + ((uint128_t)x21 * x35))))))))) + (0x11 * (((uint128_t)0x2 * (x23 * x62)) + (((uint128_t)x25 * x63) + (((uint128_t)0x2 * (x27 * x61)) + (((uint128_t)x29 * x59) + (((uint128_t)0x2 * (x31 * x57)) + (((uint128_t)x33 * x55) + ((uint128_t)0x2 * (x32 * x53))))))))));
- uint128_t x72 = ((((uint128_t)x5 * x49) + (((uint128_t)x7 * x47) + (((uint128_t)x9 * x45) + (((uint128_t)x11 * x43) + (((uint128_t)x13 * x41) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + ((uint128_t)x19 * x35)))))))) + (0x11 * (((uint128_t)x21 * x62) + (((uint128_t)x23 * x63) + (((uint128_t)x25 * x61) + (((uint128_t)x27 * x59) + (((uint128_t)x29 * x57) + (((uint128_t)x31 * x55) + (((uint128_t)x33 * x53) + ((uint128_t)x32 * x51))))))))));
- uint128_t x73 = ((((uint128_t)x5 * x47) + (((uint128_t)0x2 * (x7 * x45)) + (((uint128_t)x9 * x43) + (((uint128_t)0x2 * (x11 * x41)) + (((uint128_t)x13 * x39) + (((uint128_t)0x2 * (x15 * x37)) + ((uint128_t)x17 * x35))))))) + (0x11 * (((uint128_t)0x2 * (x19 * x62)) + (((uint128_t)x21 * x63) + (((uint128_t)0x2 * (x23 * x61)) + (((uint128_t)x25 * x59) + (((uint128_t)0x2 * (x27 * x57)) + (((uint128_t)x29 * x55) + (((uint128_t)0x2 * (x31 * x53)) + (((uint128_t)x33 * x51) + ((uint128_t)0x2 * (x32 * x49))))))))))));
- uint128_t x74 = ((((uint128_t)x5 * x45) + (((uint128_t)x7 * x43) + (((uint128_t)x9 * x41) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + ((uint128_t)x15 * x35)))))) + (0x11 * (((uint128_t)x17 * x62) + (((uint128_t)x19 * x63) + (((uint128_t)x21 * x61) + (((uint128_t)x23 * x59) + (((uint128_t)x25 * x57) + (((uint128_t)x27 * x55) + (((uint128_t)x29 * x53) + (((uint128_t)x31 * x51) + (((uint128_t)x33 * x49) + ((uint128_t)x32 * x47))))))))))));
- uint128_t x75 = ((((uint128_t)x5 * x43) + (((uint128_t)0x2 * (x7 * x41)) + (((uint128_t)x9 * x39) + (((uint128_t)0x2 * (x11 * x37)) + ((uint128_t)x13 * x35))))) + (0x11 * (((uint128_t)0x2 * (x15 * x62)) + (((uint128_t)x17 * x63) + (((uint128_t)0x2 * (x19 * x61)) + (((uint128_t)x21 * x59) + (((uint128_t)0x2 * (x23 * x57)) + (((uint128_t)x25 * x55) + (((uint128_t)0x2 * (x27 * x53)) + (((uint128_t)x29 * x51) + (((uint128_t)0x2 * (x31 * x49)) + (((uint128_t)x33 * x47) + ((uint128_t)0x2 * (x32 * x45))))))))))))));
- uint128_t x76 = ((((uint128_t)x5 * x41) + (((uint128_t)x7 * x39) + (((uint128_t)x9 * x37) + ((uint128_t)x11 * x35)))) + (0x11 * (((uint128_t)x13 * x62) + (((uint128_t)x15 * x63) + (((uint128_t)x17 * x61) + (((uint128_t)x19 * x59) + (((uint128_t)x21 * x57) + (((uint128_t)x23 * x55) + (((uint128_t)x25 * x53) + (((uint128_t)x27 * x51) + (((uint128_t)x29 * x49) + (((uint128_t)x31 * x47) + (((uint128_t)x33 * x45) + ((uint128_t)x32 * x43))))))))))))));
- uint128_t x77 = ((((uint128_t)x5 * x39) + (((uint128_t)0x2 * (x7 * x37)) + ((uint128_t)x9 * x35))) + (0x11 * (((uint128_t)0x2 * (x11 * x62)) + (((uint128_t)x13 * x63) + (((uint128_t)0x2 * (x15 * x61)) + (((uint128_t)x17 * x59) + (((uint128_t)0x2 * (x19 * x57)) + (((uint128_t)x21 * x55) + (((uint128_t)0x2 * (x23 * x53)) + (((uint128_t)x25 * x51) + (((uint128_t)0x2 * (x27 * x49)) + (((uint128_t)x29 * x47) + (((uint128_t)0x2 * (x31 * x45)) + (((uint128_t)x33 * x43) + ((uint128_t)0x2 * (x32 * x41))))))))))))))));
- uint128_t x78 = ((((uint128_t)x5 * x37) + ((uint128_t)x7 * x35)) + (0x11 * (((uint128_t)x9 * x62) + (((uint128_t)x11 * x63) + (((uint128_t)x13 * x61) + (((uint128_t)x15 * x59) + (((uint128_t)x17 * x57) + (((uint128_t)x19 * x55) + (((uint128_t)x21 * x53) + (((uint128_t)x23 * x51) + (((uint128_t)x25 * x49) + (((uint128_t)x27 * x47) + (((uint128_t)x29 * x45) + (((uint128_t)x31 * x43) + (((uint128_t)x33 * x41) + ((uint128_t)x32 * x39))))))))))))))));
- uint128_t x79 = (((uint128_t)x5 * x35) + (0x11 * (((uint128_t)0x2 * (x7 * x62)) + (((uint128_t)x9 * x63) + (((uint128_t)0x2 * (x11 * x61)) + (((uint128_t)x13 * x59) + (((uint128_t)0x2 * (x15 * x57)) + (((uint128_t)x17 * x55) + (((uint128_t)0x2 * (x19 * x53)) + (((uint128_t)x21 * x51) + (((uint128_t)0x2 * (x23 * x49)) + (((uint128_t)x25 * x47) + (((uint128_t)0x2 * (x27 * x45)) + (((uint128_t)x29 * x43) + (((uint128_t)0x2 * (x31 * x41)) + (((uint128_t)x33 * x39) + ((uint128_t)0x2 * (x32 * x37))))))))))))))))));
- uint64_t x80 = (uint64_t) (x79 >> 0x1f);
- uint64_t x81 = ((uint64_t)x79 & 0x7fffffff);
- uint128_t x82 = (x80 + x78);
- uint64_t x83 = (uint64_t) (x82 >> 0x1e);
- uint64_t x84 = ((uint64_t)x82 & 0x3fffffff);
- uint128_t x85 = (x83 + x77);
- uint64_t x86 = (uint64_t) (x85 >> 0x1f);
- uint64_t x87 = ((uint64_t)x85 & 0x7fffffff);
- uint128_t x88 = (x86 + x76);
- uint64_t x89 = (uint64_t) (x88 >> 0x1e);
- uint64_t x90 = ((uint64_t)x88 & 0x3fffffff);
- uint128_t x91 = (x89 + x75);
- uint64_t x92 = (uint64_t) (x91 >> 0x1f);
- uint64_t x93 = ((uint64_t)x91 & 0x7fffffff);
- uint128_t x94 = (x92 + x74);
- uint64_t x95 = (uint64_t) (x94 >> 0x1e);
- uint64_t x96 = ((uint64_t)x94 & 0x3fffffff);
- uint128_t x97 = (x95 + x73);
- uint64_t x98 = (uint64_t) (x97 >> 0x1f);
- uint64_t x99 = ((uint64_t)x97 & 0x7fffffff);
- uint128_t x100 = (x98 + x72);
- uint64_t x101 = (uint64_t) (x100 >> 0x1e);
- uint64_t x102 = ((uint64_t)x100 & 0x3fffffff);
- uint128_t x103 = (x101 + x71);
- uint64_t x104 = (uint64_t) (x103 >> 0x1f);
- uint64_t x105 = ((uint64_t)x103 & 0x7fffffff);
- uint128_t x106 = (x104 + x70);
- uint64_t x107 = (uint64_t) (x106 >> 0x1e);
- uint64_t x108 = ((uint64_t)x106 & 0x3fffffff);
- uint128_t x109 = (x107 + x69);
- uint64_t x110 = (uint64_t) (x109 >> 0x1f);
- uint64_t x111 = ((uint64_t)x109 & 0x7fffffff);
- uint128_t x112 = (x110 + x68);
- uint64_t x113 = (uint64_t) (x112 >> 0x1e);
- uint64_t x114 = ((uint64_t)x112 & 0x3fffffff);
- uint128_t x115 = (x113 + x67);
- uint64_t x116 = (uint64_t) (x115 >> 0x1f);
- uint64_t x117 = ((uint64_t)x115 & 0x7fffffff);
- uint128_t x118 = (x116 + x66);
- uint64_t x119 = (uint64_t) (x118 >> 0x1e);
- uint64_t x120 = ((uint64_t)x118 & 0x3fffffff);
- uint128_t x121 = (x119 + x65);
- uint64_t x122 = (uint64_t) (x121 >> 0x1f);
- uint64_t x123 = ((uint64_t)x121 & 0x7fffffff);
- uint128_t x124 = (x122 + x64);
- uint64_t x125 = (uint64_t) (x124 >> 0x1e);
- uint64_t x126 = ((uint64_t)x124 & 0x3fffffff);
- uint64_t x127 = (x81 + (0x11 * x125));
- uint64_t x128 = (x127 >> 0x1f);
- uint64_t x129 = (x127 & 0x7fffffff);
- uint64_t x130 = (x128 + x84);
- uint64_t x131 = (x130 >> 0x1e);
- uint64_t x132 = (x130 & 0x3fffffff);
- return (Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, (x131 + x87), Return x132, Return x129))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17/femulDisplay.v b/src/Specific/solinas64_2e488m17/femulDisplay.v
deleted file mode 100644
index 45c82eac2..000000000
--- a/src/Specific/solinas64_2e488m17/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e488m17.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e488m17/fesquare.c b/src/Specific/solinas64_2e488m17/fesquare.c
deleted file mode 100644
index d05416f90..000000000
--- a/src/Specific/solinas64_2e488m17/fesquare.c
+++ /dev/null
@@ -1,104 +0,0 @@
-static void fesquare(uint64_t out[16], const uint64_t in1[16]) {
- { const uint64_t x29 = in1[15];
- { const uint64_t x30 = in1[14];
- { const uint64_t x28 = in1[13];
- { const uint64_t x26 = in1[12];
- { const uint64_t x24 = in1[11];
- { const uint64_t x22 = in1[10];
- { const uint64_t x20 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x31 = (((uint128_t)x2 * x29) + (((uint128_t)x4 * x30) + (((uint128_t)x6 * x28) + (((uint128_t)x8 * x26) + (((uint128_t)x10 * x24) + (((uint128_t)x12 * x22) + (((uint128_t)x14 * x20) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + (((uint128_t)x20 * x14) + (((uint128_t)x22 * x12) + (((uint128_t)x24 * x10) + (((uint128_t)x26 * x8) + (((uint128_t)x28 * x6) + (((uint128_t)x30 * x4) + ((uint128_t)x29 * x2))))))))))))))));
- { uint128_t x32 = ((((uint128_t)x2 * x30) + (((uint128_t)0x2 * (x4 * x28)) + (((uint128_t)x6 * x26) + (((uint128_t)0x2 * (x8 * x24)) + (((uint128_t)x10 * x22) + (((uint128_t)0x2 * (x12 * x20)) + (((uint128_t)x14 * x18) + (((uint128_t)0x2 * (x16 * x16)) + (((uint128_t)x18 * x14) + (((uint128_t)0x2 * (x20 * x12)) + (((uint128_t)x22 * x10) + (((uint128_t)0x2 * (x24 * x8)) + (((uint128_t)x26 * x6) + (((uint128_t)0x2 * (x28 * x4)) + ((uint128_t)x30 * x2))))))))))))))) + (0x11 * ((uint128_t)0x2 * (x29 * x29))));
- { uint128_t x33 = ((((uint128_t)x2 * x28) + (((uint128_t)x4 * x26) + (((uint128_t)x6 * x24) + (((uint128_t)x8 * x22) + (((uint128_t)x10 * x20) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (((uint128_t)x20 * x10) + (((uint128_t)x22 * x8) + (((uint128_t)x24 * x6) + (((uint128_t)x26 * x4) + ((uint128_t)x28 * x2)))))))))))))) + (0x11 * (((uint128_t)x30 * x29) + ((uint128_t)x29 * x30))));
- { uint128_t x34 = ((((uint128_t)x2 * x26) + (((uint128_t)0x2 * (x4 * x24)) + (((uint128_t)x6 * x22) + (((uint128_t)0x2 * (x8 * x20)) + (((uint128_t)x10 * x18) + (((uint128_t)0x2 * (x12 * x16)) + (((uint128_t)x14 * x14) + (((uint128_t)0x2 * (x16 * x12)) + (((uint128_t)x18 * x10) + (((uint128_t)0x2 * (x20 * x8)) + (((uint128_t)x22 * x6) + (((uint128_t)0x2 * (x24 * x4)) + ((uint128_t)x26 * x2))))))))))))) + (0x11 * (((uint128_t)0x2 * (x28 * x29)) + (((uint128_t)x30 * x30) + ((uint128_t)0x2 * (x29 * x28))))));
- { uint128_t x35 = ((((uint128_t)x2 * x24) + (((uint128_t)x4 * x22) + (((uint128_t)x6 * x20) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + (((uint128_t)x20 * x6) + (((uint128_t)x22 * x4) + ((uint128_t)x24 * x2)))))))))))) + (0x11 * (((uint128_t)x26 * x29) + (((uint128_t)x28 * x30) + (((uint128_t)x30 * x28) + ((uint128_t)x29 * x26))))));
- { uint128_t x36 = ((((uint128_t)x2 * x22) + (((uint128_t)0x2 * (x4 * x20)) + (((uint128_t)x6 * x18) + (((uint128_t)0x2 * (x8 * x16)) + (((uint128_t)x10 * x14) + (((uint128_t)0x2 * (x12 * x12)) + (((uint128_t)x14 * x10) + (((uint128_t)0x2 * (x16 * x8)) + (((uint128_t)x18 * x6) + (((uint128_t)0x2 * (x20 * x4)) + ((uint128_t)x22 * x2))))))))))) + (0x11 * (((uint128_t)0x2 * (x24 * x29)) + (((uint128_t)x26 * x30) + (((uint128_t)0x2 * (x28 * x28)) + (((uint128_t)x30 * x26) + ((uint128_t)0x2 * (x29 * x24))))))));
- { uint128_t x37 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0x11 * (((uint128_t)x22 * x29) + (((uint128_t)x24 * x30) + (((uint128_t)x26 * x28) + (((uint128_t)x28 * x26) + (((uint128_t)x30 * x24) + ((uint128_t)x29 * x22))))))));
- { uint128_t x38 = ((((uint128_t)x2 * x18) + (((uint128_t)0x2 * (x4 * x16)) + (((uint128_t)x6 * x14) + (((uint128_t)0x2 * (x8 * x12)) + (((uint128_t)x10 * x10) + (((uint128_t)0x2 * (x12 * x8)) + (((uint128_t)x14 * x6) + (((uint128_t)0x2 * (x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x11 * (((uint128_t)0x2 * (x20 * x29)) + (((uint128_t)x22 * x30) + (((uint128_t)0x2 * (x24 * x28)) + (((uint128_t)x26 * x26) + (((uint128_t)0x2 * (x28 * x24)) + (((uint128_t)x30 * x22) + ((uint128_t)0x2 * (x29 * x20))))))))));
- { uint128_t x39 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * (((uint128_t)x18 * x29) + (((uint128_t)x20 * x30) + (((uint128_t)x22 * x28) + (((uint128_t)x24 * x26) + (((uint128_t)x26 * x24) + (((uint128_t)x28 * x22) + (((uint128_t)x30 * x20) + ((uint128_t)x29 * x18))))))))));
- { uint128_t x40 = ((((uint128_t)x2 * x14) + (((uint128_t)0x2 * (x4 * x12)) + (((uint128_t)x6 * x10) + (((uint128_t)0x2 * (x8 * x8)) + (((uint128_t)x10 * x6) + (((uint128_t)0x2 * (x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)0x2 * (x16 * x29)) + (((uint128_t)x18 * x30) + (((uint128_t)0x2 * (x20 * x28)) + (((uint128_t)x22 * x26) + (((uint128_t)0x2 * (x24 * x24)) + (((uint128_t)x26 * x22) + (((uint128_t)0x2 * (x28 * x20)) + (((uint128_t)x30 * x18) + ((uint128_t)0x2 * (x29 * x16))))))))))));
- { uint128_t x41 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x29) + (((uint128_t)x16 * x30) + (((uint128_t)x18 * x28) + (((uint128_t)x20 * x26) + (((uint128_t)x22 * x24) + (((uint128_t)x24 * x22) + (((uint128_t)x26 * x20) + (((uint128_t)x28 * x18) + (((uint128_t)x30 * x16) + ((uint128_t)x29 * x14))))))))))));
- { uint128_t x42 = ((((uint128_t)x2 * x10) + (((uint128_t)0x2 * (x4 * x8)) + (((uint128_t)x6 * x6) + (((uint128_t)0x2 * (x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)0x2 * (x12 * x29)) + (((uint128_t)x14 * x30) + (((uint128_t)0x2 * (x16 * x28)) + (((uint128_t)x18 * x26) + (((uint128_t)0x2 * (x20 * x24)) + (((uint128_t)x22 * x22) + (((uint128_t)0x2 * (x24 * x20)) + (((uint128_t)x26 * x18) + (((uint128_t)0x2 * (x28 * x16)) + (((uint128_t)x30 * x14) + ((uint128_t)0x2 * (x29 * x12))))))))))))));
- { uint128_t x43 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x29) + (((uint128_t)x12 * x30) + (((uint128_t)x14 * x28) + (((uint128_t)x16 * x26) + (((uint128_t)x18 * x24) + (((uint128_t)x20 * x22) + (((uint128_t)x22 * x20) + (((uint128_t)x24 * x18) + (((uint128_t)x26 * x16) + (((uint128_t)x28 * x14) + (((uint128_t)x30 * x12) + ((uint128_t)x29 * x10))))))))))))));
- { uint128_t x44 = ((((uint128_t)x2 * x6) + (((uint128_t)0x2 * (x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)0x2 * (x8 * x29)) + (((uint128_t)x10 * x30) + (((uint128_t)0x2 * (x12 * x28)) + (((uint128_t)x14 * x26) + (((uint128_t)0x2 * (x16 * x24)) + (((uint128_t)x18 * x22) + (((uint128_t)0x2 * (x20 * x20)) + (((uint128_t)x22 * x18) + (((uint128_t)0x2 * (x24 * x16)) + (((uint128_t)x26 * x14) + (((uint128_t)0x2 * (x28 * x12)) + (((uint128_t)x30 * x10) + ((uint128_t)0x2 * (x29 * x8))))))))))))))));
- { uint128_t x45 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x29) + (((uint128_t)x8 * x30) + (((uint128_t)x10 * x28) + (((uint128_t)x12 * x26) + (((uint128_t)x14 * x24) + (((uint128_t)x16 * x22) + (((uint128_t)x18 * x20) + (((uint128_t)x20 * x18) + (((uint128_t)x22 * x16) + (((uint128_t)x24 * x14) + (((uint128_t)x26 * x12) + (((uint128_t)x28 * x10) + (((uint128_t)x30 * x8) + ((uint128_t)x29 * x6))))))))))))))));
- { uint128_t x46 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)0x2 * (x4 * x29)) + (((uint128_t)x6 * x30) + (((uint128_t)0x2 * (x8 * x28)) + (((uint128_t)x10 * x26) + (((uint128_t)0x2 * (x12 * x24)) + (((uint128_t)x14 * x22) + (((uint128_t)0x2 * (x16 * x20)) + (((uint128_t)x18 * x18) + (((uint128_t)0x2 * (x20 * x16)) + (((uint128_t)x22 * x14) + (((uint128_t)0x2 * (x24 * x12)) + (((uint128_t)x26 * x10) + (((uint128_t)0x2 * (x28 * x8)) + (((uint128_t)x30 * x6) + ((uint128_t)0x2 * (x29 * x4))))))))))))))))));
- { uint64_t x47 = (uint64_t) (x46 >> 0x1f);
- { uint64_t x48 = ((uint64_t)x46 & 0x7fffffff);
- { uint128_t x49 = (x47 + x45);
- { uint64_t x50 = (uint64_t) (x49 >> 0x1e);
- { uint64_t x51 = ((uint64_t)x49 & 0x3fffffff);
- { uint128_t x52 = (x50 + x44);
- { uint64_t x53 = (uint64_t) (x52 >> 0x1f);
- { uint64_t x54 = ((uint64_t)x52 & 0x7fffffff);
- { uint128_t x55 = (x53 + x43);
- { uint64_t x56 = (uint64_t) (x55 >> 0x1e);
- { uint64_t x57 = ((uint64_t)x55 & 0x3fffffff);
- { uint128_t x58 = (x56 + x42);
- { uint64_t x59 = (uint64_t) (x58 >> 0x1f);
- { uint64_t x60 = ((uint64_t)x58 & 0x7fffffff);
- { uint128_t x61 = (x59 + x41);
- { uint64_t x62 = (uint64_t) (x61 >> 0x1e);
- { uint64_t x63 = ((uint64_t)x61 & 0x3fffffff);
- { uint128_t x64 = (x62 + x40);
- { uint64_t x65 = (uint64_t) (x64 >> 0x1f);
- { uint64_t x66 = ((uint64_t)x64 & 0x7fffffff);
- { uint128_t x67 = (x65 + x39);
- { uint64_t x68 = (uint64_t) (x67 >> 0x1e);
- { uint64_t x69 = ((uint64_t)x67 & 0x3fffffff);
- { uint128_t x70 = (x68 + x38);
- { uint64_t x71 = (uint64_t) (x70 >> 0x1f);
- { uint64_t x72 = ((uint64_t)x70 & 0x7fffffff);
- { uint128_t x73 = (x71 + x37);
- { uint64_t x74 = (uint64_t) (x73 >> 0x1e);
- { uint64_t x75 = ((uint64_t)x73 & 0x3fffffff);
- { uint128_t x76 = (x74 + x36);
- { uint64_t x77 = (uint64_t) (x76 >> 0x1f);
- { uint64_t x78 = ((uint64_t)x76 & 0x7fffffff);
- { uint128_t x79 = (x77 + x35);
- { uint64_t x80 = (uint64_t) (x79 >> 0x1e);
- { uint64_t x81 = ((uint64_t)x79 & 0x3fffffff);
- { uint128_t x82 = (x80 + x34);
- { uint64_t x83 = (uint64_t) (x82 >> 0x1f);
- { uint64_t x84 = ((uint64_t)x82 & 0x7fffffff);
- { uint128_t x85 = (x83 + x33);
- { uint64_t x86 = (uint64_t) (x85 >> 0x1e);
- { uint64_t x87 = ((uint64_t)x85 & 0x3fffffff);
- { uint128_t x88 = (x86 + x32);
- { uint64_t x89 = (uint64_t) (x88 >> 0x1f);
- { uint64_t x90 = ((uint64_t)x88 & 0x7fffffff);
- { uint128_t x91 = (x89 + x31);
- { uint64_t x92 = (uint64_t) (x91 >> 0x1e);
- { uint64_t x93 = ((uint64_t)x91 & 0x3fffffff);
- { uint64_t x94 = (x48 + (0x11 * x92));
- { uint64_t x95 = (x94 >> 0x1f);
- { uint64_t x96 = (x94 & 0x7fffffff);
- { uint64_t x97 = (x95 + x51);
- { uint64_t x98 = (x97 >> 0x1e);
- { uint64_t x99 = (x97 & 0x3fffffff);
- out[0] = x96;
- out[1] = x99;
- out[2] = (x98 + x54);
- out[3] = x57;
- out[4] = x60;
- out[5] = x63;
- out[6] = x66;
- out[7] = x69;
- out[8] = x72;
- out[9] = x75;
- out[10] = x78;
- out[11] = x81;
- out[12] = x84;
- out[13] = x87;
- out[14] = x90;
- out[15] = x93;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e488m17/fesquare.v b/src/Specific/solinas64_2e488m17/fesquare.v
deleted file mode 100644
index d427f4b49..000000000
--- a/src/Specific/solinas64_2e488m17/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e488m17/fesquareDisplay.log b/src/Specific/solinas64_2e488m17/fesquareDisplay.log
deleted file mode 100644
index be98a5058..000000000
--- a/src/Specific/solinas64_2e488m17/fesquareDisplay.log
+++ /dev/null
@@ -1,76 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x31 = (((uint128_t)x2 * x29) + (((uint128_t)x4 * x30) + (((uint128_t)x6 * x28) + (((uint128_t)x8 * x26) + (((uint128_t)x10 * x24) + (((uint128_t)x12 * x22) + (((uint128_t)x14 * x20) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + (((uint128_t)x20 * x14) + (((uint128_t)x22 * x12) + (((uint128_t)x24 * x10) + (((uint128_t)x26 * x8) + (((uint128_t)x28 * x6) + (((uint128_t)x30 * x4) + ((uint128_t)x29 * x2))))))))))))))));
- uint128_t x32 = ((((uint128_t)x2 * x30) + (((uint128_t)0x2 * (x4 * x28)) + (((uint128_t)x6 * x26) + (((uint128_t)0x2 * (x8 * x24)) + (((uint128_t)x10 * x22) + (((uint128_t)0x2 * (x12 * x20)) + (((uint128_t)x14 * x18) + (((uint128_t)0x2 * (x16 * x16)) + (((uint128_t)x18 * x14) + (((uint128_t)0x2 * (x20 * x12)) + (((uint128_t)x22 * x10) + (((uint128_t)0x2 * (x24 * x8)) + (((uint128_t)x26 * x6) + (((uint128_t)0x2 * (x28 * x4)) + ((uint128_t)x30 * x2))))))))))))))) + (0x11 * ((uint128_t)0x2 * (x29 * x29))));
- uint128_t x33 = ((((uint128_t)x2 * x28) + (((uint128_t)x4 * x26) + (((uint128_t)x6 * x24) + (((uint128_t)x8 * x22) + (((uint128_t)x10 * x20) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + (((uint128_t)x20 * x10) + (((uint128_t)x22 * x8) + (((uint128_t)x24 * x6) + (((uint128_t)x26 * x4) + ((uint128_t)x28 * x2)))))))))))))) + (0x11 * (((uint128_t)x30 * x29) + ((uint128_t)x29 * x30))));
- uint128_t x34 = ((((uint128_t)x2 * x26) + (((uint128_t)0x2 * (x4 * x24)) + (((uint128_t)x6 * x22) + (((uint128_t)0x2 * (x8 * x20)) + (((uint128_t)x10 * x18) + (((uint128_t)0x2 * (x12 * x16)) + (((uint128_t)x14 * x14) + (((uint128_t)0x2 * (x16 * x12)) + (((uint128_t)x18 * x10) + (((uint128_t)0x2 * (x20 * x8)) + (((uint128_t)x22 * x6) + (((uint128_t)0x2 * (x24 * x4)) + ((uint128_t)x26 * x2))))))))))))) + (0x11 * (((uint128_t)0x2 * (x28 * x29)) + (((uint128_t)x30 * x30) + ((uint128_t)0x2 * (x29 * x28))))));
- uint128_t x35 = ((((uint128_t)x2 * x24) + (((uint128_t)x4 * x22) + (((uint128_t)x6 * x20) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + (((uint128_t)x20 * x6) + (((uint128_t)x22 * x4) + ((uint128_t)x24 * x2)))))))))))) + (0x11 * (((uint128_t)x26 * x29) + (((uint128_t)x28 * x30) + (((uint128_t)x30 * x28) + ((uint128_t)x29 * x26))))));
- uint128_t x36 = ((((uint128_t)x2 * x22) + (((uint128_t)0x2 * (x4 * x20)) + (((uint128_t)x6 * x18) + (((uint128_t)0x2 * (x8 * x16)) + (((uint128_t)x10 * x14) + (((uint128_t)0x2 * (x12 * x12)) + (((uint128_t)x14 * x10) + (((uint128_t)0x2 * (x16 * x8)) + (((uint128_t)x18 * x6) + (((uint128_t)0x2 * (x20 * x4)) + ((uint128_t)x22 * x2))))))))))) + (0x11 * (((uint128_t)0x2 * (x24 * x29)) + (((uint128_t)x26 * x30) + (((uint128_t)0x2 * (x28 * x28)) + (((uint128_t)x30 * x26) + ((uint128_t)0x2 * (x29 * x24))))))));
- uint128_t x37 = ((((uint128_t)x2 * x20) + (((uint128_t)x4 * x18) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + (((uint128_t)x18 * x4) + ((uint128_t)x20 * x2)))))))))) + (0x11 * (((uint128_t)x22 * x29) + (((uint128_t)x24 * x30) + (((uint128_t)x26 * x28) + (((uint128_t)x28 * x26) + (((uint128_t)x30 * x24) + ((uint128_t)x29 * x22))))))));
- uint128_t x38 = ((((uint128_t)x2 * x18) + (((uint128_t)0x2 * (x4 * x16)) + (((uint128_t)x6 * x14) + (((uint128_t)0x2 * (x8 * x12)) + (((uint128_t)x10 * x10) + (((uint128_t)0x2 * (x12 * x8)) + (((uint128_t)x14 * x6) + (((uint128_t)0x2 * (x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x11 * (((uint128_t)0x2 * (x20 * x29)) + (((uint128_t)x22 * x30) + (((uint128_t)0x2 * (x24 * x28)) + (((uint128_t)x26 * x26) + (((uint128_t)0x2 * (x28 * x24)) + (((uint128_t)x30 * x22) + ((uint128_t)0x2 * (x29 * x20))))))))));
- uint128_t x39 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x11 * (((uint128_t)x18 * x29) + (((uint128_t)x20 * x30) + (((uint128_t)x22 * x28) + (((uint128_t)x24 * x26) + (((uint128_t)x26 * x24) + (((uint128_t)x28 * x22) + (((uint128_t)x30 * x20) + ((uint128_t)x29 * x18))))))))));
- uint128_t x40 = ((((uint128_t)x2 * x14) + (((uint128_t)0x2 * (x4 * x12)) + (((uint128_t)x6 * x10) + (((uint128_t)0x2 * (x8 * x8)) + (((uint128_t)x10 * x6) + (((uint128_t)0x2 * (x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x11 * (((uint128_t)0x2 * (x16 * x29)) + (((uint128_t)x18 * x30) + (((uint128_t)0x2 * (x20 * x28)) + (((uint128_t)x22 * x26) + (((uint128_t)0x2 * (x24 * x24)) + (((uint128_t)x26 * x22) + (((uint128_t)0x2 * (x28 * x20)) + (((uint128_t)x30 * x18) + ((uint128_t)0x2 * (x29 * x16))))))))))));
- uint128_t x41 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x11 * (((uint128_t)x14 * x29) + (((uint128_t)x16 * x30) + (((uint128_t)x18 * x28) + (((uint128_t)x20 * x26) + (((uint128_t)x22 * x24) + (((uint128_t)x24 * x22) + (((uint128_t)x26 * x20) + (((uint128_t)x28 * x18) + (((uint128_t)x30 * x16) + ((uint128_t)x29 * x14))))))))))));
- uint128_t x42 = ((((uint128_t)x2 * x10) + (((uint128_t)0x2 * (x4 * x8)) + (((uint128_t)x6 * x6) + (((uint128_t)0x2 * (x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x11 * (((uint128_t)0x2 * (x12 * x29)) + (((uint128_t)x14 * x30) + (((uint128_t)0x2 * (x16 * x28)) + (((uint128_t)x18 * x26) + (((uint128_t)0x2 * (x20 * x24)) + (((uint128_t)x22 * x22) + (((uint128_t)0x2 * (x24 * x20)) + (((uint128_t)x26 * x18) + (((uint128_t)0x2 * (x28 * x16)) + (((uint128_t)x30 * x14) + ((uint128_t)0x2 * (x29 * x12))))))))))))));
- uint128_t x43 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x29) + (((uint128_t)x12 * x30) + (((uint128_t)x14 * x28) + (((uint128_t)x16 * x26) + (((uint128_t)x18 * x24) + (((uint128_t)x20 * x22) + (((uint128_t)x22 * x20) + (((uint128_t)x24 * x18) + (((uint128_t)x26 * x16) + (((uint128_t)x28 * x14) + (((uint128_t)x30 * x12) + ((uint128_t)x29 * x10))))))))))))));
- uint128_t x44 = ((((uint128_t)x2 * x6) + (((uint128_t)0x2 * (x4 * x4)) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)0x2 * (x8 * x29)) + (((uint128_t)x10 * x30) + (((uint128_t)0x2 * (x12 * x28)) + (((uint128_t)x14 * x26) + (((uint128_t)0x2 * (x16 * x24)) + (((uint128_t)x18 * x22) + (((uint128_t)0x2 * (x20 * x20)) + (((uint128_t)x22 * x18) + (((uint128_t)0x2 * (x24 * x16)) + (((uint128_t)x26 * x14) + (((uint128_t)0x2 * (x28 * x12)) + (((uint128_t)x30 * x10) + ((uint128_t)0x2 * (x29 * x8))))))))))))))));
- uint128_t x45 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x29) + (((uint128_t)x8 * x30) + (((uint128_t)x10 * x28) + (((uint128_t)x12 * x26) + (((uint128_t)x14 * x24) + (((uint128_t)x16 * x22) + (((uint128_t)x18 * x20) + (((uint128_t)x20 * x18) + (((uint128_t)x22 * x16) + (((uint128_t)x24 * x14) + (((uint128_t)x26 * x12) + (((uint128_t)x28 * x10) + (((uint128_t)x30 * x8) + ((uint128_t)x29 * x6))))))))))))))));
- uint128_t x46 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)0x2 * (x4 * x29)) + (((uint128_t)x6 * x30) + (((uint128_t)0x2 * (x8 * x28)) + (((uint128_t)x10 * x26) + (((uint128_t)0x2 * (x12 * x24)) + (((uint128_t)x14 * x22) + (((uint128_t)0x2 * (x16 * x20)) + (((uint128_t)x18 * x18) + (((uint128_t)0x2 * (x20 * x16)) + (((uint128_t)x22 * x14) + (((uint128_t)0x2 * (x24 * x12)) + (((uint128_t)x26 * x10) + (((uint128_t)0x2 * (x28 * x8)) + (((uint128_t)x30 * x6) + ((uint128_t)0x2 * (x29 * x4))))))))))))))))));
- uint64_t x47 = (uint64_t) (x46 >> 0x1f);
- uint64_t x48 = ((uint64_t)x46 & 0x7fffffff);
- uint128_t x49 = (x47 + x45);
- uint64_t x50 = (uint64_t) (x49 >> 0x1e);
- uint64_t x51 = ((uint64_t)x49 & 0x3fffffff);
- uint128_t x52 = (x50 + x44);
- uint64_t x53 = (uint64_t) (x52 >> 0x1f);
- uint64_t x54 = ((uint64_t)x52 & 0x7fffffff);
- uint128_t x55 = (x53 + x43);
- uint64_t x56 = (uint64_t) (x55 >> 0x1e);
- uint64_t x57 = ((uint64_t)x55 & 0x3fffffff);
- uint128_t x58 = (x56 + x42);
- uint64_t x59 = (uint64_t) (x58 >> 0x1f);
- uint64_t x60 = ((uint64_t)x58 & 0x7fffffff);
- uint128_t x61 = (x59 + x41);
- uint64_t x62 = (uint64_t) (x61 >> 0x1e);
- uint64_t x63 = ((uint64_t)x61 & 0x3fffffff);
- uint128_t x64 = (x62 + x40);
- uint64_t x65 = (uint64_t) (x64 >> 0x1f);
- uint64_t x66 = ((uint64_t)x64 & 0x7fffffff);
- uint128_t x67 = (x65 + x39);
- uint64_t x68 = (uint64_t) (x67 >> 0x1e);
- uint64_t x69 = ((uint64_t)x67 & 0x3fffffff);
- uint128_t x70 = (x68 + x38);
- uint64_t x71 = (uint64_t) (x70 >> 0x1f);
- uint64_t x72 = ((uint64_t)x70 & 0x7fffffff);
- uint128_t x73 = (x71 + x37);
- uint64_t x74 = (uint64_t) (x73 >> 0x1e);
- uint64_t x75 = ((uint64_t)x73 & 0x3fffffff);
- uint128_t x76 = (x74 + x36);
- uint64_t x77 = (uint64_t) (x76 >> 0x1f);
- uint64_t x78 = ((uint64_t)x76 & 0x7fffffff);
- uint128_t x79 = (x77 + x35);
- uint64_t x80 = (uint64_t) (x79 >> 0x1e);
- uint64_t x81 = ((uint64_t)x79 & 0x3fffffff);
- uint128_t x82 = (x80 + x34);
- uint64_t x83 = (uint64_t) (x82 >> 0x1f);
- uint64_t x84 = ((uint64_t)x82 & 0x7fffffff);
- uint128_t x85 = (x83 + x33);
- uint64_t x86 = (uint64_t) (x85 >> 0x1e);
- uint64_t x87 = ((uint64_t)x85 & 0x3fffffff);
- uint128_t x88 = (x86 + x32);
- uint64_t x89 = (uint64_t) (x88 >> 0x1f);
- uint64_t x90 = ((uint64_t)x88 & 0x7fffffff);
- uint128_t x91 = (x89 + x31);
- uint64_t x92 = (uint64_t) (x91 >> 0x1e);
- uint64_t x93 = ((uint64_t)x91 & 0x3fffffff);
- uint64_t x94 = (x48 + (0x11 * x92));
- uint64_t x95 = (x94 >> 0x1f);
- uint64_t x96 = (x94 & 0x7fffffff);
- uint64_t x97 = (x95 + x51);
- uint64_t x98 = (x97 >> 0x1e);
- uint64_t x99 = (x97 & 0x3fffffff);
- return (Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, Return x57, (x98 + x54), Return x99, Return x96))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17/fesquareDisplay.v b/src/Specific/solinas64_2e488m17/fesquareDisplay.v
deleted file mode 100644
index 6b0bb7870..000000000
--- a/src/Specific/solinas64_2e488m17/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e488m17.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e488m17/fesub.c b/src/Specific/solinas64_2e488m17/fesub.c
deleted file mode 100644
index 3e98205f4..000000000
--- a/src/Specific/solinas64_2e488m17/fesub.c
+++ /dev/null
@@ -1,51 +0,0 @@
-static void fesub(uint64_t out[16], const uint64_t in1[16], const uint64_t in2[16]) {
- { const uint64_t x32 = in1[15];
- { const uint64_t x33 = in1[14];
- { const uint64_t x31 = in1[13];
- { const uint64_t x29 = in1[12];
- { const uint64_t x27 = in1[11];
- { const uint64_t x25 = in1[10];
- { const uint64_t x23 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x62 = in2[15];
- { const uint64_t x63 = in2[14];
- { const uint64_t x61 = in2[13];
- { const uint64_t x59 = in2[12];
- { const uint64_t x57 = in2[11];
- { const uint64_t x55 = in2[10];
- { const uint64_t x53 = in2[9];
- { const uint64_t x51 = in2[8];
- { const uint64_t x49 = in2[7];
- { const uint64_t x47 = in2[6];
- { const uint64_t x45 = in2[5];
- { const uint64_t x43 = in2[4];
- { const uint64_t x41 = in2[3];
- { const uint64_t x39 = in2[2];
- { const uint64_t x37 = in2[1];
- { const uint64_t x35 = in2[0];
- out[0] = ((0xffffffde + x5) - x35);
- out[1] = ((0x7ffffffe + x7) - x37);
- out[2] = ((0xfffffffe + x9) - x39);
- out[3] = ((0x7ffffffe + x11) - x41);
- out[4] = ((0xfffffffe + x13) - x43);
- out[5] = ((0x7ffffffe + x15) - x45);
- out[6] = ((0xfffffffe + x17) - x47);
- out[7] = ((0x7ffffffe + x19) - x49);
- out[8] = ((0xfffffffe + x21) - x51);
- out[9] = ((0x7ffffffe + x23) - x53);
- out[10] = ((0xfffffffe + x25) - x55);
- out[11] = ((0x7ffffffe + x27) - x57);
- out[12] = ((0xfffffffe + x29) - x59);
- out[13] = ((0x7ffffffe + x31) - x61);
- out[14] = ((0xfffffffe + x33) - x63);
- out[15] = ((0x7ffffffe + x32) - x62);
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e488m17/fesub.v b/src/Specific/solinas64_2e488m17/fesub.v
deleted file mode 100644
index efda9dfcd..000000000
--- a/src/Specific/solinas64_2e488m17/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e488m17/fesubDisplay.log b/src/Specific/solinas64_2e488m17/fesubDisplay.log
deleted file mode 100644
index dfd59f0ff..000000000
--- a/src/Specific/solinas64_2e488m17/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x32, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x62, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41, x39, x37, x35))%core,
- (((0x7ffffffe + x32) - x62), ((0xfffffffe + x33) - x63), ((0x7ffffffe + x31) - x61), ((0xfffffffe + x29) - x59), ((0x7ffffffe + x27) - x57), ((0xfffffffe + x25) - x55), ((0x7ffffffe + x23) - x53), ((0xfffffffe + x21) - x51), ((0x7ffffffe + x19) - x49), ((0xfffffffe + x17) - x47), ((0x7ffffffe + x15) - x45), ((0xfffffffe + x13) - x43), ((0x7ffffffe + x11) - x41), ((0xfffffffe + x9) - x39), ((0x7ffffffe + x7) - x37), ((0xffffffde + x5) - x35)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17/fesubDisplay.v b/src/Specific/solinas64_2e488m17/fesubDisplay.v
deleted file mode 100644
index fd3248998..000000000
--- a/src/Specific/solinas64_2e488m17/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e488m17.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e488m17/freeze.c b/src/Specific/solinas64_2e488m17/freeze.c
deleted file mode 100644
index bea32443d..000000000
--- a/src/Specific/solinas64_2e488m17/freeze.c
+++ /dev/null
@@ -1,84 +0,0 @@
-static void freeze(uint64_t out[16], const uint64_t in1[16]) {
- { const uint64_t x29 = in1[15];
- { const uint64_t x30 = in1[14];
- { const uint64_t x28 = in1[13];
- { const uint64_t x26 = in1[12];
- { const uint64_t x24 = in1[11];
- { const uint64_t x22 = in1[10];
- { const uint64_t x20 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffef);
- { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x4, 0x3fffffff);
- { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x6, 0x7fffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x8, 0x3fffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x10, 0x7fffffff);
- { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x12, 0x3fffffff);
- { uint64_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffffff);
- { uint64_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x16, 0x3fffffff);
- { uint64_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x18, 0x7fffffff);
- { uint64_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x20, 0x3fffffff);
- { uint64_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x22, 0x7fffffff);
- { uint64_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x24, 0x3fffffff);
- { uint64_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffffff);
- { uint64_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x28, 0x3fffffff);
- { uint64_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x30, 0x7fffffff);
- { uint64_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x75, Return x29, 0x3fffffff);
- { uint64_t x79 = cmovznz64(x78, 0x0, 0xffffffffffffffffL);
- { uint64_t x80 = (x79 & 0x7fffffef);
- { uint64_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- { uint64_t x84 = (x79 & 0x3fffffff);
- { uint64_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- { uint64_t x88 = (x79 & 0x7fffffff);
- { uint64_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- { uint64_t x92 = (x79 & 0x3fffffff);
- { uint64_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- { uint64_t x96 = (x79 & 0x7fffffff);
- { uint64_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- { uint64_t x100 = (x79 & 0x3fffffff);
- { uint64_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- { uint64_t x104 = (x79 & 0x7fffffff);
- { uint64_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- { uint64_t x108 = (x79 & 0x3fffffff);
- { uint64_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- { uint64_t x112 = (x79 & 0x7fffffff);
- { uint64_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- { uint64_t x116 = (x79 & 0x3fffffff);
- { uint64_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- { uint64_t x120 = (x79 & 0x7fffffff);
- { uint64_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- { uint64_t x124 = (x79 & 0x3fffffff);
- { uint64_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- { uint64_t x128 = (x79 & 0x7fffffff);
- { uint64_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- { uint64_t x132 = (x79 & 0x3fffffff);
- { uint64_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- { uint64_t x136 = (x79 & 0x7fffffff);
- { uint64_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- { uint64_t x140 = (x79 & 0x3fffffff);
- { uint64_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- out[0] = x82;
- out[1] = x86;
- out[2] = x90;
- out[3] = x94;
- out[4] = x98;
- out[5] = x102;
- out[6] = x106;
- out[7] = x110;
- out[8] = x114;
- out[9] = x118;
- out[10] = x122;
- out[11] = x126;
- out[12] = x130;
- out[13] = x134;
- out[14] = x138;
- out[15] = x142;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e488m17/freeze.v b/src/Specific/solinas64_2e488m17/freeze.v
deleted file mode 100644
index 3f9f43201..000000000
--- a/src/Specific/solinas64_2e488m17/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e488m17.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e488m17/freezeDisplay.log b/src/Specific/solinas64_2e488m17/freezeDisplay.log
deleted file mode 100644
index a3b817e40..000000000
--- a/src/Specific/solinas64_2e488m17/freezeDisplay.log
+++ /dev/null
@@ -1,56 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x29, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffef);
- uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x4, 0x3fffffff);
- uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x6, 0x7fffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x8, 0x3fffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x10, 0x7fffffff);
- uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x12, 0x3fffffff);
- uint64_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x14, 0x7fffffff);
- uint64_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x51, Return x16, 0x3fffffff);
- uint64_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x18, 0x7fffffff);
- uint64_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x20, 0x3fffffff);
- uint64_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x22, 0x7fffffff);
- uint64_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x63, Return x24, 0x3fffffff);
- uint64_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x66, Return x26, 0x7fffffff);
- uint64_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x28, 0x3fffffff);
- uint64_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x30, 0x7fffffff);
- uint64_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x75, Return x29, 0x3fffffff);
- uint64_t x79 = cmovznz64(x78, 0x0, 0xffffffffffffffffL);
- uint64_t x80 = (x79 & 0x7fffffef);
- uint64_t x82, uint8_t x83 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x32, Return x80);
- uint64_t x84 = (x79 & 0x3fffffff);
- uint64_t x86, uint8_t x87 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x83, Return x35, Return x84);
- uint64_t x88 = (x79 & 0x7fffffff);
- uint64_t x90, uint8_t x91 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x87, Return x38, Return x88);
- uint64_t x92 = (x79 & 0x3fffffff);
- uint64_t x94, uint8_t x95 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x91, Return x41, Return x92);
- uint64_t x96 = (x79 & 0x7fffffff);
- uint64_t x98, uint8_t x99 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x95, Return x44, Return x96);
- uint64_t x100 = (x79 & 0x3fffffff);
- uint64_t x102, uint8_t x103 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x99, Return x47, Return x100);
- uint64_t x104 = (x79 & 0x7fffffff);
- uint64_t x106, uint8_t x107 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x103, Return x50, Return x104);
- uint64_t x108 = (x79 & 0x3fffffff);
- uint64_t x110, uint8_t x111 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x107, Return x53, Return x108);
- uint64_t x112 = (x79 & 0x7fffffff);
- uint64_t x114, uint8_t x115 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x111, Return x56, Return x112);
- uint64_t x116 = (x79 & 0x3fffffff);
- uint64_t x118, uint8_t x119 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x115, Return x59, Return x116);
- uint64_t x120 = (x79 & 0x7fffffff);
- uint64_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x119, Return x62, Return x120);
- uint64_t x124 = (x79 & 0x3fffffff);
- uint64_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x123, Return x65, Return x124);
- uint64_t x128 = (x79 & 0x7fffffff);
- uint64_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x127, Return x68, Return x128);
- uint64_t x132 = (x79 & 0x3fffffff);
- uint64_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x131, Return x71, Return x132);
- uint64_t x136 = (x79 & 0x7fffffff);
- uint64_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 31 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x135, Return x74, Return x136);
- uint64_t x140 = (x79 & 0x3fffffff);
- uint64_t x142, uint8_t _ = Op (Syntax.AddWithGetCarry 30 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x139, Return x77, Return x140);
- (Return x142, Return x138, Return x134, Return x130, Return x126, Return x122, Return x118, Return x114, Return x110, Return x106, Return x102, Return x98, Return x94, Return x90, Return x86, Return x82))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e488m17/freezeDisplay.v b/src/Specific/solinas64_2e488m17/freezeDisplay.v
deleted file mode 100644
index 7a8ed1a0a..000000000
--- a/src/Specific/solinas64_2e488m17/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e488m17.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e488m17/py_interpreter.sh b/src/Specific/solinas64_2e488m17/py_interpreter.sh
deleted file mode 100755
index 441fcd057..000000000
--- a/src/Specific/solinas64_2e488m17/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='30.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e488m17_10limbs/CurveParameters.v b/src/Specific/solinas64_2e488m17_10limbs/CurveParameters.v
new file mode 100644
index 000000000..b3dc3e0e7
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^488 - 17
+Base: 48.8
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 48 + 4/5;
+ bitwidth := 64;
+ s := 2^488;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/Synthesis.v b/src/Specific/solinas64_2e488m17_10limbs/Synthesis.v
new file mode 100644
index 000000000..874347625
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/compiler.sh b/src/Specific/solinas64_2e488m17_10limbs/compiler.sh
new file mode 100755
index 000000000..fdfe6d5d8
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,48,49,49,49,49,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17_10limbs/compilerxx.sh b/src/Specific/solinas64_2e488m17_10limbs/compilerxx.sh
new file mode 100755
index 000000000..f692e236f
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,48,49,49,49,49,48}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17_10limbs/feadd.v b/src/Specific/solinas64_2e488m17_10limbs/feadd.v
new file mode 100644
index 000000000..72a4083b6
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..4758027fd
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/femul.v b/src/Specific/solinas64_2e488m17_10limbs/femul.v
new file mode 100644
index 000000000..a4530a5c7
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.v b/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.v
new file mode 100644
index 000000000..375ecac7a
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesquare.v b/src/Specific/solinas64_2e488m17_10limbs/fesquare.v
new file mode 100644
index 000000000..a97a5297e
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8885f560f
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesub.v b/src/Specific/solinas64_2e488m17_10limbs/fesub.v
new file mode 100644
index 000000000..64897bdca
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..0b18f09d7
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/freeze.v b/src/Specific/solinas64_2e488m17_10limbs/freeze.v
new file mode 100644
index 000000000..3e6461b13
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..c1720c03d
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e488m17_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e488m17_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..f67417acc
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='48.8' -Da24='121665'
diff --git a/src/Specific/solinas64_2e488m17_9limbs/CurveParameters.v b/src/Specific/solinas64_2e488m17_9limbs/CurveParameters.v
new file mode 100644
index 000000000..7665cf108
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^488 - 17
+Base: 54 + 2/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 54 + 2/9;
+ bitwidth := 64;
+ s := 2^488;
+ c := [(1, 17)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/Synthesis.v b/src/Specific/solinas64_2e488m17_9limbs/Synthesis.v
new file mode 100644
index 000000000..bba61c818
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/compiler.sh b/src/Specific/solinas64_2e488m17_9limbs/compiler.sh
new file mode 100755
index 000000000..c39e42ea1
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,55,54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17_9limbs/compilerxx.sh b/src/Specific/solinas64_2e488m17_9limbs/compilerxx.sh
new file mode 100755
index 000000000..aedd01533
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{55,54,54,54,55,54,54,54,54}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef}' -Dmodulus_bytes_val='61' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<488) - 17' "$@"
diff --git a/src/Specific/solinas64_2e488m17_9limbs/feadd.v b/src/Specific/solinas64_2e488m17_9limbs/feadd.v
new file mode 100644
index 000000000..0a39f6533
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..e41e3c8df
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/femul.v b/src/Specific/solinas64_2e488m17_9limbs/femul.v
new file mode 100644
index 000000000..3e237d577
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.v b/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.v
new file mode 100644
index 000000000..5eb2faf87
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesquare.v b/src/Specific/solinas64_2e488m17_9limbs/fesquare.v
new file mode 100644
index 000000000..d0eaf0261
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..a56748dde
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesub.v b/src/Specific/solinas64_2e488m17_9limbs/fesub.v
new file mode 100644
index 000000000..b039a7e1b
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..3c996fb2d
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/freeze.v b/src/Specific/solinas64_2e488m17_9limbs/freeze.v
new file mode 100644
index 000000000..6fd450315
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..1840aa1ee
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e488m17_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e488m17_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e488m17_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..c942d34f9
--- /dev/null
+++ b/src/Specific/solinas64_2e488m17_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**488 - 17' -Dmodulus_bytes='54 + 2/9' -Da24='121665'
diff --git a/src/Specific/solinas64_2e489m21/Synthesis.v b/src/Specific/solinas64_2e489m21/Synthesis.v
deleted file mode 100644
index 41003e6c0..000000000
--- a/src/Specific/solinas64_2e489m21/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e489m21.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e489m21/feadd.c b/src/Specific/solinas64_2e489m21/feadd.c
deleted file mode 100644
index 98ab4434c..000000000
--- a/src/Specific/solinas64_2e489m21/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e489m21/feadd.v b/src/Specific/solinas64_2e489m21/feadd.v
deleted file mode 100644
index 4a4552856..000000000
--- a/src/Specific/solinas64_2e489m21/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e489m21/feaddDisplay.log b/src/Specific/solinas64_2e489m21/feaddDisplay.log
deleted file mode 100644
index 3b92b1c5c..000000000
--- a/src/Specific/solinas64_2e489m21/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21/feaddDisplay.v b/src/Specific/solinas64_2e489m21/feaddDisplay.v
deleted file mode 100644
index d638e5801..000000000
--- a/src/Specific/solinas64_2e489m21/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e489m21.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e489m21/femul.c b/src/Specific/solinas64_2e489m21/femul.c
deleted file mode 100644
index 28f7e7869..000000000
--- a/src/Specific/solinas64_2e489m21/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- { uint128_t x36 = (((uint128_t)x5 * x34) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((0x2 * ((uint128_t)x19 * x23)) + ((uint128_t)x18 * x21)))))))));
- { uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x15 * ((uint128_t)x18 * x34)));
- { uint128_t x38 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + (((uint128_t)x11 * x27) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((uint128_t)x17 * x21))))))) + (0x15 * ((0x2 * ((uint128_t)x19 * x34)) + (0x2 * ((uint128_t)x18 * x35)))));
- { uint128_t x39 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x15 * x21)))))) + (0x15 * (((uint128_t)x17 * x34) + ((0x2 * ((uint128_t)x19 * x35)) + ((uint128_t)x18 * x33)))));
- { uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x15 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- { uint128_t x41 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((uint128_t)x11 * x21)))) + (0x15 * ((0x2 * ((uint128_t)x13 * x34)) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (0x2 * ((uint128_t)x18 * x29))))))));
- { uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((uint128_t)x9 * x21))) + (0x15 * (((uint128_t)x11 * x34) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + ((0x2 * ((uint128_t)x19 * x29)) + ((uint128_t)x18 * x27))))))));
- { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x15 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- { uint128_t x44 = (((uint128_t)x5 * x21) + (0x15 * ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23)))))))))));
- { uint128_t x45 = (x44 >> 0x37);
- { uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
- { uint128_t x47 = (x45 + x43);
- { uint128_t x48 = (x47 >> 0x36);
- { uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
- { uint128_t x50 = (x48 + x42);
- { uint128_t x51 = (x50 >> 0x36);
- { uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
- { uint128_t x53 = (x51 + x41);
- { uint128_t x54 = (x53 >> 0x37);
- { uint64_t x55 = ((uint64_t)x53 & 0x7fffffffffffff);
- { uint128_t x56 = (x54 + x40);
- { uint128_t x57 = (x56 >> 0x36);
- { uint64_t x58 = ((uint64_t)x56 & 0x3fffffffffffff);
- { uint128_t x59 = (x57 + x39);
- { uint128_t x60 = (x59 >> 0x36);
- { uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffffff);
- { uint128_t x62 = (x60 + x38);
- { uint64_t x63 = (uint64_t) (x62 >> 0x37);
- { uint64_t x64 = ((uint64_t)x62 & 0x7fffffffffffff);
- { uint128_t x65 = (x63 + x37);
- { uint64_t x66 = (uint64_t) (x65 >> 0x36);
- { uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffffff);
- { uint128_t x68 = (x66 + x36);
- { uint64_t x69 = (uint64_t) (x68 >> 0x36);
- { uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffffff);
- { uint128_t x71 = (x46 + ((uint128_t)0x15 * x69));
- { uint64_t x72 = (uint64_t) (x71 >> 0x37);
- { uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
- { uint64_t x74 = (x72 + x49);
- { uint64_t x75 = (x74 >> 0x36);
- { uint64_t x76 = (x74 & 0x3fffffffffffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e489m21/femul.v b/src/Specific/solinas64_2e489m21/femul.v
deleted file mode 100644
index e46b9e5aa..000000000
--- a/src/Specific/solinas64_2e489m21/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e489m21/femulDisplay.log b/src/Specific/solinas64_2e489m21/femulDisplay.log
deleted file mode 100644
index c78befef7..000000000
--- a/src/Specific/solinas64_2e489m21/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint128_t x36 = (((uint128_t)x5 * x34) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + ((0x2 * ((uint128_t)x13 * x29)) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + ((0x2 * ((uint128_t)x19 * x23)) + ((uint128_t)x18 * x21)))))))));
- uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x15 * ((uint128_t)x18 * x34)));
- uint128_t x38 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + (((uint128_t)x11 * x27) + ((0x2 * ((uint128_t)x13 * x25)) + ((0x2 * ((uint128_t)x15 * x23)) + ((uint128_t)x17 * x21))))))) + (0x15 * ((0x2 * ((uint128_t)x19 * x34)) + (0x2 * ((uint128_t)x18 * x35)))));
- uint128_t x39 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x15 * x21)))))) + (0x15 * (((uint128_t)x17 * x34) + ((0x2 * ((uint128_t)x19 * x35)) + ((uint128_t)x18 * x33)))));
- uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x15 * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- uint128_t x41 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((uint128_t)x11 * x21)))) + (0x15 * ((0x2 * ((uint128_t)x13 * x34)) + ((0x2 * ((uint128_t)x15 * x35)) + (((uint128_t)x17 * x33) + ((0x2 * ((uint128_t)x19 * x31)) + (0x2 * ((uint128_t)x18 * x29))))))));
- uint128_t x42 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((uint128_t)x9 * x21))) + (0x15 * (((uint128_t)x11 * x34) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + ((0x2 * ((uint128_t)x19 * x29)) + ((uint128_t)x18 * x27))))))));
- uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x15 * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- uint128_t x44 = (((uint128_t)x5 * x21) + (0x15 * ((0x2 * ((uint128_t)x7 * x34)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + (((uint128_t)x17 * x27) + ((0x2 * ((uint128_t)x19 * x25)) + (0x2 * ((uint128_t)x18 * x23)))))))))));
- uint128_t x45 = (x44 >> 0x37);
- uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
- uint128_t x47 = (x45 + x43);
- uint128_t x48 = (x47 >> 0x36);
- uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
- uint128_t x50 = (x48 + x42);
- uint128_t x51 = (x50 >> 0x36);
- uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
- uint128_t x53 = (x51 + x41);
- uint128_t x54 = (x53 >> 0x37);
- uint64_t x55 = ((uint64_t)x53 & 0x7fffffffffffff);
- uint128_t x56 = (x54 + x40);
- uint128_t x57 = (x56 >> 0x36);
- uint64_t x58 = ((uint64_t)x56 & 0x3fffffffffffff);
- uint128_t x59 = (x57 + x39);
- uint128_t x60 = (x59 >> 0x36);
- uint64_t x61 = ((uint64_t)x59 & 0x3fffffffffffff);
- uint128_t x62 = (x60 + x38);
- uint64_t x63 = (uint64_t) (x62 >> 0x37);
- uint64_t x64 = ((uint64_t)x62 & 0x7fffffffffffff);
- uint128_t x65 = (x63 + x37);
- uint64_t x66 = (uint64_t) (x65 >> 0x36);
- uint64_t x67 = ((uint64_t)x65 & 0x3fffffffffffff);
- uint128_t x68 = (x66 + x36);
- uint64_t x69 = (uint64_t) (x68 >> 0x36);
- uint64_t x70 = ((uint64_t)x68 & 0x3fffffffffffff);
- uint128_t x71 = (x46 + ((uint128_t)0x15 * x69));
- uint64_t x72 = (uint64_t) (x71 >> 0x37);
- uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
- uint64_t x74 = (x72 + x49);
- uint64_t x75 = (x74 >> 0x36);
- uint64_t x76 = (x74 & 0x3fffffffffffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21/femulDisplay.v b/src/Specific/solinas64_2e489m21/femulDisplay.v
deleted file mode 100644
index 956d19749..000000000
--- a/src/Specific/solinas64_2e489m21/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e489m21.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e489m21/fesquare.c b/src/Specific/solinas64_2e489m21/fesquare.c
deleted file mode 100644
index 2da18a58f..000000000
--- a/src/Specific/solinas64_2e489m21/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x17 = (((uint128_t)x2 * x15) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x15 * x2)))))))));
- { uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x15 * ((uint128_t)x15 * x15)));
- { uint128_t x19 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x15 * ((0x2 * ((uint128_t)x16 * x15)) + (0x2 * ((uint128_t)x15 * x16)))));
- { uint128_t x20 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x15 * (((uint128_t)x14 * x15) + ((0x2 * ((uint128_t)x16 * x16)) + ((uint128_t)x15 * x14)))));
- { uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- { uint128_t x22 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x15 * ((0x2 * ((uint128_t)x10 * x15)) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (0x2 * ((uint128_t)x15 * x10))))))));
- { uint128_t x23 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x15) + ((0x2 * ((uint128_t)x10 * x16)) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((0x2 * ((uint128_t)x16 * x10)) + ((uint128_t)x15 * x8))))))));
- { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x15 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- { uint128_t x25 = (((uint128_t)x2 * x2) + (0x15 * ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + (((uint128_t)x8 * x14) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + (((uint128_t)x14 * x8) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4)))))))))));
- { uint128_t x26 = (x25 >> 0x37);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- { uint128_t x28 = (x26 + x24);
- { uint128_t x29 = (x28 >> 0x36);
- { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- { uint128_t x31 = (x29 + x23);
- { uint128_t x32 = (x31 >> 0x36);
- { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
- { uint128_t x34 = (x32 + x22);
- { uint128_t x35 = (x34 >> 0x37);
- { uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- { uint128_t x37 = (x35 + x21);
- { uint128_t x38 = (x37 >> 0x36);
- { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- { uint128_t x40 = (x38 + x20);
- { uint128_t x41 = (x40 >> 0x36);
- { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
- { uint128_t x43 = (x41 + x19);
- { uint64_t x44 = (uint64_t) (x43 >> 0x37);
- { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- { uint128_t x46 = (x44 + x18);
- { uint64_t x47 = (uint64_t) (x46 >> 0x36);
- { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
- { uint128_t x49 = (x47 + x17);
- { uint64_t x50 = (uint64_t) (x49 >> 0x36);
- { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
- { uint128_t x52 = (x27 + ((uint128_t)0x15 * x50));
- { uint64_t x53 = (uint64_t) (x52 >> 0x37);
- { uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
- { uint64_t x55 = (x53 + x30);
- { uint64_t x56 = (x55 >> 0x36);
- { uint64_t x57 = (x55 & 0x3fffffffffffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e489m21/fesquare.v b/src/Specific/solinas64_2e489m21/fesquare.v
deleted file mode 100644
index 1679523a9..000000000
--- a/src/Specific/solinas64_2e489m21/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e489m21/fesquareDisplay.log b/src/Specific/solinas64_2e489m21/fesquareDisplay.log
deleted file mode 100644
index 3893a91f4..000000000
--- a/src/Specific/solinas64_2e489m21/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x17 = (((uint128_t)x2 * x15) + ((0x2 * ((uint128_t)x4 * x16)) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + ((0x2 * ((uint128_t)x10 * x10)) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x15 * x2)))))))));
- uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x15 * ((uint128_t)x15 * x15)));
- uint128_t x19 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x15 * ((0x2 * ((uint128_t)x16 * x15)) + (0x2 * ((uint128_t)x15 * x16)))));
- uint128_t x20 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x15 * (((uint128_t)x14 * x15) + ((0x2 * ((uint128_t)x16 * x16)) + ((uint128_t)x15 * x14)))));
- uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- uint128_t x22 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x15 * ((0x2 * ((uint128_t)x10 * x15)) + ((0x2 * ((uint128_t)x12 * x16)) + (((uint128_t)x14 * x14) + ((0x2 * ((uint128_t)x16 * x12)) + (0x2 * ((uint128_t)x15 * x10))))))));
- uint128_t x23 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x15) + ((0x2 * ((uint128_t)x10 * x16)) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + ((0x2 * ((uint128_t)x16 * x10)) + ((uint128_t)x15 * x8))))))));
- uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x15 * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- uint128_t x25 = (((uint128_t)x2 * x2) + (0x15 * ((0x2 * ((uint128_t)x4 * x15)) + ((0x2 * ((uint128_t)x6 * x16)) + (((uint128_t)x8 * x14) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + (((uint128_t)x14 * x8) + ((0x2 * ((uint128_t)x16 * x6)) + (0x2 * ((uint128_t)x15 * x4)))))))))));
- uint128_t x26 = (x25 >> 0x37);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- uint128_t x28 = (x26 + x24);
- uint128_t x29 = (x28 >> 0x36);
- uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
- uint128_t x31 = (x29 + x23);
- uint128_t x32 = (x31 >> 0x36);
- uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
- uint128_t x34 = (x32 + x22);
- uint128_t x35 = (x34 >> 0x37);
- uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- uint128_t x37 = (x35 + x21);
- uint128_t x38 = (x37 >> 0x36);
- uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
- uint128_t x40 = (x38 + x20);
- uint128_t x41 = (x40 >> 0x36);
- uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
- uint128_t x43 = (x41 + x19);
- uint64_t x44 = (uint64_t) (x43 >> 0x37);
- uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- uint128_t x46 = (x44 + x18);
- uint64_t x47 = (uint64_t) (x46 >> 0x36);
- uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
- uint128_t x49 = (x47 + x17);
- uint64_t x50 = (uint64_t) (x49 >> 0x36);
- uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
- uint128_t x52 = (x27 + ((uint128_t)0x15 * x50));
- uint64_t x53 = (uint64_t) (x52 >> 0x37);
- uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
- uint64_t x55 = (x53 + x30);
- uint64_t x56 = (x55 >> 0x36);
- uint64_t x57 = (x55 & 0x3fffffffffffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21/fesquareDisplay.v b/src/Specific/solinas64_2e489m21/fesquareDisplay.v
deleted file mode 100644
index f299731f7..000000000
--- a/src/Specific/solinas64_2e489m21/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e489m21.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e489m21/fesub.c b/src/Specific/solinas64_2e489m21/fesub.c
deleted file mode 100644
index 63e733cb7..000000000
--- a/src/Specific/solinas64_2e489m21/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = ((0xffffffffffffd6 + x5) - x21);
- out[1] = ((0x7ffffffffffffe + x7) - x23);
- out[2] = ((0x7ffffffffffffe + x9) - x25);
- out[3] = ((0xfffffffffffffe + x11) - x27);
- out[4] = ((0x7ffffffffffffe + x13) - x29);
- out[5] = ((0x7ffffffffffffe + x15) - x31);
- out[6] = ((0xfffffffffffffe + x17) - x33);
- out[7] = ((0x7ffffffffffffe + x19) - x35);
- out[8] = ((0x7ffffffffffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e489m21/fesub.v b/src/Specific/solinas64_2e489m21/fesub.v
deleted file mode 100644
index 0f3a2c117..000000000
--- a/src/Specific/solinas64_2e489m21/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e489m21/fesubDisplay.log b/src/Specific/solinas64_2e489m21/fesubDisplay.log
deleted file mode 100644
index c0892d044..000000000
--- a/src/Specific/solinas64_2e489m21/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0x7ffffffffffffe + x18) - x34), ((0x7ffffffffffffe + x19) - x35), ((0xfffffffffffffe + x17) - x33), ((0x7ffffffffffffe + x15) - x31), ((0x7ffffffffffffe + x13) - x29), ((0xfffffffffffffe + x11) - x27), ((0x7ffffffffffffe + x9) - x25), ((0x7ffffffffffffe + x7) - x23), ((0xffffffffffffd6 + x5) - x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21/fesubDisplay.v b/src/Specific/solinas64_2e489m21/fesubDisplay.v
deleted file mode 100644
index b547e6e75..000000000
--- a/src/Specific/solinas64_2e489m21/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e489m21.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e489m21/freeze.c b/src/Specific/solinas64_2e489m21/freeze.c
deleted file mode 100644
index 2c2696083..000000000
--- a/src/Specific/solinas64_2e489m21/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffeb);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x7fffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffffffffffff);
- { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffffff);
- { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- { uint64_t x45 = (x44 & 0x7fffffffffffeb);
- { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint64_t x49 = (x44 & 0x3fffffffffffff);
- { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint64_t x53 = (x44 & 0x3fffffffffffff);
- { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint64_t x57 = (x44 & 0x7fffffffffffff);
- { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint64_t x61 = (x44 & 0x3fffffffffffff);
- { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint64_t x65 = (x44 & 0x3fffffffffffff);
- { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint64_t x69 = (x44 & 0x7fffffffffffff);
- { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint64_t x73 = (x44 & 0x3fffffffffffff);
- { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint64_t x77 = (x44 & 0x3fffffffffffff);
- { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e489m21/freeze.v b/src/Specific/solinas64_2e489m21/freeze.v
deleted file mode 100644
index 684e30a33..000000000
--- a/src/Specific/solinas64_2e489m21/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e489m21.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e489m21/freezeDisplay.log b/src/Specific/solinas64_2e489m21/freezeDisplay.log
deleted file mode 100644
index 890bbfd27..000000000
--- a/src/Specific/solinas64_2e489m21/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffeb);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x3fffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x3fffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x7fffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x3fffffffffffff);
- uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x3fffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x3fffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x3fffffffffffff);
- uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- uint64_t x45 = (x44 & 0x7fffffffffffeb);
- uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint64_t x49 = (x44 & 0x3fffffffffffff);
- uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint64_t x53 = (x44 & 0x3fffffffffffff);
- uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint64_t x57 = (x44 & 0x7fffffffffffff);
- uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint64_t x61 = (x44 & 0x3fffffffffffff);
- uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint64_t x65 = (x44 & 0x3fffffffffffff);
- uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint64_t x69 = (x44 & 0x7fffffffffffff);
- uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint64_t x73 = (x44 & 0x3fffffffffffff);
- uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint64_t x77 = (x44 & 0x3fffffffffffff);
- uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e489m21/freezeDisplay.v b/src/Specific/solinas64_2e489m21/freezeDisplay.v
deleted file mode 100644
index af13a2347..000000000
--- a/src/Specific/solinas64_2e489m21/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e489m21.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/CurveParameters.v b/src/Specific/solinas64_2e489m21_10limbs/CurveParameters.v
new file mode 100644
index 000000000..3f284f94f
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^489 - 21
+Base: 48.9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 48 + 9/10;
+ bitwidth := 64;
+ s := 2^489;
+ c := [(1, 21)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/Synthesis.v b/src/Specific/solinas64_2e489m21_10limbs/Synthesis.v
new file mode 100644
index 000000000..93737e25e
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/compiler.sh b/src/Specific/solinas64_2e489m21_10limbs/compiler.sh
new file mode 100755
index 000000000..66897823d
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,49,49,49,49,49,48}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas64_2e489m21_10limbs/compilerxx.sh b/src/Specific/solinas64_2e489m21_10limbs/compilerxx.sh
new file mode 100755
index 000000000..e3063c260
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{49,49,49,49,49,49,49,49,49,48}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<489) - 21' "$@"
diff --git a/src/Specific/solinas64_2e489m21_10limbs/feadd.v b/src/Specific/solinas64_2e489m21_10limbs/feadd.v
new file mode 100644
index 000000000..a7eb2ad22
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..347c7cb1e
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/femul.v b/src/Specific/solinas64_2e489m21_10limbs/femul.v
new file mode 100644
index 000000000..5e8d4dd75
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.v b/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.v
new file mode 100644
index 000000000..3b0b47d0f
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesquare.v b/src/Specific/solinas64_2e489m21_10limbs/fesquare.v
new file mode 100644
index 000000000..fa462774f
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b09751ac1
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesub.v b/src/Specific/solinas64_2e489m21_10limbs/fesub.v
new file mode 100644
index 000000000..b6548ad02
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..00d6ed812
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/freeze.v b/src/Specific/solinas64_2e489m21_10limbs/freeze.v
new file mode 100644
index 000000000..354821b2f
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..165748f9c
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e489m21_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e489m21_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..729cdb4f4
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**489 - 21' -Dmodulus_bytes='48.9' -Da24='121665'
diff --git a/src/Specific/solinas64_2e489m21/CurveParameters.v b/src/Specific/solinas64_2e489m21_9limbs/CurveParameters.v
index 31010d631..31010d631 100644
--- a/src/Specific/solinas64_2e489m21/CurveParameters.v
+++ b/src/Specific/solinas64_2e489m21_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e489m21_9limbs/Synthesis.v b/src/Specific/solinas64_2e489m21_9limbs/Synthesis.v
new file mode 100644
index 000000000..838d1d94d
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e489m21/compiler.sh b/src/Specific/solinas64_2e489m21_9limbs/compiler.sh
index 068e51612..068e51612 100755
--- a/src/Specific/solinas64_2e489m21/compiler.sh
+++ b/src/Specific/solinas64_2e489m21_9limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e489m21/compilerxx.sh b/src/Specific/solinas64_2e489m21_9limbs/compilerxx.sh
index dcc8b1e51..dcc8b1e51 100755
--- a/src/Specific/solinas64_2e489m21/compilerxx.sh
+++ b/src/Specific/solinas64_2e489m21_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e489m21_9limbs/feadd.v b/src/Specific/solinas64_2e489m21_9limbs/feadd.v
new file mode 100644
index 000000000..411f1e409
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e489m21_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..771181029
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/femul.v b/src/Specific/solinas64_2e489m21_9limbs/femul.v
new file mode 100644
index 000000000..c070aa446
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/femulDisplay.v b/src/Specific/solinas64_2e489m21_9limbs/femulDisplay.v
new file mode 100644
index 000000000..6e56e5b30
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/fesquare.v b/src/Specific/solinas64_2e489m21_9limbs/fesquare.v
new file mode 100644
index 000000000..92ecffb91
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e489m21_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..1d3c9ab37
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/fesub.v b/src/Specific/solinas64_2e489m21_9limbs/fesub.v
new file mode 100644
index 000000000..4e507a115
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e489m21_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..00391ff1f
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/freeze.v b/src/Specific/solinas64_2e489m21_9limbs/freeze.v
new file mode 100644
index 000000000..ac44fe439
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e489m21_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e489m21_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..bb84b26a5
--- /dev/null
+++ b/src/Specific/solinas64_2e489m21_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e489m21_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e489m21/py_interpreter.sh b/src/Specific/solinas64_2e489m21_9limbs/py_interpreter.sh
index 0ea85171b..0ea85171b 100755
--- a/src/Specific/solinas64_2e489m21/py_interpreter.sh
+++ b/src/Specific/solinas64_2e489m21_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e495m31/Synthesis.v b/src/Specific/solinas64_2e495m31/Synthesis.v
deleted file mode 100644
index 459c65c1f..000000000
--- a/src/Specific/solinas64_2e495m31/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e495m31.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e495m31/feadd.c b/src/Specific/solinas64_2e495m31/feadd.c
deleted file mode 100644
index 98ab4434c..000000000
--- a/src/Specific/solinas64_2e495m31/feadd.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void feadd(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = (x5 + x21);
- out[1] = (x7 + x23);
- out[2] = (x9 + x25);
- out[3] = (x11 + x27);
- out[4] = (x13 + x29);
- out[5] = (x15 + x31);
- out[6] = (x17 + x33);
- out[7] = (x19 + x35);
- out[8] = (x18 + x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e495m31/feadd.v b/src/Specific/solinas64_2e495m31/feadd.v
deleted file mode 100644
index 344c790d9..000000000
--- a/src/Specific/solinas64_2e495m31/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e495m31/feaddDisplay.log b/src/Specific/solinas64_2e495m31/feaddDisplay.log
deleted file mode 100644
index 3b92b1c5c..000000000
--- a/src/Specific/solinas64_2e495m31/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- ((x18 + x34), (x19 + x35), (x17 + x33), (x15 + x31), (x13 + x29), (x11 + x27), (x9 + x25), (x7 + x23), (x5 + x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31/feaddDisplay.v b/src/Specific/solinas64_2e495m31/feaddDisplay.v
deleted file mode 100644
index e8f8301db..000000000
--- a/src/Specific/solinas64_2e495m31/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e495m31.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e495m31/femul.c b/src/Specific/solinas64_2e495m31/femul.c
deleted file mode 100644
index 2f2ec67e9..000000000
--- a/src/Specific/solinas64_2e495m31/femul.c
+++ /dev/null
@@ -1,71 +0,0 @@
-static void femul(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- { uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
- { uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x1f * ((uint128_t)x18 * x34)));
- { uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x1f * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
- { uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x1f * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
- { uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x1f * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- { uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x1f * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
- { uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x1f * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
- { uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x1f * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- { uint128_t x44 = (((uint128_t)x5 * x21) + (0x1f * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
- { uint128_t x45 = (x44 >> 0x37);
- { uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
- { uint128_t x47 = (x45 + x43);
- { uint128_t x48 = (x47 >> 0x37);
- { uint64_t x49 = ((uint64_t)x47 & 0x7fffffffffffff);
- { uint128_t x50 = (x48 + x42);
- { uint128_t x51 = (x50 >> 0x37);
- { uint64_t x52 = ((uint64_t)x50 & 0x7fffffffffffff);
- { uint128_t x53 = (x51 + x41);
- { uint128_t x54 = (x53 >> 0x37);
- { uint64_t x55 = ((uint64_t)x53 & 0x7fffffffffffff);
- { uint128_t x56 = (x54 + x40);
- { uint128_t x57 = (x56 >> 0x37);
- { uint64_t x58 = ((uint64_t)x56 & 0x7fffffffffffff);
- { uint128_t x59 = (x57 + x39);
- { uint128_t x60 = (x59 >> 0x37);
- { uint64_t x61 = ((uint64_t)x59 & 0x7fffffffffffff);
- { uint128_t x62 = (x60 + x38);
- { uint128_t x63 = (x62 >> 0x37);
- { uint64_t x64 = ((uint64_t)x62 & 0x7fffffffffffff);
- { uint128_t x65 = (x63 + x37);
- { uint64_t x66 = (uint64_t) (x65 >> 0x37);
- { uint64_t x67 = ((uint64_t)x65 & 0x7fffffffffffff);
- { uint128_t x68 = (x66 + x36);
- { uint64_t x69 = (uint64_t) (x68 >> 0x37);
- { uint64_t x70 = ((uint64_t)x68 & 0x7fffffffffffff);
- { uint128_t x71 = (x46 + ((uint128_t)0x1f * x69));
- { uint64_t x72 = (uint64_t) (x71 >> 0x37);
- { uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
- { uint64_t x74 = (x72 + x49);
- { uint64_t x75 = (x74 >> 0x37);
- { uint64_t x76 = (x74 & 0x7fffffffffffff);
- out[0] = x73;
- out[1] = x76;
- out[2] = (x75 + x52);
- out[3] = x55;
- out[4] = x58;
- out[5] = x61;
- out[6] = x64;
- out[7] = x67;
- out[8] = x70;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e495m31/femul.v b/src/Specific/solinas64_2e495m31/femul.v
deleted file mode 100644
index cbe01edbb..000000000
--- a/src/Specific/solinas64_2e495m31/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e495m31/femulDisplay.log b/src/Specific/solinas64_2e495m31/femulDisplay.log
deleted file mode 100644
index 305eada5e..000000000
--- a/src/Specific/solinas64_2e495m31/femulDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- uint128_t x36 = (((uint128_t)x5 * x34) + (((uint128_t)x7 * x35) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + (((uint128_t)x17 * x25) + (((uint128_t)x19 * x23) + ((uint128_t)x18 * x21)))))))));
- uint128_t x37 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + (((uint128_t)x17 * x23) + ((uint128_t)x19 * x21)))))))) + (0x1f * ((uint128_t)x18 * x34)));
- uint128_t x38 = ((((uint128_t)x5 * x33) + (((uint128_t)x7 * x31) + (((uint128_t)x9 * x29) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x17 * x21))))))) + (0x1f * (((uint128_t)x19 * x34) + ((uint128_t)x18 * x35))));
- uint128_t x39 = ((((uint128_t)x5 * x31) + (((uint128_t)x7 * x29) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + ((uint128_t)x15 * x21)))))) + (0x1f * (((uint128_t)x17 * x34) + (((uint128_t)x19 * x35) + ((uint128_t)x18 * x33)))));
- uint128_t x40 = ((((uint128_t)x5 * x29) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))))) + (0x1f * (((uint128_t)x15 * x34) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + ((uint128_t)x18 * x31))))));
- uint128_t x41 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + ((uint128_t)x11 * x21)))) + (0x1f * (((uint128_t)x13 * x34) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + ((uint128_t)x18 * x29)))))));
- uint128_t x42 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + ((uint128_t)x9 * x21))) + (0x1f * (((uint128_t)x11 * x34) + (((uint128_t)x13 * x35) + (((uint128_t)x15 * x33) + (((uint128_t)x17 * x31) + (((uint128_t)x19 * x29) + ((uint128_t)x18 * x27))))))));
- uint128_t x43 = ((((uint128_t)x5 * x23) + ((uint128_t)x7 * x21)) + (0x1f * (((uint128_t)x9 * x34) + (((uint128_t)x11 * x35) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + (((uint128_t)x17 * x29) + (((uint128_t)x19 * x27) + ((uint128_t)x18 * x25)))))))));
- uint128_t x44 = (((uint128_t)x5 * x21) + (0x1f * (((uint128_t)x7 * x34) + (((uint128_t)x9 * x35) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + (((uint128_t)x17 * x27) + (((uint128_t)x19 * x25) + ((uint128_t)x18 * x23))))))))));
- uint128_t x45 = (x44 >> 0x37);
- uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffffff);
- uint128_t x47 = (x45 + x43);
- uint128_t x48 = (x47 >> 0x37);
- uint64_t x49 = ((uint64_t)x47 & 0x7fffffffffffff);
- uint128_t x50 = (x48 + x42);
- uint128_t x51 = (x50 >> 0x37);
- uint64_t x52 = ((uint64_t)x50 & 0x7fffffffffffff);
- uint128_t x53 = (x51 + x41);
- uint128_t x54 = (x53 >> 0x37);
- uint64_t x55 = ((uint64_t)x53 & 0x7fffffffffffff);
- uint128_t x56 = (x54 + x40);
- uint128_t x57 = (x56 >> 0x37);
- uint64_t x58 = ((uint64_t)x56 & 0x7fffffffffffff);
- uint128_t x59 = (x57 + x39);
- uint128_t x60 = (x59 >> 0x37);
- uint64_t x61 = ((uint64_t)x59 & 0x7fffffffffffff);
- uint128_t x62 = (x60 + x38);
- uint128_t x63 = (x62 >> 0x37);
- uint64_t x64 = ((uint64_t)x62 & 0x7fffffffffffff);
- uint128_t x65 = (x63 + x37);
- uint64_t x66 = (uint64_t) (x65 >> 0x37);
- uint64_t x67 = ((uint64_t)x65 & 0x7fffffffffffff);
- uint128_t x68 = (x66 + x36);
- uint64_t x69 = (uint64_t) (x68 >> 0x37);
- uint64_t x70 = ((uint64_t)x68 & 0x7fffffffffffff);
- uint128_t x71 = (x46 + ((uint128_t)0x1f * x69));
- uint64_t x72 = (uint64_t) (x71 >> 0x37);
- uint64_t x73 = ((uint64_t)x71 & 0x7fffffffffffff);
- uint64_t x74 = (x72 + x49);
- uint64_t x75 = (x74 >> 0x37);
- uint64_t x76 = (x74 & 0x7fffffffffffff);
- return (Return x70, Return x67, Return x64, Return x61, Return x58, Return x55, (x75 + x52), Return x76, Return x73))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31/femulDisplay.v b/src/Specific/solinas64_2e495m31/femulDisplay.v
deleted file mode 100644
index 0dfb798d0..000000000
--- a/src/Specific/solinas64_2e495m31/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e495m31.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e495m31/fesquare.c b/src/Specific/solinas64_2e495m31/fesquare.c
deleted file mode 100644
index 3fec90126..000000000
--- a/src/Specific/solinas64_2e495m31/fesquare.c
+++ /dev/null
@@ -1,62 +0,0 @@
-static void fesquare(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
- { uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1f * ((uint128_t)x15 * x15)));
- { uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x1f * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
- { uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
- { uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x1f * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- { uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
- { uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1f * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
- { uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- { uint128_t x25 = (((uint128_t)x2 * x2) + (0x1f * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
- { uint128_t x26 = (x25 >> 0x37);
- { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- { uint128_t x28 = (x26 + x24);
- { uint128_t x29 = (x28 >> 0x37);
- { uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- { uint128_t x31 = (x29 + x23);
- { uint128_t x32 = (x31 >> 0x37);
- { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffffff);
- { uint128_t x34 = (x32 + x22);
- { uint128_t x35 = (x34 >> 0x37);
- { uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- { uint128_t x37 = (x35 + x21);
- { uint128_t x38 = (x37 >> 0x37);
- { uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
- { uint128_t x40 = (x38 + x20);
- { uint128_t x41 = (x40 >> 0x37);
- { uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
- { uint128_t x43 = (x41 + x19);
- { uint128_t x44 = (x43 >> 0x37);
- { uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- { uint128_t x46 = (x44 + x18);
- { uint64_t x47 = (uint64_t) (x46 >> 0x37);
- { uint64_t x48 = ((uint64_t)x46 & 0x7fffffffffffff);
- { uint128_t x49 = (x47 + x17);
- { uint64_t x50 = (uint64_t) (x49 >> 0x37);
- { uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffffff);
- { uint128_t x52 = (x27 + ((uint128_t)0x1f * x50));
- { uint64_t x53 = (uint64_t) (x52 >> 0x37);
- { uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
- { uint64_t x55 = (x53 + x30);
- { uint64_t x56 = (x55 >> 0x37);
- { uint64_t x57 = (x55 & 0x7fffffffffffff);
- out[0] = x54;
- out[1] = x57;
- out[2] = (x56 + x33);
- out[3] = x36;
- out[4] = x39;
- out[5] = x42;
- out[6] = x45;
- out[7] = x48;
- out[8] = x51;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e495m31/fesquare.v b/src/Specific/solinas64_2e495m31/fesquare.v
deleted file mode 100644
index 0a6fa646e..000000000
--- a/src/Specific/solinas64_2e495m31/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e495m31/fesquareDisplay.log b/src/Specific/solinas64_2e495m31/fesquareDisplay.log
deleted file mode 100644
index c73337d0d..000000000
--- a/src/Specific/solinas64_2e495m31/fesquareDisplay.log
+++ /dev/null
@@ -1,48 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x17 = (((uint128_t)x2 * x15) + (((uint128_t)x4 * x16) + (((uint128_t)x6 * x14) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + (((uint128_t)x14 * x6) + (((uint128_t)x16 * x4) + ((uint128_t)x15 * x2)))))))));
- uint128_t x18 = ((((uint128_t)x2 * x16) + (((uint128_t)x4 * x14) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + (((uint128_t)x14 * x4) + ((uint128_t)x16 * x2)))))))) + (0x1f * ((uint128_t)x15 * x15)));
- uint128_t x19 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x1f * (((uint128_t)x16 * x15) + ((uint128_t)x15 * x16))));
- uint128_t x20 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x1f * (((uint128_t)x14 * x15) + (((uint128_t)x16 * x16) + ((uint128_t)x15 * x14)))));
- uint128_t x21 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x1f * (((uint128_t)x12 * x15) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + ((uint128_t)x15 * x12))))));
- uint128_t x22 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x1f * (((uint128_t)x10 * x15) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + ((uint128_t)x15 * x10)))))));
- uint128_t x23 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x1f * (((uint128_t)x8 * x15) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + ((uint128_t)x15 * x8))))))));
- uint128_t x24 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1f * (((uint128_t)x6 * x15) + (((uint128_t)x8 * x16) + (((uint128_t)x10 * x14) + (((uint128_t)x12 * x12) + (((uint128_t)x14 * x10) + (((uint128_t)x16 * x8) + ((uint128_t)x15 * x6)))))))));
- uint128_t x25 = (((uint128_t)x2 * x2) + (0x1f * (((uint128_t)x4 * x15) + (((uint128_t)x6 * x16) + (((uint128_t)x8 * x14) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + (((uint128_t)x14 * x8) + (((uint128_t)x16 * x6) + ((uint128_t)x15 * x4))))))))));
- uint128_t x26 = (x25 >> 0x37);
- uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffffff);
- uint128_t x28 = (x26 + x24);
- uint128_t x29 = (x28 >> 0x37);
- uint64_t x30 = ((uint64_t)x28 & 0x7fffffffffffff);
- uint128_t x31 = (x29 + x23);
- uint128_t x32 = (x31 >> 0x37);
- uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffffff);
- uint128_t x34 = (x32 + x22);
- uint128_t x35 = (x34 >> 0x37);
- uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
- uint128_t x37 = (x35 + x21);
- uint128_t x38 = (x37 >> 0x37);
- uint64_t x39 = ((uint64_t)x37 & 0x7fffffffffffff);
- uint128_t x40 = (x38 + x20);
- uint128_t x41 = (x40 >> 0x37);
- uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
- uint128_t x43 = (x41 + x19);
- uint128_t x44 = (x43 >> 0x37);
- uint64_t x45 = ((uint64_t)x43 & 0x7fffffffffffff);
- uint128_t x46 = (x44 + x18);
- uint64_t x47 = (uint64_t) (x46 >> 0x37);
- uint64_t x48 = ((uint64_t)x46 & 0x7fffffffffffff);
- uint128_t x49 = (x47 + x17);
- uint64_t x50 = (uint64_t) (x49 >> 0x37);
- uint64_t x51 = ((uint64_t)x49 & 0x7fffffffffffff);
- uint128_t x52 = (x27 + ((uint128_t)0x1f * x50));
- uint64_t x53 = (uint64_t) (x52 >> 0x37);
- uint64_t x54 = ((uint64_t)x52 & 0x7fffffffffffff);
- uint64_t x55 = (x53 + x30);
- uint64_t x56 = (x55 >> 0x37);
- uint64_t x57 = (x55 & 0x7fffffffffffff);
- return (Return x51, Return x48, Return x45, Return x42, Return x39, Return x36, (x56 + x33), Return x57, Return x54))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31/fesquareDisplay.v b/src/Specific/solinas64_2e495m31/fesquareDisplay.v
deleted file mode 100644
index 0b7a5ec0e..000000000
--- a/src/Specific/solinas64_2e495m31/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e495m31.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e495m31/fesub.c b/src/Specific/solinas64_2e495m31/fesub.c
deleted file mode 100644
index dbdb67e21..000000000
--- a/src/Specific/solinas64_2e495m31/fesub.c
+++ /dev/null
@@ -1,30 +0,0 @@
-static void fesub(uint64_t out[9], const uint64_t in1[9], const uint64_t in2[9]) {
- { const uint64_t x18 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x34 = in2[8];
- { const uint64_t x35 = in2[7];
- { const uint64_t x33 = in2[6];
- { const uint64_t x31 = in2[5];
- { const uint64_t x29 = in2[4];
- { const uint64_t x27 = in2[3];
- { const uint64_t x25 = in2[2];
- { const uint64_t x23 = in2[1];
- { const uint64_t x21 = in2[0];
- out[0] = ((0xffffffffffffc2 + x5) - x21);
- out[1] = ((0xfffffffffffffe + x7) - x23);
- out[2] = ((0xfffffffffffffe + x9) - x25);
- out[3] = ((0xfffffffffffffe + x11) - x27);
- out[4] = ((0xfffffffffffffe + x13) - x29);
- out[5] = ((0xfffffffffffffe + x15) - x31);
- out[6] = ((0xfffffffffffffe + x17) - x33);
- out[7] = ((0xfffffffffffffe + x19) - x35);
- out[8] = ((0xfffffffffffffe + x18) - x34);
- }}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e495m31/fesub.v b/src/Specific/solinas64_2e495m31/fesub.v
deleted file mode 100644
index 9934e57ff..000000000
--- a/src/Specific/solinas64_2e495m31/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e495m31/fesubDisplay.log b/src/Specific/solinas64_2e495m31/fesubDisplay.log
deleted file mode 100644
index c24c0f28a..000000000
--- a/src/Specific/solinas64_2e495m31/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x18, x19, x17, x15, x13, x11, x9, x7, x5, (x34, x35, x33, x31, x29, x27, x25, x23, x21))%core,
- (((0xfffffffffffffe + x18) - x34), ((0xfffffffffffffe + x19) - x35), ((0xfffffffffffffe + x17) - x33), ((0xfffffffffffffe + x15) - x31), ((0xfffffffffffffe + x13) - x29), ((0xfffffffffffffe + x11) - x27), ((0xfffffffffffffe + x9) - x25), ((0xfffffffffffffe + x7) - x23), ((0xffffffffffffc2 + x5) - x21)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31/fesubDisplay.v b/src/Specific/solinas64_2e495m31/fesubDisplay.v
deleted file mode 100644
index b1be11550..000000000
--- a/src/Specific/solinas64_2e495m31/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e495m31.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e495m31/freeze.c b/src/Specific/solinas64_2e495m31/freeze.c
deleted file mode 100644
index c373d5d40..000000000
--- a/src/Specific/solinas64_2e495m31/freeze.c
+++ /dev/null
@@ -1,49 +0,0 @@
-static void freeze(uint64_t out[9], const uint64_t in1[9]) {
- { const uint64_t x15 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffe1);
- { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x7fffffffffffff);
- { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x7fffffffffffff);
- { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x7fffffffffffff);
- { uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffffffffffff);
- { uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffffffffffff);
- { uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffffffffffff);
- { uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x7fffffffffffff);
- { uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffffffffffff);
- { uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- { uint64_t x45 = (x44 & 0x7fffffffffffe1);
- { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- { uint64_t x49 = (x44 & 0x7fffffffffffff);
- { uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- { uint64_t x53 = (x44 & 0x7fffffffffffff);
- { uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- { uint64_t x57 = (x44 & 0x7fffffffffffff);
- { uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- { uint64_t x61 = (x44 & 0x7fffffffffffff);
- { uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- { uint64_t x65 = (x44 & 0x7fffffffffffff);
- { uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- { uint64_t x69 = (x44 & 0x7fffffffffffff);
- { uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- { uint64_t x73 = (x44 & 0x7fffffffffffff);
- { uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- { uint64_t x77 = (x44 & 0x7fffffffffffff);
- { uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- out[0] = x47;
- out[1] = x51;
- out[2] = x55;
- out[3] = x59;
- out[4] = x63;
- out[5] = x67;
- out[6] = x71;
- out[7] = x75;
- out[8] = x79;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e495m31/freeze.v b/src/Specific/solinas64_2e495m31/freeze.v
deleted file mode 100644
index 8921cdc86..000000000
--- a/src/Specific/solinas64_2e495m31/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e495m31.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e495m31/freezeDisplay.log b/src/Specific/solinas64_2e495m31/freezeDisplay.log
deleted file mode 100644
index a60ee6bdd..000000000
--- a/src/Specific/solinas64_2e495m31/freezeDisplay.log
+++ /dev/null
@@ -1,35 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x15, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffe1);
- uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x4, 0x7fffffffffffff);
- uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x6, 0x7fffffffffffff);
- uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x8, 0x7fffffffffffff);
- uint64_t x30, uint8_t x31 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x10, 0x7fffffffffffff);
- uint64_t x33, uint8_t x34 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x12, 0x7fffffffffffff);
- uint64_t x36, uint8_t x37 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x34, Return x14, 0x7fffffffffffff);
- uint64_t x39, uint8_t x40 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x16, 0x7fffffffffffff);
- uint64_t x42, uint8_t x43 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x15, 0x7fffffffffffff);
- uint64_t x44 = cmovznz64(x43, 0x0, 0xffffffffffffffffL);
- uint64_t x45 = (x44 & 0x7fffffffffffe1);
- uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x18, Return x45);
- uint64_t x49 = (x44 & 0x7fffffffffffff);
- uint64_t x51, uint8_t x52 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x21, Return x49);
- uint64_t x53 = (x44 & 0x7fffffffffffff);
- uint64_t x55, uint8_t x56 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x52, Return x24, Return x53);
- uint64_t x57 = (x44 & 0x7fffffffffffff);
- uint64_t x59, uint8_t x60 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x56, Return x27, Return x57);
- uint64_t x61 = (x44 & 0x7fffffffffffff);
- uint64_t x63, uint8_t x64 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x60, Return x30, Return x61);
- uint64_t x65 = (x44 & 0x7fffffffffffff);
- uint64_t x67, uint8_t x68 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x64, Return x33, Return x65);
- uint64_t x69 = (x44 & 0x7fffffffffffff);
- uint64_t x71, uint8_t x72 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x68, Return x36, Return x69);
- uint64_t x73 = (x44 & 0x7fffffffffffff);
- uint64_t x75, uint8_t x76 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x72, Return x39, Return x73);
- uint64_t x77 = (x44 & 0x7fffffffffffff);
- uint64_t x79, uint8_t _ = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x76, Return x42, Return x77);
- (Return x79, Return x75, Return x71, Return x67, Return x63, Return x59, Return x55, Return x51, Return x47))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e495m31/freezeDisplay.v b/src/Specific/solinas64_2e495m31/freezeDisplay.v
deleted file mode 100644
index 61e6eed31..000000000
--- a/src/Specific/solinas64_2e495m31/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e495m31.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/CurveParameters.v b/src/Specific/solinas64_2e495m31_10limbs/CurveParameters.v
new file mode 100644
index 000000000..0d55126a6
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^495 - 31
+Base: 49.5
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 10%nat;
+ base := 49 + 1/2;
+ bitwidth := 64;
+ s := 2^495;
+ c := [(1, 31)];
+ carry_chains := Some [seq 0 (pred 10); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/Synthesis.v b/src/Specific/solinas64_2e495m31_10limbs/Synthesis.v
new file mode 100644
index 000000000..76cae2c84
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/compiler.sh b/src/Specific/solinas64_2e495m31_10limbs/compiler.sh
new file mode 100755
index 000000000..ecd930b9c
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49,50,49,50,49,50,49}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas64_2e495m31_10limbs/compilerxx.sh b/src/Specific/solinas64_2e495m31_10limbs/compilerxx.sh
new file mode 100755
index 000000000..396ae61aa
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{50,49,50,49,50,49,50,49,50,49}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe1}' -Dmodulus_bytes_val='62' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<495) - 31' "$@"
diff --git a/src/Specific/solinas64_2e495m31_10limbs/feadd.v b/src/Specific/solinas64_2e495m31_10limbs/feadd.v
new file mode 100644
index 000000000..d82fed090
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..6240ab7e7
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/femul.v b/src/Specific/solinas64_2e495m31_10limbs/femul.v
new file mode 100644
index 000000000..a4b1e4fd6
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.v b/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.v
new file mode 100644
index 000000000..6644101bd
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesquare.v b/src/Specific/solinas64_2e495m31_10limbs/fesquare.v
new file mode 100644
index 000000000..4f882314c
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..595ad2434
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesub.v b/src/Specific/solinas64_2e495m31_10limbs/fesub.v
new file mode 100644
index 000000000..198ad7aa3
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..c08f8a7bd
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/freeze.v b/src/Specific/solinas64_2e495m31_10limbs/freeze.v
new file mode 100644
index 000000000..2a437366e
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..ae9058b0a
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e495m31_10limbs/py_interpreter.sh b/src/Specific/solinas64_2e495m31_10limbs/py_interpreter.sh
new file mode 100755
index 000000000..a4635fe15
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_10limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**495 - 31' -Dmodulus_bytes='49.5' -Da24='121665'
diff --git a/src/Specific/solinas64_2e495m31/CurveParameters.v b/src/Specific/solinas64_2e495m31_9limbs/CurveParameters.v
index 57b353b9f..57b353b9f 100644
--- a/src/Specific/solinas64_2e495m31/CurveParameters.v
+++ b/src/Specific/solinas64_2e495m31_9limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e495m31_9limbs/Synthesis.v b/src/Specific/solinas64_2e495m31_9limbs/Synthesis.v
new file mode 100644
index 000000000..2cb638122
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e495m31/compiler.sh b/src/Specific/solinas64_2e495m31_9limbs/compiler.sh
index d2e0d1b93..d2e0d1b93 100755
--- a/src/Specific/solinas64_2e495m31/compiler.sh
+++ b/src/Specific/solinas64_2e495m31_9limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e495m31/compilerxx.sh b/src/Specific/solinas64_2e495m31_9limbs/compilerxx.sh
index ae2bf3761..ae2bf3761 100755
--- a/src/Specific/solinas64_2e495m31/compilerxx.sh
+++ b/src/Specific/solinas64_2e495m31_9limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e495m31_9limbs/feadd.v b/src/Specific/solinas64_2e495m31_9limbs/feadd.v
new file mode 100644
index 000000000..19455b564
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e495m31_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..054307e1b
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/femul.v b/src/Specific/solinas64_2e495m31_9limbs/femul.v
new file mode 100644
index 000000000..5e1e6299c
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/femulDisplay.v b/src/Specific/solinas64_2e495m31_9limbs/femulDisplay.v
new file mode 100644
index 000000000..ff93dc7a8
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/fesquare.v b/src/Specific/solinas64_2e495m31_9limbs/fesquare.v
new file mode 100644
index 000000000..aecb1f248
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e495m31_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..8bc28642a
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/fesub.v b/src/Specific/solinas64_2e495m31_9limbs/fesub.v
new file mode 100644
index 000000000..7e75278e0
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e495m31_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..6b9c912c2
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/freeze.v b/src/Specific/solinas64_2e495m31_9limbs/freeze.v
new file mode 100644
index 000000000..5391a4527
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e495m31_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e495m31_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..d21b19b41
--- /dev/null
+++ b/src/Specific/solinas64_2e495m31_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e495m31_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e495m31/py_interpreter.sh b/src/Specific/solinas64_2e495m31_9limbs/py_interpreter.sh
index 8e36f62b3..8e36f62b3 100755
--- a/src/Specific/solinas64_2e495m31/py_interpreter.sh
+++ b/src/Specific/solinas64_2e495m31_9limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v b/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v
deleted file mode 100644
index 551628047..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^510 - 290*2^496 - 1
-Base: 51
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 51;
- bitwidth := 64;
- s := 2^510;
- c := [(1, 1); (290, 2^496)];
- carry_chains := Some [[8; 9]; [9; 0; 1; 2; 3; 4; 5; 6; 7; 8]; [9; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v b/src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v
deleted file mode 100644
index 5d35f7753..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/compiler.sh b/src/Specific/solinas64_2e510m290x2e496m1/compiler.sh
deleted file mode 100755
index 06febc780..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/compilerxx.sh b/src/Specific/solinas64_2e510m290x2e496m1/compilerxx.sh
deleted file mode 100755
index 44fcf818c..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{51,51,51,51,51,51,51,51,51,51}' -Dmodulus_array='{0x3e,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<510) - 290*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/feadd.c b/src/Specific/solinas64_2e510m290x2e496m1/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/feadd.v b/src/Specific/solinas64_2e510m290x2e496m1/feadd.v
deleted file mode 100644
index 505b06532..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.log b/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.v
deleted file mode 100644
index 9712c85aa..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/femul.v b/src/Specific/solinas64_2e510m290x2e496m1/femul.v
deleted file mode 100644
index 92367751e..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v
deleted file mode 100644
index d3aedf6b9..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v b/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v
deleted file mode 100644
index 722483442..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v
deleted file mode 100644
index b4fcdc2f4..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesub.c b/src/Specific/solinas64_2e510m290x2e496m1/fesub.c
deleted file mode 100644
index d1e8a3630..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0xffffffffffffe + x5) - x23);
- out[1] = ((0xffffffffffffe + x7) - x25);
- out[2] = ((0xffffffffffffe + x9) - x27);
- out[3] = ((0xffffffffffffe + x11) - x29);
- out[4] = ((0xffffffffffffe + x13) - x31);
- out[5] = ((0xffffffffffffe + x15) - x33);
- out[6] = ((0xffffffffffffe + x17) - x35);
- out[7] = ((0xffffffffffffe + x19) - x37);
- out[8] = ((0xffffffffffffe + x21) - x39);
- out[9] = ((0xfb77ffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesub.v b/src/Specific/solinas64_2e510m290x2e496m1/fesub.v
deleted file mode 100644
index 10d35ce3e..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.log b/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.log
deleted file mode 100644
index 928123979..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xfb77ffffffffe + x20) - x38), ((0xffffffffffffe + x21) - x39), ((0xffffffffffffe + x19) - x37), ((0xffffffffffffe + x17) - x35), ((0xffffffffffffe + x15) - x33), ((0xffffffffffffe + x13) - x31), ((0xffffffffffffe + x11) - x29), ((0xffffffffffffe + x9) - x27), ((0xffffffffffffe + x7) - x25), ((0xffffffffffffe + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.v
deleted file mode 100644
index 83a823856..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/freeze.c b/src/Specific/solinas64_2e510m290x2e496m1/freeze.c
deleted file mode 100644
index c70e5f86a..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20; uint8_t x21 = _subborrow_u51(0x0, x2, 0x7ffffffffffff, &x20);
- { uint64_t x23; uint8_t x24 = _subborrow_u51(x21, x4, 0x7ffffffffffff, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u51(x24, x6, 0x7ffffffffffff, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u51(x27, x8, 0x7ffffffffffff, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u51(x30, x10, 0x7ffffffffffff, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u51(x33, x12, 0x7ffffffffffff, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u51(x36, x14, 0x7ffffffffffff, &x38);
- { uint64_t x41; uint8_t x42 = _subborrow_u51(x39, x16, 0x7ffffffffffff, &x41);
- { uint64_t x44; uint8_t x45 = _subborrow_u51(x42, x18, 0x7ffffffffffff, &x44);
- { uint64_t x47; uint8_t x48 = _subborrow_u51(x45, x17, 0x7dbbfffffffff, &x47);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0x7ffffffffffff);
- { uint64_t x52; uint8_t x53 = _addcarryx_u51(0x0, x20, x50, &x52);
- { uint64_t x54 = (x49 & 0x7ffffffffffff);
- { uint64_t x56; uint8_t x57 = _addcarryx_u51(x53, x23, x54, &x56);
- { uint64_t x58 = (x49 & 0x7ffffffffffff);
- { uint64_t x60; uint8_t x61 = _addcarryx_u51(x57, x26, x58, &x60);
- { uint64_t x62 = (x49 & 0x7ffffffffffff);
- { uint64_t x64; uint8_t x65 = _addcarryx_u51(x61, x29, x62, &x64);
- { uint64_t x66 = (x49 & 0x7ffffffffffff);
- { uint64_t x68; uint8_t x69 = _addcarryx_u51(x65, x32, x66, &x68);
- { uint64_t x70 = (x49 & 0x7ffffffffffff);
- { uint64_t x72; uint8_t x73 = _addcarryx_u51(x69, x35, x70, &x72);
- { uint64_t x74 = (x49 & 0x7ffffffffffff);
- { uint64_t x76; uint8_t x77 = _addcarryx_u51(x73, x38, x74, &x76);
- { uint64_t x78 = (x49 & 0x7ffffffffffff);
- { uint64_t x80; uint8_t x81 = _addcarryx_u51(x77, x41, x78, &x80);
- { uint64_t x82 = (x49 & 0x7ffffffffffff);
- { uint64_t x84; uint8_t x85 = _addcarryx_u51(x81, x44, x82, &x84);
- { uint64_t x86 = (x49 & 0x7dbbfffffffff);
- { uint64_t x88; uint8_t _ = _addcarryx_u51(x85, x47, x86, &x88);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/freeze.v b/src/Specific/solinas64_2e510m290x2e496m1/freeze.v
deleted file mode 100644
index 1647b8ed7..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.log b/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.log
deleted file mode 100644
index 311cabf02..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = subborrow_u51(0x0, x2, 0x7ffffffffffff);
- uint64_t x23, uint8_t x24 = subborrow_u51(x21, x4, 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = subborrow_u51(x24, x6, 0x7ffffffffffff);
- uint64_t x29, uint8_t x30 = subborrow_u51(x27, x8, 0x7ffffffffffff);
- uint64_t x32, uint8_t x33 = subborrow_u51(x30, x10, 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = subborrow_u51(x33, x12, 0x7ffffffffffff);
- uint64_t x38, uint8_t x39 = subborrow_u51(x36, x14, 0x7ffffffffffff);
- uint64_t x41, uint8_t x42 = subborrow_u51(x39, x16, 0x7ffffffffffff);
- uint64_t x44, uint8_t x45 = subborrow_u51(x42, x18, 0x7ffffffffffff);
- uint64_t x47, uint8_t x48 = subborrow_u51(x45, x17, 0x7dbbfffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0x7ffffffffffff);
- uint64_t x52, uint8_t x53 = addcarryx_u51(0x0, x20, x50);
- uint64_t x54 = (x49 & 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u51(x53, x23, x54);
- uint64_t x58 = (x49 & 0x7ffffffffffff);
- uint64_t x60, uint8_t x61 = addcarryx_u51(x57, x26, x58);
- uint64_t x62 = (x49 & 0x7ffffffffffff);
- uint64_t x64, uint8_t x65 = addcarryx_u51(x61, x29, x62);
- uint64_t x66 = (x49 & 0x7ffffffffffff);
- uint64_t x68, uint8_t x69 = addcarryx_u51(x65, x32, x66);
- uint64_t x70 = (x49 & 0x7ffffffffffff);
- uint64_t x72, uint8_t x73 = addcarryx_u51(x69, x35, x70);
- uint64_t x74 = (x49 & 0x7ffffffffffff);
- uint64_t x76, uint8_t x77 = addcarryx_u51(x73, x38, x74);
- uint64_t x78 = (x49 & 0x7ffffffffffff);
- uint64_t x80, uint8_t x81 = addcarryx_u51(x77, x41, x78);
- uint64_t x82 = (x49 & 0x7ffffffffffff);
- uint64_t x84, uint8_t x85 = addcarryx_u51(x81, x44, x82);
- uint64_t x86 = (x49 & 0x7dbbfffffffff);
- uint64_t x88, uint8_t _ = addcarryx_u51(x85, x47, x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v b/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v
deleted file mode 100644
index 0aff0e282..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e510m290x2e496m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e510m290x2e496m1/py_interpreter.sh b/src/Specific/solinas64_2e510m290x2e496m1/py_interpreter.sh
deleted file mode 100755
index 52b89418d..000000000
--- a/src/Specific/solinas64_2e510m290x2e496m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**510 - 290*2**496 - 1' -Dmodulus_bytes='51' -Da24='121665'
diff --git a/src/Specific/solinas64_2e511m187/Synthesis.v b/src/Specific/solinas64_2e511m187/Synthesis.v
deleted file mode 100644
index 0cb265b62..000000000
--- a/src/Specific/solinas64_2e511m187/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e511m187.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m187/feadd.c b/src/Specific/solinas64_2e511m187/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e511m187/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m187/feadd.v b/src/Specific/solinas64_2e511m187/feadd.v
deleted file mode 100644
index 2f2b66bbc..000000000
--- a/src/Specific/solinas64_2e511m187/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m187/feaddDisplay.log b/src/Specific/solinas64_2e511m187/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e511m187/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187/feaddDisplay.v b/src/Specific/solinas64_2e511m187/feaddDisplay.v
deleted file mode 100644
index cd0b43034..000000000
--- a/src/Specific/solinas64_2e511m187/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m187.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e511m187/femul.c b/src/Specific/solinas64_2e511m187/femul.c
deleted file mode 100644
index 73bb21edb..000000000
--- a/src/Specific/solinas64_2e511m187/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- { uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0xbb * ((uint128_t)x20 * x38)));
- { uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0xbb * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- { uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0xbb * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0xbb * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
- { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0xbb * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
- { uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0xbb * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0xbb * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0xbb * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- { uint128_t x49 = (((uint128_t)x5 * x23) + (0xbb * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- { uint128_t x50 = (x49 >> 0x34);
- { uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- { uint128_t x52 = (x50 + x48);
- { uint128_t x53 = (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x47);
- { uint128_t x56 = (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x56 + x46);
- { uint128_t x59 = (x58 >> 0x33);
- { uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- { uint128_t x61 = (x59 + x45);
- { uint128_t x62 = (x61 >> 0x33);
- { uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- { uint128_t x64 = (x62 + x44);
- { uint128_t x65 = (x64 >> 0x33);
- { uint64_t x66 = ((uint64_t)x64 & 0x7ffffffffffff);
- { uint128_t x67 = (x65 + x43);
- { uint64_t x68 = (uint64_t) (x67 >> 0x33);
- { uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- { uint128_t x70 = (x68 + x42);
- { uint64_t x71 = (uint64_t) (x70 >> 0x33);
- { uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- { uint128_t x73 = (x71 + x41);
- { uint64_t x74 = (uint64_t) (x73 >> 0x33);
- { uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- { uint128_t x76 = (x74 + x40);
- { uint64_t x77 = (uint64_t) (x76 >> 0x33);
- { uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- { uint128_t x79 = (x51 + ((uint128_t)0xbb * x77));
- { uint64_t x80 = (uint64_t) (x79 >> 0x34);
- { uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x33);
- { uint64_t x84 = (x82 & 0x7ffffffffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m187/femul.v b/src/Specific/solinas64_2e511m187/femul.v
deleted file mode 100644
index dfb8fe169..000000000
--- a/src/Specific/solinas64_2e511m187/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m187/femulDisplay.log b/src/Specific/solinas64_2e511m187/femulDisplay.log
deleted file mode 100644
index 4b8437e91..000000000
--- a/src/Specific/solinas64_2e511m187/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0xbb * ((uint128_t)x20 * x38)));
- uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0xbb * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0xbb * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0xbb * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
- uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0xbb * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
- uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0xbb * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0xbb * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0xbb * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- uint128_t x49 = (((uint128_t)x5 * x23) + (0xbb * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- uint128_t x50 = (x49 >> 0x34);
- uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- uint128_t x52 = (x50 + x48);
- uint128_t x53 = (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x47);
- uint128_t x56 = (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x56 + x46);
- uint128_t x59 = (x58 >> 0x33);
- uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- uint128_t x61 = (x59 + x45);
- uint128_t x62 = (x61 >> 0x33);
- uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- uint128_t x64 = (x62 + x44);
- uint128_t x65 = (x64 >> 0x33);
- uint64_t x66 = ((uint64_t)x64 & 0x7ffffffffffff);
- uint128_t x67 = (x65 + x43);
- uint64_t x68 = (uint64_t) (x67 >> 0x33);
- uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- uint128_t x70 = (x68 + x42);
- uint64_t x71 = (uint64_t) (x70 >> 0x33);
- uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- uint128_t x73 = (x71 + x41);
- uint64_t x74 = (uint64_t) (x73 >> 0x33);
- uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- uint128_t x76 = (x74 + x40);
- uint64_t x77 = (uint64_t) (x76 >> 0x33);
- uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- uint128_t x79 = (x51 + ((uint128_t)0xbb * x77));
- uint64_t x80 = (uint64_t) (x79 >> 0x34);
- uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x33);
- uint64_t x84 = (x82 & 0x7ffffffffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187/femulDisplay.v b/src/Specific/solinas64_2e511m187/femulDisplay.v
deleted file mode 100644
index f5f0e9102..000000000
--- a/src/Specific/solinas64_2e511m187/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m187.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e511m187/fesquare.c b/src/Specific/solinas64_2e511m187/fesquare.c
deleted file mode 100644
index 03d4677cd..000000000
--- a/src/Specific/solinas64_2e511m187/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0xbb * ((uint128_t)x17 * x17)));
- { uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0xbb * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- { uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0xbb * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0xbb * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
- { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0xbb * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbb * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbb * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbb * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- { uint128_t x28 = (((uint128_t)x2 * x2) + (0xbb * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- { uint128_t x29 = (x28 >> 0x34);
- { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- { uint128_t x31 = (x29 + x27);
- { uint128_t x32 = (x31 >> 0x33);
- { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- { uint128_t x34 = (x32 + x26);
- { uint128_t x35 = (x34 >> 0x33);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- { uint128_t x37 = (x35 + x25);
- { uint128_t x38 = (x37 >> 0x33);
- { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- { uint128_t x40 = (x38 + x24);
- { uint128_t x41 = (x40 >> 0x33);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- { uint128_t x43 = (x41 + x23);
- { uint128_t x44 = (x43 >> 0x33);
- { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffff);
- { uint128_t x46 = (x44 + x22);
- { uint64_t x47 = (uint64_t) (x46 >> 0x33);
- { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- { uint128_t x49 = (x47 + x21);
- { uint64_t x50 = (uint64_t) (x49 >> 0x33);
- { uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- { uint128_t x52 = (x50 + x20);
- { uint64_t x53 = (uint64_t) (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x19);
- { uint64_t x56 = (uint64_t) (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x30 + ((uint128_t)0xbb * x56));
- { uint64_t x59 = (uint64_t) (x58 >> 0x34);
- { uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x33);
- { uint64_t x63 = (x61 & 0x7ffffffffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m187/fesquare.v b/src/Specific/solinas64_2e511m187/fesquare.v
deleted file mode 100644
index 6c44acf5a..000000000
--- a/src/Specific/solinas64_2e511m187/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m187/fesquareDisplay.log b/src/Specific/solinas64_2e511m187/fesquareDisplay.log
deleted file mode 100644
index 2abb714d0..000000000
--- a/src/Specific/solinas64_2e511m187/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0xbb * ((uint128_t)x17 * x17)));
- uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0xbb * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0xbb * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0xbb * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
- uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0xbb * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbb * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xbb * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbb * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- uint128_t x28 = (((uint128_t)x2 * x2) + (0xbb * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- uint128_t x29 = (x28 >> 0x34);
- uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- uint128_t x31 = (x29 + x27);
- uint128_t x32 = (x31 >> 0x33);
- uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- uint128_t x34 = (x32 + x26);
- uint128_t x35 = (x34 >> 0x33);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- uint128_t x37 = (x35 + x25);
- uint128_t x38 = (x37 >> 0x33);
- uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- uint128_t x40 = (x38 + x24);
- uint128_t x41 = (x40 >> 0x33);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- uint128_t x43 = (x41 + x23);
- uint128_t x44 = (x43 >> 0x33);
- uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffff);
- uint128_t x46 = (x44 + x22);
- uint64_t x47 = (uint64_t) (x46 >> 0x33);
- uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- uint128_t x49 = (x47 + x21);
- uint64_t x50 = (uint64_t) (x49 >> 0x33);
- uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- uint128_t x52 = (x50 + x20);
- uint64_t x53 = (uint64_t) (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x19);
- uint64_t x56 = (uint64_t) (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x30 + ((uint128_t)0xbb * x56));
- uint64_t x59 = (uint64_t) (x58 >> 0x34);
- uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x33);
- uint64_t x63 = (x61 & 0x7ffffffffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187/fesquareDisplay.v b/src/Specific/solinas64_2e511m187/fesquareDisplay.v
deleted file mode 100644
index 2e923aba3..000000000
--- a/src/Specific/solinas64_2e511m187/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m187.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e511m187/fesub.c b/src/Specific/solinas64_2e511m187/fesub.c
deleted file mode 100644
index f348c1776..000000000
--- a/src/Specific/solinas64_2e511m187/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0x1ffffffffffe8a + x5) - x23);
- out[1] = ((0xffffffffffffe + x7) - x25);
- out[2] = ((0xffffffffffffe + x9) - x27);
- out[3] = ((0xffffffffffffe + x11) - x29);
- out[4] = ((0xffffffffffffe + x13) - x31);
- out[5] = ((0xffffffffffffe + x15) - x33);
- out[6] = ((0xffffffffffffe + x17) - x35);
- out[7] = ((0xffffffffffffe + x19) - x37);
- out[8] = ((0xffffffffffffe + x21) - x39);
- out[9] = ((0xffffffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m187/fesub.v b/src/Specific/solinas64_2e511m187/fesub.v
deleted file mode 100644
index fc8693275..000000000
--- a/src/Specific/solinas64_2e511m187/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m187/fesubDisplay.log b/src/Specific/solinas64_2e511m187/fesubDisplay.log
deleted file mode 100644
index db1dc87a3..000000000
--- a/src/Specific/solinas64_2e511m187/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xffffffffffffe + x20) - x38), ((0xffffffffffffe + x21) - x39), ((0xffffffffffffe + x19) - x37), ((0xffffffffffffe + x17) - x35), ((0xffffffffffffe + x15) - x33), ((0xffffffffffffe + x13) - x31), ((0xffffffffffffe + x11) - x29), ((0xffffffffffffe + x9) - x27), ((0xffffffffffffe + x7) - x25), ((0x1ffffffffffe8a + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187/fesubDisplay.v b/src/Specific/solinas64_2e511m187/fesubDisplay.v
deleted file mode 100644
index 9aefe630c..000000000
--- a/src/Specific/solinas64_2e511m187/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m187.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e511m187/freeze.c b/src/Specific/solinas64_2e511m187/freeze.c
deleted file mode 100644
index 05758b2b3..000000000
--- a/src/Specific/solinas64_2e511m187/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff45);
- { uint64_t x23; uint8_t x24 = _subborrow_u51(x21, x4, 0x7ffffffffffff, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u51(x24, x6, 0x7ffffffffffff, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u51(x27, x8, 0x7ffffffffffff, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u51(x30, x10, 0x7ffffffffffff, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u51(x33, x12, 0x7ffffffffffff, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u51(x36, x14, 0x7ffffffffffff, &x38);
- { uint64_t x41; uint8_t x42 = _subborrow_u51(x39, x16, 0x7ffffffffffff, &x41);
- { uint64_t x44; uint8_t x45 = _subborrow_u51(x42, x18, 0x7ffffffffffff, &x44);
- { uint64_t x47; uint8_t x48 = _subborrow_u51(x45, x17, 0x7ffffffffffff, &x47);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0xfffffffffff45);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0x7ffffffffffff);
- { uint64_t x56; uint8_t x57 = _addcarryx_u51(x53, x23, x54, &x56);
- { uint64_t x58 = (x49 & 0x7ffffffffffff);
- { uint64_t x60; uint8_t x61 = _addcarryx_u51(x57, x26, x58, &x60);
- { uint64_t x62 = (x49 & 0x7ffffffffffff);
- { uint64_t x64; uint8_t x65 = _addcarryx_u51(x61, x29, x62, &x64);
- { uint64_t x66 = (x49 & 0x7ffffffffffff);
- { uint64_t x68; uint8_t x69 = _addcarryx_u51(x65, x32, x66, &x68);
- { uint64_t x70 = (x49 & 0x7ffffffffffff);
- { uint64_t x72; uint8_t x73 = _addcarryx_u51(x69, x35, x70, &x72);
- { uint64_t x74 = (x49 & 0x7ffffffffffff);
- { uint64_t x76; uint8_t x77 = _addcarryx_u51(x73, x38, x74, &x76);
- { uint64_t x78 = (x49 & 0x7ffffffffffff);
- { uint64_t x80; uint8_t x81 = _addcarryx_u51(x77, x41, x78, &x80);
- { uint64_t x82 = (x49 & 0x7ffffffffffff);
- { uint64_t x84; uint8_t x85 = _addcarryx_u51(x81, x44, x82, &x84);
- { uint64_t x86 = (x49 & 0x7ffffffffffff);
- { uint64_t x88; uint8_t _ = _addcarryx_u51(x85, x47, x86, &x88);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m187/freeze.v b/src/Specific/solinas64_2e511m187/freeze.v
deleted file mode 100644
index d402a482f..000000000
--- a/src/Specific/solinas64_2e511m187/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m187.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m187/freezeDisplay.log b/src/Specific/solinas64_2e511m187/freezeDisplay.log
deleted file mode 100644
index 1dd7de935..000000000
--- a/src/Specific/solinas64_2e511m187/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff45);
- uint64_t x23, uint8_t x24 = subborrow_u51(x21, x4, 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = subborrow_u51(x24, x6, 0x7ffffffffffff);
- uint64_t x29, uint8_t x30 = subborrow_u51(x27, x8, 0x7ffffffffffff);
- uint64_t x32, uint8_t x33 = subborrow_u51(x30, x10, 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = subborrow_u51(x33, x12, 0x7ffffffffffff);
- uint64_t x38, uint8_t x39 = subborrow_u51(x36, x14, 0x7ffffffffffff);
- uint64_t x41, uint8_t x42 = subborrow_u51(x39, x16, 0x7ffffffffffff);
- uint64_t x44, uint8_t x45 = subborrow_u51(x42, x18, 0x7ffffffffffff);
- uint64_t x47, uint8_t x48 = subborrow_u51(x45, x17, 0x7ffffffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xfffffffffff45);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u51(x53, x23, x54);
- uint64_t x58 = (x49 & 0x7ffffffffffff);
- uint64_t x60, uint8_t x61 = addcarryx_u51(x57, x26, x58);
- uint64_t x62 = (x49 & 0x7ffffffffffff);
- uint64_t x64, uint8_t x65 = addcarryx_u51(x61, x29, x62);
- uint64_t x66 = (x49 & 0x7ffffffffffff);
- uint64_t x68, uint8_t x69 = addcarryx_u51(x65, x32, x66);
- uint64_t x70 = (x49 & 0x7ffffffffffff);
- uint64_t x72, uint8_t x73 = addcarryx_u51(x69, x35, x70);
- uint64_t x74 = (x49 & 0x7ffffffffffff);
- uint64_t x76, uint8_t x77 = addcarryx_u51(x73, x38, x74);
- uint64_t x78 = (x49 & 0x7ffffffffffff);
- uint64_t x80, uint8_t x81 = addcarryx_u51(x77, x41, x78);
- uint64_t x82 = (x49 & 0x7ffffffffffff);
- uint64_t x84, uint8_t x85 = addcarryx_u51(x81, x44, x82);
- uint64_t x86 = (x49 & 0x7ffffffffffff);
- uint64_t x88, uint8_t _ = addcarryx_u51(x85, x47, x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m187/freezeDisplay.v b/src/Specific/solinas64_2e511m187/freezeDisplay.v
deleted file mode 100644
index 3343de172..000000000
--- a/src/Specific/solinas64_2e511m187/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m187.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e511m187/CurveParameters.v b/src/Specific/solinas64_2e511m187_10limbs/CurveParameters.v
index edae92ba4..edae92ba4 100644
--- a/src/Specific/solinas64_2e511m187/CurveParameters.v
+++ b/src/Specific/solinas64_2e511m187_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e511m187_10limbs/Synthesis.v b/src/Specific/solinas64_2e511m187_10limbs/Synthesis.v
new file mode 100644
index 000000000..b83885160
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m187/compiler.sh b/src/Specific/solinas64_2e511m187_10limbs/compiler.sh
index bffff3624..bffff3624 100755
--- a/src/Specific/solinas64_2e511m187/compiler.sh
+++ b/src/Specific/solinas64_2e511m187_10limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e511m187/compilerxx.sh b/src/Specific/solinas64_2e511m187_10limbs/compilerxx.sh
index 07a5c3281..07a5c3281 100755
--- a/src/Specific/solinas64_2e511m187/compilerxx.sh
+++ b/src/Specific/solinas64_2e511m187_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e511m187_10limbs/feadd.v b/src/Specific/solinas64_2e511m187_10limbs/feadd.v
new file mode 100644
index 000000000..98f693777
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e511m187_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..280b2f178
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/femul.v b/src/Specific/solinas64_2e511m187_10limbs/femul.v
new file mode 100644
index 000000000..d197a30c3
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/femulDisplay.v b/src/Specific/solinas64_2e511m187_10limbs/femulDisplay.v
new file mode 100644
index 000000000..5b5127c3b
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/fesquare.v b/src/Specific/solinas64_2e511m187_10limbs/fesquare.v
new file mode 100644
index 000000000..01e1b7b8e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e511m187_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..82505c6f9
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/fesub.v b/src/Specific/solinas64_2e511m187_10limbs/fesub.v
new file mode 100644
index 000000000..ef4cf346a
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e511m187_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..d6a081ac2
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/freeze.v b/src/Specific/solinas64_2e511m187_10limbs/freeze.v
new file mode 100644
index 000000000..40d6a09e6
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m187_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e511m187_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..02df3b1c5
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e511m187/py_interpreter.sh b/src/Specific/solinas64_2e511m187_10limbs/py_interpreter.sh
index 92089121f..92089121f 100755
--- a/src/Specific/solinas64_2e511m187/py_interpreter.sh
+++ b/src/Specific/solinas64_2e511m187_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e511m187_11limbs/CurveParameters.v b/src/Specific/solinas64_2e511m187_11limbs/CurveParameters.v
new file mode 100644
index 000000000..6dc55a188
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 187
+Base: 46 + 5/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 46 + 5/11;
+ bitwidth := 64;
+ s := 2^511;
+ c := [(1, 187)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/Synthesis.v b/src/Specific/solinas64_2e511m187_11limbs/Synthesis.v
new file mode 100644
index 000000000..9d7c498c0
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/compiler.sh b/src/Specific/solinas64_2e511m187_11limbs/compiler.sh
new file mode 100755
index 000000000..19102d5a4
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas64_2e511m187_11limbs/compilerxx.sh b/src/Specific/solinas64_2e511m187_11limbs/compilerxx.sh
new file mode 100755
index 000000000..460218082
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 187' "$@"
diff --git a/src/Specific/solinas64_2e511m187_11limbs/feadd.v b/src/Specific/solinas64_2e511m187_11limbs/feadd.v
new file mode 100644
index 000000000..b3589c830
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.v b/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..19f591de4
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/femul.v b/src/Specific/solinas64_2e511m187_11limbs/femul.v
new file mode 100644
index 000000000..4cf49002c
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.v b/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.v
new file mode 100644
index 000000000..08e880925
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesquare.v b/src/Specific/solinas64_2e511m187_11limbs/fesquare.v
new file mode 100644
index 000000000..10b86b68e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.v b/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..b810b71c2
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesub.v b/src/Specific/solinas64_2e511m187_11limbs/fesub.v
new file mode 100644
index 000000000..d87c26a5a
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.v b/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..871a713dc
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/freeze.v b/src/Specific/solinas64_2e511m187_11limbs/freeze.v
new file mode 100644
index 000000000..63940d772
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.v b/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..0549dedc2
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m187_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e511m187_11limbs/py_interpreter.sh b/src/Specific/solinas64_2e511m187_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..462321e0b
--- /dev/null
+++ b/src/Specific/solinas64_2e511m187_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 187' -Dmodulus_bytes='46 + 5/11' -Da24='121665'
diff --git a/src/Specific/solinas64_2e511m481/Synthesis.v b/src/Specific/solinas64_2e511m481/Synthesis.v
deleted file mode 100644
index b79a3e9a4..000000000
--- a/src/Specific/solinas64_2e511m481/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e511m481.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m481/feadd.c b/src/Specific/solinas64_2e511m481/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e511m481/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m481/feadd.v b/src/Specific/solinas64_2e511m481/feadd.v
deleted file mode 100644
index 97a17c159..000000000
--- a/src/Specific/solinas64_2e511m481/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m481/feaddDisplay.log b/src/Specific/solinas64_2e511m481/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e511m481/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481/feaddDisplay.v b/src/Specific/solinas64_2e511m481/feaddDisplay.v
deleted file mode 100644
index 23587483a..000000000
--- a/src/Specific/solinas64_2e511m481/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m481.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e511m481/femul.c b/src/Specific/solinas64_2e511m481/femul.c
deleted file mode 100644
index 2f40750f5..000000000
--- a/src/Specific/solinas64_2e511m481/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- { uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x1e1 * ((uint128_t)x20 * x38)));
- { uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x1e1 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- { uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0x1e1 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x1e1 * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
- { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x1e1 * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
- { uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x1e1 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x1e1 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x1e1 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- { uint128_t x49 = (((uint128_t)x5 * x23) + (0x1e1 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- { uint128_t x50 = (x49 >> 0x34);
- { uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- { uint128_t x52 = (x50 + x48);
- { uint128_t x53 = (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x47);
- { uint128_t x56 = (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x56 + x46);
- { uint128_t x59 = (x58 >> 0x33);
- { uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- { uint128_t x61 = (x59 + x45);
- { uint128_t x62 = (x61 >> 0x33);
- { uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- { uint128_t x64 = (x62 + x44);
- { uint128_t x65 = (x64 >> 0x33);
- { uint64_t x66 = ((uint64_t)x64 & 0x7ffffffffffff);
- { uint128_t x67 = (x65 + x43);
- { uint128_t x68 = (x67 >> 0x33);
- { uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- { uint128_t x70 = (x68 + x42);
- { uint128_t x71 = (x70 >> 0x33);
- { uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- { uint128_t x73 = (x71 + x41);
- { uint64_t x74 = (uint64_t) (x73 >> 0x33);
- { uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- { uint128_t x76 = (x74 + x40);
- { uint64_t x77 = (uint64_t) (x76 >> 0x33);
- { uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- { uint128_t x79 = (x51 + ((uint128_t)0x1e1 * x77));
- { uint64_t x80 = (uint64_t) (x79 >> 0x34);
- { uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x33);
- { uint64_t x84 = (x82 & 0x7ffffffffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m481/femul.v b/src/Specific/solinas64_2e511m481/femul.v
deleted file mode 100644
index cfbfd0abe..000000000
--- a/src/Specific/solinas64_2e511m481/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m481/femulDisplay.log b/src/Specific/solinas64_2e511m481/femulDisplay.log
deleted file mode 100644
index 26195004d..000000000
--- a/src/Specific/solinas64_2e511m481/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x1e1 * ((uint128_t)x20 * x38)));
- uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x1e1 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (0x1e1 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x1e1 * (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35))))));
- uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x1e1 * (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33)))))));
- uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x1e1 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x1e1 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x1e1 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- uint128_t x49 = (((uint128_t)x5 * x23) + (0x1e1 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- uint128_t x50 = (x49 >> 0x34);
- uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- uint128_t x52 = (x50 + x48);
- uint128_t x53 = (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x47);
- uint128_t x56 = (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x56 + x46);
- uint128_t x59 = (x58 >> 0x33);
- uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- uint128_t x61 = (x59 + x45);
- uint128_t x62 = (x61 >> 0x33);
- uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- uint128_t x64 = (x62 + x44);
- uint128_t x65 = (x64 >> 0x33);
- uint64_t x66 = ((uint64_t)x64 & 0x7ffffffffffff);
- uint128_t x67 = (x65 + x43);
- uint128_t x68 = (x67 >> 0x33);
- uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- uint128_t x70 = (x68 + x42);
- uint128_t x71 = (x70 >> 0x33);
- uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- uint128_t x73 = (x71 + x41);
- uint64_t x74 = (uint64_t) (x73 >> 0x33);
- uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- uint128_t x76 = (x74 + x40);
- uint64_t x77 = (uint64_t) (x76 >> 0x33);
- uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- uint128_t x79 = (x51 + ((uint128_t)0x1e1 * x77));
- uint64_t x80 = (uint64_t) (x79 >> 0x34);
- uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x33);
- uint64_t x84 = (x82 & 0x7ffffffffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481/femulDisplay.v b/src/Specific/solinas64_2e511m481/femulDisplay.v
deleted file mode 100644
index 3d81e8c41..000000000
--- a/src/Specific/solinas64_2e511m481/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m481.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e511m481/fesquare.c b/src/Specific/solinas64_2e511m481/fesquare.c
deleted file mode 100644
index 973d0ba84..000000000
--- a/src/Specific/solinas64_2e511m481/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1e1 * ((uint128_t)x17 * x17)));
- { uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x1e1 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- { uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1e1 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x1e1 * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
- { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1e1 * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x1e1 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1e1 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1e1 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- { uint128_t x28 = (((uint128_t)x2 * x2) + (0x1e1 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- { uint128_t x29 = (x28 >> 0x34);
- { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- { uint128_t x31 = (x29 + x27);
- { uint128_t x32 = (x31 >> 0x33);
- { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- { uint128_t x34 = (x32 + x26);
- { uint128_t x35 = (x34 >> 0x33);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- { uint128_t x37 = (x35 + x25);
- { uint128_t x38 = (x37 >> 0x33);
- { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- { uint128_t x40 = (x38 + x24);
- { uint128_t x41 = (x40 >> 0x33);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- { uint128_t x43 = (x41 + x23);
- { uint128_t x44 = (x43 >> 0x33);
- { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffff);
- { uint128_t x46 = (x44 + x22);
- { uint128_t x47 = (x46 >> 0x33);
- { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- { uint128_t x49 = (x47 + x21);
- { uint128_t x50 = (x49 >> 0x33);
- { uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- { uint128_t x52 = (x50 + x20);
- { uint64_t x53 = (uint64_t) (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x19);
- { uint64_t x56 = (uint64_t) (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x30 + ((uint128_t)0x1e1 * x56));
- { uint64_t x59 = (uint64_t) (x58 >> 0x34);
- { uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x33);
- { uint64_t x63 = (x61 & 0x7ffffffffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m481/fesquare.v b/src/Specific/solinas64_2e511m481/fesquare.v
deleted file mode 100644
index cd56965df..000000000
--- a/src/Specific/solinas64_2e511m481/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m481/fesquareDisplay.log b/src/Specific/solinas64_2e511m481/fesquareDisplay.log
deleted file mode 100644
index 25e7c49fd..000000000
--- a/src/Specific/solinas64_2e511m481/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x1e1 * ((uint128_t)x17 * x17)));
- uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x1e1 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (0x1e1 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x1e1 * (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14))))));
- uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x1e1 * (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12)))))));
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x1e1 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x1e1 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x1e1 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- uint128_t x28 = (((uint128_t)x2 * x2) + (0x1e1 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- uint128_t x29 = (x28 >> 0x34);
- uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- uint128_t x31 = (x29 + x27);
- uint128_t x32 = (x31 >> 0x33);
- uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- uint128_t x34 = (x32 + x26);
- uint128_t x35 = (x34 >> 0x33);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- uint128_t x37 = (x35 + x25);
- uint128_t x38 = (x37 >> 0x33);
- uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- uint128_t x40 = (x38 + x24);
- uint128_t x41 = (x40 >> 0x33);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- uint128_t x43 = (x41 + x23);
- uint128_t x44 = (x43 >> 0x33);
- uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffff);
- uint128_t x46 = (x44 + x22);
- uint128_t x47 = (x46 >> 0x33);
- uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- uint128_t x49 = (x47 + x21);
- uint128_t x50 = (x49 >> 0x33);
- uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- uint128_t x52 = (x50 + x20);
- uint64_t x53 = (uint64_t) (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x19);
- uint64_t x56 = (uint64_t) (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x30 + ((uint128_t)0x1e1 * x56));
- uint64_t x59 = (uint64_t) (x58 >> 0x34);
- uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x33);
- uint64_t x63 = (x61 & 0x7ffffffffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481/fesquareDisplay.v b/src/Specific/solinas64_2e511m481/fesquareDisplay.v
deleted file mode 100644
index 5ed3a2dc9..000000000
--- a/src/Specific/solinas64_2e511m481/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m481.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e511m481/fesub.c b/src/Specific/solinas64_2e511m481/fesub.c
deleted file mode 100644
index a7a7c08c9..000000000
--- a/src/Specific/solinas64_2e511m481/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0x1ffffffffffc3e + x5) - x23);
- out[1] = ((0xffffffffffffe + x7) - x25);
- out[2] = ((0xffffffffffffe + x9) - x27);
- out[3] = ((0xffffffffffffe + x11) - x29);
- out[4] = ((0xffffffffffffe + x13) - x31);
- out[5] = ((0xffffffffffffe + x15) - x33);
- out[6] = ((0xffffffffffffe + x17) - x35);
- out[7] = ((0xffffffffffffe + x19) - x37);
- out[8] = ((0xffffffffffffe + x21) - x39);
- out[9] = ((0xffffffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m481/fesub.v b/src/Specific/solinas64_2e511m481/fesub.v
deleted file mode 100644
index 2ed1c0860..000000000
--- a/src/Specific/solinas64_2e511m481/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m481/fesubDisplay.log b/src/Specific/solinas64_2e511m481/fesubDisplay.log
deleted file mode 100644
index 993230713..000000000
--- a/src/Specific/solinas64_2e511m481/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xffffffffffffe + x20) - x38), ((0xffffffffffffe + x21) - x39), ((0xffffffffffffe + x19) - x37), ((0xffffffffffffe + x17) - x35), ((0xffffffffffffe + x15) - x33), ((0xffffffffffffe + x13) - x31), ((0xffffffffffffe + x11) - x29), ((0xffffffffffffe + x9) - x27), ((0xffffffffffffe + x7) - x25), ((0x1ffffffffffc3e + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481/fesubDisplay.v b/src/Specific/solinas64_2e511m481/fesubDisplay.v
deleted file mode 100644
index a710caf19..000000000
--- a/src/Specific/solinas64_2e511m481/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m481.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e511m481/freeze.c b/src/Specific/solinas64_2e511m481/freeze.c
deleted file mode 100644
index 63f51d9d3..000000000
--- a/src/Specific/solinas64_2e511m481/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffe1f);
- { uint64_t x23; uint8_t x24 = _subborrow_u51(x21, x4, 0x7ffffffffffff, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u51(x24, x6, 0x7ffffffffffff, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u51(x27, x8, 0x7ffffffffffff, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u51(x30, x10, 0x7ffffffffffff, &x32);
- { uint64_t x35; uint8_t x36 = _subborrow_u51(x33, x12, 0x7ffffffffffff, &x35);
- { uint64_t x38; uint8_t x39 = _subborrow_u51(x36, x14, 0x7ffffffffffff, &x38);
- { uint64_t x41; uint8_t x42 = _subborrow_u51(x39, x16, 0x7ffffffffffff, &x41);
- { uint64_t x44; uint8_t x45 = _subborrow_u51(x42, x18, 0x7ffffffffffff, &x44);
- { uint64_t x47; uint8_t x48 = _subborrow_u51(x45, x17, 0x7ffffffffffff, &x47);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0xffffffffffe1f);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0x7ffffffffffff);
- { uint64_t x56; uint8_t x57 = _addcarryx_u51(x53, x23, x54, &x56);
- { uint64_t x58 = (x49 & 0x7ffffffffffff);
- { uint64_t x60; uint8_t x61 = _addcarryx_u51(x57, x26, x58, &x60);
- { uint64_t x62 = (x49 & 0x7ffffffffffff);
- { uint64_t x64; uint8_t x65 = _addcarryx_u51(x61, x29, x62, &x64);
- { uint64_t x66 = (x49 & 0x7ffffffffffff);
- { uint64_t x68; uint8_t x69 = _addcarryx_u51(x65, x32, x66, &x68);
- { uint64_t x70 = (x49 & 0x7ffffffffffff);
- { uint64_t x72; uint8_t x73 = _addcarryx_u51(x69, x35, x70, &x72);
- { uint64_t x74 = (x49 & 0x7ffffffffffff);
- { uint64_t x76; uint8_t x77 = _addcarryx_u51(x73, x38, x74, &x76);
- { uint64_t x78 = (x49 & 0x7ffffffffffff);
- { uint64_t x80; uint8_t x81 = _addcarryx_u51(x77, x41, x78, &x80);
- { uint64_t x82 = (x49 & 0x7ffffffffffff);
- { uint64_t x84; uint8_t x85 = _addcarryx_u51(x81, x44, x82, &x84);
- { uint64_t x86 = (x49 & 0x7ffffffffffff);
- { uint64_t x88; uint8_t _ = _addcarryx_u51(x85, x47, x86, &x88);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e511m481/freeze.v b/src/Specific/solinas64_2e511m481/freeze.v
deleted file mode 100644
index 2d12d5038..000000000
--- a/src/Specific/solinas64_2e511m481/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e511m481.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m481/freezeDisplay.log b/src/Specific/solinas64_2e511m481/freezeDisplay.log
deleted file mode 100644
index 07b785068..000000000
--- a/src/Specific/solinas64_2e511m481/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffe1f);
- uint64_t x23, uint8_t x24 = subborrow_u51(x21, x4, 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = subborrow_u51(x24, x6, 0x7ffffffffffff);
- uint64_t x29, uint8_t x30 = subborrow_u51(x27, x8, 0x7ffffffffffff);
- uint64_t x32, uint8_t x33 = subborrow_u51(x30, x10, 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = subborrow_u51(x33, x12, 0x7ffffffffffff);
- uint64_t x38, uint8_t x39 = subborrow_u51(x36, x14, 0x7ffffffffffff);
- uint64_t x41, uint8_t x42 = subborrow_u51(x39, x16, 0x7ffffffffffff);
- uint64_t x44, uint8_t x45 = subborrow_u51(x42, x18, 0x7ffffffffffff);
- uint64_t x47, uint8_t x48 = subborrow_u51(x45, x17, 0x7ffffffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffe1f);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u51(x53, x23, x54);
- uint64_t x58 = (x49 & 0x7ffffffffffff);
- uint64_t x60, uint8_t x61 = addcarryx_u51(x57, x26, x58);
- uint64_t x62 = (x49 & 0x7ffffffffffff);
- uint64_t x64, uint8_t x65 = addcarryx_u51(x61, x29, x62);
- uint64_t x66 = (x49 & 0x7ffffffffffff);
- uint64_t x68, uint8_t x69 = addcarryx_u51(x65, x32, x66);
- uint64_t x70 = (x49 & 0x7ffffffffffff);
- uint64_t x72, uint8_t x73 = addcarryx_u51(x69, x35, x70);
- uint64_t x74 = (x49 & 0x7ffffffffffff);
- uint64_t x76, uint8_t x77 = addcarryx_u51(x73, x38, x74);
- uint64_t x78 = (x49 & 0x7ffffffffffff);
- uint64_t x80, uint8_t x81 = addcarryx_u51(x77, x41, x78);
- uint64_t x82 = (x49 & 0x7ffffffffffff);
- uint64_t x84, uint8_t x85 = addcarryx_u51(x81, x44, x82);
- uint64_t x86 = (x49 & 0x7ffffffffffff);
- uint64_t x88, uint8_t _ = addcarryx_u51(x85, x47, x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e511m481/freezeDisplay.v b/src/Specific/solinas64_2e511m481/freezeDisplay.v
deleted file mode 100644
index b1ea33231..000000000
--- a/src/Specific/solinas64_2e511m481/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e511m481.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e511m481/CurveParameters.v b/src/Specific/solinas64_2e511m481_10limbs/CurveParameters.v
index 5bdb984cf..5bdb984cf 100644
--- a/src/Specific/solinas64_2e511m481/CurveParameters.v
+++ b/src/Specific/solinas64_2e511m481_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e511m481_10limbs/Synthesis.v b/src/Specific/solinas64_2e511m481_10limbs/Synthesis.v
new file mode 100644
index 000000000..79bf2f6e3
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m481/compiler.sh b/src/Specific/solinas64_2e511m481_10limbs/compiler.sh
index 3a3b16481..3a3b16481 100755
--- a/src/Specific/solinas64_2e511m481/compiler.sh
+++ b/src/Specific/solinas64_2e511m481_10limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e511m481/compilerxx.sh b/src/Specific/solinas64_2e511m481_10limbs/compilerxx.sh
index 3bf5054b0..3bf5054b0 100755
--- a/src/Specific/solinas64_2e511m481/compilerxx.sh
+++ b/src/Specific/solinas64_2e511m481_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e511m481_10limbs/feadd.v b/src/Specific/solinas64_2e511m481_10limbs/feadd.v
new file mode 100644
index 000000000..2fb2ef519
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e511m481_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..7bfebe52f
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/femul.v b/src/Specific/solinas64_2e511m481_10limbs/femul.v
new file mode 100644
index 000000000..b41453b82
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/femulDisplay.v b/src/Specific/solinas64_2e511m481_10limbs/femulDisplay.v
new file mode 100644
index 000000000..d5f200be8
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/fesquare.v b/src/Specific/solinas64_2e511m481_10limbs/fesquare.v
new file mode 100644
index 000000000..91a7fea1a
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e511m481_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..9a1a8600e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/fesub.v b/src/Specific/solinas64_2e511m481_10limbs/fesub.v
new file mode 100644
index 000000000..8fefa7a45
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e511m481_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..30da4214c
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/freeze.v b/src/Specific/solinas64_2e511m481_10limbs/freeze.v
new file mode 100644
index 000000000..fcf5b8d1e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m481_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e511m481_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..19230b1f4
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e511m481/py_interpreter.sh b/src/Specific/solinas64_2e511m481_10limbs/py_interpreter.sh
index 631695236..631695236 100755
--- a/src/Specific/solinas64_2e511m481/py_interpreter.sh
+++ b/src/Specific/solinas64_2e511m481_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e511m481_11limbs/CurveParameters.v b/src/Specific/solinas64_2e511m481_11limbs/CurveParameters.v
new file mode 100644
index 000000000..66bd2ceff
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^511 - 481
+Base: 46 + 5/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 46 + 5/11;
+ bitwidth := 64;
+ s := 2^511;
+ c := [(1, 481)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/Synthesis.v b/src/Specific/solinas64_2e511m481_11limbs/Synthesis.v
new file mode 100644
index 000000000..a069f2a40
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/compiler.sh b/src/Specific/solinas64_2e511m481_11limbs/compiler.sh
new file mode 100755
index 000000000..93b87961b
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas64_2e511m481_11limbs/compilerxx.sh b/src/Specific/solinas64_2e511m481_11limbs/compilerxx.sh
new file mode 100755
index 000000000..b594c335e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,46,47,46,47,46,47,46,47,46,46}' -Dmodulus_array='{0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x1f}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<511) - 481' "$@"
diff --git a/src/Specific/solinas64_2e511m481_11limbs/feadd.v b/src/Specific/solinas64_2e511m481_11limbs/feadd.v
new file mode 100644
index 000000000..70ec18d9a
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.v b/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..573e034c1
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/femul.v b/src/Specific/solinas64_2e511m481_11limbs/femul.v
new file mode 100644
index 000000000..02db2a2a9
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.v b/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.v
new file mode 100644
index 000000000..37cf3e308
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesquare.v b/src/Specific/solinas64_2e511m481_11limbs/fesquare.v
new file mode 100644
index 000000000..878a6d3ef
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.v b/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..824a8b50e
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesub.v b/src/Specific/solinas64_2e511m481_11limbs/fesub.v
new file mode 100644
index 000000000..71a04b457
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.v b/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..f39afc31a
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/freeze.v b/src/Specific/solinas64_2e511m481_11limbs/freeze.v
new file mode 100644
index 000000000..7783c6b1d
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.v b/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..2f0d4f7ee
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e511m481_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e511m481_11limbs/py_interpreter.sh b/src/Specific/solinas64_2e511m481_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..32b9e0fe4
--- /dev/null
+++ b/src/Specific/solinas64_2e511m481_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**511 - 481' -Dmodulus_bytes='46 + 5/11' -Da24='121665'
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/CurveParameters.v b/src/Specific/solinas64_2e512m491x2e496m1/CurveParameters.v
deleted file mode 100644
index eaf5cb704..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/CurveParameters.v
+++ /dev/null
@@ -1,39 +0,0 @@
-Require Import Crypto.Specific.Framework.RawCurveParameters.
-Require Import Crypto.Util.LetIn.
-
-(***
-Modulus : 2^512 - 491*2^496 - 1
-Base: 51.2
-***)
-
-Definition curve : CurveParameters :=
- {|
- sz := 10%nat;
- base := 51 + 1/5;
- bitwidth := 64;
- s := 2^512;
- c := [(1, 1); (491, 2^496)];
- carry_chains := Some [[8; 9]; [9; 0; 1; 2; 3; 4; 5; 6; 7; 8]; [9; 0]]%nat;
-
- a24 := None;
- coef_div_modulus := Some 2%nat;
-
- goldilocks := None;
- karatsuba := None;
- montgomery := false;
- freeze := Some true;
- ladderstep := false;
-
- mul_code := None;
-
- square_code := None;
-
- upper_bound_of_exponent_loose := None;
- upper_bound_of_exponent_tight := None;
- allowable_bit_widths := None;
- freeze_extra_allowable_bit_widths := None;
- modinv_fuel := None
- |}.
-
-Ltac extra_prove_mul_eq _ := idtac.
-Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/Synthesis.v b/src/Specific/solinas64_2e512m491x2e496m1/Synthesis.v
deleted file mode 100644
index 85ebf1a50..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/compiler.sh b/src/Specific/solinas64_2e512m491x2e496m1/compiler.sh
deleted file mode 100755
index 9cd8b5be1..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/compiler.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,52,51,51,51,51}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/compilerxx.sh b/src/Specific/solinas64_2e512m491x2e496m1/compilerxx.sh
deleted file mode 100755
index 2a177018f..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/compilerxx.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{52,51,51,51,51,52,51,51,51,51}' -Dmodulus_array='{0xfe,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='10' -Dq_mpz='(1_mpz<<512) - 491*(1_mpz<<496) - 1' "$@"
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/feadd.c b/src/Specific/solinas64_2e512m491x2e496m1/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/feadd.v b/src/Specific/solinas64_2e512m491x2e496m1/feadd.v
deleted file mode 100644
index 531b8d7b7..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.log b/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.v b/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.v
deleted file mode 100644
index e33e419c7..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/femul.v b/src/Specific/solinas64_2e512m491x2e496m1/femul.v
deleted file mode 100644
index 6934fb40a..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/femulDisplay.v b/src/Specific/solinas64_2e512m491x2e496m1/femulDisplay.v
deleted file mode 100644
index fada7de8c..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesquare.v b/src/Specific/solinas64_2e512m491x2e496m1/fesquare.v
deleted file mode 100644
index 8476ca13d..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesquareDisplay.v b/src/Specific/solinas64_2e512m491x2e496m1/fesquareDisplay.v
deleted file mode 100644
index f6ba9ada0..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesub.c b/src/Specific/solinas64_2e512m491x2e496m1/fesub.c
deleted file mode 100644
index b697af821..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0x1ffffffffffffe + x5) - x23);
- out[1] = ((0xffffffffffffe + x7) - x25);
- out[2] = ((0xffffffffffffe + x9) - x27);
- out[3] = ((0xffffffffffffe + x11) - x29);
- out[4] = ((0xffffffffffffe + x13) - x31);
- out[5] = ((0x1ffffffffffffe + x15) - x33);
- out[6] = ((0xffffffffffffe + x17) - x35);
- out[7] = ((0xffffffffffffe + x19) - x37);
- out[8] = ((0xffffffffffffe + x21) - x39);
- out[9] = ((0xfe14ffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesub.v b/src/Specific/solinas64_2e512m491x2e496m1/fesub.v
deleted file mode 100644
index ae8dc3ba2..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.log b/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.log
deleted file mode 100644
index 070fac6ba..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xfe14ffffffffe + x20) - x38), ((0xffffffffffffe + x21) - x39), ((0xffffffffffffe + x19) - x37), ((0xffffffffffffe + x17) - x35), ((0x1ffffffffffffe + x15) - x33), ((0xffffffffffffe + x13) - x31), ((0xffffffffffffe + x11) - x29), ((0xffffffffffffe + x9) - x27), ((0xffffffffffffe + x7) - x25), ((0x1ffffffffffffe + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.v b/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.v
deleted file mode 100644
index d4599f344..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/freeze.c b/src/Specific/solinas64_2e512m491x2e496m1/freeze.c
deleted file mode 100644
index f0903fd8e..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- { uint64_t x23; uint8_t x24 = _subborrow_u51(x21, x4, 0x7ffffffffffff, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u51(x24, x6, 0x7ffffffffffff, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u51(x27, x8, 0x7ffffffffffff, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u51(x30, x10, 0x7ffffffffffff, &x32);
- { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- { uint64_t x38; uint8_t x39 = _subborrow_u51(x36, x14, 0x7ffffffffffff, &x38);
- { uint64_t x41; uint8_t x42 = _subborrow_u51(x39, x16, 0x7ffffffffffff, &x41);
- { uint64_t x44; uint8_t x45 = _subborrow_u51(x42, x18, 0x7ffffffffffff, &x44);
- { uint64_t x47; uint8_t x48 = _subborrow_u51(x45, x17, 0x7f0a7ffffffff, &x47);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0xfffffffffffff);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0x7ffffffffffff);
- { uint64_t x56; uint8_t x57 = _addcarryx_u51(x53, x23, x54, &x56);
- { uint64_t x58 = (x49 & 0x7ffffffffffff);
- { uint64_t x60; uint8_t x61 = _addcarryx_u51(x57, x26, x58, &x60);
- { uint64_t x62 = (x49 & 0x7ffffffffffff);
- { uint64_t x64; uint8_t x65 = _addcarryx_u51(x61, x29, x62, &x64);
- { uint64_t x66 = (x49 & 0x7ffffffffffff);
- { uint64_t x68; uint8_t x69 = _addcarryx_u51(x65, x32, x66, &x68);
- { uint64_t x70 = (x49 & 0xfffffffffffff);
- { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint64_t x74 = (x49 & 0x7ffffffffffff);
- { uint64_t x76; uint8_t x77 = _addcarryx_u51(x73, x38, x74, &x76);
- { uint64_t x78 = (x49 & 0x7ffffffffffff);
- { uint64_t x80; uint8_t x81 = _addcarryx_u51(x77, x41, x78, &x80);
- { uint64_t x82 = (x49 & 0x7ffffffffffff);
- { uint64_t x84; uint8_t x85 = _addcarryx_u51(x81, x44, x82, &x84);
- { uint64_t x86 = (x49 & 0x7f0a7ffffffff);
- { uint64_t x88; uint8_t _ = _addcarryx_u51(x85, x47, x86, &x88);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/freeze.v b/src/Specific/solinas64_2e512m491x2e496m1/freeze.v
deleted file mode 100644
index 6d3724e0f..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.log b/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.log
deleted file mode 100644
index a32e03130..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffff);
- uint64_t x23, uint8_t x24 = subborrow_u51(x21, x4, 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = subborrow_u51(x24, x6, 0x7ffffffffffff);
- uint64_t x29, uint8_t x30 = subborrow_u51(x27, x8, 0x7ffffffffffff);
- uint64_t x32, uint8_t x33 = subborrow_u51(x30, x10, 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- uint64_t x38, uint8_t x39 = subborrow_u51(x36, x14, 0x7ffffffffffff);
- uint64_t x41, uint8_t x42 = subborrow_u51(x39, x16, 0x7ffffffffffff);
- uint64_t x44, uint8_t x45 = subborrow_u51(x42, x18, 0x7ffffffffffff);
- uint64_t x47, uint8_t x48 = subborrow_u51(x45, x17, 0x7f0a7ffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xfffffffffffff);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u51(x53, x23, x54);
- uint64_t x58 = (x49 & 0x7ffffffffffff);
- uint64_t x60, uint8_t x61 = addcarryx_u51(x57, x26, x58);
- uint64_t x62 = (x49 & 0x7ffffffffffff);
- uint64_t x64, uint8_t x65 = addcarryx_u51(x61, x29, x62);
- uint64_t x66 = (x49 & 0x7ffffffffffff);
- uint64_t x68, uint8_t x69 = addcarryx_u51(x65, x32, x66);
- uint64_t x70 = (x49 & 0xfffffffffffff);
- uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint64_t x74 = (x49 & 0x7ffffffffffff);
- uint64_t x76, uint8_t x77 = addcarryx_u51(x73, x38, x74);
- uint64_t x78 = (x49 & 0x7ffffffffffff);
- uint64_t x80, uint8_t x81 = addcarryx_u51(x77, x41, x78);
- uint64_t x82 = (x49 & 0x7ffffffffffff);
- uint64_t x84, uint8_t x85 = addcarryx_u51(x81, x44, x82);
- uint64_t x86 = (x49 & 0x7f0a7ffffffff);
- uint64_t x88, uint8_t _ = addcarryx_u51(x85, x47, x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.v b/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.v
deleted file mode 100644
index 69aa94287..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m491x2e496m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e512m491x2e496m1/py_interpreter.sh b/src/Specific/solinas64_2e512m491x2e496m1/py_interpreter.sh
deleted file mode 100755
index 8bec25e4d..000000000
--- a/src/Specific/solinas64_2e512m491x2e496m1/py_interpreter.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-set -eu
-
-/usr/bin/env python3 "$@" -Dq='2**512 - 491*2**496 - 1' -Dmodulus_bytes='51.2' -Da24='121665'
diff --git a/src/Specific/solinas64_2e512m569/Synthesis.v b/src/Specific/solinas64_2e512m569/Synthesis.v
deleted file mode 100644
index 8fbfecacf..000000000
--- a/src/Specific/solinas64_2e512m569/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e512m569.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e512m569/feadd.c b/src/Specific/solinas64_2e512m569/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e512m569/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m569/feadd.v b/src/Specific/solinas64_2e512m569/feadd.v
deleted file mode 100644
index 8a309a29a..000000000
--- a/src/Specific/solinas64_2e512m569/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e512m569/feaddDisplay.log b/src/Specific/solinas64_2e512m569/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e512m569/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569/feaddDisplay.v b/src/Specific/solinas64_2e512m569/feaddDisplay.v
deleted file mode 100644
index dedbe940a..000000000
--- a/src/Specific/solinas64_2e512m569/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m569.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e512m569/femul.c b/src/Specific/solinas64_2e512m569/femul.c
deleted file mode 100644
index 46e0f261b..000000000
--- a/src/Specific/solinas64_2e512m569/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- { uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x239 * ((uint128_t)x20 * x38)));
- { uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x239 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- { uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x239 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x239 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
- { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x239 * (((uint128_t)x15 * x38) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((uint128_t)x20 * x33)))))));
- { uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x239 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x239 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + ((0x2 * ((uint128_t)x17 * x35)) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x239 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- { uint128_t x49 = (((uint128_t)x5 * x23) + (0x239 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- { uint128_t x50 = (x49 >> 0x34);
- { uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- { uint128_t x52 = (x50 + x48);
- { uint128_t x53 = (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x47);
- { uint128_t x56 = (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x56 + x46);
- { uint128_t x59 = (x58 >> 0x33);
- { uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- { uint128_t x61 = (x59 + x45);
- { uint128_t x62 = (x61 >> 0x33);
- { uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- { uint128_t x64 = (x62 + x44);
- { uint128_t x65 = (x64 >> 0x34);
- { uint64_t x66 = ((uint64_t)x64 & 0xfffffffffffff);
- { uint128_t x67 = (x65 + x43);
- { uint128_t x68 = (x67 >> 0x33);
- { uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- { uint128_t x70 = (x68 + x42);
- { uint128_t x71 = (x70 >> 0x33);
- { uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- { uint128_t x73 = (x71 + x41);
- { uint64_t x74 = (uint64_t) (x73 >> 0x33);
- { uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- { uint128_t x76 = (x74 + x40);
- { uint64_t x77 = (uint64_t) (x76 >> 0x33);
- { uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- { uint128_t x79 = (x51 + ((uint128_t)0x239 * x77));
- { uint64_t x80 = (uint64_t) (x79 >> 0x34);
- { uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x33);
- { uint64_t x84 = (x82 & 0x7ffffffffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m569/femul.v b/src/Specific/solinas64_2e512m569/femul.v
deleted file mode 100644
index 9af7f19e3..000000000
--- a/src/Specific/solinas64_2e512m569/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e512m569/femulDisplay.log b/src/Specific/solinas64_2e512m569/femulDisplay.log
deleted file mode 100644
index 0fdd49f6f..000000000
--- a/src/Specific/solinas64_2e512m569/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + (((uint128_t)x13 * x33) + (((uint128_t)x15 * x31) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + (((uint128_t)x11 * x33) + (((uint128_t)x13 * x31) + (((uint128_t)x15 * x29) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + (0x239 * ((uint128_t)x20 * x38)));
- uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + (((uint128_t)x9 * x33) + (((uint128_t)x11 * x31) + (((uint128_t)x13 * x29) + (((uint128_t)x15 * x27) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (0x239 * (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39))));
- uint128_t x43 = ((((uint128_t)x5 * x35) + (((uint128_t)x7 * x33) + (((uint128_t)x9 * x31) + (((uint128_t)x11 * x29) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x17 * x23))))))) + (0x239 * (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37)))));
- uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (0x239 * ((0x2 * ((uint128_t)x17 * x38)) + ((0x2 * ((uint128_t)x19 * x39)) + ((0x2 * ((uint128_t)x21 * x37)) + (0x2 * ((uint128_t)x20 * x35)))))));
- uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (0x239 * (((uint128_t)x15 * x38) + ((0x2 * ((uint128_t)x17 * x39)) + ((0x2 * ((uint128_t)x19 * x37)) + ((0x2 * ((uint128_t)x21 * x35)) + ((uint128_t)x20 * x33)))))));
- uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (0x239 * (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + ((0x2 * ((uint128_t)x17 * x37)) + ((0x2 * ((uint128_t)x19 * x35)) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31))))))));
- uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (0x239 * (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + ((0x2 * ((uint128_t)x17 * x35)) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29)))))))));
- uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (0x239 * (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27))))))))));
- uint128_t x49 = (((uint128_t)x5 * x23) + (0x239 * ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + (((uint128_t)x15 * x33) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25))))))))))));
- uint128_t x50 = (x49 >> 0x34);
- uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- uint128_t x52 = (x50 + x48);
- uint128_t x53 = (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x47);
- uint128_t x56 = (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x56 + x46);
- uint128_t x59 = (x58 >> 0x33);
- uint64_t x60 = ((uint64_t)x58 & 0x7ffffffffffff);
- uint128_t x61 = (x59 + x45);
- uint128_t x62 = (x61 >> 0x33);
- uint64_t x63 = ((uint64_t)x61 & 0x7ffffffffffff);
- uint128_t x64 = (x62 + x44);
- uint128_t x65 = (x64 >> 0x34);
- uint64_t x66 = ((uint64_t)x64 & 0xfffffffffffff);
- uint128_t x67 = (x65 + x43);
- uint128_t x68 = (x67 >> 0x33);
- uint64_t x69 = ((uint64_t)x67 & 0x7ffffffffffff);
- uint128_t x70 = (x68 + x42);
- uint128_t x71 = (x70 >> 0x33);
- uint64_t x72 = ((uint64_t)x70 & 0x7ffffffffffff);
- uint128_t x73 = (x71 + x41);
- uint64_t x74 = (uint64_t) (x73 >> 0x33);
- uint64_t x75 = ((uint64_t)x73 & 0x7ffffffffffff);
- uint128_t x76 = (x74 + x40);
- uint64_t x77 = (uint64_t) (x76 >> 0x33);
- uint64_t x78 = ((uint64_t)x76 & 0x7ffffffffffff);
- uint128_t x79 = (x51 + ((uint128_t)0x239 * x77));
- uint64_t x80 = (uint64_t) (x79 >> 0x34);
- uint64_t x81 = ((uint64_t)x79 & 0xfffffffffffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x33);
- uint64_t x84 = (x82 & 0x7ffffffffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569/femulDisplay.v b/src/Specific/solinas64_2e512m569/femulDisplay.v
deleted file mode 100644
index 4bda29399..000000000
--- a/src/Specific/solinas64_2e512m569/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m569.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e512m569/fesquare.c b/src/Specific/solinas64_2e512m569/fesquare.c
deleted file mode 100644
index c8ecbdfda..000000000
--- a/src/Specific/solinas64_2e512m569/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x239 * ((uint128_t)x17 * x17)));
- { uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x239 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- { uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x239 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x239 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
- { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x239 * (((uint128_t)x12 * x17) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + ((uint128_t)x17 * x12)))))));
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x239 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x239 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x239 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- { uint128_t x28 = (((uint128_t)x2 * x2) + (0x239 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- { uint128_t x29 = (x28 >> 0x34);
- { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- { uint128_t x31 = (x29 + x27);
- { uint128_t x32 = (x31 >> 0x33);
- { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- { uint128_t x34 = (x32 + x26);
- { uint128_t x35 = (x34 >> 0x33);
- { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- { uint128_t x37 = (x35 + x25);
- { uint128_t x38 = (x37 >> 0x33);
- { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- { uint128_t x40 = (x38 + x24);
- { uint128_t x41 = (x40 >> 0x33);
- { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- { uint128_t x43 = (x41 + x23);
- { uint128_t x44 = (x43 >> 0x34);
- { uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
- { uint128_t x46 = (x44 + x22);
- { uint128_t x47 = (x46 >> 0x33);
- { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- { uint128_t x49 = (x47 + x21);
- { uint128_t x50 = (x49 >> 0x33);
- { uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- { uint128_t x52 = (x50 + x20);
- { uint64_t x53 = (uint64_t) (x52 >> 0x33);
- { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- { uint128_t x55 = (x53 + x19);
- { uint64_t x56 = (uint64_t) (x55 >> 0x33);
- { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- { uint128_t x58 = (x30 + ((uint128_t)0x239 * x56));
- { uint64_t x59 = (uint64_t) (x58 >> 0x34);
- { uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x33);
- { uint64_t x63 = (x61 & 0x7ffffffffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m569/fesquare.v b/src/Specific/solinas64_2e512m569/fesquare.v
deleted file mode 100644
index 07f530e28..000000000
--- a/src/Specific/solinas64_2e512m569/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e512m569/fesquareDisplay.log b/src/Specific/solinas64_2e512m569/fesquareDisplay.log
deleted file mode 100644
index 09790b996..000000000
--- a/src/Specific/solinas64_2e512m569/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + (0x239 * ((uint128_t)x17 * x17)));
- uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (0x239 * (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18))));
- uint128_t x22 = ((((uint128_t)x2 * x14) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x14 * x2))))))) + (0x239 * (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16)))));
- uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x239 * ((0x2 * ((uint128_t)x14 * x17)) + ((0x2 * ((uint128_t)x16 * x18)) + ((0x2 * ((uint128_t)x18 * x16)) + (0x2 * ((uint128_t)x17 * x14)))))));
- uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x239 * (((uint128_t)x12 * x17) + ((0x2 * ((uint128_t)x14 * x18)) + ((0x2 * ((uint128_t)x16 * x16)) + ((0x2 * ((uint128_t)x18 * x14)) + ((uint128_t)x17 * x12)))))));
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x239 * (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + ((0x2 * ((uint128_t)x14 * x16)) + ((0x2 * ((uint128_t)x16 * x14)) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10))))))));
- uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x239 * (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + ((0x2 * ((uint128_t)x14 * x14)) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8)))))))));
- uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x239 * (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6))))))))));
- uint128_t x28 = (((uint128_t)x2 * x2) + (0x239 * ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + (((uint128_t)x12 * x12) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4))))))))))));
- uint128_t x29 = (x28 >> 0x34);
- uint64_t x30 = ((uint64_t)x28 & 0xfffffffffffff);
- uint128_t x31 = (x29 + x27);
- uint128_t x32 = (x31 >> 0x33);
- uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffff);
- uint128_t x34 = (x32 + x26);
- uint128_t x35 = (x34 >> 0x33);
- uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffff);
- uint128_t x37 = (x35 + x25);
- uint128_t x38 = (x37 >> 0x33);
- uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffff);
- uint128_t x40 = (x38 + x24);
- uint128_t x41 = (x40 >> 0x33);
- uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffff);
- uint128_t x43 = (x41 + x23);
- uint128_t x44 = (x43 >> 0x34);
- uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
- uint128_t x46 = (x44 + x22);
- uint128_t x47 = (x46 >> 0x33);
- uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffff);
- uint128_t x49 = (x47 + x21);
- uint128_t x50 = (x49 >> 0x33);
- uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffff);
- uint128_t x52 = (x50 + x20);
- uint64_t x53 = (uint64_t) (x52 >> 0x33);
- uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffff);
- uint128_t x55 = (x53 + x19);
- uint64_t x56 = (uint64_t) (x55 >> 0x33);
- uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffff);
- uint128_t x58 = (x30 + ((uint128_t)0x239 * x56));
- uint64_t x59 = (uint64_t) (x58 >> 0x34);
- uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x33);
- uint64_t x63 = (x61 & 0x7ffffffffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569/fesquareDisplay.v b/src/Specific/solinas64_2e512m569/fesquareDisplay.v
deleted file mode 100644
index 197fc1d7f..000000000
--- a/src/Specific/solinas64_2e512m569/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m569.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e512m569/fesub.c b/src/Specific/solinas64_2e512m569/fesub.c
deleted file mode 100644
index b2dd293f5..000000000
--- a/src/Specific/solinas64_2e512m569/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0x1ffffffffffb8e + x5) - x23);
- out[1] = ((0xffffffffffffe + x7) - x25);
- out[2] = ((0xffffffffffffe + x9) - x27);
- out[3] = ((0xffffffffffffe + x11) - x29);
- out[4] = ((0xffffffffffffe + x13) - x31);
- out[5] = ((0x1ffffffffffffe + x15) - x33);
- out[6] = ((0xffffffffffffe + x17) - x35);
- out[7] = ((0xffffffffffffe + x19) - x37);
- out[8] = ((0xffffffffffffe + x21) - x39);
- out[9] = ((0xffffffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m569/fesub.v b/src/Specific/solinas64_2e512m569/fesub.v
deleted file mode 100644
index 94cedeeb1..000000000
--- a/src/Specific/solinas64_2e512m569/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e512m569/fesubDisplay.log b/src/Specific/solinas64_2e512m569/fesubDisplay.log
deleted file mode 100644
index 07b0161a8..000000000
--- a/src/Specific/solinas64_2e512m569/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0xffffffffffffe + x20) - x38), ((0xffffffffffffe + x21) - x39), ((0xffffffffffffe + x19) - x37), ((0xffffffffffffe + x17) - x35), ((0x1ffffffffffffe + x15) - x33), ((0xffffffffffffe + x13) - x31), ((0xffffffffffffe + x11) - x29), ((0xffffffffffffe + x9) - x27), ((0xffffffffffffe + x7) - x25), ((0x1ffffffffffb8e + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569/fesubDisplay.v b/src/Specific/solinas64_2e512m569/fesubDisplay.v
deleted file mode 100644
index 373f73aaf..000000000
--- a/src/Specific/solinas64_2e512m569/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m569.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e512m569/freeze.c b/src/Specific/solinas64_2e512m569/freeze.c
deleted file mode 100644
index 6f4db7541..000000000
--- a/src/Specific/solinas64_2e512m569/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffdc7);
- { uint64_t x23; uint8_t x24 = _subborrow_u51(x21, x4, 0x7ffffffffffff, &x23);
- { uint64_t x26; uint8_t x27 = _subborrow_u51(x24, x6, 0x7ffffffffffff, &x26);
- { uint64_t x29; uint8_t x30 = _subborrow_u51(x27, x8, 0x7ffffffffffff, &x29);
- { uint64_t x32; uint8_t x33 = _subborrow_u51(x30, x10, 0x7ffffffffffff, &x32);
- { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- { uint64_t x38; uint8_t x39 = _subborrow_u51(x36, x14, 0x7ffffffffffff, &x38);
- { uint64_t x41; uint8_t x42 = _subborrow_u51(x39, x16, 0x7ffffffffffff, &x41);
- { uint64_t x44; uint8_t x45 = _subborrow_u51(x42, x18, 0x7ffffffffffff, &x44);
- { uint64_t x47; uint8_t x48 = _subborrow_u51(x45, x17, 0x7ffffffffffff, &x47);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0xffffffffffdc7);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0x7ffffffffffff);
- { uint64_t x56; uint8_t x57 = _addcarryx_u51(x53, x23, x54, &x56);
- { uint64_t x58 = (x49 & 0x7ffffffffffff);
- { uint64_t x60; uint8_t x61 = _addcarryx_u51(x57, x26, x58, &x60);
- { uint64_t x62 = (x49 & 0x7ffffffffffff);
- { uint64_t x64; uint8_t x65 = _addcarryx_u51(x61, x29, x62, &x64);
- { uint64_t x66 = (x49 & 0x7ffffffffffff);
- { uint64_t x68; uint8_t x69 = _addcarryx_u51(x65, x32, x66, &x68);
- { uint64_t x70 = (x49 & 0xfffffffffffff);
- { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint64_t x74 = (x49 & 0x7ffffffffffff);
- { uint64_t x76; uint8_t x77 = _addcarryx_u51(x73, x38, x74, &x76);
- { uint64_t x78 = (x49 & 0x7ffffffffffff);
- { uint64_t x80; uint8_t x81 = _addcarryx_u51(x77, x41, x78, &x80);
- { uint64_t x82 = (x49 & 0x7ffffffffffff);
- { uint64_t x84; uint8_t x85 = _addcarryx_u51(x81, x44, x82, &x84);
- { uint64_t x86 = (x49 & 0x7ffffffffffff);
- { uint64_t x88; uint8_t _ = _addcarryx_u51(x85, x47, x86, &x88);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e512m569/freeze.v b/src/Specific/solinas64_2e512m569/freeze.v
deleted file mode 100644
index 8d8c77010..000000000
--- a/src/Specific/solinas64_2e512m569/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e512m569.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e512m569/freezeDisplay.log b/src/Specific/solinas64_2e512m569/freezeDisplay.log
deleted file mode 100644
index c78c962ee..000000000
--- a/src/Specific/solinas64_2e512m569/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffdc7);
- uint64_t x23, uint8_t x24 = subborrow_u51(x21, x4, 0x7ffffffffffff);
- uint64_t x26, uint8_t x27 = subborrow_u51(x24, x6, 0x7ffffffffffff);
- uint64_t x29, uint8_t x30 = subborrow_u51(x27, x8, 0x7ffffffffffff);
- uint64_t x32, uint8_t x33 = subborrow_u51(x30, x10, 0x7ffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- uint64_t x38, uint8_t x39 = subborrow_u51(x36, x14, 0x7ffffffffffff);
- uint64_t x41, uint8_t x42 = subborrow_u51(x39, x16, 0x7ffffffffffff);
- uint64_t x44, uint8_t x45 = subborrow_u51(x42, x18, 0x7ffffffffffff);
- uint64_t x47, uint8_t x48 = subborrow_u51(x45, x17, 0x7ffffffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0xffffffffffdc7);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0x7ffffffffffff);
- uint64_t x56, uint8_t x57 = addcarryx_u51(x53, x23, x54);
- uint64_t x58 = (x49 & 0x7ffffffffffff);
- uint64_t x60, uint8_t x61 = addcarryx_u51(x57, x26, x58);
- uint64_t x62 = (x49 & 0x7ffffffffffff);
- uint64_t x64, uint8_t x65 = addcarryx_u51(x61, x29, x62);
- uint64_t x66 = (x49 & 0x7ffffffffffff);
- uint64_t x68, uint8_t x69 = addcarryx_u51(x65, x32, x66);
- uint64_t x70 = (x49 & 0xfffffffffffff);
- uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint64_t x74 = (x49 & 0x7ffffffffffff);
- uint64_t x76, uint8_t x77 = addcarryx_u51(x73, x38, x74);
- uint64_t x78 = (x49 & 0x7ffffffffffff);
- uint64_t x80, uint8_t x81 = addcarryx_u51(x77, x41, x78);
- uint64_t x82 = (x49 & 0x7ffffffffffff);
- uint64_t x84, uint8_t x85 = addcarryx_u51(x81, x44, x82);
- uint64_t x86 = (x49 & 0x7ffffffffffff);
- uint64_t x88, uint8_t _ = addcarryx_u51(x85, x47, x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e512m569/freezeDisplay.v b/src/Specific/solinas64_2e512m569/freezeDisplay.v
deleted file mode 100644
index f71fb9573..000000000
--- a/src/Specific/solinas64_2e512m569/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e512m569.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e512m569/CurveParameters.v b/src/Specific/solinas64_2e512m569_10limbs/CurveParameters.v
index 13d176bc4..13d176bc4 100644
--- a/src/Specific/solinas64_2e512m569/CurveParameters.v
+++ b/src/Specific/solinas64_2e512m569_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e512m569_10limbs/Synthesis.v b/src/Specific/solinas64_2e512m569_10limbs/Synthesis.v
new file mode 100644
index 000000000..414fbe02f
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e512m569/compiler.sh b/src/Specific/solinas64_2e512m569_10limbs/compiler.sh
index 55aeed964..55aeed964 100755
--- a/src/Specific/solinas64_2e512m569/compiler.sh
+++ b/src/Specific/solinas64_2e512m569_10limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e512m569/compilerxx.sh b/src/Specific/solinas64_2e512m569_10limbs/compilerxx.sh
index b9186c021..b9186c021 100755
--- a/src/Specific/solinas64_2e512m569/compilerxx.sh
+++ b/src/Specific/solinas64_2e512m569_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e512m569_10limbs/feadd.v b/src/Specific/solinas64_2e512m569_10limbs/feadd.v
new file mode 100644
index 000000000..b5772a500
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e512m569_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..b80f582f0
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/femul.v b/src/Specific/solinas64_2e512m569_10limbs/femul.v
new file mode 100644
index 000000000..ac9f5ccfa
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/femulDisplay.v b/src/Specific/solinas64_2e512m569_10limbs/femulDisplay.v
new file mode 100644
index 000000000..7531c9c34
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/fesquare.v b/src/Specific/solinas64_2e512m569_10limbs/fesquare.v
new file mode 100644
index 000000000..d673db48d
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e512m569_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..3629053ea
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/fesub.v b/src/Specific/solinas64_2e512m569_10limbs/fesub.v
new file mode 100644
index 000000000..792210dc5
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e512m569_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..a977888de
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/freeze.v b/src/Specific/solinas64_2e512m569_10limbs/freeze.v
new file mode 100644
index 000000000..ef77d30c7
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e512m569_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e512m569_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..3a4855ab8
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e512m569/py_interpreter.sh b/src/Specific/solinas64_2e512m569_10limbs/py_interpreter.sh
index 711a90d28..711a90d28 100755
--- a/src/Specific/solinas64_2e512m569/py_interpreter.sh
+++ b/src/Specific/solinas64_2e512m569_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e512m569_11limbs/CurveParameters.v b/src/Specific/solinas64_2e512m569_11limbs/CurveParameters.v
new file mode 100644
index 000000000..1ba80fe1a
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^512 - 569
+Base: 46 + 6/11
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 11%nat;
+ base := 46 + 6/11;
+ bitwidth := 64;
+ s := 2^512;
+ c := [(1, 569)];
+ carry_chains := Some [seq 0 (pred 11); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/Synthesis.v b/src/Specific/solinas64_2e512m569_11limbs/Synthesis.v
new file mode 100644
index 000000000..8133215c1
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/compiler.sh b/src/Specific/solinas64_2e512m569_11limbs/compiler.sh
new file mode 100755
index 000000000..245f44189
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46,47,46,47,46,47,46,47,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<512) - 569' "$@"
diff --git a/src/Specific/solinas64_2e512m569_11limbs/compilerxx.sh b/src/Specific/solinas64_2e512m569_11limbs/compilerxx.sh
new file mode 100755
index 000000000..d821bb405
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{47,47,46,47,46,47,46,47,46,47,46}' -Dmodulus_array='{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xc7}' -Dmodulus_bytes_val='64' -Dmodulus_limbs='11' -Dq_mpz='(1_mpz<<512) - 569' "$@"
diff --git a/src/Specific/solinas64_2e512m569_11limbs/feadd.v b/src/Specific/solinas64_2e512m569_11limbs/feadd.v
new file mode 100644
index 000000000..12f013c35
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.v b/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.v
new file mode 100644
index 000000000..ede1af81b
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/femul.v b/src/Specific/solinas64_2e512m569_11limbs/femul.v
new file mode 100644
index 000000000..1d4a3ccd1
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.v b/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.v
new file mode 100644
index 000000000..4e2ae14a9
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesquare.v b/src/Specific/solinas64_2e512m569_11limbs/fesquare.v
new file mode 100644
index 000000000..61241fdbb
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.v b/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.v
new file mode 100644
index 000000000..597b21fdb
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesub.v b/src/Specific/solinas64_2e512m569_11limbs/fesub.v
new file mode 100644
index 000000000..506c5238a
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.v b/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.v
new file mode 100644
index 000000000..cd0a42bc7
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/freeze.v b/src/Specific/solinas64_2e512m569_11limbs/freeze.v
new file mode 100644
index 000000000..6393c2bf0
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.v b/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.v
new file mode 100644
index 000000000..084101039
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e512m569_11limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e512m569_11limbs/py_interpreter.sh b/src/Specific/solinas64_2e512m569_11limbs/py_interpreter.sh
new file mode 100755
index 000000000..ecaa53bbb
--- /dev/null
+++ b/src/Specific/solinas64_2e512m569_11limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**512 - 569' -Dmodulus_bytes='46 + 6/11' -Da24='121665'
diff --git a/src/Specific/solinas64_2e521m1/Synthesis.v b/src/Specific/solinas64_2e521m1/Synthesis.v
deleted file mode 100644
index 6d7c3f2f3..000000000
--- a/src/Specific/solinas64_2e521m1/Synthesis.v
+++ /dev/null
@@ -1,9 +0,0 @@
-Require Import Crypto.Specific.Framework.SynthesisFramework.
-Require Import Crypto.Specific.solinas64_2e521m1.CurveParameters.
-
-Module P <: PrePackage.
- Definition package : Tag.Context.
- Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
-End P.
-
-Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e521m1/feadd.c b/src/Specific/solinas64_2e521m1/feadd.c
deleted file mode 100644
index df991e375..000000000
--- a/src/Specific/solinas64_2e521m1/feadd.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void feadd(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = (x5 + x23);
- out[1] = (x7 + x25);
- out[2] = (x9 + x27);
- out[3] = (x11 + x29);
- out[4] = (x13 + x31);
- out[5] = (x15 + x33);
- out[6] = (x17 + x35);
- out[7] = (x19 + x37);
- out[8] = (x21 + x39);
- out[9] = (x20 + x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e521m1/feadd.v b/src/Specific/solinas64_2e521m1/feadd.v
deleted file mode 100644
index a88b2add5..000000000
--- a/src/Specific/solinas64_2e521m1/feadd.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition add :
- { add : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_add ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions add.
diff --git a/src/Specific/solinas64_2e521m1/feaddDisplay.log b/src/Specific/solinas64_2e521m1/feaddDisplay.log
deleted file mode 100644
index 04176128e..000000000
--- a/src/Specific/solinas64_2e521m1/feaddDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- ((x20 + x38), (x21 + x39), (x19 + x37), (x17 + x35), (x15 + x33), (x13 + x31), (x11 + x29), (x9 + x27), (x7 + x25), (x5 + x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1/feaddDisplay.v b/src/Specific/solinas64_2e521m1/feaddDisplay.v
deleted file mode 100644
index 8e993f2c6..000000000
--- a/src/Specific/solinas64_2e521m1/feaddDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e521m1.feadd.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display add.
diff --git a/src/Specific/solinas64_2e521m1/femul.c b/src/Specific/solinas64_2e521m1/femul.c
deleted file mode 100644
index 08cf14225..000000000
--- a/src/Specific/solinas64_2e521m1/femul.c
+++ /dev/null
@@ -1,78 +0,0 @@
-static void femul(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- { uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- { uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + ((uint128_t)x20 * x38));
- { uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39)));
- { uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37))));
- { uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35)))));
- { uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
- { uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31)))))));
- { uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29))))))));
- { uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27)))))))));
- { uint128_t x49 = (((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25)))))))))));
- { uint64_t x50 = (uint64_t) (x49 >> 0x35);
- { uint64_t x51 = ((uint64_t)x49 & 0x1fffffffffffff);
- { uint128_t x52 = (x50 + x48);
- { uint64_t x53 = (uint64_t) (x52 >> 0x34);
- { uint64_t x54 = ((uint64_t)x52 & 0xfffffffffffff);
- { uint128_t x55 = (x53 + x47);
- { uint64_t x56 = (uint64_t) (x55 >> 0x34);
- { uint64_t x57 = ((uint64_t)x55 & 0xfffffffffffff);
- { uint128_t x58 = (x56 + x46);
- { uint64_t x59 = (uint64_t) (x58 >> 0x34);
- { uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- { uint128_t x61 = (x59 + x45);
- { uint64_t x62 = (uint64_t) (x61 >> 0x34);
- { uint64_t x63 = ((uint64_t)x61 & 0xfffffffffffff);
- { uint128_t x64 = (x62 + x44);
- { uint64_t x65 = (uint64_t) (x64 >> 0x34);
- { uint64_t x66 = ((uint64_t)x64 & 0xfffffffffffff);
- { uint128_t x67 = (x65 + x43);
- { uint64_t x68 = (uint64_t) (x67 >> 0x34);
- { uint64_t x69 = ((uint64_t)x67 & 0xfffffffffffff);
- { uint128_t x70 = (x68 + x42);
- { uint64_t x71 = (uint64_t) (x70 >> 0x34);
- { uint64_t x72 = ((uint64_t)x70 & 0xfffffffffffff);
- { uint128_t x73 = (x71 + x41);
- { uint64_t x74 = (uint64_t) (x73 >> 0x34);
- { uint64_t x75 = ((uint64_t)x73 & 0xfffffffffffff);
- { uint128_t x76 = (x74 + x40);
- { uint64_t x77 = (uint64_t) (x76 >> 0x34);
- { uint64_t x78 = ((uint64_t)x76 & 0xfffffffffffff);
- { uint64_t x79 = (x51 + x77);
- { uint64_t x80 = (x79 >> 0x35);
- { uint64_t x81 = (x79 & 0x1fffffffffffff);
- { uint64_t x82 = (x80 + x54);
- { uint64_t x83 = (x82 >> 0x34);
- { uint64_t x84 = (x82 & 0xfffffffffffff);
- out[0] = x81;
- out[1] = x84;
- out[2] = (x83 + x57);
- out[3] = x60;
- out[4] = x63;
- out[5] = x66;
- out[6] = x69;
- out[7] = x72;
- out[8] = x75;
- out[9] = x78;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e521m1/femul.v b/src/Specific/solinas64_2e521m1/femul.v
deleted file mode 100644
index efe13e3aa..000000000
--- a/src/Specific/solinas64_2e521m1/femul.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition mul :
- { mul : feBW_loose -> feBW_loose -> feBW_tight
- | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_mul ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e521m1/femulDisplay.log b/src/Specific/solinas64_2e521m1/femulDisplay.log
deleted file mode 100644
index bb5136485..000000000
--- a/src/Specific/solinas64_2e521m1/femulDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- uint128_t x40 = (((uint128_t)x5 * x38) + ((0x2 * ((uint128_t)x7 * x39)) + ((0x2 * ((uint128_t)x9 * x37)) + ((0x2 * ((uint128_t)x11 * x35)) + ((0x2 * ((uint128_t)x13 * x33)) + ((0x2 * ((uint128_t)x15 * x31)) + ((0x2 * ((uint128_t)x17 * x29)) + ((0x2 * ((uint128_t)x19 * x27)) + ((0x2 * ((uint128_t)x21 * x25)) + ((uint128_t)x20 * x23))))))))));
- uint128_t x41 = ((((uint128_t)x5 * x39) + ((0x2 * ((uint128_t)x7 * x37)) + ((0x2 * ((uint128_t)x9 * x35)) + ((0x2 * ((uint128_t)x11 * x33)) + ((0x2 * ((uint128_t)x13 * x31)) + ((0x2 * ((uint128_t)x15 * x29)) + ((0x2 * ((uint128_t)x17 * x27)) + ((0x2 * ((uint128_t)x19 * x25)) + ((uint128_t)x21 * x23))))))))) + ((uint128_t)x20 * x38));
- uint128_t x42 = ((((uint128_t)x5 * x37) + ((0x2 * ((uint128_t)x7 * x35)) + ((0x2 * ((uint128_t)x9 * x33)) + ((0x2 * ((uint128_t)x11 * x31)) + ((0x2 * ((uint128_t)x13 * x29)) + ((0x2 * ((uint128_t)x15 * x27)) + ((0x2 * ((uint128_t)x17 * x25)) + ((uint128_t)x19 * x23)))))))) + (((uint128_t)x21 * x38) + ((uint128_t)x20 * x39)));
- uint128_t x43 = ((((uint128_t)x5 * x35) + ((0x2 * ((uint128_t)x7 * x33)) + ((0x2 * ((uint128_t)x9 * x31)) + ((0x2 * ((uint128_t)x11 * x29)) + ((0x2 * ((uint128_t)x13 * x27)) + ((0x2 * ((uint128_t)x15 * x25)) + ((uint128_t)x17 * x23))))))) + (((uint128_t)x19 * x38) + (((uint128_t)x21 * x39) + ((uint128_t)x20 * x37))));
- uint128_t x44 = ((((uint128_t)x5 * x33) + ((0x2 * ((uint128_t)x7 * x31)) + ((0x2 * ((uint128_t)x9 * x29)) + ((0x2 * ((uint128_t)x11 * x27)) + ((0x2 * ((uint128_t)x13 * x25)) + ((uint128_t)x15 * x23)))))) + (((uint128_t)x17 * x38) + (((uint128_t)x19 * x39) + (((uint128_t)x21 * x37) + ((uint128_t)x20 * x35)))));
- uint128_t x45 = ((((uint128_t)x5 * x31) + ((0x2 * ((uint128_t)x7 * x29)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((uint128_t)x13 * x23))))) + (((uint128_t)x15 * x38) + (((uint128_t)x17 * x39) + (((uint128_t)x19 * x37) + (((uint128_t)x21 * x35) + ((uint128_t)x20 * x33))))));
- uint128_t x46 = ((((uint128_t)x5 * x29) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((uint128_t)x11 * x23)))) + (((uint128_t)x13 * x38) + (((uint128_t)x15 * x39) + (((uint128_t)x17 * x37) + (((uint128_t)x19 * x35) + (((uint128_t)x21 * x33) + ((uint128_t)x20 * x31)))))));
- uint128_t x47 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((uint128_t)x9 * x23))) + (((uint128_t)x11 * x38) + (((uint128_t)x13 * x39) + (((uint128_t)x15 * x37) + (((uint128_t)x17 * x35) + (((uint128_t)x19 * x33) + (((uint128_t)x21 * x31) + ((uint128_t)x20 * x29))))))));
- uint128_t x48 = ((((uint128_t)x5 * x25) + ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x38) + (((uint128_t)x11 * x39) + (((uint128_t)x13 * x37) + (((uint128_t)x15 * x35) + (((uint128_t)x17 * x33) + (((uint128_t)x19 * x31) + (((uint128_t)x21 * x29) + ((uint128_t)x20 * x27)))))))));
- uint128_t x49 = (((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x38)) + ((0x2 * ((uint128_t)x9 * x39)) + ((0x2 * ((uint128_t)x11 * x37)) + ((0x2 * ((uint128_t)x13 * x35)) + ((0x2 * ((uint128_t)x15 * x33)) + ((0x2 * ((uint128_t)x17 * x31)) + ((0x2 * ((uint128_t)x19 * x29)) + ((0x2 * ((uint128_t)x21 * x27)) + (0x2 * ((uint128_t)x20 * x25)))))))))));
- uint64_t x50 = (uint64_t) (x49 >> 0x35);
- uint64_t x51 = ((uint64_t)x49 & 0x1fffffffffffff);
- uint128_t x52 = (x50 + x48);
- uint64_t x53 = (uint64_t) (x52 >> 0x34);
- uint64_t x54 = ((uint64_t)x52 & 0xfffffffffffff);
- uint128_t x55 = (x53 + x47);
- uint64_t x56 = (uint64_t) (x55 >> 0x34);
- uint64_t x57 = ((uint64_t)x55 & 0xfffffffffffff);
- uint128_t x58 = (x56 + x46);
- uint64_t x59 = (uint64_t) (x58 >> 0x34);
- uint64_t x60 = ((uint64_t)x58 & 0xfffffffffffff);
- uint128_t x61 = (x59 + x45);
- uint64_t x62 = (uint64_t) (x61 >> 0x34);
- uint64_t x63 = ((uint64_t)x61 & 0xfffffffffffff);
- uint128_t x64 = (x62 + x44);
- uint64_t x65 = (uint64_t) (x64 >> 0x34);
- uint64_t x66 = ((uint64_t)x64 & 0xfffffffffffff);
- uint128_t x67 = (x65 + x43);
- uint64_t x68 = (uint64_t) (x67 >> 0x34);
- uint64_t x69 = ((uint64_t)x67 & 0xfffffffffffff);
- uint128_t x70 = (x68 + x42);
- uint64_t x71 = (uint64_t) (x70 >> 0x34);
- uint64_t x72 = ((uint64_t)x70 & 0xfffffffffffff);
- uint128_t x73 = (x71 + x41);
- uint64_t x74 = (uint64_t) (x73 >> 0x34);
- uint64_t x75 = ((uint64_t)x73 & 0xfffffffffffff);
- uint128_t x76 = (x74 + x40);
- uint64_t x77 = (uint64_t) (x76 >> 0x34);
- uint64_t x78 = ((uint64_t)x76 & 0xfffffffffffff);
- uint64_t x79 = (x51 + x77);
- uint64_t x80 = (x79 >> 0x35);
- uint64_t x81 = (x79 & 0x1fffffffffffff);
- uint64_t x82 = (x80 + x54);
- uint64_t x83 = (x82 >> 0x34);
- uint64_t x84 = (x82 & 0xfffffffffffff);
- return (Return x78, Return x75, Return x72, Return x69, Return x66, Return x63, Return x60, (x83 + x57), Return x84, Return x81))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1/femulDisplay.v b/src/Specific/solinas64_2e521m1/femulDisplay.v
deleted file mode 100644
index ede8d307e..000000000
--- a/src/Specific/solinas64_2e521m1/femulDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e521m1.femul.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display mul.
diff --git a/src/Specific/solinas64_2e521m1/fesquare.c b/src/Specific/solinas64_2e521m1/fesquare.c
deleted file mode 100644
index cb979cf16..000000000
--- a/src/Specific/solinas64_2e521m1/fesquare.c
+++ /dev/null
@@ -1,68 +0,0 @@
-static void fesquare(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- { uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + ((uint128_t)x17 * x17));
- { uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18)));
- { uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16))));
- { uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14)))));
- { uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12))))));
- { uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10)))))));
- { uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8))))))));
- { uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6)))))))));
- { uint128_t x28 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4)))))))))));
- { uint64_t x29 = (uint64_t) (x28 >> 0x35);
- { uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- { uint128_t x31 = (x29 + x27);
- { uint64_t x32 = (uint64_t) (x31 >> 0x34);
- { uint64_t x33 = ((uint64_t)x31 & 0xfffffffffffff);
- { uint128_t x34 = (x32 + x26);
- { uint64_t x35 = (uint64_t) (x34 >> 0x34);
- { uint64_t x36 = ((uint64_t)x34 & 0xfffffffffffff);
- { uint128_t x37 = (x35 + x25);
- { uint64_t x38 = (uint64_t) (x37 >> 0x34);
- { uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
- { uint128_t x40 = (x38 + x24);
- { uint64_t x41 = (uint64_t) (x40 >> 0x34);
- { uint64_t x42 = ((uint64_t)x40 & 0xfffffffffffff);
- { uint128_t x43 = (x41 + x23);
- { uint64_t x44 = (uint64_t) (x43 >> 0x34);
- { uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
- { uint128_t x46 = (x44 + x22);
- { uint64_t x47 = (uint64_t) (x46 >> 0x34);
- { uint64_t x48 = ((uint64_t)x46 & 0xfffffffffffff);
- { uint128_t x49 = (x47 + x21);
- { uint64_t x50 = (uint64_t) (x49 >> 0x34);
- { uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- { uint128_t x52 = (x50 + x20);
- { uint64_t x53 = (uint64_t) (x52 >> 0x34);
- { uint64_t x54 = ((uint64_t)x52 & 0xfffffffffffff);
- { uint128_t x55 = (x53 + x19);
- { uint64_t x56 = (uint64_t) (x55 >> 0x34);
- { uint64_t x57 = ((uint64_t)x55 & 0xfffffffffffff);
- { uint64_t x58 = (x30 + x56);
- { uint64_t x59 = (x58 >> 0x35);
- { uint64_t x60 = (x58 & 0x1fffffffffffff);
- { uint64_t x61 = (x59 + x33);
- { uint64_t x62 = (x61 >> 0x34);
- { uint64_t x63 = (x61 & 0xfffffffffffff);
- out[0] = x60;
- out[1] = x63;
- out[2] = (x62 + x36);
- out[3] = x39;
- out[4] = x42;
- out[5] = x45;
- out[6] = x48;
- out[7] = x51;
- out[8] = x54;
- out[9] = x57;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e521m1/fesquare.v b/src/Specific/solinas64_2e521m1/fesquare.v
deleted file mode 100644
index e5edbd938..000000000
--- a/src/Specific/solinas64_2e521m1/fesquare.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition square :
- { square : feBW_loose -> feBW_tight
- | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_square ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions square.
diff --git a/src/Specific/solinas64_2e521m1/fesquareDisplay.log b/src/Specific/solinas64_2e521m1/fesquareDisplay.log
deleted file mode 100644
index 509d48f8b..000000000
--- a/src/Specific/solinas64_2e521m1/fesquareDisplay.log
+++ /dev/null
@@ -1,52 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint128_t x19 = (((uint128_t)x2 * x17) + ((0x2 * ((uint128_t)x4 * x18)) + ((0x2 * ((uint128_t)x6 * x16)) + ((0x2 * ((uint128_t)x8 * x14)) + ((0x2 * ((uint128_t)x10 * x12)) + ((0x2 * ((uint128_t)x12 * x10)) + ((0x2 * ((uint128_t)x14 * x8)) + ((0x2 * ((uint128_t)x16 * x6)) + ((0x2 * ((uint128_t)x18 * x4)) + ((uint128_t)x17 * x2))))))))));
- uint128_t x20 = ((((uint128_t)x2 * x18) + ((0x2 * ((uint128_t)x4 * x16)) + ((0x2 * ((uint128_t)x6 * x14)) + ((0x2 * ((uint128_t)x8 * x12)) + ((0x2 * ((uint128_t)x10 * x10)) + ((0x2 * ((uint128_t)x12 * x8)) + ((0x2 * ((uint128_t)x14 * x6)) + ((0x2 * ((uint128_t)x16 * x4)) + ((uint128_t)x18 * x2))))))))) + ((uint128_t)x17 * x17));
- uint128_t x21 = ((((uint128_t)x2 * x16) + ((0x2 * ((uint128_t)x4 * x14)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + ((0x2 * ((uint128_t)x14 * x4)) + ((uint128_t)x16 * x2)))))))) + (((uint128_t)x18 * x17) + ((uint128_t)x17 * x18)));
- uint128_t x22 = ((((uint128_t)x2 * x14) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x14 * x2))))))) + (((uint128_t)x16 * x17) + (((uint128_t)x18 * x18) + ((uint128_t)x17 * x16))));
- uint128_t x23 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (((uint128_t)x14 * x17) + (((uint128_t)x16 * x18) + (((uint128_t)x18 * x16) + ((uint128_t)x17 * x14)))));
- uint128_t x24 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (((uint128_t)x12 * x17) + (((uint128_t)x14 * x18) + (((uint128_t)x16 * x16) + (((uint128_t)x18 * x14) + ((uint128_t)x17 * x12))))));
- uint128_t x25 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (((uint128_t)x10 * x17) + (((uint128_t)x12 * x18) + (((uint128_t)x14 * x16) + (((uint128_t)x16 * x14) + (((uint128_t)x18 * x12) + ((uint128_t)x17 * x10)))))));
- uint128_t x26 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x17) + (((uint128_t)x10 * x18) + (((uint128_t)x12 * x16) + (((uint128_t)x14 * x14) + (((uint128_t)x16 * x12) + (((uint128_t)x18 * x10) + ((uint128_t)x17 * x8))))))));
- uint128_t x27 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x6 * x17) + (((uint128_t)x8 * x18) + (((uint128_t)x10 * x16) + (((uint128_t)x12 * x14) + (((uint128_t)x14 * x12) + (((uint128_t)x16 * x10) + (((uint128_t)x18 * x8) + ((uint128_t)x17 * x6)))))))));
- uint128_t x28 = (((uint128_t)x2 * x2) + ((0x2 * ((uint128_t)x4 * x17)) + ((0x2 * ((uint128_t)x6 * x18)) + ((0x2 * ((uint128_t)x8 * x16)) + ((0x2 * ((uint128_t)x10 * x14)) + ((0x2 * ((uint128_t)x12 * x12)) + ((0x2 * ((uint128_t)x14 * x10)) + ((0x2 * ((uint128_t)x16 * x8)) + ((0x2 * ((uint128_t)x18 * x6)) + (0x2 * ((uint128_t)x17 * x4)))))))))));
- uint64_t x29 = (uint64_t) (x28 >> 0x35);
- uint64_t x30 = ((uint64_t)x28 & 0x1fffffffffffff);
- uint128_t x31 = (x29 + x27);
- uint64_t x32 = (uint64_t) (x31 >> 0x34);
- uint64_t x33 = ((uint64_t)x31 & 0xfffffffffffff);
- uint128_t x34 = (x32 + x26);
- uint64_t x35 = (uint64_t) (x34 >> 0x34);
- uint64_t x36 = ((uint64_t)x34 & 0xfffffffffffff);
- uint128_t x37 = (x35 + x25);
- uint64_t x38 = (uint64_t) (x37 >> 0x34);
- uint64_t x39 = ((uint64_t)x37 & 0xfffffffffffff);
- uint128_t x40 = (x38 + x24);
- uint64_t x41 = (uint64_t) (x40 >> 0x34);
- uint64_t x42 = ((uint64_t)x40 & 0xfffffffffffff);
- uint128_t x43 = (x41 + x23);
- uint64_t x44 = (uint64_t) (x43 >> 0x34);
- uint64_t x45 = ((uint64_t)x43 & 0xfffffffffffff);
- uint128_t x46 = (x44 + x22);
- uint64_t x47 = (uint64_t) (x46 >> 0x34);
- uint64_t x48 = ((uint64_t)x46 & 0xfffffffffffff);
- uint128_t x49 = (x47 + x21);
- uint64_t x50 = (uint64_t) (x49 >> 0x34);
- uint64_t x51 = ((uint64_t)x49 & 0xfffffffffffff);
- uint128_t x52 = (x50 + x20);
- uint64_t x53 = (uint64_t) (x52 >> 0x34);
- uint64_t x54 = ((uint64_t)x52 & 0xfffffffffffff);
- uint128_t x55 = (x53 + x19);
- uint64_t x56 = (uint64_t) (x55 >> 0x34);
- uint64_t x57 = ((uint64_t)x55 & 0xfffffffffffff);
- uint64_t x58 = (x30 + x56);
- uint64_t x59 = (x58 >> 0x35);
- uint64_t x60 = (x58 & 0x1fffffffffffff);
- uint64_t x61 = (x59 + x33);
- uint64_t x62 = (x61 >> 0x34);
- uint64_t x63 = (x61 & 0xfffffffffffff);
- return (Return x57, Return x54, Return x51, Return x48, Return x45, Return x42, Return x39, (x62 + x36), Return x63, Return x60))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1/fesquareDisplay.v b/src/Specific/solinas64_2e521m1/fesquareDisplay.v
deleted file mode 100644
index a9358302b..000000000
--- a/src/Specific/solinas64_2e521m1/fesquareDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e521m1.fesquare.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display square.
diff --git a/src/Specific/solinas64_2e521m1/fesub.c b/src/Specific/solinas64_2e521m1/fesub.c
deleted file mode 100644
index 4557332c9..000000000
--- a/src/Specific/solinas64_2e521m1/fesub.c
+++ /dev/null
@@ -1,33 +0,0 @@
-static void fesub(uint64_t out[10], const uint64_t in1[10], const uint64_t in2[10]) {
- { const uint64_t x20 = in1[9];
- { const uint64_t x21 = in1[8];
- { const uint64_t x19 = in1[7];
- { const uint64_t x17 = in1[6];
- { const uint64_t x15 = in1[5];
- { const uint64_t x13 = in1[4];
- { const uint64_t x11 = in1[3];
- { const uint64_t x9 = in1[2];
- { const uint64_t x7 = in1[1];
- { const uint64_t x5 = in1[0];
- { const uint64_t x38 = in2[9];
- { const uint64_t x39 = in2[8];
- { const uint64_t x37 = in2[7];
- { const uint64_t x35 = in2[6];
- { const uint64_t x33 = in2[5];
- { const uint64_t x31 = in2[4];
- { const uint64_t x29 = in2[3];
- { const uint64_t x27 = in2[2];
- { const uint64_t x25 = in2[1];
- { const uint64_t x23 = in2[0];
- out[0] = ((0x3ffffffffffffe + x5) - x23);
- out[1] = ((0x1ffffffffffffe + x7) - x25);
- out[2] = ((0x1ffffffffffffe + x9) - x27);
- out[3] = ((0x1ffffffffffffe + x11) - x29);
- out[4] = ((0x1ffffffffffffe + x13) - x31);
- out[5] = ((0x1ffffffffffffe + x15) - x33);
- out[6] = ((0x1ffffffffffffe + x17) - x35);
- out[7] = ((0x1ffffffffffffe + x19) - x37);
- out[8] = ((0x1ffffffffffffe + x21) - x39);
- out[9] = ((0x1ffffffffffffe + x20) - x38);
- }}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e521m1/fesub.v b/src/Specific/solinas64_2e521m1/fesub.v
deleted file mode 100644
index 083e8a378..000000000
--- a/src/Specific/solinas64_2e521m1/fesub.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition sub :
- { sub : feBW_tight -> feBW_tight -> feBW_loose
- | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_sub ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e521m1/fesubDisplay.log b/src/Specific/solinas64_2e521m1/fesubDisplay.log
deleted file mode 100644
index d3c4adbc3..000000000
--- a/src/Specific/solinas64_2e521m1/fesubDisplay.log
+++ /dev/null
@@ -1,7 +0,0 @@
-λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x20, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x38, x39, x37, x35, x33, x31, x29, x27, x25, x23))%core,
- (((0x1ffffffffffffe + x20) - x38), ((0x1ffffffffffffe + x21) - x39), ((0x1ffffffffffffe + x19) - x37), ((0x1ffffffffffffe + x17) - x35), ((0x1ffffffffffffe + x15) - x33), ((0x1ffffffffffffe + x13) - x31), ((0x1ffffffffffffe + x11) - x29), ((0x1ffffffffffffe + x9) - x27), ((0x1ffffffffffffe + x7) - x25), ((0x3ffffffffffffe + x5) - x23)))
-(x, x0)%core
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1/fesubDisplay.v b/src/Specific/solinas64_2e521m1/fesubDisplay.v
deleted file mode 100644
index ff90cffb0..000000000
--- a/src/Specific/solinas64_2e521m1/fesubDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e521m1.fesub.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display sub.
diff --git a/src/Specific/solinas64_2e521m1/freeze.c b/src/Specific/solinas64_2e521m1/freeze.c
deleted file mode 100644
index da704fa48..000000000
--- a/src/Specific/solinas64_2e521m1/freeze.c
+++ /dev/null
@@ -1,54 +0,0 @@
-static void freeze(uint64_t out[10], const uint64_t in1[10]) {
- { const uint64_t x17 = in1[9];
- { const uint64_t x18 = in1[8];
- { const uint64_t x16 = in1[7];
- { const uint64_t x14 = in1[6];
- { const uint64_t x12 = in1[5];
- { const uint64_t x10 = in1[4];
- { const uint64_t x8 = in1[3];
- { const uint64_t x6 = in1[2];
- { const uint64_t x4 = in1[1];
- { const uint64_t x2 = in1[0];
- { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff);
- { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0xfffffffffffff);
- { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0xfffffffffffff);
- { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0xfffffffffffff);
- { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xfffffffffffff);
- { uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- { uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0xfffffffffffff);
- { uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0xfffffffffffff);
- { uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0xfffffffffffff);
- { uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xfffffffffffff);
- { uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- { uint64_t x50 = (x49 & 0x1fffffffffffff);
- { uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- { uint64_t x54 = (x49 & 0xfffffffffffff);
- { uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- { uint64_t x58 = (x49 & 0xfffffffffffff);
- { uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- { uint64_t x62 = (x49 & 0xfffffffffffff);
- { uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- { uint64_t x66 = (x49 & 0xfffffffffffff);
- { uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- { uint64_t x70 = (x49 & 0xfffffffffffff);
- { uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- { uint64_t x74 = (x49 & 0xfffffffffffff);
- { uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- { uint64_t x78 = (x49 & 0xfffffffffffff);
- { uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- { uint64_t x82 = (x49 & 0xfffffffffffff);
- { uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- { uint64_t x86 = (x49 & 0xfffffffffffff);
- { uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- out[0] = x52;
- out[1] = x56;
- out[2] = x60;
- out[3] = x64;
- out[4] = x68;
- out[5] = x72;
- out[6] = x76;
- out[7] = x80;
- out[8] = x84;
- out[9] = x88;
- }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-}
diff --git a/src/Specific/solinas64_2e521m1/freeze.v b/src/Specific/solinas64_2e521m1/freeze.v
deleted file mode 100644
index bcaa28d81..000000000
--- a/src/Specific/solinas64_2e521m1/freeze.v
+++ /dev/null
@@ -1,14 +0,0 @@
-Require Import Crypto.Arithmetic.PrimeFieldTheorems.
-Require Import Crypto.Specific.solinas64_2e521m1.Synthesis.
-
-(* TODO : change this to field once field isomorphism happens *)
-Definition freeze :
- { freeze : feBW_tight -> feBW_limbwidths
- | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
-Proof.
- Set Ltac Profiling.
- Time synthesize_freeze ().
- Show Ltac Profile.
-Time Defined.
-
-Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e521m1/freezeDisplay.log b/src/Specific/solinas64_2e521m1/freezeDisplay.log
deleted file mode 100644
index f4b207247..000000000
--- a/src/Specific/solinas64_2e521m1/freezeDisplay.log
+++ /dev/null
@@ -1,38 +0,0 @@
-λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64,
-Interp-η
-(λ var : Syntax.base_type → Type,
- λ '(x17, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff);
- uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x4, 0xfffffffffffff);
- uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x6, 0xfffffffffffff);
- uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x8, 0xfffffffffffff);
- uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x10, 0xfffffffffffff);
- uint64_t x35, uint8_t x36 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x12, 0xfffffffffffff);
- uint64_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x14, 0xfffffffffffff);
- uint64_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x39, Return x16, 0xfffffffffffff);
- uint64_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x18, 0xfffffffffffff);
- uint64_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x17, 0xfffffffffffff);
- uint64_t x49 = cmovznz64(x48, 0x0, 0xffffffffffffffffL);
- uint64_t x50 = (x49 & 0x1fffffffffffff);
- uint64_t x52, uint8_t x53 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x20, Return x50);
- uint64_t x54 = (x49 & 0xfffffffffffff);
- uint64_t x56, uint8_t x57 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x53, Return x23, Return x54);
- uint64_t x58 = (x49 & 0xfffffffffffff);
- uint64_t x60, uint8_t x61 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x57, Return x26, Return x58);
- uint64_t x62 = (x49 & 0xfffffffffffff);
- uint64_t x64, uint8_t x65 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x61, Return x29, Return x62);
- uint64_t x66 = (x49 & 0xfffffffffffff);
- uint64_t x68, uint8_t x69 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x65, Return x32, Return x66);
- uint64_t x70 = (x49 & 0xfffffffffffff);
- uint64_t x72, uint8_t x73 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x69, Return x35, Return x70);
- uint64_t x74 = (x49 & 0xfffffffffffff);
- uint64_t x76, uint8_t x77 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x73, Return x38, Return x74);
- uint64_t x78 = (x49 & 0xfffffffffffff);
- uint64_t x80, uint8_t x81 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x77, Return x41, Return x78);
- uint64_t x82 = (x49 & 0xfffffffffffff);
- uint64_t x84, uint8_t x85 = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x81, Return x44, Return x82);
- uint64_t x86 = (x49 & 0xfffffffffffff);
- uint64_t x88, uint8_t _ = Op (Syntax.AddWithGetCarry 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x85, Return x47, Return x86);
- (Return x88, Return x84, Return x80, Return x76, Return x72, Return x68, Return x64, Return x60, Return x56, Return x52))
-x
- : word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e521m1/freezeDisplay.v b/src/Specific/solinas64_2e521m1/freezeDisplay.v
deleted file mode 100644
index 5e06d18cd..000000000
--- a/src/Specific/solinas64_2e521m1/freezeDisplay.v
+++ /dev/null
@@ -1,4 +0,0 @@
-Require Import Crypto.Specific.solinas64_2e521m1.freeze.
-Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
-
-Check display freeze.
diff --git a/src/Specific/solinas64_2e521m1/CurveParameters.v b/src/Specific/solinas64_2e521m1_10limbs/CurveParameters.v
index 5d7dabf27..5d7dabf27 100644
--- a/src/Specific/solinas64_2e521m1/CurveParameters.v
+++ b/src/Specific/solinas64_2e521m1_10limbs/CurveParameters.v
diff --git a/src/Specific/solinas64_2e521m1_10limbs/Synthesis.v b/src/Specific/solinas64_2e521m1_10limbs/Synthesis.v
new file mode 100644
index 000000000..9f6638e53
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e521m1/compiler.sh b/src/Specific/solinas64_2e521m1_10limbs/compiler.sh
index 076cce72e..076cce72e 100755
--- a/src/Specific/solinas64_2e521m1/compiler.sh
+++ b/src/Specific/solinas64_2e521m1_10limbs/compiler.sh
diff --git a/src/Specific/solinas64_2e521m1/compilerxx.sh b/src/Specific/solinas64_2e521m1_10limbs/compilerxx.sh
index 7e941383d..7e941383d 100755
--- a/src/Specific/solinas64_2e521m1/compilerxx.sh
+++ b/src/Specific/solinas64_2e521m1_10limbs/compilerxx.sh
diff --git a/src/Specific/solinas64_2e521m1_10limbs/feadd.v b/src/Specific/solinas64_2e521m1_10limbs/feadd.v
new file mode 100644
index 000000000..6466d2909
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/feaddDisplay.v b/src/Specific/solinas64_2e521m1_10limbs/feaddDisplay.v
new file mode 100644
index 000000000..8e191012b
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/femul.v b/src/Specific/solinas64_2e521m1_10limbs/femul.v
new file mode 100644
index 000000000..520724b7f
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/femulDisplay.v b/src/Specific/solinas64_2e521m1_10limbs/femulDisplay.v
new file mode 100644
index 000000000..b04d9f1fb
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/fesquare.v b/src/Specific/solinas64_2e521m1_10limbs/fesquare.v
new file mode 100644
index 000000000..b83f83f22
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/fesquareDisplay.v b/src/Specific/solinas64_2e521m1_10limbs/fesquareDisplay.v
new file mode 100644
index 000000000..4d0135043
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/fesub.v b/src/Specific/solinas64_2e521m1_10limbs/fesub.v
new file mode 100644
index 000000000..51d6406dd
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/fesubDisplay.v b/src/Specific/solinas64_2e521m1_10limbs/fesubDisplay.v
new file mode 100644
index 000000000..72db3f8c5
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/freeze.v b/src/Specific/solinas64_2e521m1_10limbs/freeze.v
new file mode 100644
index 000000000..8bca1d619
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e521m1_10limbs/freezeDisplay.v b/src/Specific/solinas64_2e521m1_10limbs/freezeDisplay.v
new file mode 100644
index 000000000..0614d10e0
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_10limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_10limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e521m1/py_interpreter.sh b/src/Specific/solinas64_2e521m1_10limbs/py_interpreter.sh
index 797531875..797531875 100755
--- a/src/Specific/solinas64_2e521m1/py_interpreter.sh
+++ b/src/Specific/solinas64_2e521m1_10limbs/py_interpreter.sh
diff --git a/src/Specific/solinas64_2e521m1_9limbs/CurveParameters.v b/src/Specific/solinas64_2e521m1_9limbs/CurveParameters.v
new file mode 100644
index 000000000..c13c77f18
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/CurveParameters.v
@@ -0,0 +1,39 @@
+Require Import Crypto.Specific.Framework.RawCurveParameters.
+Require Import Crypto.Util.LetIn.
+
+(***
+Modulus : 2^521 - 1
+Base: 57 + 8/9
+***)
+
+Definition curve : CurveParameters :=
+ {|
+ sz := 9%nat;
+ base := 57 + 8/9;
+ bitwidth := 64;
+ s := 2^521;
+ c := [(1, 1)];
+ carry_chains := Some [seq 0 (pred 9); [0; 1]]%nat;
+
+ a24 := None;
+ coef_div_modulus := Some 2%nat;
+
+ goldilocks := None;
+ karatsuba := None;
+ montgomery := false;
+ freeze := Some true;
+ ladderstep := false;
+
+ mul_code := None;
+
+ square_code := None;
+
+ upper_bound_of_exponent_loose := None;
+ upper_bound_of_exponent_tight := None;
+ allowable_bit_widths := None;
+ freeze_extra_allowable_bit_widths := None;
+ modinv_fuel := None
+ |}.
+
+Ltac extra_prove_mul_eq _ := idtac.
+Ltac extra_prove_square_eq _ := idtac.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/Synthesis.v b/src/Specific/solinas64_2e521m1_9limbs/Synthesis.v
new file mode 100644
index 000000000..eefb47c6e
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/Synthesis.v
@@ -0,0 +1,9 @@
+Require Import Crypto.Specific.Framework.SynthesisFramework.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.CurveParameters.
+
+Module P <: PrePackage.
+ Definition package : Tag.Context.
+ Proof. make_Synthesis_package curve extra_prove_mul_eq extra_prove_square_eq. Defined.
+End P.
+
+Module Export S := PackageSynthesis P.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/compiler.sh b/src/Specific/solinas64_2e521m1_9limbs/compiler.sh
new file mode 100755
index 000000000..49cc12019
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/compiler.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang -fbracket-depth=999999 -march=native -mtune=native -std=gnu11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58,58,58,58,58,58,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1' "$@"
diff --git a/src/Specific/solinas64_2e521m1_9limbs/compilerxx.sh b/src/Specific/solinas64_2e521m1_9limbs/compilerxx.sh
new file mode 100755
index 000000000..46920797a
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/compilerxx.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+clang++ -fbracket-depth=999999 -march=native -mtune=native -std=gnu++11 -O3 -flto -fuse-ld=lld -fomit-frame-pointer -fwrapv -Wno-attributes -fno-strict-aliasing -Da24_hex='0x3039' -Da24_val='12345' -Da_minus_two_over_four_array='{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x39}' -Dbitwidth='64' -Dlimb_weight_gaps_array='{58,58,58,58,58,58,58,58,57}' -Dmodulus_array='{0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}' -Dmodulus_bytes_val='66' -Dmodulus_limbs='9' -Dq_mpz='(1_mpz<<521) - 1' "$@"
diff --git a/src/Specific/solinas64_2e521m1_9limbs/feadd.v b/src/Specific/solinas64_2e521m1_9limbs/feadd.v
new file mode 100644
index 000000000..01fbdd97f
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/feadd.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition add :
+ { add : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (add a b) = F.add (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_add ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions add.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.v b/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.v
new file mode 100644
index 000000000..61c8132de
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/feaddDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.feadd.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display add.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/femul.v b/src/Specific/solinas64_2e521m1_9limbs/femul.v
new file mode 100644
index 000000000..fee786799
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/femul.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition mul :
+ { mul : feBW_loose -> feBW_loose -> feBW_tight
+ | forall a b, phiBW_tight (mul a b) = F.mul (phiBW_loose a) (phiBW_loose b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_mul ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions mul.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.v b/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.v
new file mode 100644
index 000000000..58d2ad4a3
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/femulDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.femul.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display mul.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesquare.v b/src/Specific/solinas64_2e521m1_9limbs/fesquare.v
new file mode 100644
index 000000000..177792d13
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesquare.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition square :
+ { square : feBW_loose -> feBW_tight
+ | forall a, phiBW_tight (square a) = F.mul (phiBW_loose a) (phiBW_loose a) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_square ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions square.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.v b/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.v
new file mode 100644
index 000000000..c169f93f1
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesquareDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.fesquare.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display square.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesub.v b/src/Specific/solinas64_2e521m1_9limbs/fesub.v
new file mode 100644
index 000000000..ef92f7c79
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesub.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition sub :
+ { sub : feBW_tight -> feBW_tight -> feBW_loose
+ | forall a b, phiBW_loose (sub a b) = F.sub (phiBW_tight a) (phiBW_tight b) }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_sub ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions sub.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.v b/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.v
new file mode 100644
index 000000000..787336e2c
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/fesubDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.fesub.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display sub.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/freeze.v b/src/Specific/solinas64_2e521m1_9limbs/freeze.v
new file mode 100644
index 000000000..4307e97bf
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/freeze.v
@@ -0,0 +1,14 @@
+Require Import Crypto.Arithmetic.PrimeFieldTheorems.
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.Synthesis.
+
+(* TODO : change this to field once field isomorphism happens *)
+Definition freeze :
+ { freeze : feBW_tight -> feBW_limbwidths
+ | forall a, phiBW_limbwidths (freeze a) = phiBW_tight a }.
+Proof.
+ Set Ltac Profiling.
+ Time synthesize_freeze ().
+ Show Ltac Profile.
+Time Defined.
+
+Print Assumptions freeze.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.v b/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.v
new file mode 100644
index 000000000..5c39bfd19
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/freezeDisplay.v
@@ -0,0 +1,4 @@
+Require Import Crypto.Specific.solinas64_2e521m1_9limbs.freeze.
+Require Import Crypto.Specific.Framework.IntegrationTestDisplayCommon.
+
+Check display freeze.
diff --git a/src/Specific/solinas64_2e521m1_9limbs/py_interpreter.sh b/src/Specific/solinas64_2e521m1_9limbs/py_interpreter.sh
new file mode 100755
index 000000000..77ddf59fc
--- /dev/null
+++ b/src/Specific/solinas64_2e521m1_9limbs/py_interpreter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+/usr/bin/env python3 "$@" -Dq='2**521 - 1' -Dmodulus_bytes='57 + 8/9' -Da24='121665'